Hyperledger Fabric 读写集语义

读写集语义

本文讨论了有关读写集语义的当前实现的细节。

Transaction模拟和读写集

在一个背书节点模拟transaction期间,为交易准备了一个读写集合。read set包含在模拟期间transaction读取的唯一键及其提交的版本的列表。write set包含唯一键的列表(尽管可能与读集中存在的键重叠)以及transaction写入的新值。如果transaction执行的更新是删除key,那么设置key的删除标记(代替新值)。

此外,如果transaction为key多次写入值,则只保留最后写入的值。另外,如果一个transaction为一个key读取一个值,即使transaction在发出读取之前更新了key的值,也会返回提交状态中的值。换句话说,不支持Read-your-writing语义。

如前所述,键的版本仅在读集中记录; 写入集只包含唯一键的列表及其由transaction设置的最新值。

可能有各种实现版本的方案。版本控制方案的最低要求是为给定的key生成不重复的标识符。例如,对于版本使用单调增加的数字可以是一种这样的方案。在当前的实现中,我们使用基于区块链高度的版本控制方案,其中提交transaction的高度被用作所有由transaction修改的key的最新版本。在该方案中,transaction的高度由tuple表示(txNumber是块内事务的高度)。该方案比增量数量方案具有许多优点 - 主要是它可以实现其他组件,如说明,交易模拟和验证,以进行有效的设计选择。

以下是通过模拟假设交易准备的示例读写集的说明。为了简单起见,在插图中,我们使用增量数字来表示版本。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值