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