前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >hyperledger fabric读写集简介

hyperledger fabric读写集简介

原创
作者头像
孟斯特
发布于 2024-08-23 08:07:29
发布于 2024-08-23 08:07:29
1920
举报
文章被收录于专栏:Go学习Go学习

在Hyperledger Fabric中,读写集(Read-Write Set, R/W Set)智能合约(链码)执行期间生成的一个关键数据结构,包含了事务执行过程中对账本状态的读取和写入操作。理解读写集是理解Fabric事务处理流程的核心之一。以下是对读写集的详细介绍:

1. 读写集的基本概念

  • 读集(Read Set):读集包含了链码在执行期间读取的账本状态。每一条读取操作都会记录键的状态,包括键的名称和对应的版本号。版本号表示的是该键在账本中最后一次被修改的版本。
  • 写集(Write Set):写集包含了链码执行期间对账本状态的写操作。每一条写操作记录了键的名称和将要写入的值,但不包含版本号。

2. 读写集的生成过程

读写集是在链码执行阶段生成的,具体流程如下:

  1. 链码执行:客户端向Fabric网络提交一个包含输入参数的提案交易。Peer节点会根据这个提案来执行链码。链码执行的结果包括一个读写集。
  2. 读操作:链码执行过程中,如果需要读取账本中的某个状态,Peer会将这个读取操作记录到读集中。每次读取时,系统会将当前读取的键及其版本号记录下来。
  3. 写操作:链码可以修改某个键的值或新增一个键值对,这些修改会被记录在写集中。写集仅记录键和新的值,不记录版本号。
  4. 生成读写集:链码执行完成后,读集和写集会合并成一个完整的读写集,并作为提案结果返回给客户端。

3. 读写集的作用

  • 一致性验证:在Fabric网络中,多个Peer节点可以同时执行相同的提案交易。每个Peer节点独立地生成自己的读写集。提案交易被提交到Orderer之后,会将交易的读写集分发给所有的Peer节点。Peer节点在提交交易前,会对读写集进行一致性验证,确保所有读取的键自生成读集以来没有被其他事务修改(即版本号未变)。如果验证失败,交易将被拒绝提交。
  • 状态更新:在通过一致性验证后,写集中的修改将被应用到账本中,更新账本状态。

4. 读写集的结构

读写集的结构主要包括以下几个部分:

  • Namespace:在Fabric中,链码的数据是以命名空间(Namespace)为单位组织的。每个链码对应一个命名空间。在读写集中,数据是按命名空间来组织的,表示读写集属于哪个链码。
  • 读集(Read Set)
    • 键(Key):账本中被读取的状态键。
    • 版本号(Version):该键被读取时的账本状态版本。
  • 写集(Write Set)
    • 键(Key):被修改或新增的状态键。
    • 值(Value):要写入账本的新值。

5. 读写集的应用场景

  • 事务并发控制:通过版本号检测来确保并发执行的事务不会导致数据不一致,这是Fabric中的一种乐观并发控制机制。
  • 事务回滚:如果在事务提交前,检测到读写集的一致性验证失败,可以通过读写集来回滚链码执行对状态的修改。

6. 示例

假设链码需要读取账本中两个键“Key1”和“Key2”,并且需要更新“Key1”的值。

  • 读集
    • 键1(Key1):版本号为v1
    • 键2(Key2):版本号为v2
  • 写集
    • 键1(Key1):新值为Value1

在一致性验证过程中,系统将检查“Key1”和“Key2”的版本号。如果自链码执行以来,这两个键的版本号没有改变(即依然是v1和v2),那么这个事务就可以提交,写集中的新值Value1将被写入账本。否则,事务将被拒绝。

总结

Hyperledger Fabric中的读写集是用于事务执行期间记录账本状态变更的关键数据结构。它不仅记录了链码对账本状态的读写操作,还在事务一致性验证中起到了核心作用,确保Fabric网络中的数据一致性和并发安全。理解读写集对深入了解Fabric的事务处理机制至关重要。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
hyperledger fabric 读写集冲突
在Hyperledger Fabric中,读写集冲突(Read-Write Set Conflict) 是指在多个事务试图同时修改或读取相同的账本状态时,由于版本号不一致导致的事务提交失败。这种冲突机制是Fabric用来保证数据一致性和防止并发事务引发不一致状态的核心部分。
孟斯特
2024/08/26
2060
hyperledger fabric 读写集冲突
Hyperledger fabric基础介绍
1.分布式存储(Distributed Ledger):所有节点共同维护完全一致的账本数据,区块以保存前一个区块Hash值的方式顺序相连,组成了链式数据结构,保证了数据的不可篡改。
zhayujie
2020/04/29
2.5K0
Hyperledger Fabric之模型
参考https://hyperledger-fabric.readthedocs.io/en/release-1.2/fabric_model.html#
Zeal
2020/11/11
1.1K0
Hyperledger Fabric基础之账本
参考 https://hyperledger-fabric.readthedocs.io/en/release-1.2/ledger/ledger.html
Zeal
2020/11/11
9720
FastFabric:提升Hyperledger Fabric性能到20000TPS
预计区块链技术将对各种行业产生重大影响。然而,阻碍它们的一个问题是它们有限的交易吞吐量,特别是与诸如分布式数据库系统之类的已建立的解决方在本文中,我们重新构建了一个现代许可的区块链系统Hyperledger Fabric,以将交易吞吐量从每秒3,000次增加到20,000次。我们专注于超出共识机制的性能瓶颈,我们提出架构更改,以减少交易排序和验证期间的计算和I / O开销,从而大大提高吞吐量。值得注意的是,我们的优化是完全即插即用的,不需要对Hyperledger Fabric进行任何界面更改。
TopJohn
2022/11/11
1.7K0
FastFabric:提升Hyperledger Fabric性能到20000TPS
Fabric的6大特性
为了满足现代业务需求,IBM与其他公司合作,共同开发了一个开放源代码,可立即投入生产的业务区块链框架,称为Hyperledger Fabric™,这是由LinuxFoundation®托管的8个Hyperledger®项目之一。
程序那些事
2020/07/08
1.3K0
Hyperledger Fabric 系统架构详解
因为毕业 Case Study 的项目主要是基于Ethereum公链,也没有面向企业的应用场景,所以之前对Hyperledger Fabric的了解大多只是停留在它的权限管理机制、通道、灵活的智能合约编写等几个特色的概念,对它的架构、各个节点的角色、运行机制等都是一知半解。最近在上 HKU 的<FITE3011 Distributed Ledger and Blockchain>课程,教授对Hyperledger Fabric的工作原理、网络搭建及链码相关的知识做了很详细的讲解,受益匪浅,通过本文来梳理一下,如有错漏,欢迎交流指正。
pseudoyu
2023/04/11
2.8K1
Hyperledger Fabric 系统架构详解
Hyperledger Fabric:一种分布式操作系统-基于准入控制的区块链
Hyperledger Fabric 是一种模块化的,可扩展的开源的用于部署和操作权限的区块链系统。Fabric目前被用于超过400多种原型以及概念证明阶段的分布式账本技术的场景中,如很多生产系统,跨越了不同行业和使用场景。
TopJohn
2022/11/11
1.9K0
Hyperledger Fabric:一种分布式操作系统-基于准入控制的区块链
Hyperledger Fabric 核心概念
区块链是一个透明的,基于不可变模式的去中心化系统,核心就是一个分布式账本,记录网络上发生的所有交易。
陶陶技术笔记
2022/05/30
8540
Hyperledger Fabric 核心概念
Fabric基础架构原理(2):共识与交易 | 赠书活动
Fabric 的网络节点本质上是互相复制的状态机,节点之间需要保持相同的账本状态。为了实现这个目的,各个节点需要通过共识( consensus )过程,对账本状态的变化达成一致性的认同。
Henry Zhang
2019/04/12
6760
Fabric基础架构原理(2):共识与交易 | 赠书活动
Fabric基础架构原理(4):链码 | 赠书活动
智能合约能够部署和运行在区块链环境中,由一段代码来描述相关的业务逻辑。部署后的智能合约在区块链中无法修改,智能合约的执行完全由代码决定,不受人为因素的干扰。一般来说,参与方通过智能合约规定各自权利和义务、触发合约的条件以及结果,一旦该智能合约在区块链环境中运行就可以得出客观、准确的结果。
Henry Zhang
2019/04/12
5650
Fabric基础架构原理(4):链码 | 赠书活动
超级账本hyperledger fabric词汇汇总
最近在学习超级账本,概念名词以及架构都比 比特币、以太坊、EOS复杂。 整理一下超级账本的词汇。
若与
2019/04/18
1.2K0
超级账本hyperledger fabric词汇汇总
——HyperLeger Fabric智能合约(链码)
在Fabric中,智能合约也称为链码(chaincode),分为用户链码和系统链码。系统链码用来实现系统层面的功能,包括系统的配置,用户链码的部署、升级,用户交易的签名和验证策略等;用户链码用于实现用户的应用功能,开发者编写链码应用程序并将其部署到区块链网络上,终端用户通过与网络节点交互的客户端应用程序调用链码。 链码被编译成一个独立的应用程序,运行于隔离的Docker容器中,在链码部署的时候会自动生成链码的Docker镜像。 链码是访问账本的基本方法,一般是用Go等高级语言编写的、实现规定接口的代码。上层应用可以通过调用链码来初始化和管理账本的状态。只要有适当的权限,链码之间也可以互相调用。 链码(Chaincode)是一段由Go语言编写(支持其它编程语言,如Java,NodeJS)并能实现预定义接口的程序。链码运行在一个受保护的Docker容器当中,与背书节点的运行互相隔离。链码可通过客户端提交的交易对账本状态初始化并进行管理。 链码通常处理由网络中的成员一致认可的业务逻辑。链码创建的(账本)状态是与其它链码互相隔离的,因而不能被其它链码直接访问。如果在相同的Fabric网络中,链码在获取相应许可后可以调用其它链码来访问它的账本。 链码被部署在Fabric网络节点上,运行在Docker容器中,并通过gRPC协议与相应的Peer节点进行交互,以操作分布式账本中的数据。
又建一梦
2018/11/17
2.5K0
区块链开源实现hyperledger fabric架构详解
hyperledger fabric是区块链中联盟链的优秀实现,主要代码由IBM、Intel、各大银行等贡献,目前v1.1版的kafka共识方式可达到1000/s次的吞吐量。本文中我们依次讨论:区块链的共通特性、fabric核心概念、fabric的交易执行流程。本文来源于笔者欲对公司部分业务上链而进行培训的PPT,故图多文字少,不要怕太长。
陶辉
2019/06/21
3.2K1
区块链开源实现hyperledger fabric架构详解
区块链技术面试常被问到的Hyberledger Fabric关键概念
先给英文官方原文地址:https://hyperledger-fabric.readthedocs.io/en/latest/overview.html
圆方圆学院
2018/11/12
1.9K0
超级账本Fabric的架构与设计
作者 | 杨保华 超级账本Fabric项目自诞生之日起就吸引了全球众多企业的密切关注,已经先后发布了两个大的版本,0.6实验版本(2016年9月)和1.0正式版本(2017年7月)。 目前,超级账本Fabric架构上核心特性主要包括: 解耦了原子排序环节与其他复杂处理环节,消除了网络处理瓶颈,提高可扩展性; 解耦交易处理节点的逻辑角色为背书节点(Endorser)、确认节点(Committer),可以根据负载进行灵活部署; 加强了身份证书管理服务,作为单独的Fabric CA项目,提供更多功能; 支持多通道
区块链大本营
2018/05/10
1.6K0
Hyperledger Fabric基础知识
本文我们会介绍Hyperledger Fabric的基础知识,并了解如何充分利用这个多功能的区块链框架。
程序那些事
2020/07/07
2.2K0
HyperLedger Fabric 1.0的Transaction处理流程
如果把区块链比作一个只能读写,不能删改的分布式数据库的话,那么事务和查询就是对这个数据库进行的最重要的操作。以比特币来说,我们通过钱包或者Blockchain.info进行区块链的查询操作,而转账行为就是Transaction的处理。而HyperLedger Fabric在1.0对系统架构进行了升级,使得事务的处理更加复杂。
深蓝studyzy
2022/06/16
4630
HyperLedger Fabric 1.0的Transaction处理流程
Fabric简介
Hyperledger Fabric是面向企业应用场景的开源分布式账本平台。Hyperledger Fabric基于模块化设计,各个模块实现特定的功能。企业之间可以组建Fabric联盟链,将相关业务数据通过智能合约方式写入链上,通过背书策略来保证各个企业数据的一致性。由于业务数据的共享,从而加速各项业务的开展,最直接的场景比如清结算等。
小亮
2018/07/27
2.6K1
Fabric简介
利用Hyperledger Fabric开发你的第一个区块链应用
在这个例子中,我们通过一个简单的示例程序来了解Fabric应用是如何运行的。在这个例子中使用的应用程序和智能合约(链码)统称为FabCar。这个例子很好地提供了一个开始用于理解Hyperledger Fabric。在这里,你将学会如何开发一个应用程序和智能合约来查询和更新账本,如何利用CA来生成一个应用程序需要的用于和区块链交互的X.509证书。
TopJohn
2022/11/11
1.8K0
利用Hyperledger Fabric开发你的第一个区块链应用
相关推荐
hyperledger fabric 读写集冲突
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档