ccprovider

package
v0.0.0-...-fbe82ab Latest Latest
Warning

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

Go to latest
Published: Mar 16, 2019 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ChaincodePackageExists

func ChaincodePackageExists(ccname string, ccversion string) (bool, error)

chaincode package exists返回文件系统中是否存在chaincode包。

func CheckInstantiationPolicy

func CheckInstantiationPolicy(name, version string, cdLedger *ChaincodeData) error

func ExtractFileEntries

func ExtractFileEntries(tarBytes []byte, databaseType string) (map[string][]*TarFileEntry, error)

extractFileEntries从给定的“tarbytes”中提取文件条目。文件条目包含在 仅当它位于指示的databasetype目录下的目录中时返回结果 链码索引示例: “META-INF/statedb/couchdb/indexes/indexcolorsortname.json” 集合范围索引示例: “META-INF/statedb/couchdb/collections/collectionmarbles/indexes/indexcollmarbles.json” 空字符串将具有返回所有statedb元数据的效果。这在验证 将来使用多种数据库类型进行存档

func ExtractStatedbArtifactsForChaincode

func ExtractStatedbArtifactsForChaincode(ccname, ccversion string, pr *platforms.Registry) (installed bool, statedbArtifactsTar []byte, err error)

extractstatedbartifactsastarbytes从代码包tar中提取statedb工件并创建statedb工件tar。 对于couchdb,状态db工件应该包含特定于状态db的工件,例如索引规范。 此函数旨在在链代码实例化/升级期间使用,以便可以创建StateDB工件。

func ExtractStatedbArtifactsFromCCPackage

func ExtractStatedbArtifactsFromCCPackage(ccpackage CCPackage, pr *platforms.Registry) (statedbArtifactsTar []byte, err error)

extractstatedbartifactsfromccpackage从代码包tar中提取statedb工件并创建statedb工件tar。 对于couchdb,状态db工件应该包含特定于状态db的工件,例如索引规范。 这个函数在chaincode实例化/升级(从上面)和安装过程中调用,这样就可以创建statedb工件。

func GetChaincodeInstallPathFromViper

func GetChaincodeInstallPathFromViper() string

getchaincodeinstallpathFromViper返回安装链码的路径

func GetChaincodePackage

func GetChaincodePackage(ccname string, ccversion string) ([]byte, error)

func GetChaincodePackageFromPath

func GetChaincodePackageFromPath(ccname string, ccversion string, ccInstallPath string) ([]byte, error)

getchaincodepackage从文件系统返回chaincode包

func GetInstalledChaincodes

func GetInstalledChaincodes() (*pb.ChaincodeQueryResponse, error)

GetInstalledChaincodes返回一个映射,其键是链码ID,并且 值是具有 已通过搜索在对等机上安装(但不一定实例化) 链码安装路径

func IsChaincodeDeployed

func IsChaincodeDeployed(chainid, ccName, ccVersion string, ccHash []byte, sccp sysccprovider.SystemChaincodeProvider) (bool, error)

如果部署了具有给定名称和版本的链代码,is chaincode deployed将返回true。

func NewCCInfoCache

func NewCCInfoCache(cs CCCacheSupport) *ccInfoCacheImpl

newccinfo缓存在提供的ccinfo提供程序实例上返回新缓存

func PutChaincodeIntoFS

func PutChaincodeIntoFS(depSpec *pb.ChaincodeDeploymentSpec) error

putchaincodeintofs将链码信息放入文件系统(和 如果启用了缓存,或者直接 来自文件系统,否则

func SetChaincodesPath

func SetChaincodesPath(path string)

setchaincodespath设置此对等机的链码路径

Types

type CCCacheSupport

type CCCacheSupport interface {
	//get chaincode是缓存获取链码数据所必需的
	GetChaincode(ccname string, ccversion string) (CCPackage, error)
}

type CCContext

type CCContext struct {
	//名称链代码名称
	Name string

	//用于构造链码图像和寄存器的版本
	Version string
}

ccContext传递此参数,而不是字符串参数

func (*CCContext) GetCanonicalName

func (cccid *CCContext) GetCanonicalName() string

getcanonicalname返回与建议上下文关联的规范名称

type CCInfoFSImpl

type CCInfoFSImpl struct{}

ccinfofsimpl提供了在fs上CC的实现和对它的访问 实施CCacheSupport

func (*CCInfoFSImpl) GetChaincode

func (cifs *CCInfoFSImpl) GetChaincode(ccname string, ccversion string) (CCPackage, error)

getchaincodefromfs这是一个用于隐藏包实现的包装器。 它使用chaincodeinstallpath调用getchaincodedefcompath

func (*CCInfoFSImpl) GetChaincodeCodePackage

func (cifs *CCInfoFSImpl) GetChaincodeCodePackage(ccname, ccversion string) ([]byte, error)

func (*CCInfoFSImpl) GetChaincodeFromPath

func (*CCInfoFSImpl) GetChaincodeFromPath(ccname string, ccversion string, path string) (CCPackage, error)

getchaincodefrompath这是用于隐藏包实现的包装。

func (*CCInfoFSImpl) ListInstalledChaincodes

func (cifs *CCInfoFSImpl) ListInstalledChaincodes(dir string, ls DirEnumerator, ccFromPath ChaincodeExtractor) ([]chaincode.InstalledChaincode, error)

ListInstalledChaincodes检索已安装的链代码

func (*CCInfoFSImpl) PutChaincode

func (*CCInfoFSImpl) PutChaincode(depSpec *pb.ChaincodeDeploymentSpec) (CCPackage, error)

putchaincodeintofs是用于放置原始chaincodedeploymentspec的包装器 使用cdspackage。这只在UTS中使用

type CCPackage

type CCPackage interface {
	//initfrombuffer从字节初始化包
	InitFromBuffer(buf []byte) (*ChaincodeData, error)

	//initfromfs从文件系统获取链码(也包括原始字节)
	InitFromFS(ccname string, ccversion string) ([]byte, *pb.ChaincodeDeploymentSpec, error)

	//putchaincodetofs将链码写入文件系统
	PutChaincodeToFS() error

	//getdepspec从包中获取chaincodedeploymentspec
	GetDepSpec() *pb.ChaincodeDeploymentSpec

	//GetDepspecBytes从包中获取序列化的chaincodeDeploymentsPec
	GetDepSpecBytes() []byte

	//validatecc验证并返回对应于
	//链表数据。验证基于来自chaincodedata的元数据
	//此方法的一个用途是在启动前验证链码
	ValidateCC(ccdata *ChaincodeData) error

	//getPackageObject以proto.message形式获取对象
	GetPackageObject() proto.Message

	//getchaincodedata获取链码数据
	GetChaincodeData() *ChaincodeData

	//GetID根据包计算获取链码的指纹
	GetId() []byte
}

ccpackage封装了一个chaincode包,可以 原始链代码部署 已签署的haincodedeploymentspec 尝试将接口保持在最小 用于可能泛化的接口。

func GetCCPackage

func GetCCPackage(buf []byte) (CCPackage, error)

getcpackage逐个尝试每个已知的包实现 直到找到合适的包裹

func GetChaincodeFromFS

func GetChaincodeFromFS(ccname string, ccversion string) (CCPackage, error)

getchaincodefromfs从文件系统检索链码信息

func LoadPackage

func LoadPackage(ccname string, ccversion string, path string) (CCPackage, error)

loadpackage从文件系统加载chaincode包

type CDSData

type CDSData struct {
	//来自chaincodedeploymentspec的代码包的codehash哈希
	CodeHash []byte `protobuf:"bytes,1,opt,name=codehash,proto3"`

	//来自chaincodedeploymentspec的名称和版本的metadatahash哈希
	MetaDataHash []byte `protobuf:"bytes,2,opt,name=metadatahash,proto3"`
}

cdsdata是在CC实例化时存储在LSCC中的数据。 用于CD包装。这需要为chaincodedata序列化 因此,Protobuf格式

func (*CDSData) Equals

func (data *CDSData) Equals(other *CDSData) bool

等于数据等于其他

func (*CDSData) ProtoMessage

func (*CDSData) ProtoMessage()

原始信息的存在只是为了让原始人快乐

func (*CDSData) Reset

func (data *CDSData) Reset()

重置重置

func (*CDSData) String

func (data *CDSData) String() string

字符串转换为字符串

type CDSPackage

type CDSPackage struct {
	// contains filtered or unexported fields
}

cdspackage封装了chaincodedeploymentspec。

func (*CDSPackage) GetChaincodeData

func (ccpack *CDSPackage) GetChaincodeData() *ChaincodeData

getchaincodedata获取链码数据

func (*CDSPackage) GetDepSpec

func (ccpack *CDSPackage) GetDepSpec() *pb.ChaincodeDeploymentSpec

getdepspec从包中获取chaincodedeploymentspec

func (*CDSPackage) GetDepSpecBytes

func (ccpack *CDSPackage) GetDepSpecBytes() []byte

GetDepspecBytes从包中获取序列化的chaincodeDeploymentsPec

func (*CDSPackage) GetId

func (ccpack *CDSPackage) GetId() []byte

GetID根据包计算获取链码的指纹

func (*CDSPackage) GetPackageObject

func (ccpack *CDSPackage) GetPackageObject() proto.Message

getPackageObject以proto.message形式获取chaincodeDeploymentsPec

func (*CDSPackage) InitFromBuffer

func (ccpack *CDSPackage) InitFromBuffer(buf []byte) (*ChaincodeData, error)

initfrombuffer设置缓冲区(如果有效)并返回chaincodedata

func (*CDSPackage) InitFromFS

func (ccpack *CDSPackage) InitFromFS(ccname string, ccversion string) ([]byte, *pb.ChaincodeDeploymentSpec, error)

initfromfs从文件系统返回链码及其包

func (*CDSPackage) InitFromPath

func (ccpack *CDSPackage) InitFromPath(ccname string, ccversion string, path string) ([]byte, *pb.ChaincodeDeploymentSpec, error)

initfromfs从文件系统返回链码及其包

func (*CDSPackage) PutChaincodeToFS

func (ccpack *CDSPackage) PutChaincodeToFS() error

putchaincodetofs-将链码序列化到文件系统上的包

func (*CDSPackage) ValidateCC

func (ccpack *CDSPackage) ValidateCC(ccdata *ChaincodeData) error

如果未找到链码或链码不是 链码部署规范

type ChaincodeContainerInfo

type ChaincodeContainerInfo struct {
	Name        string
	Version     string
	Path        string
	Type        string
	CodePackage []byte

	//containerType不是一个好名字,但“docker”和“system”是有效的类型
	ContainerType string
}

chaincodecontainerinfo是启动/停止chaincode所需数据的另一个同义词。

func DeploymentSpecToChaincodeContainerInfo

func DeploymentSpecToChaincodeContainerInfo(cds *pb.ChaincodeDeploymentSpec) *ChaincodeContainerInfo

type ChaincodeData

type ChaincodeData struct {
	//链码的名称
	Name string `protobuf:"bytes,1,opt,name=name"`

	//链码的版本
	Version string `protobuf:"bytes,2,opt,name=version"`

	//链代码实例的ESCC
	Escc string `protobuf:"bytes,3,opt,name=escc"`

	//链代码实例的vscc
	Vscc string `protobuf:"bytes,4,opt,name=vscc"`

	//链码实例的策略认可策略
	Policy []byte `protobuf:"bytes,5,opt,name=policy,proto3"`

	//Data data specific to the package
	Data []byte `protobuf:"bytes,6,opt,name=data,proto3"`

	//作为CC唯一指纹的链码的ID这不是
	//目前在任何地方使用,但作为一个很好的捕眼器
	Id []byte `protobuf:"bytes,7,opt,name=id,proto3"`

	//链代码的实例化策略
	InstantiationPolicy []byte `protobuf:"bytes,8,opt,name=instantiation_policy,proto3"`
}

chaincodedata定义要由proto序列化的链代码的数据结构 类型通过在实例化后直接使用特定包来提供附加检查。 数据类型为specifc(请参阅cdspackage和signedcddspackage)

func GetChaincodeData

func GetChaincodeData(ccname string, ccversion string) (*ChaincodeData, error)

getchaincodedata从缓存中获取链码数据(如果有)

func (*ChaincodeData) CCName

func (cd *ChaincodeData) CCName() string

ccname返回这个chaincode的名称(它放在chaincoderegistry中的名称)。

func (*ChaincodeData) CCVersion

func (cd *ChaincodeData) CCVersion() string

ccversion返回链代码的版本。

func (*ChaincodeData) Endorsement

func (cd *ChaincodeData) Endorsement() string

认可返回如何认可此链码的建议。 字符串返回的是认可方法(通常为“escc”)的名称。

func (*ChaincodeData) Hash

func (cd *ChaincodeData) Hash() []byte

哈希返回链码的哈希。

func (*ChaincodeData) ProtoMessage

func (*ChaincodeData) ProtoMessage()

原始信息的存在只是为了让原始人快乐

func (*ChaincodeData) Reset

func (cd *ChaincodeData) Reset()

重置重置

func (*ChaincodeData) String

func (cd *ChaincodeData) String() string

字符串转换为字符串

func (*ChaincodeData) Validation

func (cd *ChaincodeData) Validation() (string, []byte)

validation返回如何验证此链码的事务。 返回的字符串是验证方法的名称(通常为“vscc”)。 返回的字节是验证的参数(在 “vscc”,这是封送的pb.vsccargs消息)。

type ChaincodeDefinition

type ChaincodeDefinition interface {
	//ccname返回这个chaincode的名称(它放在chaincoderegistry中的名称)。
	CCName() string

	//哈希返回链码的哈希。
	Hash() []byte

	//ccversion返回链代码的版本。
	CCVersion() string

	//validation返回如何验证此链码的事务。
	//返回的字符串是验证方法的名称(通常为“vscc”)。
	//返回的字节是验证的参数(在
	//“vscc”,这是封送的pb.vsccargs消息)。
	Validation() (string, []byte)

	//认可返回如何认可此链码的建议。
	//字符串返回的是认可方法(通常为“escc”)的名称。
	Endorsement() string
}

--------chaincodedefinition-chaincodedata接口------ chaincodedefinition描述了对等方决定是否认可的所有必要信息。 针对特定链码的建议以及是否验证事务。

type ChaincodeExtractor

type ChaincodeExtractor func(ccname string, ccversion string, path string) (CCPackage, error)

chaincodeextractor从给定路径提取链码

type ChaincodeProvider

type ChaincodeProvider interface {
	//执行执行对链码和输入执行标准链码调用
	Execute(txParams *TransactionParams, cccid *CCContext, input *pb.ChaincodeInput) (*pb.Response, *pb.ChaincodeEvent, error)
	//executeLegacyInit是执行链代码部署规范的特殊情况,
	//它不在LSCC中,是旧生命周期所需的
	ExecuteLegacyInit(txParams *TransactionParams, cccid *CCContext, spec *pb.ChaincodeDeploymentSpec) (*pb.Response, *pb.ChaincodeEvent, error)
	//停止停止链码给出
	Stop(ccci *ChaincodeContainerInfo) error
}

ChaincodeProvider提供了一个抽象层,即 用于不同的包与中的代码交互 不导入chaincode包;更多方法 如有必要,应在下面添加

type DirEnumerator

type DirEnumerator func(string) ([]os.FileInfo, 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"`
}

SignedCDDSData是在CC实例化时存储在LSCC中的数据。 对于已签名的dcdspackage。这需要为chaincodedata序列化 因此,Protobuf格式

func (*SignedCDSData) Equals

func (data *SignedCDSData) Equals(other *SignedCDSData) bool

等于数据等于其他

func (*SignedCDSData) ProtoMessage

func (*SignedCDSData) ProtoMessage()

原始信息的存在只是为了让原始人快乐

func (*SignedCDSData) Reset

func (data *SignedCDSData) Reset()

重置重置

func (*SignedCDSData) String

func (data *SignedCDSData) String() string

字符串转换为字符串

type SignedCDSPackage

type SignedCDSPackage struct {
	// contains filtered or unexported fields
}

SignedCdsPackage封装了SignedChaincodeDeploymentSpec。

func (*SignedCDSPackage) GetChaincodeData

func (ccpack *SignedCDSPackage) GetChaincodeData() *ChaincodeData

getchaincodedata获取链码数据

func (*SignedCDSPackage) GetDepSpec

func (ccpack *SignedCDSPackage) GetDepSpec() *pb.ChaincodeDeploymentSpec

getdepspec从包中获取chaincodedeploymentspec

func (*SignedCDSPackage) GetDepSpecBytes

func (ccpack *SignedCDSPackage) GetDepSpecBytes() []byte

GetDepspecBytes从包中获取序列化的chaincodeDeploymentsPec

func (*SignedCDSPackage) GetId

func (ccpack *SignedCDSPackage) GetId() []byte

GetID根据包计算获取链码的指纹

func (*SignedCDSPackage) GetInstantiationPolicy

func (ccpack *SignedCDSPackage) GetInstantiationPolicy() []byte

GetInstantiationPolicy从包中获取实例化策略

func (*SignedCDSPackage) GetPackageObject

func (ccpack *SignedCDSPackage) GetPackageObject() proto.Message

getPackageObject以proto.message形式获取chaincodeDeploymentsPec

func (*SignedCDSPackage) InitFromBuffer

func (ccpack *SignedCDSPackage) InitFromBuffer(buf []byte) (*ChaincodeData, error)

initfrombuffer设置缓冲区(如果有效)并返回chaincodedata

func (*SignedCDSPackage) InitFromFS

func (ccpack *SignedCDSPackage) InitFromFS(ccname string, ccversion string) ([]byte, *pb.ChaincodeDeploymentSpec, error)

initfromfs从文件系统返回链码及其包

func (*SignedCDSPackage) InitFromPath

func (ccpack *SignedCDSPackage) InitFromPath(ccname string, ccversion string, path string) ([]byte, *pb.ChaincodeDeploymentSpec, error)

initfrompath从文件系统返回链码及其包

func (*SignedCDSPackage) PutChaincodeToFS

func (ccpack *SignedCDSPackage) PutChaincodeToFS() error

putchaincodetofs-将链码序列化到文件系统上的包

func (*SignedCDSPackage) ValidateCC

func (ccpack *SignedCDSPackage) ValidateCC(ccdata *ChaincodeData) error

如果未找到链码或链码不是 链码部署规范

type TarFileEntry

type TarFileEntry struct {
	FileHeader  *tar.Header
	FileContent []byte
}

tar file entry封装一个文件条目,它的内容在tar中

type TransactionParams

type TransactionParams struct {
	TxID                 string
	ChannelID            string
	SignedProp           *pb.SignedProposal
	Proposal             *pb.Proposal
	TXSimulator          ledger.TxSimulator
	HistoryQueryExecutor ledger.HistoryQueryExecutor
	CollectionStore      privdata.CollectionStore
	IsInitTransaction    bool

	//这是传递给链码的附加数据
	ProposalDecorations map[string][]byte
}

事务参数是绑定到特定事务的参数。 以及调用chaincode所需的。

Jump to

Keyboard shortcuts

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