如果已经理解了BYFN那个样例,那么这个就很好理解了,这里的网络有五个容器:
ca.example.com
,couchdb
,orderer.example.com
,peer0.org1.example.com
,cli
。用node-SDK进行app与网络的交互。
目录
app端的逻辑部分在fabric-samples/fabcar
下
- 初始情况下应有6个文件:
enrollAdmin.js , invoke.js , package.json , query.js , registerUser.js, startFabric.sh
- 在这个目录下执行
npm install
按住干node模块,会多出一个node_modules
目录 - 运行过程中会创建一个目录
hfc-key-store
用来存放证书和秘钥
网络部分在fabric-samples/basic-network
下
- 这个目录下共有12个文件
start.sh
启动网络,stop.sh
关闭网络,generate.sh
生成各种证书以及网络的配置信息config
目录下是网络的配置信息,crypto-config
目录下是各种证书
这里有个坑,
config
和crypto-config
目录下的文件一定不要动,如果你运行了generate.sh
就会重新生成那两个目录下的文件,后面就会疯狂报错:
Failed to enroll admin :Calling enrollment endpoint failed with error [Error: connect ECONNREFUSED 127.0.0.1:7054]
ps:
- 用
diff -r dir1 dir2
比较两个目录下文件的不同- 查看某一端口号的情况:
netstat -ap | grep [port]
或者lsof -i:[port]
UPDATE:上面报错的原因是docker-compose.yml中FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/4239aa0dcd76daeeb8ba0cda701851d14504d31aad1b2ddddbac6a57365e497c_sk
这里指定了文CA的私钥,generate.sh之后重新生成了新的私钥这里叫做对应的修改。
启动网络
ps:清理环境的工作就不用说了吧,不会的去看一下Docker
在fabric-samples/fabcar
目录下,运行startFabric.sh
脚本。
网络部分就不细说了,具体可以看上一篇博客,看懂了这里自己就可以看明白是怎么回事。
app与网络交互
CA启动的时候register
了一个user叫admin
,密码是adminpw
,我们第一步要enroll
这个user,之后admin
负责register
和enroll
新的user。
Enrolling the Admin User
node enrollAdmin.js
发送certificate signing reques给CA,得到证书和私钥。
Register and Enroll user1
node registerUser.js
用这里注册的user1
为后面的交易签名,注册生成的证书和admin的证书放在一起hfc-key-store
Querying the Ledger
node query.js
Updating the Ledger
node invoke.js
以上交互部分可以去看一下源码就明白了,修改源码以便更好的理解,具体可以参考官方文档。
ps:可打开一个新的终端查看CA端的日志:docker logs -f ca.example.com