链码API接口
Hyperledger Fabric Go 语言版本链码有丰富的 API 接口,用户链码通过这些接口直接完成与分布式账本的交互。代码实现详情可以参考 API 接口代码实现,文档可以参考官方文档说明。
从功能方面划分,可将 ChaincodeStubInterface 的 API 划分为以下类型:
辅助功能类
接口名称 | 说明 |
---|---|
GetArgs() [][]byte | 获取链码调用请求中调用参数 |
GetStringArgs() []string | 获取链码调用请求中调用参数 |
GetFunctionAndParameters() (string, []string) | 获取链码调用的函数名和调用参数, 默认第一个参数为函数名 |
GetArgsSlice() ([]byte, error) | 获取链码调用请求中调用参数 |
InvokeChaincode(chaincodeName string, args [][]byte, channel string) pb.Response | 调用其它链码的 Invoke 方法 |
CreateCompositeKey(objectType string, attributes []string) (string, error) | 组合属性,形成复合键 |
SplitCompositeKey(compositeKey string) (string, []string, error) | 将复合键拆分成一系列属性 |
SetEvent(name string, payload []byte) error | 设置发送的事件 |
交易信息获取
接口名称 | 说明 |
---|---|
GetTxID() string | 获取交易的交易 ID |
GetChannelID() string | 获取当前的通道名称 |
GetCreator() ([]byte, error) | 获取交易提交者信息 |
GetTransient() (map[string][]byte, error) | 获取交易的临时信息,这类信息主要用于应用在程序级,并不写入账本数据 |
GetBinding() ([]byte, error) | 返回交易的绑定信息,这类绑定主要用于强制应用程序数据与临时信息的链接 |
GetDecorations() map[string][]byte | 获取交易的额外信息 |
GetSignedProposal() (*pb.SignedProposal, error) | 获取交易提案所有相关数据 |
GetTxTimestamp() (*timestamp.Timestamp, error) | 获取交易时间戳 |
账本数据操作
接口名称 | 说明 |
---|---|
GetState(key string) ([]byte, error) | 获取指定键对应的值 |
PutState(key string, value []byte) error | 在账本中添加或者更新一对键值 |
DelState(key string) error | 在账本中删除一对键值 |
SetStateValidationParameter(key string, ep []byte) error | 设置特定键值的背书策略 |
GetStateValidationParameter(key string) ([]byte, error) | 获取特定键值的背书策略 |
GetStateByRange(startKey, endKey string) (StateQueryIteratorInterface, error) | 查询指定范围内的键值 |
GetStateByRangeWithPagination(startKey, endKey string, pageSize int32, bookmark string) (StateQueryIteratorInterface, *pb.QueryResponseMetadata, error) | 分页查询指定范围内的键值 |
GetStateByPartialCompositeKey(objectType string, keys []string) (StateQueryIteratorInterface, error) | 查询匹配局部复合键的所有键值 |
GetStateByPartialCompositeKeyWithPagination(objectType string, keys []string, pageSize int32, bookmark string) (StateQueryIteratorInterface, *pb.QueryResponseMetadata, error) | 分页查询匹配局部复合键的所有键值 |
GetQueryResult(query string) (StateQueryIteratorInterface, error) | 使用富查询方式查询状态数据库,状态数据库需要能够支持富查询功能 |
GetQueryResultWithPagination(query string, pageSize int32, bookmark string) (StateQueryIteratorInterface, *pb.QueryResponseMetadata, error) | 使用富查询方式分页查询状态数据库,状态数据库需要能够支持富查询功能 |
GetHistoryForKey(key string) (HistoryQueryIteratorInterface, error) | 返回对应键的所有历史值 |
GetPrivateData(collection, key string) ([]byte, error) | 获取指定私有数据集中的键的值 |
GetPrivateDataHash(collection, key string) ([]byte, error) | 获取指定私有数据集中的键的值的 hash |
PutPrivateData(collection string, key string, value []byte) error | 设置指定私有数据集中键的值 |
DelPrivateData(collection, key string) error | 删除指定私有数据集中指定的键 |
SetPrivateDataValidationParameter(collection, key string, ep []byte) error | 设置私有数据集中指定键的背书策略 |
GetPrivateDataValidationParameter(collection, key string) ([]byte, error) | 获取私有数据集中指定键的背书策略 |
GetPrivateDataByRange(collection, startKey, endKey string) (StateQueryIteratorInterface, error) | 获取指定私有数据集中特定范围键的键值 |
GetPrivateDataByPartialCompositeKey(collection, objectType string, keys []string) (StateQueryIteratorInterface, error) | 获取指定私有数据集中匹配局部复合键的键值 |
GetPrivateDataQueryResult(collection, query string) (StateQueryIteratorInterface, error) | 通过富查询方式查询私有数据集,状态数据库需要能够支持富查询功能 |