作者:yzpyzp
HyperLedger Fabric是一个基于模块化架构的分布式账本解决方案平台,提供高度的保密性、弹性、灵活性与可扩展性。它设计之初的目的是支持不同组件的可插拔实现,并适应整个经济生态系统中存在的复杂性和高精度性。
我们建议新手用户首先阅读接下来的内容以熟悉区块链如何工作,并熟悉Hyperledger Fabric的特性与组件。
如果你已经通过后续文章熟悉了区块链及HyperLedger Fabric,那么就可以去Getting Started,并且从那里学习示例,技术规范和api等。
一个区块链网络的核心是一个分布式账本,在这个账本中记录了网络中发生的所有交易信息。
区块链账本通常被定义为去中心化,这是因为在整个网络中,每个参与者都保存着一个区块链账本的副本,所有参与者通过协作共同维护着账本。接下来我们会看到,去中心化与协作这两个特点在现实世界的商业货物交易和商务服务中展现出的显著优点。
除了去中心化与协作,区块链的另一个显著特点是信息在只能以“附加”的方式记录在区块链中,同时使用加密技术保障了交易一旦被添加进账本中,就无法被篡改。区块链的这种不可篡改性使得信息来源的确认变得异常容易,这是由于参与者可以肯定信息一旦被写入区块链中就几乎不可被篡改。这也是为什么区块链常常也被称为证明系统的原因。
为了持续的进行信息的更新,以及对账本进行管理(例如写入交易,查询账本等),区块链网络引入了智能合约来实现对账本的访问和控制。
智能合约不仅仅可用于在区块链网络中封装信息以及简单的方式接入区块链网络,它们也可以被用于自动的执行由参与者定义的特定交易操作。
例如,买卖双方可以定义一个智能合约,以保证当卖方发货的商品运送到达时,买方支付的货款会自动转账给卖方。
保持网络中所有账本交易的同步流程,就是共识。共识保证了账本只会在交易参与方都确认后才进行更新。同时在账本更新时,交易参与方能够以相同的顺序更新同一个交易信息。
后面我们会详细介绍账本、智能合约和共识的相关内容。但目前为止,我们只需把区块链理解为一个共享的,通过智能合约更新的多副本交易系统,同时这个系统通过称为共识的协作过程保证了网络中所有账本副本的同步。
自从商业数据记录网络系统诞生以来,直到今天的交易网络并没有发生太大的变化。在商业网络中的成员进行相互交易时,他们各自维护着自己独立的交易记录。同时,人们交易的物品——无论是16世纪佛兰德的挂毯,还是现代的有价证券——仍然需要在每次卖出交易过程中提供来源信息,以确保卖方拥有所出售商品的所有权。
当前的商业网络就像下图描述的一样:
随着科技的进步,上图中的交易流程不断演化发展,经历了从使用石碑、使用纸质账本、使用硬盘存储器直到使用云计算平台的不同阶段,但流程的底层架构并没有发生任何变化。并不存在一个可以统一管理网络参与者身份的系统,确认商品来源十分费劲,常常会耗费数天的时间结算证券交易(包含数以万计美元的数量),合同必须手动签署和执行,每个系统的数据库都包含独立的信息,因此意味着会有单点故障。
在今天的信息和流程共享(处理信息的业务流程)是割裂的情况下,建立一个跨商业网络的记录系统是不可能的,尽管该系统对于透明度和信任方面的需求是明确的。(译者注:跨网络的信息共享是诉求点)
那我们为什么不用“现代”的交易系统来替代这种效率低下的网络?新的商业网络可以具有标准的方法建立身份信息,执行交易,并且存储数据。为什么不建立一个可信的交易链?通过查询这个链上的所有交易记录,来确定交易商品来源,并且这个链上的信息一旦写入,就无法被篡改。
以上描述的商业网络就如下图所示:
这就是区块链网络。在区块链网络中,每一个参与者都保有一份账本的副本。在区块链网络中,不仅仅是账本信息会被共享,更新账本的流程也是共享的。不同于目前的系统——参与者使用私有的程序对私有的账本进行更新,而区块链系统使用共享的程序对共享的账本进行更新。
通过使用共享账本协调整个商业网络,区块链网络能够节省时间、减少成本以及降低隐私信息泄露的风险,并且能使流程更加可信和透明。
现在你已经明白了什么是区块链以及为什么它是有用的。同时还有许多其他的细节内容也非常重要,但他们都是信息与流程共享这个最根本的思路相关的。
2015年,Linux基金会启动了Hyperledger项目,目标是发展跨行业的区块链技术。Hyperledger项目并不仅仅是定义一个单一的区块链标准,它更鼓励通过开源社区的力量协作开发区块链技术,拥有鼓励开放开发的知识产权,并随着时间的推移采用关键标准。
Hyperledger Fabric是Hyperledger中的一个区块链项目。与其他区块链技术类似,Hyperledger Fabric包含一个账本,使用智能合约并且是一个通过所有参与者管理交易的系统。
Hyperledger Fabric与其他区块链系统最大的不同体现在私有和许可。与开放无需许可的网络系统允许未知身份的参与者加入网络不同(需要通过工作量证明协议来保证交易有效并维护网络的安全),Hyperledger Fabric通过可信的 Membership Service Provider (MSP)来登记网络中的成员。
Hyperledger Fabric也提供了几个可插拔的选项。账本数据可被存储为多种格式,共识机制可被接入或者断开,同时支持多种不同的MSP。
Hyperledger Fabric提供了建立 channel的功能,这允许参与者为交易新建一个单独的账本。当网络中的一些参与者是竞争对手时,这个功能变得尤为重要,因为这些参与者并不希望所有的交易信息——比如提供给部分客户的特定价格信息——都对网络中所有参与者公开。只有在同一个channel中的参与者,才会拥有该channel中的账本,而其他不在此channel中的参与者则看不到这个账本。
Hyperledger Fabric包含一个账本子系统,这个子系统包含两个组件:世界状态 (world state)和交易记录 ( transaction log)。每一个参与者都有他所属的每个Hyperledger Fabric 网络的账本的副本。
世界状态组件描述了账本在特定时间点的状态,它是账本的数据库。交易记录(transaction log)组件记录了产生世界状态当前值的所有交易,它是世界状态的更新历史。因此,账本(ledger)是世界状态数据库和交易历史记录的集合。
账本的世界状态存储数据库是可更换的。默认配置下,这是一个LevelDB的key-value存储数据库。交易记录模块默认内置,不需要以插件形式接入。只需要记录在区块链网络中账本数据库被使用前和使用后的值就可以。
Hyperledger Fabric智能合约被称为 chaincode,当一个区块链外部的某个应用程序需要与账本交互时,就会调用chaincode。大多数情况下,chaincode只会访问账本的数据库组件和世界状态(比如查询),但不会访问交易记录。
chaincode可通过多种不同编程语言实现。目前支持chaincode的语言是Go、Node。
根据网络的需求,在一个Business-to-Business(B2B)网络中的参与者会对信息共享的多少极为敏感。然而,对于其他的网络,隐私并不是首要考虑的因素。
Hyperledger Fabric支持构建隐私保护(使用通道)严格的网络,也支持构建相对开放的网络。
交易必须按照他们发生的顺序被写入账本,即使他们可能处于网络中不同的参与者集合。要实现这一目标,交易顺序必须被正确的建立并且必须包含拒绝错误(或者恶意)插入账本中的无效交易的方法。
这完全是计算机科学的研究领域,可以有多种方法实现上面提到的目标,这些方法各有权衡。例如,PBFT (Practical Byzantine Fault Tolerance)可以为文件副本提供一种机制来相互通信,即使是在发生腐败的情况下,也可以保证每个副本保持一致。另外,在比特币中,通过一种称为挖矿的行为进行排序,在挖矿过程中,竞争的计算机竞相解决一个加密难题,这个难题定义了所有后续的构建顺序。
Hyperledger Fabric被设计为允许网络构建者选择最能代表参与者之间关系的共识机制。好比考虑隐私性,就会有一连串的需求,从高度结构化的网络或是更加点对点的网络。
更多的Hyperledger Fabric共识机制会在另一份文档中详细描述,这些共识机制目前包含SOLO和Kafka。
●Identity (conceptual documentation)
A conceptual doc that will take you through the critical role identities play in a Fabric network (using an established PKI structure and x.509 certificates).
●Membership (conceptual documentation)
Talks through the role of a Membership Service Provider (MSP), which converts identities into roles in a Fabric network.
●Peers (conceptual documentation)
Peers — owned by organizations — host the ledger and smart contracts and make up the physical structure of a Fabric network.
●Building Your First Network (tutorial)
Learn how to download Fabric binaries and bootstrap your own sample network with a sample script. Then tear down the network and learn how it was constructed one step at a time.
●Writing Your First Application (tutorial)
Deploys a very simple network — even simpler than Build Your First Network — to use with a simple smart contract and application.
●Transaction Flow
A high level look at a sample transaction flow.
●Hyperledger Fabric Model
A high level look at some of components and concepts brought up in this introduction as well as a few others and describes how they work together in a sample transaction flow.
参考:
Hyperledger Fabric 101
Hyperledger Fabric概述
Hyperledger Fabric介绍
HyperLedger Fabric Introduction——区块链超级账本介绍
官方英文原文档:https://hyperledger-fabric.readthedocs.io/en/release-1.4/blockchain.html
版权声明:本文为CSDN博主「yzpyzp」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yzpbright/article/details/88635879
修改日期 | 修改人 | 备注 |
2020-03-12 17:35:29[当前版本] | 市场部 | 修改编辑权限 |
2020-03-12 12:28:05 | 市场部公用账户 | 修改标题 |
2020-03-12 11:58:18 | 市场部公用账户 | 创建版本 |
附件类型 | JPG PDF PNG |
|