Documentation
¶
Index ¶
- type ChannelState
- type ChannelStateRetriever
- type CollectionConfigRetriever
- type Context
- type Endorser
- func (e *Endorser) ProcessProposal(ctx context.Context, signedProp *pb.SignedProposal) (*pb.ProposalResponse, error)
- func (e *Endorser) SanitizeUserCDS(userCDS *pb.ChaincodeDeploymentSpec) (*pb.ChaincodeDeploymentSpec, error)
- func (e *Endorser) SimulateProposal(txParams *ccprovider.TransactionParams, cid *pb.ChaincodeID) (ccprovider.ChaincodeDefinition, *pb.Response, []byte, *pb.ChaincodeEvent, ...)
- type EndorserMetrics
- type MapBasedPluginMapper
- type PluginEndorser
- type PluginMapper
- type PluginName
- type PluginSupport
- type PvtRWSetAssembler
- type QueryCreator
- type StateContext
- type Support
- type SupportImpl
- func (s *SupportImpl) CheckACL(signedProp *pb.SignedProposal, chdr *common.ChannelHeader, ...) error
- func (s *SupportImpl) CheckInstantiationPolicy(name, version string, cd ccprovider.ChaincodeDefinition) error
- func (s *SupportImpl) Execute(txParams *ccprovider.TransactionParams, cid, name, version, txid string, ...) (*pb.Response, *pb.ChaincodeEvent, error)
- func (s *SupportImpl) ExecuteLegacyInit(txParams *ccprovider.TransactionParams, cid, name, version, txid string, ...) (*pb.Response, *pb.ChaincodeEvent, error)
- func (s *SupportImpl) GetApplicationConfig(cid string) (channelconfig.Application, bool)
- func (s *SupportImpl) GetChaincodeDefinition(chaincodeName string, txsim ledger.QueryExecutor) (ccprovider.ChaincodeDefinition, error)
- func (s *SupportImpl) GetChaincodeDeploymentSpecFS(cds *pb.ChaincodeDeploymentSpec) (*pb.ChaincodeDeploymentSpec, error)
- func (s *SupportImpl) GetHistoryQueryExecutor(ledgername string) (ledger.HistoryQueryExecutor, error)
- func (s *SupportImpl) GetLedgerHeight(channelID string) (uint64, error)
- func (s *SupportImpl) GetTransactionByID(chid, txID string) (*pb.ProcessedTransaction, error)
- func (s *SupportImpl) GetTxSimulator(ledgername string, txid string) (ledger.TxSimulator, error)
- func (s *SupportImpl) IsJavaCC(buf []byte) (bool, error)
- func (s *SupportImpl) IsSysCC(name string) bool
- func (s *SupportImpl) IsSysCCAndNotInvokableExternal(name string) bool
- func (s *SupportImpl) NewQueryCreator(channel string) (QueryCreator, error)
- func (s *SupportImpl) SigningIdentityForRequest(*pb.SignedProposal) (SigningIdentity, error)
- type TransientStoreRetriever
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ChannelState ¶ added in v1.2.0
type ChannelState struct {
transientstore.Store
QueryCreator
}
ChannelState defines state operations
func (*ChannelState) FetchState ¶ added in v1.2.0
func (cs *ChannelState) FetchState() (endorsement.State, error)
FetchState fetches state
type ChannelStateRetriever ¶ added in v1.2.0
type ChannelStateRetriever interface {
// NewQueryCreator returns a QueryCreator for the given Channel
NewQueryCreator(channel string) (QueryCreator, error)
}
ChannelStateRetriever retrieves Channel state
type CollectionConfigRetriever ¶ added in v1.2.0
type CollectionConfigRetriever interface {
// GetState gets the value for given namespace and key. For a chaincode, the namespace corresponds to the chaincodeId
GetState(namespace string, key string) ([]byte, error)
}
CollectionConfigRetriever encapsulates sub-functionality of ledger.TxSimulator to abstract minimum required functions set
type Context ¶ added in v1.2.0
type Context struct {
PluginName string
Channel string
TxID string
Proposal *pb.Proposal
SignedProposal *pb.SignedProposal
Visibility []byte
Response *pb.Response
Event []byte
ChaincodeID *pb.ChaincodeID
SimRes []byte
}
Context defines the data that is related to an in-flight endorsement
type Endorser ¶
type Endorser struct {
PlatformRegistry *platforms.Registry
PvtRWSetAssembler
Metrics *EndorserMetrics
// contains filtered or unexported fields
}
Endorser provides the Endorser service ProcessProposal
func NewEndorserServer ¶
func NewEndorserServer(privDist privateDataDistributor, s Support, pr *platforms.Registry, metricsProv metrics.Provider) *Endorser
NewEndorserServer creates and returns a new Endorser server instance.
func (*Endorser) ProcessProposal ¶
func (e *Endorser) ProcessProposal(ctx context.Context, signedProp *pb.SignedProposal) (*pb.ProposalResponse, error)
ProcessProposal process the Proposal
func (*Endorser) SanitizeUserCDS ¶ added in v1.1.1
func (e *Endorser) SanitizeUserCDS(userCDS *pb.ChaincodeDeploymentSpec) (*pb.ChaincodeDeploymentSpec, error)
func (*Endorser) SimulateProposal ¶ added in v1.2.0
func (e *Endorser) SimulateProposal(txParams *ccprovider.TransactionParams, cid *pb.ChaincodeID) (ccprovider.ChaincodeDefinition, *pb.Response, []byte, *pb.ChaincodeEvent, error)
SimulateProposal simulates the proposal by calling the chaincode
type EndorserMetrics ¶ added in v1.4.1
type EndorserMetrics struct {
ProposalDuration metrics.Histogram
ProposalsReceived metrics.Counter
SuccessfulProposals metrics.Counter
ProposalValidationFailed metrics.Counter
ProposalACLCheckFailed metrics.Counter
InitFailed metrics.Counter
EndorsementsFailed metrics.Counter
DuplicateTxsFailure metrics.Counter
}
func NewEndorserMetrics ¶ added in v1.4.1
func NewEndorserMetrics(p metrics.Provider) *EndorserMetrics
type MapBasedPluginMapper ¶ added in v1.2.0
type MapBasedPluginMapper map[string]endorsement.PluginFactory
MapBasedPluginMapper maps plugin names to their corresponding factories
func (MapBasedPluginMapper) PluginFactoryByName ¶ added in v1.2.0
func (m MapBasedPluginMapper) PluginFactoryByName(name PluginName) endorsement.PluginFactory
PluginFactoryByName returns a plugin factory for the given plugin name, or nil if not found
type PluginEndorser ¶ added in v1.2.0
type PluginEndorser struct {
sync.Mutex
PluginMapper
ChannelStateRetriever
endorsement3.SigningIdentityFetcher
TransientStoreRetriever
// contains filtered or unexported fields
}
PluginEndorser endorsers proposal responses using plugins
func NewPluginEndorser ¶ added in v1.2.0
func NewPluginEndorser(ps *PluginSupport) *PluginEndorser
NewPluginEndorser endorses with using a plugin
func (*PluginEndorser) EndorseWithPlugin ¶ added in v1.2.0
func (pe *PluginEndorser) EndorseWithPlugin(ctx Context) (*pb.ProposalResponse, error)
EndorseWithPlugin endorses the response with a plugin
type PluginMapper ¶ added in v1.2.0
type PluginMapper interface {
PluginFactoryByName(name PluginName) endorsement.PluginFactory
}
PluginMapper maps plugin names to their corresponding factories
type PluginName ¶ added in v1.2.0
type PluginName string
PluginName defines the name of the plugin as it appears in the configuration
type PluginSupport ¶ added in v1.2.0
type PluginSupport struct {
ChannelStateRetriever
endorsement3.SigningIdentityFetcher
PluginMapper
TransientStoreRetriever
}
PluginSupport aggregates the support interfaces needed for the operation of the plugin endorser
type PvtRWSetAssembler ¶ added in v1.2.0
type PvtRWSetAssembler interface {
// AssemblePvtRWSet prepares TxPvtReadWriteSet for distribution
// augmenting it into TxPvtReadWriteSetWithConfigInfo adding
// information about collections config available related
// to private read-write set
AssemblePvtRWSet(privData *rwset.TxPvtReadWriteSet, txsim CollectionConfigRetriever) (*transientstore.TxPvtReadWriteSetWithConfigInfo, error)
}
PvtRWSetAssembler assembles private read write set for distribution augments with additional information if needed
type QueryCreator ¶ added in v1.2.0
type QueryCreator interface {
NewQueryExecutor() (ledger.QueryExecutor, error)
}
QueryCreator creates new QueryExecutors
type StateContext ¶ added in v1.2.0
type StateContext struct {
transientstore.Store
ledger.QueryExecutor
}
StateContext defines an execution context that interacts with the state
func (*StateContext) GetTransientByTXID ¶ added in v1.2.0
func (sc *StateContext) GetTransientByTXID(txID string) ([]*rwset.TxPvtReadWriteSet, error)
GetTransientByTXID returns the private data associated with this transaction ID.
type Support ¶ added in v1.1.0
type Support interface {
crypto.SignerSupport
// IsSysCCAndNotInvokableExternal returns true if the supplied chaincode is
// a system chaincode and it NOT invokable
IsSysCCAndNotInvokableExternal(name string) bool
// GetTxSimulator returns the transaction simulator for the specified ledger
// a client may obtain more than one such simulator; they are made unique
// by way of the supplied txid
GetTxSimulator(ledgername string, txid string) (ledger.TxSimulator, error)
// GetHistoryQueryExecutor gives handle to a history query executor for the
// specified ledger
GetHistoryQueryExecutor(ledgername string) (ledger.HistoryQueryExecutor, error)
// GetTransactionByID retrieves a transaction by id
GetTransactionByID(chid, txID string) (*pb.ProcessedTransaction, error)
// IsSysCC returns true if the name matches a system chaincode's
// system chaincode names are system, chain wide
IsSysCC(name string) bool
// Execute - execute proposal, return original response of chaincode
Execute(txParams *ccprovider.TransactionParams, cid, name, version, txid string, signedProp *pb.SignedProposal, prop *pb.Proposal, input *pb.ChaincodeInput) (*pb.Response, *pb.ChaincodeEvent, error)
// ExecuteLegacyInit - executes a deployment proposal, return original response of chaincode
ExecuteLegacyInit(txParams *ccprovider.TransactionParams, cid, name, version, txid string, signedProp *pb.SignedProposal, prop *pb.Proposal, spec *pb.ChaincodeDeploymentSpec) (*pb.Response, *pb.ChaincodeEvent, error)
// GetChaincodeDefinition returns ccprovider.ChaincodeDefinition for the chaincode with the supplied name
GetChaincodeDefinition(chaincodeID string, txsim ledger.QueryExecutor) (ccprovider.ChaincodeDefinition, error)
// CheckACL checks the ACL for the resource for the channel using the
// SignedProposal from which an id can be extracted for testing against a policy
CheckACL(signedProp *pb.SignedProposal, chdr *common.ChannelHeader, shdr *common.SignatureHeader, hdrext *pb.ChaincodeHeaderExtension) error
// IsJavaCC returns true if the CDS package bytes describe a chaincode
// that requires the java runtime environment to execute
IsJavaCC(buf []byte) (bool, error)
// CheckInstantiationPolicy returns an error if the instantiation in the supplied
// ChaincodeDefinition differs from the instantiation policy stored on the ledger
CheckInstantiationPolicy(name, version string, cd ccprovider.ChaincodeDefinition) error
// GetChaincodeDeploymentSpecFS returns the deploymentspec for a chaincode from the fs
GetChaincodeDeploymentSpecFS(cds *pb.ChaincodeDeploymentSpec) (*pb.ChaincodeDeploymentSpec, error)
// GetApplicationConfig returns the configtxapplication.SharedConfig for the Channel
// and whether the Application config exists
GetApplicationConfig(cid string) (channelconfig.Application, bool)
// NewQueryCreator creates a new QueryCreator
NewQueryCreator(channel string) (QueryCreator, error)
// EndorseWithPlugin endorses the response with a plugin
EndorseWithPlugin(ctx Context) (*pb.ProposalResponse, error)
// GetLedgerHeight returns ledger height for given channelID
GetLedgerHeight(channelID string) (uint64, error)
}
Support contains functions that the endorser requires to execute its tasks
type SupportImpl ¶ added in v1.1.0
type SupportImpl struct {
*PluginEndorser
crypto.SignerSupport
Peer peer.Operations
PeerSupport peer.Support
ChaincodeSupport *chaincode.ChaincodeSupport
SysCCProvider *scc.Provider
ACLProvider aclmgmt.ACLProvider
}
SupportImpl provides an implementation of the endorser.Support interface issuing calls to various static methods of the peer
func (*SupportImpl) CheckACL ¶ added in v1.1.0
func (s *SupportImpl) CheckACL(signedProp *pb.SignedProposal, chdr *common.ChannelHeader, shdr *common.SignatureHeader, hdrext *pb.ChaincodeHeaderExtension) error
CheckACL checks the ACL for the resource for the Channel using the SignedProposal from which an id can be extracted for testing against a policy
func (*SupportImpl) CheckInstantiationPolicy ¶ added in v1.1.0
func (s *SupportImpl) CheckInstantiationPolicy(name, version string, cd ccprovider.ChaincodeDefinition) error
CheckInstantiationPolicy returns an error if the instantiation in the supplied ChaincodeDefinition differs from the instantiation policy stored on the ledger
func (*SupportImpl) Execute ¶ added in v1.1.0
func (s *SupportImpl) Execute(txParams *ccprovider.TransactionParams, cid, name, version, txid string, signedProp *pb.SignedProposal, prop *pb.Proposal, input *pb.ChaincodeInput) (*pb.Response, *pb.ChaincodeEvent, error)
Execute a proposal and return the chaincode response
func (*SupportImpl) ExecuteLegacyInit ¶ added in v1.3.0
func (s *SupportImpl) ExecuteLegacyInit(txParams *ccprovider.TransactionParams, cid, name, version, txid string, signedProp *pb.SignedProposal, prop *pb.Proposal, cds *pb.ChaincodeDeploymentSpec) (*pb.Response, *pb.ChaincodeEvent, error)
ExecuteInit a deployment proposal and return the chaincode response
func (*SupportImpl) GetApplicationConfig ¶ added in v1.1.0
func (s *SupportImpl) GetApplicationConfig(cid string) (channelconfig.Application, bool)
GetApplicationConfig returns the configtxapplication.SharedConfig for the Channel and whether the Application config exists
func (*SupportImpl) GetChaincodeDefinition ¶ added in v1.1.0
func (s *SupportImpl) GetChaincodeDefinition(chaincodeName string, txsim ledger.QueryExecutor) (ccprovider.ChaincodeDefinition, error)
GetChaincodeDefinition returns ccprovider.ChaincodeDefinition for the chaincode with the supplied name
func (*SupportImpl) GetChaincodeDeploymentSpecFS ¶ added in v1.1.1
func (s *SupportImpl) GetChaincodeDeploymentSpecFS(cds *pb.ChaincodeDeploymentSpec) (*pb.ChaincodeDeploymentSpec, error)
GetChaincode returns the CCPackage from the fs
func (*SupportImpl) GetHistoryQueryExecutor ¶ added in v1.1.0
func (s *SupportImpl) GetHistoryQueryExecutor(ledgername string) (ledger.HistoryQueryExecutor, error)
GetHistoryQueryExecutor gives handle to a history query executor for the specified ledger
func (*SupportImpl) GetLedgerHeight ¶ added in v1.2.0
func (s *SupportImpl) GetLedgerHeight(channelID string) (uint64, error)
GetLedgerHeight returns ledger height for given channelID
func (*SupportImpl) GetTransactionByID ¶ added in v1.1.0
func (s *SupportImpl) GetTransactionByID(chid, txID string) (*pb.ProcessedTransaction, error)
GetTransactionByID retrieves a transaction by id
func (*SupportImpl) GetTxSimulator ¶ added in v1.1.0
func (s *SupportImpl) GetTxSimulator(ledgername string, txid string) (ledger.TxSimulator, error)
GetTxSimulator returns the transaction simulator for the specified ledger a client may obtain more than one such simulator; they are made unique by way of the supplied txid
func (*SupportImpl) IsJavaCC ¶ added in v1.1.0
func (s *SupportImpl) IsJavaCC(buf []byte) (bool, error)
IsJavaCC returns true if the CDS package bytes describe a chaincode that requires the java runtime environment to execute
func (*SupportImpl) IsSysCC ¶ added in v1.1.0
func (s *SupportImpl) IsSysCC(name string) bool
IsSysCC returns true if the name matches a system chaincode's system chaincode names are system, chain wide
func (*SupportImpl) IsSysCCAndNotInvokableExternal ¶ added in v1.1.0
func (s *SupportImpl) IsSysCCAndNotInvokableExternal(name string) bool
IsSysCCAndNotInvokableExternal returns true if the supplied chaincode is ia system chaincode and it NOT invokable
func (*SupportImpl) NewQueryCreator ¶ added in v1.2.0
func (s *SupportImpl) NewQueryCreator(channel string) (QueryCreator, error)
func (*SupportImpl) SigningIdentityForRequest ¶ added in v1.2.0
func (s *SupportImpl) SigningIdentityForRequest(*pb.SignedProposal) (SigningIdentity, error)
type TransientStoreRetriever ¶ added in v1.2.0
type TransientStoreRetriever interface {
// StoreForChannel returns the transient store for the given channel
StoreForChannel(channel string) transientstore.Store
}
TransientStoreRetriever retrieves transient stores
Source Files
¶
- endorser.go
- metrics.go
- plugin_endorser.go
- pvtrwset_assembler.go
- state.go
- support.go