| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> Hyperledger Fabric架构详解 -> 正文阅读 |
|
[区块链]Hyperledger Fabric架构详解 |
Fabric是一个模块化和可扩展的开源系统,用于部署和操作许可的区块链,也是Linux基金会(www.hyperledger.org)主持的Hyperledger项目之一。 Hyperledger Fabric是一个较为典型的联盟链结构。 1.Hyperledger Fabric采用区块链解决方案1.1分布式帐本区块链核心概念是分布式帐本(Distributed ledger)。分布式账本是一种在网络成员之间共享、复制和同步的数据库。分布式账本记录网络参与者之间的交易,并降低了因调解不同账本所产生的时间和开支成本。 状态复制机(SMR)与分布式数据库的对比如上图所示,其优点是数据很难造假,即使造假也可以通过追溯来追究责任。缺点是极大的浪费。 区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构。区块链记账方式与传统的方式相比,一个是帐本不能过大,不能超过区块链网络中最小节点的存储及处理能力。另一方面,区块链环境具有拜占庭缺点:
1.2智能合约区块链的发展过程中,一般1.0时代就是数字货币时代,代表是比特币。而2.0时代就是智能合约,代表是以太坊。现在是3.0时代,各种联盟链即为代表。 Install → Instantiate → invocable → Upgrade → Deinstantiate → Uninstall.
1.3数据一致性(共识算法)区块链处理一致性方法较多,如PBFT、POW、POS等等。(不再列举)Hyperledger Fabric则采用PBFT(Byzantine-fault tolerant)是第一个引入可插拔共识的区块链系统。网络中的Orders(即Consenter)作为共识插件,也可以理解为提供共识服务的网络节点,其负责接受交易信息并进行排序,以及对交易进行切割并打包,打包后返回批量交易。 1.4非对称加密Hyperledger Fabric中采用的非对称加密技术实现身份验证和数据加密。也就是常说的SSL技术。 1.4.1 数字证书数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份。因此数字证书又称为数字标识。数字证书对网络用户在计算机网络交流中的信息和数据等以加密或解密的形式保证了信息和数据的完整性和安全性。 1.4.2 公钥与私钥CA颁发了两个证书:公钥与私钥,其中,私钥仅服务提供者保存,而公钥则可被所有人(服务使用者)保存。 所谓非对称加密,就是公钥加密的消息仅私钥可以解密;同理,私钥加密的消息,仅公钥可以解密。对应于前者,可以实现客户端访问服务器时加密消息,例如访问安全级别高的页面时提交的表单信息都需要用公钥加密,确保只有服务器才能解密网络报文。对应于后者,则可实现签名功能,如下面的图所示。 2、fabric核心概念Fabric的体系结构遵循一种新颖的执行顺序验证范式,用于在不可信环境中分布式执行不可信代码。它将事务流程分为三个步骤,可以在系统中的不同实体上运行:
Fabric使用分布式数据库中常见的被动或主备份复制,但使用基于中间件的非对称更新处理,并移植到具有拜占庭式故障的不可信环境中。在Fabric中,每个事务仅由对等体的子集执行(认可),这允许并行执行,并利用“执行-验证”BFT复制解决了潜在的不确定性。灵活的背书策略指定了哪些对等方或多少对等方需要保证给定智能合同的正确执行。第二,Fabric结合了主动复制,即事务对分类帐状态的影响仅在它们之间就总订单达成一致后,在由每个对等方单独执行的确定性验证步骤中写入。这允许Fabric根据交易背书尊重特定于应用程序的信任假设。此外,状态更新的排序被委托给用于一致性的模块化组件(即,原子广播),该组件是无状态的,并且在逻辑上与执行事务和维护分类帐的对等体分离。由于共识是模块化的,它的实现可以根据特定部署的信任假设进行定制。尽管也可以很容易地使用区块链同行来实现共识,但这两种角色的分离增加了灵活性,使人们可以依赖成熟的工具包来进行CFT(故障容错)或BFT订购。 总之,Hyperledger Fabric在拜占庭模型中混合了被动和主动复制,以execute - order - validate为主要体系。 2.1 组件
另外涉及概念: 2.2 开发概念fabric联盟链的开发人员主要分为三类:底层是系统运维,负责系统的部署与维护;其次是组织管理人员,负责证书、MSP权限管理、共识机制等;最后是业务开发人员,他们负责编写chaincode、创建维护channel、执行transaction交易等,如下面的图所示。 fabric大致分为底层的网络层、权限管理模块、区块链应用模块,通过SDK和CLI对应用开发者提供服务,如下面的图所示。 2.2 MSP 每个管理协作企业的ORG组织都可以拥有自己的MSP。如下图所示,组织ORG1拥有的MSP叫ORG1.MSP,而组织ORG2业务复杂,所以维护了3个MSP。 MSP出现在两个地方:在channel上有一个全局的MSP,而每个peer、orderer、client等角色上都维护有本地的局部MSP,如图所示。
3、fabric交易提交流程3.1 peer结点的部署peer结点上保存有账本ledger以及智能合约,如下图所示,每个节点都存储有智能合约和公共帐本: channel是一个逻辑概念,可以通过MSP隔离全网不同组织的参与者,如下图所示: 当有多方参与者时,例如4个org组织、8个peer结点时,其中channel连接了P1、P3、P5、P7、P8这五个节点,其他3个节点加入了其他channel,其部署图如下所示: 加入MSP来管理身份时,如P1和P2由ORG1.MSP管理,而P3和P4的证书则由ORG2.MSP管理,他们共同使用一个channel,则如下图所示: 3.2 交易的执行流程 去中心化的设计,必然需要通过投票(多数大于少数)来维持数据一致性,而任何投票都必须经历以下三个过程: 有一方先提出议案proposal,该议案有对应的一批投票者需要对该结果背书,这些投票者依据各自的习惯投票,并将结果反馈; 由client上的CLI或者SDK进行proposal议案的提出。client会依据智能合约chaincode根据背书策略endorse policy决定把proposal发往哪些背书的peer节点,而peer节点进行投票,client汇总各背书节点的结果; 首先,client发起一个transaction交易,含有<clientID, chaincodeID, txPayLoad, timestamp, clientSig>等信息,指明了3W要素:消息是谁who在什么时间when发送了什么what。该消息根据chaincode中的背书策略,发向EP1、EP2、EP3这三个peer节点。 参见上图,A是我们的应用程序,其步骤如下: A首先连接到peer。 3.2.1 proposal提案阶段 可以看到,A1发出的<T1, P>,收到了<T1, R1, E1>和<T1, R2, E2>两个结果。 3.2.2 package打包阶段 O1在一个channel上会收到许多T交易,它会将T排序,在达到block的最大大小(一般应配1M以下,否则性能下降严重,kafka擅长处理小点的消息)或者达到超时时间后,打成区块P2。 3.2.3 验证阶段 O1将含有多条交易T打成区块的B2发往各peer节点,而P1和P2将B2加入各自的L账本中。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 18:39:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |