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, txid string, idBytes []byte, ...) (*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(channelID, chaincodeName string, txsim ledger.QueryExecutor) (ccprovider.ChaincodeDefinition, error)
- func (s *SupportImpl) GetChaincodeDeploymentSpecFS(cds *pb.ChaincodeDeploymentSpec) (*pb.ChaincodeDeploymentSpec, error)
- func (s *SupportImpl) GetDeployedCCInfoProvider() ledger.DeployedChaincodeInfoProvider
- 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 { // ChannelState 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(channelName string, privData *rwset.TxPvtReadWriteSet, txsim ledger.SimpleQueryExecutor, deployedCCInfoProvider ledger.DeployedChaincodeInfoProvider) ( *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 { identity.SignerSerializer // IsSysCCAndNotInvokableExternal returns true if the supplied chaincode is // ia 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, txid string, idBytes []byte, initRequired bool, 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(channelID, 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) // GetDeployedCCInfoProvider returns ledger.DeployedChaincodeInfoProvider GetDeployedCCInfoProvider() ledger.DeployedChaincodeInfoProvider }
Support contains functions that the endorser requires to execute its tasks
type SupportImpl ¶ added in v1.1.0
type SupportImpl struct { *PluginEndorser identity.SignerSerializer 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 If the definition is not of the legacy ChaincodeData type, it returns successfully.
func (*SupportImpl) Execute ¶ added in v1.1.0
func (s *SupportImpl) Execute(txParams *ccprovider.TransactionParams, cid, name, txid string, idBytes []byte, requiresInit bool, 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(channelID, 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) GetDeployedCCInfoProvider ¶
func (s *SupportImpl) GetDeployedCCInfoProvider() ledger.DeployedChaincodeInfoProvider
GetDeployedCCInfoProvider returns ledger.DeployedChaincodeInfoProvider
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