执行以下指令均要以管理员身份运行,请首先执行su root命令
- 查看目录
cd /home/gopath/src/github.com/hyperledger/fabric-samples/first-network
.env:存储一些环境变量 base:存储docker-compose的一些公共服务 byfn.sh:执行脚本 configtx.yaml和crypto-config.yaml:根据之前生成的2个工具,生成相应的配置文件,用来启动网络,放到当前目录的channel-artifacts和crypto-config里面 docker-compose:用来启动网络 scripts:存放测试脚本,做的事:创建通道、加入通道、安装链码、实例化链码、链码交互 - 生成配置
./byfn.sh -m generate -i 1.0.0
注意!!!! 一定要记得把gopath中的bin目录添加到环境变量中,否则可能无法调用刚才编译好的configtxgen和cryptogen工具 可以通过 export PATH=$PATH:/home/gopath/bin 来临时添加或者使用vim ~/.bash_profile修改PATH 一行,之后使用source ~/.bash_profile生效。
- 启动网络
./byfn.sh -m up -i 1.0.0
- 关闭网络,自动清除配置和docker进程
./byfn.sh -m down -i 1.0.0
-
查看crypto-config配置 peer与order分离
peer又按照组织或主体分离
每个组织生成ca(存储证书和私钥),msp(存储管理员证书和中间证书),peers(存储每一个peer相关的证书),users(存储每一个用户的证书)
users的内容,最少包含两个用户——你创建的用户和admin用户
peers的内容,组织1中存储的peer0和peer1
-
查看channel-artifacts配置 genesis.block:整个网络的创世区块 channel.tx:创建的通道的配置 Org1MSPanchors.tx和Org2MSPanchors.tx:两个主体的锚节点的配置
-
启动网络,分析日志
./byfn.sh -m up -i 1.0.0
-
启动网络
-
指定通道名称和一些变量,通道创建完成
-
4个peer加入通道
-
组织中的锚节点在通道update成功
-
链码安装到peer
-
链码实例化
-
在peer0进行查询操作,成功,查询结果为100
-
进行修改操作,返回200,修改成功
-
再次查询结果为90
-
查看docker容器,3个dev开头的就是链码,4个peer开头的就是每一个peer
3个链码会生成3个image
-
查看脚本
找到脚本对应位置的链码
-
查看go的代码 实现了Init和Invoke接口,就代表是一个fabric智能合约 Init:首先获取参数,不为4就报错,然后把参数存入数据库中 Invoke:设置了3个方法(invoke,delete,query) invoke:转账操作 delete:从数据库删除 query:查询操作,以JSON形式返回
-
查看脚本 a初始有100元,b初始有200元
查询a有多少钱,所以打印了100
a给b转10元
-
总结 根据下面配置运行一个网络
网络执行了一个链码,实现了初始化、查询、删除、转账等操作
按照下面的脚本执行,首先进行初始化,然后查询a账户余额,然后a给b转账10元,然后再执行一个查询a账户余额的操作
-
关闭网络,清除image和容器