Hyperledger Composer 系列之环境搭建


从企业区块链的背景来看Hyperledger Composer 到底是什么?



企业区块链的背景——区块链技术在企业领域的飞速增长

比特币是区块链技术的第一个主流应用方式,最早在2008年由中本聪(Satoshi Nakamoto)提出。随后区块链技术的应用快速增长,而“区块链”这个词甚至被用于称呼所有分布账应用程序,那么本文也就沿用相同的称呼了。

区块链应用大受欢迎,公众(通常为匿名)网络和私有(企业)网络均有广泛应用。虽然这两种模式均可提供很大的价值,但企业区块链技术的需求与公众用途有很大不同,原因主要有三点:

1) 企业通常需要在受管控的环境中运营,而诸如反洗钱(AML)以及了解客户(KYC)等制度要求企业必须对与自己进行交易的参与者身份有着充分了解。比特币是全匿名(确切来说,是基于假名[Pseudonymity])的,虽然可以看到事务的具体情况,但几乎不可能确定对方身份。而企业需求通常与之截然相反:需要隐私,用户需要知道网络中参与者的身份并且可以信任对方,但并非必须了解所完成的具体事务。

2) 在假名区块链中,必须防止不可信任的参与者破坏网络。目前,比特币以及其他主流的公用区块链体系通常会使用一种名为“工作证明(Proof of Work)”的概念大幅增加进行欺诈行为的难度,但这会增加事务的处理成本,最明显的体现就是电力的消耗。事务验证程序(Transaction validator)会通过计算非常困难的密码学运算,并将计算后的答案告知整个网络,借此证明自己是真实可信的,这种方式很好地解决了信任问题,但会导致处理能力的使用效率大幅降低。私链并不需要这样做,因为参与者都是已知并且可信的。如果事务最终被证明无效,业务网络中的参与者会声誉受损甚至面临经济损失。

3) 私链的应用范围也有所不同。诸如比特币等公链最初的设计主要围绕点对点支付,但企业的“账本”需要能用于描述任何有价值的东西。通常业务网络的规模也更小,是一种封闭的系统(例如可以类比供应链网络)。这一点与非企业用途的区块链大为不同,非企业用途的区块链通常可被任何有计算机的人所访问。

仔细看看目前业务网络的运转方式就可以了解这些需求。通过商品和服务创造的财富在业务网络内流动,这些商品和服务的转移会以一系列事务(交易)的方式记录在账本中。账本是一种极为有用的记录系统,其中描述了业务的所有投入和产出,以及因此产生的财务状况。自从15世纪甚至更早以前,就已经出现了各种形式的账本。

企业区块链技术意在为业务中的这些基本原则建立模型。目前,账本由企业自己所拥有,业务规则决定了商品和服务在网络中的流动。在企业区块链技术的帮助下,账本和业务规则都可以在业务网络内共享,借此可降低开展业务过程中遇到的摩擦(以及相应的成本)。

资产、参与者,以及事务

企业区块链应用可以通过在业务网络内共享的资产、参与者,以及事务来描述:

  • 资产代表任何有价值,可以共享或交易的东西:从汽车、房屋、钻石等有形资产,到有价证券、知识产权,甚至参考数据等无形资产,均可代表。现金本身也是一种资产。 

  • 参与者则是指需要在业务网络内共享事务信息的人员。参与者通常是指企业,但也可以包括普通人、监管人员,或其他利益相关者。 

  • 事务可用于描述在业务网络内传递的过程中,可针对资产执行的具体操作

通过将这些组件结合在一起,即可打造一种分布式处理系统,也叫做设施(Fabric),借此对区块链应用的运行进行管控。智能合约(用于实现事务的业务规则汇编后的产物)实际上是一种存储的过程调用,可在网络中多个节点上运行,运行后输出的结果通过合意过程被所有网络成员认可。

目前最大的挑战在于,如何将区块链解决方案中的资产、参与者以及事务与此类区块链处理系统的现实技术进行映射。区块链应用的实现需要极高成本,因为需要通过大量工作实现用于定义业务目标的逻辑,同时需要让智能合约能够顺利使用区块链所提供的服务。

Hyperledger Composer

Linux基金会托管的Hyperledger项目所提供的Hyperledger Composer致力于解决这样的问题,借此区块链开发者可以轻松地对业务资产、参与者以及事务建模,将这些模型变成可行的区块链应用。Hyperledger项目始于2015年12月,包含了一系列适用于企业,先进的跨行业开源区块链技术。这是Linux基金会有史以来发展速度最快的项目,而Hyperledger“联盟”目前已包含多种技术,如Hyperledger FabricHyperledger Sawtooth等区块链框架,以及提供监视、身份、开发和部署等服务的工具。Hyperledger Composer正是其中的一种工具。

Hyperledger Composer为资产、参与者,以及事务的建模提供了一种面向特定领域,非常简单的建模语言,开发者可以通过JavaScript编写实现事务逻辑的方法。开发者可以在自己惯用的任何开发环境中编写这些文件(针对大部分编辑器提供了必要的插件),并可在一种基于Web的“试验场(Playground)”帮助下开发、打包、部署并测试这些项目,同时还为脚本环境提供了所需的命令行工具。应用程序可部署至Hyperledger Fabric实例,或在Web浏览器中进行本地模拟。

    Hyperledger Composer 主要模块和开发流程

Hyperledger Composer还可针对不同资产生成骨架(Skeleton)命令行或Angular2应用,对Loopback的支持使得我们可以通过RESTful与应用交互,这样区块链即可连接至现有记录系统,例如可使用集成中间件,如Node.REDIBM Integration Bus进行连接。



Hyperledger Composer主要概念简介




Hyperledger Composer是一种包含建模语言和一组API的编程模型,用于快速定义和部署允许参与者发送交换资产的交易的业务网络和应用程序。

Hyperledger Composer组件
您可以使用称为Hyperledger Composer Playground的基于浏览器的用户界面体验Hyperledger Composer。游乐场可作为托管版本(无需安装)或本地安装(适用于离线编辑和测试示例业务网络)。

想要使用Hyperledger Composer的完整应用程序开发功能的开发人员应安装开发人员工具。


Hyperledger Composer中的重要概念

  

基本组件如下:


区块链状态存储
通过商业网络提交的所有交易都存储在区块链分类帐中,资产和参与者的当前状态存储在区块链状态数据库中。区块链通过一组对等点分配账本和状态数据库,并确保对使用一致算法的所有对等点的分类账和状态数据库的更新保持一致。

连接配置文件
Hyperledger Composer使用连接配置文件来定义要连接的系统。连接配置文件是一个JSON文档,它是业务网卡的一部分。这些配置文件通常由系统的创建者提供,并且应该用于创建业务网卡以便能够连接到该系统。

资产
资产是有形或无形的商品,服务或财产,并存储在注册管理机构中。资产几乎可以代表商业网络中的任何东西,例如,待售房屋,销售清单,该房屋的土地登记证书以及该房屋的保险文件可能都是一个或多个商业网络中的资产。

资产必须具有唯一标识符,但除此之外,它们可以包含您定义的任何属性。资产可能与其他资产或参与者有关。

参与者
参与者是商业网络的成员。他们可能拥有资产并提交交易。参与者类型是建模的,并且像资产一样,必须具有标识符并且可以根据需要具有任何其他属性。参与者可以映射到一个或多个身份。

身份
身份是数字证书和私钥。身份用于在业务网络上进行交易,并且必须映射到业务网络中的参与者。单个身份存储在商业网卡中,如果该身份已映射到参与者,则它允许该商业网卡的用户在该参与者的商业网络上进行交易。

业务网卡
业务网卡是标识,连接配置文件和元数据的组合,元数据可以包含要连接的业务网络的名称。业务网卡简化了连接到业务网络的过程,并将业务网络之外的身份概念扩展为身份的“钱包”,每个身份都与特定的业务网络和连接配置文件相关联。

交易
交易是参与者与资产交互的机制。这可以像参与者对拍卖中的资产投标或拍卖人标记拍卖关闭一样简单,自动将资产所有权转移给出价最高的投标人。

查询
查询用于返回有关区块链世界状态的数据。查询在业务网络中定义,并且可以包含用于简单定制的可变参数。通过使用查询,可以轻松地从您的区块链网络中提取数据。查询通过使用Hyperledger Composer API发送。

活动
业务网络定义中的事件与资产或参与者相同。一旦事件已被定义,它们可以由事务处理器功能发出,以向外部系统指示分类账发生了重要的事情。应用程序可以通过composer-client API订阅发出的事件。

访问控制
业务网络可能包含一组访问控制规则。访问控制规则允许对参与者访问业务网络中的哪些资产以及在什么条件下进行细粒度控制。访问控制语言足够丰富,可以通过声明捕捉复杂的条件,例如“只有车主才能转让车辆所有权”。事务处理器功能逻辑的外部访问控制使检查,调试,开发和维护变得更加容易。

历史记录注册表
注册表是一个专门的登记处,记录成功的交易,包括提交他们的参与者和身份。历史记录将事务存储为HistorianRecord资产,这些资产在Hyperledger Composer系统名称空间中定义。


Hyperledger Composer 搭建本地环境



Hyperledger Composer 公共在线playground 网址:composer-playground.mybluemix.net/

下面的视频介绍如何搭建本地环境:



值得注意的是, 要选择npm 8.9.1:



nvm install v8.9.1  

nvm use 8.9.1  # telling nvm to use npm 8.9.1

npm install -g  composer-cli  --unsafe-perm 




如有什么问题和建议, 请留言哦


猜你喜欢

转载自blog.csdn.net/hintcnuie/article/details/80579711