hyperledger fabric v1.1源码学习
学习区块链
希望能通过一步步学习hyperledger fabric来深入认识区块链。这篇文章将记录学习足迹
Getting Start
根据官方文档做好环境搭建准备
hyperledger fabric的官方文档
从main函数开始入手
main函数功能
bootstrap.sh
Fabric 环境搭建时bootstrap.sh帮我们做了什么?
Key Concept
教程
建立第一个网络
先下载fabric-samples
fabric-samples
切换成git {tag}:v1.1.0(版本正确很重要,是tag不是branch)
运行first-network
同样要现在目录下下载好二进制文件,然后在运行目录下byfn.sh
脚本
如何运行first-network
运行脚本
fabcar应用
./byfn.sh -m down
关闭所有存在的区块链网络,在fabric-samples中进入fabcar文件夹。
docker rm -f $(docker ps -aq)
终止旧的或者正在活动状态的容器;
docker network prune
清除缓存网络
详情:
fabcar应用
注:npm与node的版本须特别留意,否则用node运行js文件时会出现各种node_module模块缺失
这是我成功运行的npm与node版本:
注册管理员用户
登记注册用户1
请求账本
发现有趣的地方,请求用户1的车记录,服务器方没有相应的信息打印,屏幕依然停留在注册用户1的画面,应该是作为sample没有把log打印出来。
修改账本
添加车辆:在invoke.js中的request模块里填入要操作的函数(fcn中),可操作的函数已经在chaincode中编写好(即smart contract),参数也按照格式填好。
向频道(channel)添加新的组织(Org)
建立环境
手动添加组织3
docker-compose-cli.yaml:
docker-compose-org3.yaml:
生成org3加密材料
准备cli环境
获取配置
将配置转换为JSON并进行修整
注意这里的config.json文件并不是在first-network的文件夹中,而是在进入CLI容器后的peer目录下
添加Org3的加密材料
仔细思考教程我们可以知道,教程是一直使用configtxlator tool,先把Org1和Org2的protobuf格式文件转换成config.json,再以json格式添加Org3后生成modified_config.json,然后分别把config.json和modified_config.json转换回config.pb和modified_config.pb, 最后用configtxlator计算这两个配置协议之间的差异。此命令将输出一个新的protobuf二进制文件,名为org3_update.pb.
签名并提交配置更新
请记住,CLI容器是由Org1 MSP材料引导的,因此我们只需要发出以下命令: peer channel signconfigtx
最后一步是切换CLI容器的身份以反映Org2 Admin用户
使用动态领导者选举
添加Org3到频道(channel)
新开的terminal:
升级和调用链码
仍然是在刚才新开的terminal中:
现在回到原来的terminal中:
现在是在Org2中
跳转回Org1
跳回Org3所在的terminal中
总结:
通道配置更新过程确实涉及很多,但是各个步骤都有一个逻辑方法。最终的结果是形成一个以protobuf二进制格式表示的增量交易对象,然后获取必要数量的管理员签名,以使频道配置更新交易满足频道的修改策略。