超级账本hyperledger fabric第三集:helloworld

查看目录:

超级账本hyperledger fabric第三集:helloworld_第1张图片

  • .env:存储一些环境变量
  • base:存储docker-compose的一些公共服务
  • byfn.sh:执行脚本
  • configtx.yaml和crypto-config.yaml:根据之前生成的2个工具,生成相应的配置文件,用来启动网络,放到当前目录的channel-artifacts和crypto-config里面
  • dockper-compose:用于启动网络
  • scripts:存放测试脚本,做的事:创建通道、加入通道,安装链码,实例化链码,链码交互

生成配置:./byfn.sh -m generate -i 1.0.0

启动网络,自动运行测试脚本:   ./byfn.sh -m up -i 1.0.0

关闭网络,自动清除配置和docker进程 :  ./byfn.sh -m down -i 1.0.0


helloWorld分析

查看配置,order和peer分离:peer是按照组织或主体分离的,每一个组织生成ca(存储证书和私钥),msp(存储管理员证书和中间证书),peers(存储每一个peer相关的证书),users(存储每一个用户的证书)

超级账本hyperledger fabric第三集:helloworld_第2张图片

查看如下配置

  • genesis.block:整个网络的创世区块
  • channel.tx:创建的通道的配置
  • Org1MSPanchors.tx和Org2MSPanchors.tx:两个主体的锚节点配置

超级账本hyperledger fabric第三集:helloworld_第3张图片

启动网络,接着分析日志:

超级账本hyperledger fabric第三集:helloworld_第4张图片

坑:再次启动BYFN网络示例前,必须先关闭BYFN网络,删除生成的证书、容器、网络构件以及链码镜像等。如果不关闭BYFN网络,将会导致创建通道失败。错误如下:

解决办法:关闭BYFN示例

超级账本hyperledger fabric第三集:helloworld_第5张图片

指定通道名字,和一些变量,通道创建完成

超级账本hyperledger fabric第三集:helloworld_第6张图片

4个peer去加入通道

组织中的锚节点在通道中update成功

链码安装到了peer节点

链码实例化

在peer0进行了查询操作,成功,查询结果为100

进行修改操作,成功

再次查询,结果为90

查看docker进程:3个dev开头的进程就是链码;peer开头的是每一个peer

超级账本hyperledger fabric第三集:helloworld_第7张图片

3个链码会生成3个image

超级账本hyperledger fabric第三集:helloworld_第8张图片

查看脚本

超级账本hyperledger fabric第三集:helloworld_第9张图片

可以按脚本中的位置,找到链码

超级账本hyperledger fabric第三集:helloworld_第10张图片

超级账本hyperledger fabric第三集:helloworld_第11张图片

实现了Init和Invoke接口,就代表是一个fabric智能合约

cat chaincode_example02

  • Init:首先获取参数,不为4个则报错,最终将A和B存到数据库中

超级账本hyperledger fabric第三集:helloworld_第12张图片

  • Invoke:设置了3个方法(invoke、delete、query)

超级账本hyperledger fabric第三集:helloworld_第13张图片

  • invoke:接收3个参数(谁给谁转账,转多少)

超级账本hyperledger fabric第三集:helloworld_第14张图片

  • A给B转账

超级账本hyperledger fabric第三集:helloworld_第15张图片

  • 持久化数据

超级账本hyperledger fabric第三集:helloworld_第16张图片

  • 接收1个值,从数据库中删除

超级账本hyperledger fabric第三集:helloworld_第17张图片

  • 查询操作,结果是以json格式返回

超级账本hyperledger fabric第三集:helloworld_第18张图片

  • main里只start或者进行一些验证,不写其他代码

超级账本hyperledger fabric第三集:helloworld_第19张图片

  • srcipts中:初始化操作,A有100元,B有200元

超级账本hyperledger fabric第三集:helloworld_第20张图片

  • 查询A有多少钱,所有打印了100

超级账本hyperledger fabric第三集:helloworld_第21张图片

  • A给B转10元

超级账本hyperledger fabric第三集:helloworld_第22张图片

关闭网络,清除image和进程

超级账本hyperledger fabric第三集:helloworld_第23张图片

 

你可能感兴趣的:(超级账本)