怎么样操作账本数据:熟悉链码相关API
目标
掌握与账簿交互的相关API的类型
熟悉与参数和账簿状态操作相关的API
任务实现
现在我们已经知道了编写链码的基本接口和所需结构,那么实际上应该如何以及在什么情况下调用账簿数据呢?
Shim包给链代码提供的对应接口如下:
参数解析API:调用链代码时,需要向被调用的目标函数/方法传递参数,与参数解析相关的API提供了获取这些参数的方法(包括被调用的目标函数/方法的名称)。
账簿状态数蓑衣网小编2022据操作API:这类API提供了操作账簿数据状态的方法,包括状态数据的查询和交易处理。
交易信息获取API:获取提交交易信息的相关API。
事件处理API:与事件处理相关的API。用于私有数据操作的
API:Hyperledger Fabric在1.2.0版本中新增的用于私有数据操作的API。
下面介绍一下每种类型对应的API的定义以及调用时需要的参数。
5.2.1与参数解析相关的API
getargs()[][byte:返回调用链代码
GetArgsSlice() ([]byte,Error)时在事务建议中指定的被调用函数和参数列表:返回参数列表
getfunctionandparameters()(函数字符串, Params []string):返回调用链代码
getstrinargs () [] string:返回调用链代码
时指定的参数列表实际开发中,获取被调用函数和参数列表常用的API有:GetFunctionAndParameters()和getstrinargs。
5.2.2账簿数据状态操作API
getstate(Key string)([]byte,error):根据指定的Key查询对应的数据状态。
put state (key string,value [] byte)错误:根据指定的key,在分类帐中保存相应的值。
DelState(key string)错误:根据指定的key删除对应的数据状态
getstatebyrange (start key,end key string)(状态查询迭代器接口,错误):根据指定的start和end key查询范围内的所有数据状态。注意:返回的结果集中不包括end键对应的数据状态。
getHistoryForkey(key 蓑衣网小编2022 string)(历史查询迭代器接口,错误):根据指定的键查询所有历史信息。
CreateCompositeKey(对象类型字符串,属性[]字符串)(字符串,错误):创建组合键。
SplitCompositeKey(组合键字符串)(string,[] string,error):拆分指定的组合键。
获取查询结果(查询字符串)(状态查询迭代器接口,错误):对状态数据库进行富查询(支持富查询功能)。目前只有CouchDB支持富查询。
5.2.3与交易信息相关的API
gett xid()String:返回交易建议中指定的交易id。
GetChannelID() string:返回在事务建议中指定的通道ID。
GetXTimestamp()(* timestamp . timestamp,error):返回事务创建的时间戳,即peer收到事务的具体时间。
getbinding () ([] byte,error):返回事务的绑定信息。如果一些临时信息,以避免重复攻击。
getSignedProposal()(* Pb . signedproposal,error):返回与交易提议相关的签名身份信息。
getcreator () ([] byte,error):返回事务提交者的身份信息。
get transient()(map[string][]byte,error):返回交易中一些不会写入账簿的临时信息。
5.2.4事件处理API
setevent (name string,payload [] byte)错误:设置事件,包括其名称和内容。
5 . 2 . 5 PrivateData操作的API
getprivatedata(集合,密钥字符串)([]字节,错误):根据指定的密钥,从指定的私有数据集中查询对应的私有数据。
putprivatedata(collection string,keystring,value [] byte)错误:将指定的键和值保存到私有数据集中。
DelPrivateData(collection,key string)错误:根据指定的键从私有数据集中删除相应的数据。
getPrivateDataByRange(collection,start key,end key string)(statequeryIteratorinterface,error):根据指定的start和end键查询范围内(不包括end键)的私有数据。
getprivatedatabatypartialcompositekey(Collection,Object Type String,Keys[]String)(statequeryeratorinterface,error):根据给定的一组部分键组合,查询给定的私有状态。
GetPrivateDataQueryResult(Collection,Query String)(StateQueryIteratorinterface,Error):根据指定的查询字符串执行富查询(仅支持支持富查询的CouchDB)。
FAQ
put写的数据状态能马上得到吗?
不能马上得到,因为put只是一个链码执行的模拟交易(防止重复提交攻击),并没有真正在账簿中保存状态。订货人达成共识后,数据状态必须保存在块中,然后保存在各个对等节点的账簿中。
未经授权,禁止复制和改编。转载请注明出处!
本文地址:https://www.chaindesk.cn/witbook/11/122
chain desk 3354全球区块链科技生态超级社区
以区块链科技为入口打造全球区块链科技生态超级社区,社区将服务于集公链生态建设、DAPP项目研发、技术咨询、课程体系研发、区块链书籍编写、区块链课程制作、讲师培训、区块链职业教育、区块链在线教育、去中心化技术测评于一体的区块链科技超级社区。免费、原创、专业、高效、系统?