Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CCCacheSupport ¶
type CCContext ¶
type CCContext struct {
//ChainID chain id
ChainID string
//Name chaincode name
Name string
//Version used to construct the chaincode image and register
Version string
//TxID is the transaction id for the proposal (if any)
TxID string
//Syscc is this a system chaincode
Syscc bool
//SignedProposal for this invoke (if any)
//this is kept here for access control and in case we need to pass something
//from this to the chaincode
SignedProposal *pb.SignedProposal
//Proposal for this invoke (if any)
//this is kept here just in case we need to pass something
//from this to the chaincode
Proposal *pb.Proposal
// this is additional data passed to the chaincode
ProposalDecorations map[string][]byte
// contains filtered or unexported fields
}
CCContext pass this around instead of string of args
type CCInfoFSImpl ¶
type CCInfoFSImpl struct{}
CCInfoFSImpl provides the implementation for CC on the FS and the access to it It implements CCCacheSupport
type CCPackage ¶
type CCPackage interface {
//InitFromBuffer initialize the package from bytes
InitFromBuffer(buf []byte) (*ChaincodeData, error)
// InitFromFS gets the chaincode from the filesystem (includes the raw bytes too)
InitFromFS(ccname string, ccversion string) ([]byte, *pb.ChaincodeDeploymentSpec, error)
// PutChaincodeToFS writes the chaincode to the filesystem
PutChaincodeToFS() error
// GetDepSpec gets the ChaincodeDeploymentSpec from the package
GetDepSpec() *pb.ChaincodeDeploymentSpec
// GetDepSpecBytes gets the serialized ChaincodeDeploymentSpec from the package
GetDepSpecBytes() []byte
// ValidateCC validates and returns the chaincode deployment spec corresponding to
// ChaincodeData. The validation is based on the metadata from ChaincodeData
// One use of this method is to validate the chaincode before launching
ValidateCC(ccdata *ChaincodeData) error
// GetPackageObject gets the object as a proto.Message
GetPackageObject() proto.Message
// GetChaincodeData gets the ChaincodeData
GetChaincodeData() *ChaincodeData
// GetId gets the fingerprint of the chaincode based on package computation
GetId() []byte
}
CCPackage encapsulates a chaincode package which can be
raw ChaincodeDeploymentSpec SignedChaincodeDeploymentSpec
Attempt to keep the interface at a level with minimal interface for possible generalization.
type CDSData ¶
type CDSData struct {
//CodeHash hash of CodePackage from ChaincodeDeploymentSpec
CodeHash []byte `protobuf:"bytes,1,opt,name=codehash,proto3"`
//MetaDataHash hash of Name and Version from ChaincodeDeploymentSpec
MetaDataHash []byte `protobuf:"bytes,2,opt,name=metadatahash,proto3"`
}
CDSData is data stored in the LSCC on instantiation of a CC for CDSPackage. This needs to be serialized for ChaincodeData hence the protobuf format
func (*CDSData) ProtoMessage ¶
func (*CDSData) ProtoMessage()
ProtoMessage just exists to make proto happy
type CDSPackage ¶
type CDSPackage struct {
// contains filtered or unexported fields
}
CDSPackage encapsulates ChaincodeDeploymentSpec.
type ChaincodeData ¶
type ChaincodeData struct {
//Name of the chaincode
Name string `protobuf:"bytes,1,opt,name=name"`
//Version of the chaincode
Version string `protobuf:"bytes,2,opt,name=version"`
//Escc for the chaincode instance
Escc string `protobuf:"bytes,3,opt,name=escc"`
//Vscc for the chaincode instance
Vscc string `protobuf:"bytes,4,opt,name=vscc"`
//Policy endorsement policy for the chaincode instance
Policy []byte `protobuf:"bytes,5,opt,name=policy,proto3"`
//Data data specific to the package
Data []byte `protobuf:"bytes,6,opt,name=data,proto3"`
//Id of the chaincode that's the unique fingerprint for the CC
//This is not currently used anywhere but serves as a good
//eyecatcher
Id []byte `protobuf:"bytes,7,opt,name=id,proto3"`
//InstantiationPolicy for the chaincode
InstantiationPolicy []byte `protobuf:"bytes,8,opt,name=instantiation_policy,proto3"`
}
ChaincodeData defines the datastructure for chaincodes to be serialized by proto Type provides an additional check by directing to use a specific package after instantiation Data is Type specifc (see CDSPackage and SignedCDSPackage)
func (*ChaincodeData) ProtoMessage ¶
func (*ChaincodeData) ProtoMessage()
ProtoMessage just exists to make proto happy
type ChaincodeProvider ¶
type ChaincodeProvider interface {
// GetContext returns a ledger context and a tx simulator; it's the
// caller's responsability to release the simulator by calling its
// done method once it is no longer useful
GetContext(ledger ledger.PeerLedger, txid string) (context.Context, ledger.TxSimulator, error)
// GetCCContext returns an opaque chaincode context
GetCCContext(cid, name, version, txid string, syscc bool, signedProp *pb.SignedProposal, prop *pb.Proposal) interface{}
// ExecuteChaincode executes the chaincode given context and args
ExecuteChaincode(ctxt context.Context, cccid interface{}, args [][]byte) (*pb.Response, *pb.ChaincodeEvent, error)
// Execute executes the chaincode given context and spec (invocation or deploy)
Execute(ctxt context.Context, cccid interface{}, spec interface{}) (*pb.Response, *pb.ChaincodeEvent, error)
// ExecuteWithErrorFilter executes the chaincode given context and spec and returns payload
ExecuteWithErrorFilter(ctxt context.Context, cccid interface{}, spec interface{}) ([]byte, *pb.ChaincodeEvent, error)
// Stop stops the chaincode given context and deployment spec
Stop(ctxt context.Context, cccid interface{}, spec *pb.ChaincodeDeploymentSpec) error
}
ChaincodeProvider provides an abstraction layer that is used for different packages to interact with code in the chaincode package without importing it; more methods should be added below if necessary
type ChaincodeProviderFactory ¶
type ChaincodeProviderFactory interface {
NewChaincodeProvider() ChaincodeProvider
}
ChaincodeProviderFactory defines a factory interface so that the actual implementation can be injected