区块链超级账本Fabric如何构建?
概述
区块链是一种分布式系统,其所属的分布系统又被称为“复制状态机模型”,即多个节点上从相同的初始状态开始,执行相同的一串命令,产生相同的最终状态。区块链中服务维护着一些状态,而客户端可以调用转换状态和生成输出的操作。区块链通过分布式协议模拟“可信任的”计算服务,该协议是由互联网上连接的节点运行。服务呈现或创建一个资产,其中所有节点都有一些权益相关。节点共享运行服务的共同目标,但不一定相互信任。在“无许可”的区块链中,比如比特币加密货币底层的区块链中,任何人都可以操作一个节点,并通过消耗CPU循环参与其中,并演示“工作证明”。另一方面,区块链在“许可”模式控制谁参与验证和协议;这些节点已经建立了明确的身份并组成了一个联盟。Swanson的一份报告比较了这两种模式。
Hyperledger:超级账本项目(www.hyperledger.org) 是一个合作创建的企业级项目,由开源的分布式账本框架和代码 构成。旨在通过识别和实现跨行业分布式账本开放标准平台,推进区块链技术,改变全球范围内的商业交易方式。Hyperledger是Linux基金会于2016年初成立的一个项目,开始不久即有50多名成员。
Hyperledger Fabric:Hyperledger Fabric 是一个实现运行智能合约的分布式账本平台,利用熟悉和证明技术,采用模块化架构,允许实施各种可插拔的功能。它是Hyperledger项目中正在孵化的多个项目之一。Hyperledger Fabric的开发者预览版(称为“v0.5开发者预览版”)已于2016年6月发布。
Fabric的分布式账本协议是由对节点运行的。这种Fabric能区分有两种类型的节点:验证节点是网络上运行共识、验证交易和维护账本的节点。另一方面,非验证节点是作为代理连接客户端(发出交易)和验证peer节点。非验证节点不执行交易,但可以验证交易。
当前发布Fabric的一些关键特性是:
获批准的有即时确定性的区块链;
运行在Go(golang.org)中执行的任意的智能合约(称为链码):
- 将用户自定义的链码封装在Docker容器中;
- 系统链码与peer节点运行相同的进程;
共识协议是可插拔的,目前拜占庭容错共识的实现由PBFT协议支持,提供了一个用于寻址不确定性链码的SIEVE原型,并且协议存根(命名为NOOPS)服务于单个节点上的开发;
安全支持通过权威认证(Cas)的TLS证书、注册证书和交易证书;
RocksDB (rocksdb.org)支持Persistent state(持久状态)使用键值存储系统;
支持预定义和自定义事件的事件框架;
与fabric接口的客户端SDK (Node.js)为开发工具包;
支持基础REST API和CLIs。
在开发人员预览版中,对非验证节点的支持是最小的。
架构:验证节点运行BFT共识协议来执行状态机可复制机制接受三种交易操作: Deploy transaction(部署交易):接受用Go编写的链码(表示为智能合同)作为参数;链码安装在对等节点上,并准备随时被调用。Invoke transaction(调用交易):调用之前通过部署交易安装的特定链码的交易;参数是特定于交易类型的;链码执行交易,可以相应地读写其状态中的条目,并指示它是成功还是失败。Query transaction(查询交易):从读取对等节点的持久状态直接返回进入状态项;这有可能不能确保线性化。每个链码都可以定义自己的持久状态,区块链的哈希链是计算执行的交易和结果的持久状态。
通过复制执行链码和给出潜在的BFT共识的错误假设来验证交易,比如,在n个验证对等节点中,最多f < n/3 可以“说谎”并任意执行,但其他正确执行链码。在PBFT共识之上执行时,链码交易必须是确定的,否则对等节点的状态可能会发生分歧。有一个模块化的解决方案可以过滤出明显发散的非确定性交易,并且已经在SIEVE协议中实现。运行BFT 共识的验证节点之间的成员关系目前是静态的需要手动干预。计划在未来的版本中支持动态更改运行共识的节点集。
由于fabric实现了一个许可的分类账,因此它包含一个用于身份验证和授权的安全基础设施。通过公钥证书支持注册和交易授权,通过内加密实现链码的机密性。更准确地说,为了连接到网络,每个对等节点都需要从注册CA获得注册证书和成员服务的一部分。它授权对等点连接到网络并获得提交交易所需的交易证书。交易证书由交易CA颁发,并支持提交交易的对等节点的匿名授权,因为颁发给同一对等节点(即同一注册证书)的多个交易证书不能相互链接。链码和状态的机密性是通过交易和状态的对称密钥加密提供的,使用特定于区块链的密钥对所有具有区块链注册证书的对等方可用。未来版本计划对加密机制进行扩展,使其具有更详细的交易和状态条目的机密性。
讨论
区块链的共识协议一直在研究中保持热度,金融科技初创公司(如tendermint.com, kadena.io)也在讨论。Fabric的设计使用了共识的模块化概念,这与分布式计算中公认的共识概念是一致的。这确保了fabric的区块链相关特性可以独立于特定的共识协议进行开发。PBFT协议是已经在fabric中实现的第一个共识协议,这是由于其显著突出在:它受益于近20年系统性研究拜占庭共识的经验,密切相关知名Viewstamped Replication和Paxos之类的协议,分析了在许多环境中的使用和教科书中的描述。
结论
Hyperledger Fabric是一个用于商业用途的区块链平台。它是开源的并且基于标准,能够运行用户自定义的智能合约,支持强大的安全和身份特征,使用模块化架构和可插拔的共识协议。
在Hyperledger项目的管理下,Fabric目前正在被积极的开发中
微信掃描關注公眾號,及時掌握新動向
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場