个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈
目前无法绕过技术领域的是区块链话题。但除了加密货币之外,还有更多有趣的应用程序可以带来许多激动人心的软件生态系统。这也适用于Hyperledger项目,该项目提供了一个非常模块化的区块链框架。让我们看看使用Hyperledger Fabric和Composer实现区块链应用程序是多么容易。
关于项目Hyperledger
Hyperledger是一个umbrella项目的名称,在该项目下开源区块链方法和工具是协同开发的。它由Linux基金会于2015年推出,并享有IBM,英特尔和富士通等软件巨头以及大型社区的热烈参与。Hyperledger的GitHub存储库目前比以往更加活跃。任何人都可以参与开发。
在Hyperledger中,不仅开发了单个区块链框架(或平台)。相反,重点是并行采用多种方法,创造协同效应,可重复使用的组件和灵活性。从Hyperledger概念的角度来看,区块链网络与比特币或以太网等加密货币的代表无法比较。相反,Hyperledger网络的节点分布在参与组织中,这使得私有,许可或联盟区块链网络特别有趣。首先,我们可以忘记公共区块链的工作证明,股权证明和其他共识机制。所涉及的组织从应用程序业务价值和所涉及的信任中作为联合体验证彼此的交易和利益。这也很大程度上解决了可扩展性问题(我们从比特币网络中了解到)并且可以实现高交易吞吐量。
项目Hyperledger的不同区块链方法是Fabric,Burrow,Iroha,Indy和Sawtooth。私有,许可和联合区块链可以与所有这些区块链一起开发,但每种实现都遵循不同的方法。
我们将在本文中详细介绍Fabric,因为它拥有最活跃的社区,并且是最灵活的变体。由于其强大的模块化,fabric是普遍可用的。 “你可以将Hyperledger Fabric视为类似于Apache Web Server”,Linux基金会Hyperledger执行董事Brian Behlendorf说。其他方法更多用于在有限的环境中实施特殊情况。
Hyperledger Fabric ——灵活的区块链应用平台
使用Fabric作为平台,可以开发完全独立的分布式分类帐解决方案。Fabric包含可以尽可能自由实现的概念。区块链网络的基础是对所需组织结构的建模。每个参与者都有固定的身份,可以通过颁发的证书来识别自己。除了身份验证之外,还包括授权。使用这种基于角色的系统,可以获得许可区块链中隐私和机密性的灵活方面。对于证书和参与者的管理,可以使用结构证书颁发机构(1.0版之前的成员服务提供者)。
资产的定义(要在区块链上管理的项目)完全取决于区块链应用程序。这些资产,例如来自汽车行业的引擎块由JSON和/或二进制格式的键值对模型定义。
链代码的概念旨在基于资产及其所有者实现业务逻辑。这可用于实现Go,Java或Node.js等语言中的规则,这些规则定义读取权限或资产修改。执行链代码功能可以读取和返回资产和/或创建和修改资产并将它们存储在本地分类帐数据库中。在节点上的本地持久性更改之后,将更改提交给网络(“认可”)并在其他组织接受后插入到区块链中。在以太坊或其他公共区块链平台的背景下,可以将链码与智能合约进行比较。
通道用于实现隐私领域。在最简单的场景中,整个链代码部署在所有参与者加入的单个通道上。但是,为了创建封装区域并仅允许选定的参与者在其中进行通信,可以配置具有受限参与者组的通道。每个通道可以部署不同的链代码,从而可以实现功能隔离。此外,可以使用AES部分或完全加密通道中的通信。
结果,在每个通道中维护一个分布式分类帐,这可以被想象为链接交易的现金簿。每个参与者为他们所属的每个通道保留一份分类帐副本。这为网络中的每个现有信道创建了区块链数据结构。与区块链一样,交易存储在块中,这些块在单个连接列表中成为加密链。
但是,为了向客户端应用程序提供分类帐数据的单独视图,甚至可以执行针对网络的复杂读取请求。由于使用了像CouchDB这样的面向文档的数据库,这是可能的。这为连接到Fabric网络的客户端提供了灵活的数据访问。
使用Composer添加更简单的概念
Hyperledger-Composer是Hyperledger生态系统中的工具之一。你可以将其视为Fabric的框架。如果你想开发,构建和管理Fabric网络,那么即使不是强制性的,也是实用的。它引入了基于Fabric的进一步概念,以提供精美的抽象概念。
除资产外,还可以在Composer建模语言中定义网络参与者,交易和事件的方案。每种交易类型的流都通过JavaScript代码在简单的API上实现。访问控制文件可用于限制参与者对某些资源的访问权限。可以在Composer Query Language中定义对分类帐中数据的常用查询,这是一种类似SQL的语言。
然后,必须将所有必需文件打包到.bna文件中的BND(业务网络定义)。然后,可以将此存档安装在现有Fabric网络上。BND的源代码当然可以在我们首选的编辑器中进行本地开发和测试,因此可以通过Git进行版本控制。对于原型设计和演示目的,有Composer Playground。这提供了一个现代,清晰且直观可用的Web界面,可访问Composer CLI的本地配置。使用Playground,你可以轻松创建,安装,测试,编辑,导入和导出BND。
在Composer Playground中,你可以以用户友好的方式安装,修改和测试新的业务网络,而无需先前的样本区块链应用知识(例如车辆生命周期,汽车拍卖或农场动物跟踪)。在设置工具之后,可以在本地完成相同的操作,这样我们就可以在短时间玩游戏后离开托管游乐场。这个游乐场非常适合使用原型验证想法并了解底层的Composer和Fabric模型。
使用案例:引擎块的供应链跟踪
为了使用Hyperledger-Fabric和Composer实现私有区块链网络,以汽车行业的发动机组跟踪为例。在这种情况下,有制造商和经销商作为网络参与者。发动机及其安装的车辆显示为资产。制造商和经销商的公司被引入并被识别为网络中的组织。
Fabric链代码应提供以下功能:
- 1.生产具有唯一序列号的发动机缸体。
- 2.生产后将发动机缸体传送给经销商。