加入收藏 | 设为首页 | 会员中心 | 我要投稿 牡丹江站长网 (https://www.0453zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

使用Hyperledger Fabric和Composer实现区块链应用程序

发布时间:2019-07-27 04:19:43 所属栏目:传媒 来源:佚名
导读:目前无法绕过技术领域的是区块链话题。但除了加密货币之外,还有更多有趣的应用程序可以带来许多激动人心的软件生态系统。这也适用于Hyperledger项目,该项目提供了一个非常模块化的区块链框架。让我们看看使用Hyperledger Fabric和Composer实现区块链应用

然后,最好让自己熟悉新环境。如果我们完全按照上一个链接的说明操作,则fabric-tools现在位于我们的主目录中。通过描述的脚本,我们可以在Docker-Compose中启动一个简单的Fabric网络,获得对等管理员访问权限并停止并再次删除它。首先,我们下载1.1版的Docker镜像并启动网络:

  1. export FABRIC_VERSION=hlfv11 && ./downloadFabric.sh && ./startFabric.sh 

在网络运行时,composer-playground web-UI可以通过composer-playground启动。它使用composer-cli的所有托管配置并访问正在运行的Fabric网络。从现在开始,我们将Fabric视为可配置的平台/基础架构,其状态通过合适的工具进行更改。我们不直接使用Fabric概念开发链代码,权限或任何模型,因为Composer提供了更多优势。

实施功能

现在我们在我们选择的目录中创建我们的BND项目。对于Yeoman(使用模板设置项目的代码生成器,如Maven Archtypes),有一个模板(hyperledger-composer:businessnetwork。但是,我已经准备了一个存储库,我们现在也可以使用JavaScript ES6和一些很好的工具。我们应该从开始分支“初始”开始。master分支具有最终版本和工作版本。我们首先克隆存储库的初始分支。

git clone -b initial git@github.com:jverhoelen/fabric-composer-engine-supplychain.git 

现在我们在我们选择的编辑器中打开文件夹。Visual Studio Code非常适合Composer,因为它具有可安装的语法高亮扩展。稍作修改后你会发现它是一个NPM项目,所以我们从npm install开始安装所有依赖项。使用npm test我们可以运行单元测试,使用npm run lint我们可以测试代码样式,并且使用npm run createArchive我们可以创建the.bna文件,我们以打包格式完成业务网络定义。让我们马上试试看是否一切正常。

然后我们熟悉项目结构。lib文件夹包含实现交易处理器功能的JS文件。当然,我们想测试这个业务逻辑并将我们的单元测试存储在test/文件夹中。模型定义(参与者,资产,交易等)在models/中。

我们想首先为所需的区块链网络建模。为此,我们删除模型文件的内容,并在第一行为其指定一个新的命名空间:

  1. namespace org.acme.enginesupplychain 

我们为参与者制造商和经销商建模,并使用Composer建模语言的继承。我们还希望每个参与者除了姓名外还有一个可选地址。我们将这些属性放入一个概念中:

  1. participant Member identified by memberId { 
  2.     o String memberId 
  3.     o String name 
  4.     o Address address optional 
  5.   
  6. participant Manufacturer extends Member { 
  7.   
  8. participant Merchant extends Member { 
  9.   
  10. concept Address { 
  11.     o String country 
  12.     o String city 
  13.     o String street 
  14.     o String streetNo 

然后我们介绍我们网络的资产:引擎块和稍后安装引擎的汽车。在这里,我们了解资产和参与者可以互相参考。引用始终指向任何类型的现有资源。我们以小“o”开头的属性总是存在于资源本身中。

  1. asset Engine identified by engineId { 
  2.     o String engineId 
  3.     o EngineProperties data 
  4.   
  5.     --> Manufacturer manufacturer 
  6.     --> Car currentCar optional 
  7.     --> Merchant merchant optional 
  8.   
  9. asset Car identified by carId { 
  10.     o String carId 
  11.     o String legalDocumentId 
  12.   
  13. concept EngineProperties { 
  14.     o String brand 
  15.     o String model 
  16.     o Double horsePower 
  17.     o Double cubicCapacity 
  18.     o Integer cylindersAmount 

(编辑:牡丹江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读