SDK接口
合约SDK提供如下API接口,可以在合约文件中进行调用。这些API按照功能可以划分为:
接口 |
说明 |
---|---|
FuncName() string |
获取智能合约请求中指定的智能合约函数名称。 |
Parameters() [][]byte |
获取请求参数。 |
ChainID() string |
获取智能合约所在链ID。 |
ContractName() string |
获取智能合约名称。 |
TxTimestamp() time.Time |
获取本次交易的时间戳。 |
接口 |
说明 |
---|---|
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包含查询返回信息,支持迭代获取。 |
接口 |
说明 |
---|---|
Version() (uint64, int32) |
获取当前迭代位置(某笔交易)的 BlockNum 和 TxNum。 |
TxHash() []byte |
获取当前迭代位置(某笔交易)的hash。 |
IsDeleted() bool |
被查询的key,当前是否已经在状态数据库中被删除。 |
Timestamp() uint64 |
返回当前迭代位置(某笔交易)的时间戳。 |