【composer开发教程】从fabric启动开始,搭一个有rest-server的网页

标签: composer

https://lists.hyperledger.org/g/composer/message/125
开头放IBM大佬写的话,composer团队已经去做fabric的开发了。
😦

启动fabric

启动和停止Hyperledger Fabric
您可以使用一组脚本控制运行时,~/fabric-dev-servers如果您遵循建议的默认值,则可以找到这些脚本。

第一次启动新运行时,您需要运行启动脚本,然后生成PeerAdmin卡:

    cd ~/fabric-dev-servers
    export FABRIC_VERSION=hlfv11
    ./startFabric.sh
    ./createPeerAdminCard.sh

这里第二句export的意思是设置启动的版本。有hlfv1、hlfv11、hlfv12.具体区别我不太记得了。

您可以使用启动和停止运行时
~/fabric-dev-servers/stopFabric.sh,
然后再次启动它
~/fabric-dev-servers/startFabric.sh。

在开发会议结束时,您运行
~/fabric-dev-servers/stopFabric.sh,
然后
~/fabric-dev-servers/teardownFabric.sh。

请注意,如果您运行拆卸脚本,则下次启动运行时时,您需要创建一个新的PeerAdmin卡,就像您第一次启动时一样。
【实验证明,teardownFabric并不会删掉你的card和链码。还是说我不明白官方的意思?这个下午我重装了images。使用的是teardownAllFabric这个脚本本】
【我必须振作起来,不能丧,不要老是讲丧气话,要给自己打气】
题外话。
要运行playground很简单。
在bash下面输入:

composer-playground

即可。
唉。
playground的作用是测试你的model、transaction还有ACL,其实还挺好的。
只需要打包成bna,之后apply到playground就可以了。
这里有点说明。
https://hyperledger.github.io/composer/v0.19/playground/playground-index

打包成bna 用

composer archive create --sourceType dir --sourceName ../
这个注意是在你的项目目录下的文件夹中。教程是把bna放在项目目录中的dist文件夹里面。bash需要进入到dist目录下再运行上面那条命令。
然后在playground里面导入bna文件,deploy即可。

NB,我docker都重新下载了啊,为啥原来的card啥的都还在啊。
迷诶。
在这里插入图片描述

创建project

(1)创建一个project

yo hyperledger-composer

输入这个命令,在你的工作目录下面创建一个新的项目。

[email protected]:~/cprogrames$ yo hyperledger-composer
Welcome to the Hyperledger Composer project generator
? Please select the type of project: Business Network
You can run this generator using: 'yo hyperledger-composer:businessnetwork'
Welcome to the business network generator
? Business network name: airlinev10
? Description: this is the airlinev10
? Author name:  cielo
? Author email: 手动打码
? License: Apache-2.0
? Namespace: org.acme.airline.aircraft
? Do you want to generate an empty template network? Yes: generate an empty template network
   create package.json
   create README.md
   create models/org.acme.airline.aircraft.cto
   create permissions.acl
   create .eslintrc.yml

如上,我创建了一个空的business network application。

不过你们要测试的话弄一个不空的吧。

接下来archive install start三连。

composer archive create  --sourceType dir --sourceName ../
composer network install -a ./[email protected] -c [email protected]
composer network start -n test-bna -c [email protected] -V 0.0.2 -A admin -S adminpw

看!这个dev开头的container才是对的container!我之前生成的到底是什么!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
在这里插入图片描述
都succeed之后,会随着项目生成一个admin card,在当前目录下面。
之后需要import一下这个card。

[email protected]:~/cprogrames/test-bna/dist$ composer card import -f [email protected]

Launch REST Server

composer-rest-server -c [email protected] -n always -w true
正确运行结果:

[email protected]:~/cprogrames/test-bna/dist$ composer-rest-server -c [email protected] -n always -w true
Discovering types from business network definition ...
Discovering the Returning Transactions..
Discovered types from business network definition
Generating schemas for all types in business network definition ...
Generated schemas for all types in business network definition
Adding schemas for all types to Loopback ...
Added schemas for all types to Loopback
Web server listening at: http://localhost:3000
Browse your REST API at http://localhost:3000/explorer

在这里插入图片描述
有angular程序的,在angular的文件夹里面 ng serve一下就ok。

成功的命令行的样子。

[email protected]:~/cprogrames/test-bna/angular-test$ ng serve
** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
                                                                                          
Date: 2019-04-17T10:26:54.200Z
Hash: d00d7186277861054414
Time: 33716ms
chunk {main} main.js, main.js.map (main) 550 kB [initial] [rendered]
chunk {polyfills} polyfills.js, polyfills.js.map (polyfills) 437 kB [initial] [rendered]
chunk {runtime} runtime.js, runtime.js.map (runtime) 6.08 kB [entry] [rendered]
chunk {scripts} scripts.js, scripts.js.map (scripts) 402 kB [entry] [rendered]
chunk {styles} styles.js, styles.js.map (styles) 987 kB [initial] [rendered]
chunk {vendor} vendor.js, vendor.js.map (vendor) 4.69 MB [initial] [rendered]
ℹ 「wdm」: Compiled successfully.

在这里插入图片描述

raj给的例子里面的命令

# org.acme.airline

# Airline v9

https://hyperledger.github.io/composer/reference/acl_language.html

Refer to lecture on Access Control Language


#1 Create the BNA archive
composer archive create  --sourceType dir --sourceName ../

#2.1 Install the archive
composer network install -a ./[email protected] -c [email protected]

#2.2 Strart the network
composer network start -n airlinev9 -c [email protected] -V 0.0.1 -A admin -S adminpw

admin>> org.hyperledger.composer.system.NetworkAdmin#admin

#3 DO NOT - Import the card
composer card delete -n [email protected]
composer card import -f [email protected]

#4 Add a new participants

- John Doe (johnd) is the Network Administrator
composer participant add -d '{"$class":"org.acme.airline.participant.ACMENetworkAdmin","participantKey":"johnd","contact":{"$class":"org.acme.airline.participant.Contact","fName":"John","lname":"Doe","email":"[email protected]"}}' -c [email protected]

- Will Smith (wills) works in the Logistics department
composer participant add -d '{"$class":"org.acme.airline.participant.ACMEPersonnel","participantKey":"wills","contact":{"$class":"org.acme.airline.participant.Contact","fName":"Will","lname":"Smith","email":"[email protected]"}, "department":"Logistics"}' -c [email protected]

#5 Issue the identities
composer identity issue -u johnd -a org.acme.airline.participant.ACMENetworkAdmin#johnd -c [email protected]

composer card delete -n [email protected]
composer card import -f [email protected]

composer identity issue -u wills -a org.acme.airline.participant.ACMEPersonnel#wills -c [email protected] 

composer card delete -n [email protected]
composer card import -f [email protected]

#6 Ping BNA using the johnd & wills cards
    - composer network ping -c [email protected]
    - composer network ping -c [email protected]

#6 Setup the permissions.acl
    - johnd     Is the Network Administrator for airlinev9
                Should be able to execute network commands

    - wills     Works for the Logistics department
                Should NOT be able to execute any network command

#7 Rebuild the archive
composer archive create  --sourceType dir --sourceName ../

#8 Update the Network
composer network upgrade -n <business-network-name> -V <business-network-version> -c <business-network-card>
    
composer network update -a ./[email protected] -c [email protected]




composer-rest-server -c [email protected] -n always -w true


版权声明:本文为qq_38904077原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38904077/article/details/89351647

智能推荐

1638 统计只差一个字符的子串数目(动态规划)

1. 问题描述: 给你两个字符串 s 和 t ,请你找出 s 中的非空子串的数目,这些子串满足替换一个不同字符以后,是 t 串的子串。换言之,请你找到 s 和 t 串中恰好只有一个字符不同的子字符串对的数目。比方说, "computer" 和 "computation"...

websocket基本原理

HTTP中一个request只能有一个response。而且这个response也是被动的,不能主动发起 因此过去的服务端推送信息是通过客户端不停的轮询实现的 websocket是双向通信协议,提供了服务端主动推送信息的能力 需要客户端(浏览器)和服务端同时支持 如果经过代理的话,还需要代理支持,否则有些代理在长时间无通信时会自动切断连接 因此WS为了保证连接不被断掉,会发心跳 WebSocket...

mybatis+ehcache二级缓存

导入jar包 mapper.xml文件开启二级缓存 pojo类实现序列化接口 配置ehcache.xml 测试...

python+opencv实现图像拼接

任务 拍摄两张图片去除相同部分,拼接在一起 原图 结果 步骤 读取两张图片 使用sift检测关键点及描述因子 匹配关键点 处理并保存关键点 得到变换矩阵 图像变换并拼接 代码实现 扩展 这里对右边图像进行变换,右边变得模糊,可以修改代码对左边图像变换 这里只有两张图片拼接,可以封装实现多张图片拼接 可以修改代码实现上下图片的拼接...

python_sklearn机器学习算法系列之AdaBoost------人脸识别(PCA,决策树)

          注:在读本文之前建议读一下之前的一片文章python_sklearn机器学习算法系列之PCA(主成分分析)------人脸识别(k-NearestNeighbor,KNN)         本文主要目的是通过一个简单的小...

猜你喜欢

memmove函数与memcpy函数的模拟实现

memmove函数和memcpy函数都是在内存复制任意类型的,但是它俩也有区别。当源区域和目标区域有重复的,memmove函数会复制缓冲区重叠的部分,而memcpy相反,会报出未知错误。 下面给出两个函数的实现 首先,memmove函数。 实现的基本原理如下图。 具体代码如下: memcpy函数的实现很简单,就直接给出源代码了...

SpringFramework核心 - IOC容器的实现 - 总结

1. 概述 把Spring技术内幕第一章和第二章过了一遍,也做了一些笔记, 对IOC容器的实现有了一定皮毛理解,现在跟着源码再过一遍总结一下IOC容器的初始化,Bean的初始化的过程,做一下总结 ① IOC容器和简单工厂模式 在开始之前,先想想我们平时是怎么使用IOC容器为我们管理Bean的,假设我们要把下面的User类交给IOC容器管理 我们不想关心如何创建一个User对象实例的,仅仅在需要他的...

Python和Django的安装

个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈  一、下载并安装Python Python 官方下载地址:http://www.python.org/ftp/python/ 我们这里选择的是 Python 2.7.2 。虽然目前最新版是Python 3.2.2, 但是Django目前还不支持 Python 3.2.2。 安装步骤很简单,双击安装包开...

OpenStack代码贡献初体验

为什么80%的码农都做不了架构师?>>>     OpenStack如今已成为开源云平台中的明星项目,得到广泛关注。OpenStack的优秀出众依赖于众多开发者的努力,在享受其带来的便利与快捷的同时,为其做一份贡献也是一个开发者的义务。  在前段时间的OpenStack的测试过程中,我发现Nova项目中的一个Bug,于是向社区提交了Bug报...