endorser

package
v1.4.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 11, 2019 License: Apache-2.0 Imports: 35 Imported by: 0

Documentation

Index

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

func (Context) String added in v1.2.0

func (c Context) String() string

String returns a text representation of this context

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

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

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
	// 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, 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

Directories

Path Synopsis
Code generated by mockery v1.0.0 Code generated by mockery v1.0.0 Code generated by mockery v1.0.0 Code generated by mockery v1.0.0 Code generated by mockery v1.0.0 Code generated by mockery v1.0.0 Code generated by mockery v1.0.0 Code generated by counterfeiter.
Code generated by mockery v1.0.0 Code generated by mockery v1.0.0 Code generated by mockery v1.0.0 Code generated by mockery v1.0.0 Code generated by mockery v1.0.0 Code generated by mockery v1.0.0 Code generated by mockery v1.0.0 Code generated by counterfeiter.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL