1.fabric开发流程

  • 需求整理
  • 合约编写
  • 合约部署
  • 合约交互
  • 外部服务编写
    2.08 hyperledger fabric完整案例_区块链

2.需求分析

  • 开发一个资产转让功能模块
  • 平台功能
    • 用户开户和销户
    • 资产登记,解决资产上链和用户绑定资产
    • 资产转让,资产所有权的变更
    • 查询功能,用户查询、资产查询、资产变更历史查询

3.合约编写

  • assetsExchange.go

4.合约部署

  • 关闭docker
    2.08 hyperledger fabric完整案例_GO语言_02
  • 生成通道的创世交易
    2.08 hyperledger fabric完整案例_GO语言_03
  • 查看生成的交易文件
    2.08 hyperledger fabric完整案例_GO语言_04
  • 启动网络
    2.08 hyperledger fabric完整案例_GO语言_05
  • 登录到client会话操作
    2.08 hyperledger fabric完整案例_GO语言_06
  • 创建通道
    2.08 hyperledger fabric完整案例_区块链_07
  • 查看通道
    2.08 hyperledger fabric完整案例_区块链_08
  • 加入通道
    2.08 hyperledger fabric完整案例_区块链_09
  • 创建mychannel
    2.08 hyperledger fabric完整案例_GO语言_10
    2.08 hyperledger fabric完整案例_GO语言_11
    2.08 hyperledger fabric完整案例_GO语言_12
  • 安装智能合约
    2.08 hyperledger fabric完整案例_GO语言_13
  • 链码实例化
    2.08 hyperledger fabric完整案例_GO语言_14
    2.08 hyperledger fabric完整案例_GO语言_15
  • 注册用户
    2.08 hyperledger fabric完整案例_GO语言_16
  • 查询用户
    2.08 hyperledger fabric完整案例_区块链_17
  • 资产登记
    2.08 hyperledger fabric完整案例_区块链_18
  • 资产查询
    2.08 hyperledger fabric完整案例_区块链_19
  • 注册第二个用户
    2.08 hyperledger fabric完整案例_区块链_20
  • 查询第二个用户
    2.08 hyperledger fabric完整案例_区块链_21
  • 资产转让
    2.08 hyperledger fabric完整案例_区块链_22
  • 查看用户2的资产信息,已经有资产1的Id了
    2.08 hyperledger fabric完整案例_GO语言_23
  • 查询资产1的历史
    2.08 hyperledger fabric完整案例_GO语言_24
  • 查询所有资产的变更历史
    2.08 hyperledger fabric完整案例_区块链_25
  • 注销用户
    2.08 hyperledger fabric完整案例_GO语言_26
  • 查询用户是否存在
    2.08 hyperledger fabric完整案例_GO语言_27

5.链码开发者模式

  • 特殊配置
    • 使用dev模式启动peer节点
    • 方法一:peer node start --peer-chaincodedev=true
    • 方法二(给peer节点注入环境变量):CORE_CHAINCODE_MODE=dev
  • 删除之前的网络
    2.08 hyperledger fabric完整案例_区块链_28
  • 修改文件
    2.08 hyperledger fabric完整案例_GO语言_29
  • 启动网络
    2.08 hyperledger fabric完整案例_区块链_30
  • 运行代码
    2.08 hyperledger fabric完整案例_区块链_31
  • 进入cli
    2.08 hyperledger fabric完整案例_GO语言_32
  • 创建通道
    2.08 hyperledger fabric完整案例_GO语言_33
  • 加入通道
    2.08 hyperledger fabric完整案例_GO语言_34
  • 安装链码
    2.08 hyperledger fabric完整案例_GO语言_35
  • 实例化链码
    2.08 hyperledger fabric完整案例_区块链_36
  • 注册用户
    2.08 hyperledger fabric完整案例_GO语言_37
  • 查询用户
    2.08 hyperledger fabric完整案例_区块链_38
  • 修改方法
    2.08 hyperledger fabric完整案例_GO语言_39
  • 再次运行,就可以生效
    2.08 hyperledger fabric完整案例_GO语言_40
  • 关闭docker
    2.08 hyperledger fabric完整案例_区块链_41

6.外部服务分析

  • 如何提供服务,决定于应用场景,也就是决定于终端用户
    • 智能硬件:提供socket或tcp服务,主流是还是socket服务,例如太阳能发电终端
    • 游戏、电商、社交:web或手机app,提供http服务(接下来例子采用http)
    • 企业内部:rpc或grpc服务
  • 如何选择SDK
    • node.js
    • java
    • python
    • golang
  • SDK的模块
    • 区块链管理:例如通道的创建和加入、链码的安装、实例化和升级等(区块链和管理员或者云服务提供商去用)
    • 数据查询:区块(区块浏览器)和交易的查询
    • 区块链交互:发起交易(invoke或query)
    • 事件监听:业务事件(SendEvent)、系统事件(block/trancastion)

7.SDK下载和配置

  • 搜fabric-sdk
    2.08 hyperledger fabric完整案例_GO语言_42
  • 可以查看4个SDK的release
    2.08 hyperledger fabric完整案例_区块链_43
  • 这里选用第三个版本
    2.08 hyperledger fabric完整案例_区块链_44
  • 下载SDK
    2.08 hyperledger fabric完整案例_区块链_45
  • 切换版本
    2.08 hyperledger fabric完整案例_区块链_46
  • 查看日志
    2.08 hyperledger fabric完整案例_区块链_47
    2.08 hyperledger fabric完整案例_区块链_48

8.外部服务编写和部署

  • 编写main.go
  • 编译文件
    2.08 hyperledger fabric完整案例_区块链_49
    2.08 hyperledger fabric完整案例_GO语言_50
  • 运行外部服务
    2.08 hyperledger fabric完整案例_区块链_51
    2.08 hyperledger fabric完整案例_区块链_52

9.外部服务调用

  • 进入目录
    2.08 hyperledger fabric完整案例_区块链_53
  • 启动网络
    2.08 hyperledger fabric完整案例_GO语言_54
  • 登录到client会话操作
    2.08 hyperledger fabric完整案例_GO语言_55
  • 创建通道
    2.08 hyperledger fabric完整案例_区块链_56
  • 加入通道
    2.08 hyperledger fabric完整案例_区块链_57
  • 安装智能合约
    2.08 hyperledger fabric完整案例_区块链_58
  • 链码实例化
    2.08 hyperledger fabric完整案例_GO语言_59
  • 用户注册
    2.08 hyperledger fabric完整案例_GO语言_60
  • 可以去linux中查询用户
    2.08 hyperledger fabric完整案例_GO语言_61
  • 用户查询,目前user2的资产还没有登记
    2.08 hyperledger fabric完整案例_GO语言_62
  • 为user2资产登记
    2.08 hyperledger fabric完整案例_GO语言_63
  • 再次查询user2,此时已经有资产了
    2.08 hyperledger fabric完整案例_区块链_64
  • 也可以单独查询资产
    2.08 hyperledger fabric完整案例_区块链_65
  • 创建user3用户,测试资产转让
    2.08 hyperledger fabric完整案例_区块链_66
  • user2的asset2资产,转让给user3
    2.08 hyperledger fabric完整案例_区块链_67
  • 查看user2和user3,资产已经被转让给了user3
    2.08 hyperledger fabric完整案例_区块链_68
    2.08 hyperledger fabric完整案例_区块链_69
  • 查询资产变更历史
    2.08 hyperledger fabric完整案例_区块链_70
  • 删除user3
    2.08 hyperledger fabric完整案例_GO语言_71
  • 查看用户和资产,都没有了
    2.08 hyperledger fabric完整案例_区块链_72