更新时间:2024-06-28 GMT+08:00
分享

SDK接口

合约SDK提供如下API接口,可以在合约文件中进行调用。这些API按照功能可以划分为:

表1 stub接口

接口

说明

FuncName() string

获取智能合约请求中指定的智能合约函数名称。

Parameters() [][]byte

获取请求参数。

ChainID() string

获取智能合约所在链ID。

ContractName() string

获取智能合约名称。

TxTimestamp() time.Time

获取本次交易的时间戳。

表2 ContractStub接口

接口

说明

GetKV(key string) ([]byte, error)

功能:获取状态数据库中某个key对应的value。

入参:某个键值对的key信息,不可为空。

返回值:返回[]byte类型的value值;当key不存在时,value为nil。

error:当网络出错,状态数据库出错,返回error信息。

PutKV(key string, value []byte) error

功能:写状态数据库操作,将key、value形成写集,打包到交易中,当交易排序、出块、并校验通过之后,将key/value写入到状态数据库中。入参:要写入的键值对要求key != "",并且value != nil。

error:入参错误。

PutKVCommon(key string, value interface{}) error

功能:写状态数据库操作,与PutKV功能相同;与PutKV接口的不同之处在于 value不是[]byte类型,而是一个实现了Marshal(v interface{}) ([]byte, error)接口的数据,接口内部,会将value通过Marshal接口序列化,然后再形成写集。

入参:要写入的键值对,要求key != "",并且value实现了Marshal接口,可以序列化为[]byte。

error:入参错误。

DelKV(key string) error

功能:删除状态数据库中的key及其对应的value,此接口只是将待删除的key放入写集,打包到交易中,当交易排序、出块、并校验通过之后,将key删除。

入参:要删除的key要求key != ""。

error:入参错误。

GetIterator(startKey, endKey string) (Iterator, error)

功能:查询状态数据库中,按字典序,以startKey开头,以endKey结尾的所有状态数据,结果以迭代器的形式呈现;查询范围是左闭右开的,[startKey, endKey)。

入参:startKey是待查询状态数据的按字典序的起始key,startKey != "",endKey是待查询的状态数据的按字典序的结束key,endKey!= ""。

返回值:Iterator是查询结果的迭代器,可以通过此迭代器,按顺序读取查询结果。

error:入参或网络错误。

GetKeyHistoryIterator(key string) (HistoryIterator, error)

功能:查询一个key对应的所有历史的value

入参:key是待查询历史value值的key信息,key != ""。

返回值:HistoryIterator是按顺序返回包含历史value结果的迭代器结构体变量。

error:入参或网络错误。

SaveComIndex(indexName string, attributes []string, objectKey string) error

功能:为objectKey保存索引信息,indexName_attributes_objectKey构成索引信息,注意,此处只是形成索引信息的写集,只有当含有此写集的交易经过排序、出块,并校验通过后,才会写入状态数据库。

入参:indexName 索引标记,indexName != "",attributes需要当做索引的属性,至少包含一个属性信息,objectKey 待索引的key值,objectKey != ""。

error:入参错误。

GetKVByComIndex(indexName string, attributes []string) (Iterator, error)

功能:通过索引信息,查找满足某种查询条件的key/value,key/value以迭代器的形式输出。

入参:indexName 索引标记,indexName != "",attributes需要当做索引的属性,至少包含一个属性信息

返回值:满足索引条件的key/value的迭代器变量。

error:入参或网络错误。

DelComIndexOneRow(indexName string, attributes []string, objectKey string) error

功能:删除objectKey的某个索引,indexName_attributes_objectKey构成索引信息,注意,此处只是形成索引信息的写集,只有当含有此写集的交易经过排序、出块,并校验通过后,才会写入状态数据库。

入参:indexName 索引标记,indexName != "",attributes需要当做索引的属性,至少包含一个属性信息,objectKey 待索引的key值,objectKey != ""。

error:入参错误。

SplitComKey(comKey string) (string, []string, error)

功能:将查询到的复合键分离为objectkey和对应的attributes。

返回值:objectkey,和attributes字符串数组。

GetKVByPartialComKey(objectType string, attributes []string) (Iterator, error)

功能:部分复合键查询。

返回值:Iterator包含查询返回信息,支持迭代获取。

表3 HistoryIterator迭代器接口

接口

说明

Version() (uint64, int32)

获取当前迭代位置(某笔交易)的 BlockNum 和 TxNum。

TxHash() []byte

获取当前迭代位置(某笔交易)的hash。

IsDeleted() bool

被查询的key,当前是否已经在状态数据库中被删除。

Timestamp() uint64

返回当前迭代位置(某笔交易)的时间戳。

相关文档