超级账本Fabric的世界状态操作与账本操作
创始人
2024-01-28 14:28:58

在 Hyperledger Fabric 中,账本由两个不同但相关的部分组成 - 世界状态和区块链。

世界状态: 一个数据库,其中存储了一组帐本状态的当前值的缓存。世界状态使程序可以轻松地直接访问状态的当前值,而不必通过遍历整个交易日志来计算状态值。世界状态可以频繁更改,因为可以创建,更新和删除状态。

区块链 : 交易日志,记录了导致当前世界状态的所有更改。交易收集在附加到区块链的区块内部,使你能够了解导致当前世界状态变化的历史。区块链数据结构与世界状态非常不同,因为一旦写入,就无法修改;这是一成不变的。这就是银行的流水吧。


账簿数据状态操作API包括以下内容。
getstate(Key string)([]byte,error):根据指定的Key查询对应的数据状态。
put state (key string,value [] byte):根据指定的key,在分类帐中保存相应的值。
DelState(key string):根据指定的key删除对应的数据状态

******************************************************

以下来自网页
https://dandelioncloud.cn/article/details/1575115195137880066
3.3.2.3 链码查询
与调用交易一样,验证 peer 发送QUERY消息给链码容器的shim,由它来调用链码的Query函数,并传递从ChaincodeInput得到的参数。Query函数可能会返回状态值或错误,它会把它通过RESPONSE或ERROR消息来传递给验证 peer。

3.3.2.4 链码状态
每个链码可能都定义了它自己的持久化状态变量。例如,一个链码可能创建电视,汽车或股票这样的资产来保存资产属性。当Invoke函数处理时,链码可能会更新状态变量,例如改变资产所有者。链码会根据下面这些消息类型类操作状态变量:

PUT_STATE
链码发送一个payload包含PutStateInfo对象的PU_STATE消息来保存键值对。

message PutStateInfo {
    string key = 1;
    bytes value = 2;
}
GET_STATE
链码发送一个由payload指定要获取值的键的GET_STATE消息。

DEL_STATE
链码发送一个由payload指定要删除值的键的DEL_STATE消息。

RANGE_QUERY_STATE
链码发送一个payload包含RANGE_QUERY_STATE对象的RANGE_QUERY_STATE来获取一个范围内的值。
ReadOnlyLedger 接口是为了查询总账的本地备份,而不会修改它。
UtilLedger 接口定义了一些由本地总账提供的有用的功能。
HashBlock(block *pb.Block) ([]byte, error)
VerifyBlockchain(start, finish uint64) (uint64, error)
这个方法是用来校验区块链中的大的区域。
WritableLedger 接口
定义:

type WritableLedger interface {
    PutBlock(blockNumber uint64, block *pb.Block) error
    ApplyStateDelta(id interface{}, delta *statemgmt.StateDelta) error
    CommitStateDelta(id interface{}) error
    RollbackStateDelta(id interface{}) error
    EmptyState() error
}
WritableLedger 接口允许调用者更新区块链。注意这NOT 不是共识插件的通常用法。当前的状态需要通过Executor接口执行交易来修改,新的区块在交易提交时生成。相反的,这个接口主要是用来状态改变和腐化恢复。特别的,这个接口下的函数永远不能直接暴露给共识消息,这样会导致打破区块链所承诺的不可修改这一概念。这个结构包含下面这些函数。
PutBlock(blockNumber uint64, block *pb.Block) error这个函数根据给定的区块编号把底层区块插入到区块链中。
ApplyStateDelta(id interface{}, delta *statemgmt.StateDelta) error这个函数接收状态变化,并把它应用到当前的状态。
CommitStateDelta(id interface{}) error
RollbackStateDelta(id interface{}) error
EmptyState() error删除整个当前状态

******************************************************

看来目前只能操作世界状态了。网上看资料,看3-4天,做个记录。

感谢寒暄的大企鹅不吝指点。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
不用电脑怎么设置苹果铃声 ip... 需要一个app,加上苹果自带的app即可1、手机下载爱思极速版。因为之前换手机搬移数据时店员帮忙整理...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
才高八斗的主人公 三顾茅庐的主... 古代君王在建立自己的政治体系之时,大多会采取一些礼贤下士的手段,对于一些有卓越才能的人放低姿态。因为...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...