Documentation ¶
Overview ¶
# Copyright State Street Corp. All Rights Reserved. # # SPDX-License-Identifier: Apache-2.0
Index ¶
- func ChaincodePackageExists(ccname string, ccversion string) (bool, error)
- func ExtractFileEntries(tarBytes []byte, databaseType string) (map[string][]*TarFileEntry, error)
- func ExtractStatedbArtifactsForChaincode(ccNameVersion string) (installed bool, statedbArtifactsTar []byte, err error)
- func ExtractStatedbArtifactsFromCCPackage(ccpackage CCPackage) (statedbArtifactsTar []byte, err error)
- func GetChaincodePackageFromPath(ccNameVersion string, ccInstallPath string) ([]byte, error)
- func GetInstalledChaincodes() (*pb.ChaincodeQueryResponse, error)
- func MetadataAsTarEntries(code []byte) ([]byte, error)
- func NewCCInfoCache(cs CCCacheSupport) *ccInfoCacheImpl
- func SetChaincodesPath(path string)
- type CCCacheSupport
- type CCInfoFSImpl
- func (cifs *CCInfoFSImpl) GetChaincode(ccNameVersion string) (CCPackage, error)
- func (cifs *CCInfoFSImpl) GetChaincodeCodePackage(ccNameVersion string) ([]byte, error)
- func (cifs *CCInfoFSImpl) GetChaincodeDepSpec(ccNameVersion string) (*pb.ChaincodeDeploymentSpec, error)
- func (cifs *CCInfoFSImpl) GetChaincodeFromPath(ccNameVersion string, path string) (CCPackage, error)
- func (*CCInfoFSImpl) GetChaincodeInstallPath() string
- func (cifs *CCInfoFSImpl) ListInstalledChaincodes(dir string, ls DirEnumerator, ccFromPath ChaincodeExtractor) ([]chaincode.InstalledChaincode, error)
- func (cifs *CCInfoFSImpl) PutChaincode(depSpec *pb.ChaincodeDeploymentSpec) (CCPackage, error)
- type CCPackage
- type CDSData
- type CDSPackage
- func (ccpack *CDSPackage) GetChaincodeData() *ChaincodeData
- func (ccpack *CDSPackage) GetDepSpec() *pb.ChaincodeDeploymentSpec
- func (ccpack *CDSPackage) GetDepSpecBytes() []byte
- func (ccpack *CDSPackage) GetId() []byte
- func (ccpack *CDSPackage) GetPackageObject() proto.Message
- func (ccpack *CDSPackage) InitFromBuffer(buf []byte) (*ChaincodeData, error)
- func (ccpack *CDSPackage) InitFromFS(ccNameVersion string) ([]byte, *pb.ChaincodeDeploymentSpec, error)
- func (ccpack *CDSPackage) InitFromPath(ccNameVersion string, path string) ([]byte, *pb.ChaincodeDeploymentSpec, error)
- func (ccpack *CDSPackage) PutChaincodeToFS() error
- func (ccpack *CDSPackage) ValidateCC(ccdata *ChaincodeData) error
- type ChaincodeData
- type ChaincodeExtractor
- type DirEnumerator
- type GetHasher
- type PersistenceAdapter
- type SignedCDSData
- type SignedCDSPackage
- func (ccpack *SignedCDSPackage) GetChaincodeData() *ChaincodeData
- func (ccpack *SignedCDSPackage) GetDepSpec() *pb.ChaincodeDeploymentSpec
- func (ccpack *SignedCDSPackage) GetDepSpecBytes() []byte
- func (ccpack *SignedCDSPackage) GetId() []byte
- func (ccpack *SignedCDSPackage) GetInstantiationPolicy() []byte
- func (ccpack *SignedCDSPackage) GetPackageObject() proto.Message
- func (ccpack *SignedCDSPackage) InitFromBuffer(buf []byte) (*ChaincodeData, error)
- func (ccpack *SignedCDSPackage) InitFromFS(ccNameVersion string) ([]byte, *pb.ChaincodeDeploymentSpec, error)
- func (ccpack *SignedCDSPackage) InitFromPath(ccNameVersion string, path string) ([]byte, *pb.ChaincodeDeploymentSpec, error)
- func (ccpack *SignedCDSPackage) PutChaincodeToFS() error
- func (ccpack *SignedCDSPackage) ValidateCC(ccdata *ChaincodeData) error
- type TarFileEntry
- type TransactionParams
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ChaincodePackageExists ¶
ChaincodePackageExists returns whether the chaincode package exists in the file system
func ExtractFileEntries ¶
func ExtractFileEntries(tarBytes []byte, databaseType string) (map[string][]*TarFileEntry, error)
ExtractFileEntries extract file entries from the given `tarBytes`. A file entry is included in the returned results only if it is located in a directory under the indicated databaseType directory Example for chaincode indexes: "META-INF/statedb/couchdb/indexes/indexColorSortName.json" Example for collection scoped indexes: "META-INF/statedb/couchdb/collections/collectionMarbles/indexes/indexCollMarbles.json" An empty string will have the effect of returning all statedb metadata. This is useful in validating an archive in the future with multiple database types
func ExtractStatedbArtifactsForChaincode ¶
func ExtractStatedbArtifactsForChaincode(ccNameVersion string) (installed bool, statedbArtifactsTar []byte, err error)
ExtractStatedbArtifactsAsTarbytes extracts the statedb artifacts from the code package tar and create a statedb artifact tar. The state db artifacts are expected to contain state db specific artifacts such as index specification in the case of couchdb. This function is intended to be used during chaincode instantiate/upgrade so that statedb artifacts can be created.
func ExtractStatedbArtifactsFromCCPackage ¶
func ExtractStatedbArtifactsFromCCPackage(ccpackage CCPackage) (statedbArtifactsTar []byte, err error)
ExtractStatedbArtifactsFromCCPackage extracts the statedb artifacts from the code package tar and create a statedb artifact tar. The state db artifacts are expected to contain state db specific artifacts such as index specification in the case of couchdb. This function is called during chaincode instantiate/upgrade (from above), and from install, so that statedb artifacts can be created.
func GetChaincodePackageFromPath ¶
GetChaincodePackage returns the chaincode package from the file system
func GetInstalledChaincodes ¶
func GetInstalledChaincodes() (*pb.ChaincodeQueryResponse, error)
GetInstalledChaincodes returns a map whose key is the chaincode id and value is the ChaincodeDeploymentSpec struct for that chaincodes that have been installed (but not necessarily instantiated) on the peer by searching the chaincode install path
func MetadataAsTarEntries ¶
MetadataAsTarEntries extracts metadata from a chaincode package
func NewCCInfoCache ¶
func NewCCInfoCache(cs CCCacheSupport) *ccInfoCacheImpl
NewCCInfoCache returns a new cache on top of the supplied CCInfoProvider instance
func SetChaincodesPath ¶
func SetChaincodesPath(path string)
SetChaincodesPath sets the chaincode path for this peer
Types ¶
type CCCacheSupport ¶
type CCInfoFSImpl ¶
type CCInfoFSImpl struct {
GetHasher GetHasher
}
CCInfoFSImpl provides the implementation for CC on the FS and the access to it It implements CCCacheSupport
func (*CCInfoFSImpl) GetChaincode ¶
func (cifs *CCInfoFSImpl) GetChaincode(ccNameVersion string) (CCPackage, error)
GetChaincodeFromFS this is a wrapper for hiding package implementation. It calls GetChaincodeFromPath with the chaincodeInstallPath
func (*CCInfoFSImpl) GetChaincodeCodePackage ¶
func (cifs *CCInfoFSImpl) GetChaincodeCodePackage(ccNameVersion string) ([]byte, error)
func (*CCInfoFSImpl) GetChaincodeDepSpec ¶
func (cifs *CCInfoFSImpl) GetChaincodeDepSpec(ccNameVersion string) (*pb.ChaincodeDeploymentSpec, error)
func (*CCInfoFSImpl) GetChaincodeFromPath ¶
func (cifs *CCInfoFSImpl) GetChaincodeFromPath(ccNameVersion string, path string) (CCPackage, error)
GetChaincodeFromPath this is a wrapper for hiding package implementation.
func (*CCInfoFSImpl) GetChaincodeInstallPath ¶
func (*CCInfoFSImpl) GetChaincodeInstallPath() string
GetChaincodeInstallPath returns the path to the installed chaincodes
func (*CCInfoFSImpl) ListInstalledChaincodes ¶
func (cifs *CCInfoFSImpl) ListInstalledChaincodes(dir string, ls DirEnumerator, ccFromPath ChaincodeExtractor) ([]chaincode.InstalledChaincode, error)
ListInstalledChaincodes retrieves the installed chaincodes
func (*CCInfoFSImpl) PutChaincode ¶
func (cifs *CCInfoFSImpl) PutChaincode(depSpec *pb.ChaincodeDeploymentSpec) (CCPackage, error)
PutChaincode is a wrapper for putting raw ChaincodeDeploymentSpec using CDSPackage. This is only used in UTs
type CCPackage ¶
type CCPackage interface { //InitFromBuffer initialize the package from bytes InitFromBuffer(buf []byte) (*ChaincodeData, 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.
func GetCCPackage ¶
GetCCPackage tries each known package implementation one by one till the right package is found
func GetChaincodeFromFS ¶
GetChaincodeFromFS retrieves chaincode information from the file system
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 { GetHasher GetHasher // contains filtered or unexported fields }
CDSPackage encapsulates ChaincodeDeploymentSpec.
func (*CDSPackage) GetChaincodeData ¶
func (ccpack *CDSPackage) GetChaincodeData() *ChaincodeData
GetChaincodeData gets the ChaincodeData
func (*CDSPackage) GetDepSpec ¶
func (ccpack *CDSPackage) GetDepSpec() *pb.ChaincodeDeploymentSpec
GetDepSpec gets the ChaincodeDeploymentSpec from the package
func (*CDSPackage) GetDepSpecBytes ¶
func (ccpack *CDSPackage) GetDepSpecBytes() []byte
GetDepSpecBytes gets the serialized ChaincodeDeploymentSpec from the package
func (*CDSPackage) GetId ¶
func (ccpack *CDSPackage) GetId() []byte
GetId gets the fingerprint of the chaincode based on package computation
func (*CDSPackage) GetPackageObject ¶
func (ccpack *CDSPackage) GetPackageObject() proto.Message
GetPackageObject gets the ChaincodeDeploymentSpec as proto.Message
func (*CDSPackage) InitFromBuffer ¶
func (ccpack *CDSPackage) InitFromBuffer(buf []byte) (*ChaincodeData, error)
InitFromBuffer sets the buffer if valid and returns ChaincodeData
func (*CDSPackage) InitFromFS ¶
func (ccpack *CDSPackage) InitFromFS(ccNameVersion string) ([]byte, *pb.ChaincodeDeploymentSpec, error)
InitFromFS returns the chaincode and its package from the file system
func (*CDSPackage) InitFromPath ¶
func (ccpack *CDSPackage) InitFromPath(ccNameVersion string, path string) ([]byte, *pb.ChaincodeDeploymentSpec, error)
InitFromFS returns the chaincode and its package from the file system
func (*CDSPackage) PutChaincodeToFS ¶
func (ccpack *CDSPackage) PutChaincodeToFS() error
PutChaincodeToFS - serializes chaincode to a package on the file system
func (*CDSPackage) ValidateCC ¶
func (ccpack *CDSPackage) ValidateCC(ccdata *ChaincodeData) error
ValidateCC returns error if the chaincode is not found or if its not a 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 specific (see CDSPackage and SignedCDSPackage)
func GetChaincodeData ¶
func GetChaincodeData(ccNameVersion string) (*ChaincodeData, error)
GetChaincodeData gets chaincode data from cache if there's one
func (*ChaincodeData) ChaincodeID ¶
func (cd *ChaincodeData) ChaincodeID() string
ChaincodeID is the name by which the chaincode will register itself.
func (*ChaincodeData) ProtoMessage ¶
func (*ChaincodeData) ProtoMessage()
ProtoMessage just exists to make proto happy
type ChaincodeExtractor ¶
type ChaincodeExtractor func(ccNameVersion string, path string, getHasher GetHasher) (CCPackage, error)
ChaincodeExtractor extracts chaincode from a given path
type DirEnumerator ¶
DirEnumerator enumerates directories
type PersistenceAdapter ¶
func (PersistenceAdapter) GetDBArtifacts ¶
func (pa PersistenceAdapter) GetDBArtifacts(codePackage []byte) ([]byte, error)
type SignedCDSData ¶
type SignedCDSData struct { CodeHash []byte `protobuf:"bytes,1,opt,name=hash"` MetaDataHash []byte `protobuf:"bytes,2,opt,name=metadatahash"` SignatureHash []byte `protobuf:"bytes,3,opt,name=signaturehash"` }
SignedCDSData is data stored in the LSCC on instantiation of a CC for SignedCDSPackage. This needs to be serialized for ChaincodeData hence the protobuf format
func (*SignedCDSData) Equals ¶
func (data *SignedCDSData) Equals(other *SignedCDSData) bool
Equals data equals other
func (*SignedCDSData) ProtoMessage ¶
func (*SignedCDSData) ProtoMessage()
ProtoMessage just exists to make proto happy
type SignedCDSPackage ¶
type SignedCDSPackage struct { GetHasher GetHasher // contains filtered or unexported fields }
SignedCDSPackage encapsulates SignedChaincodeDeploymentSpec.
func (*SignedCDSPackage) GetChaincodeData ¶
func (ccpack *SignedCDSPackage) GetChaincodeData() *ChaincodeData
GetChaincodeData gets the ChaincodeData
func (*SignedCDSPackage) GetDepSpec ¶
func (ccpack *SignedCDSPackage) GetDepSpec() *pb.ChaincodeDeploymentSpec
GetDepSpec gets the ChaincodeDeploymentSpec from the package
func (*SignedCDSPackage) GetDepSpecBytes ¶
func (ccpack *SignedCDSPackage) GetDepSpecBytes() []byte
GetDepSpecBytes gets the serialized ChaincodeDeploymentSpec from the package
func (*SignedCDSPackage) GetId ¶
func (ccpack *SignedCDSPackage) GetId() []byte
GetId gets the fingerprint of the chaincode based on package computation
func (*SignedCDSPackage) GetInstantiationPolicy ¶
func (ccpack *SignedCDSPackage) GetInstantiationPolicy() []byte
GetInstantiationPolicy gets the instantiation policy from the package
func (*SignedCDSPackage) GetPackageObject ¶
func (ccpack *SignedCDSPackage) GetPackageObject() proto.Message
GetPackageObject gets the ChaincodeDeploymentSpec as proto.Message
func (*SignedCDSPackage) InitFromBuffer ¶
func (ccpack *SignedCDSPackage) InitFromBuffer(buf []byte) (*ChaincodeData, error)
InitFromBuffer sets the buffer if valid and returns ChaincodeData
func (*SignedCDSPackage) InitFromFS ¶
func (ccpack *SignedCDSPackage) InitFromFS(ccNameVersion string) ([]byte, *pb.ChaincodeDeploymentSpec, error)
InitFromFS returns the chaincode and its package from the file system
func (*SignedCDSPackage) InitFromPath ¶
func (ccpack *SignedCDSPackage) InitFromPath(ccNameVersion string, path string) ([]byte, *pb.ChaincodeDeploymentSpec, error)
InitFromPath returns the chaincode and its package from the file system
func (*SignedCDSPackage) PutChaincodeToFS ¶
func (ccpack *SignedCDSPackage) PutChaincodeToFS() error
PutChaincodeToFS - serializes chaincode to a package on the file system
func (*SignedCDSPackage) ValidateCC ¶
func (ccpack *SignedCDSPackage) ValidateCC(ccdata *ChaincodeData) error
ValidateCC returns error if the chaincode is not found or if its not a ChaincodeDeploymentSpec
type TarFileEntry ¶
tarFileEntry encapsulates a file entry and it's contents inside a tar
type TransactionParams ¶
type TransactionParams struct { TxID string ChannelID string NamespaceID string SignedProp *pb.SignedProposal Proposal *pb.Proposal TXSimulator ledger.TxSimulator HistoryQueryExecutor ledger.HistoryQueryExecutor CollectionStore privdata.CollectionStore IsInitTransaction bool // this is additional data passed to the chaincode ProposalDecorations map[string][]byte }
TransactionParams are parameters which are tied to a particular transaction and which are required for invoking chaincode.