1.fabric开发流程
- 需求整理
- 合约编写
- 合约部署
- 合约交互
- 外部服务编写
2.需求分析
- 开发一个资产转让功能模块
- 平台功能
- 用户开户和销户
- 资产登记,解决资产上链和用户绑定资产
- 资产转让,资产所有权的变更
- 查询功能,用户查询、资产查询、资产变更历史查询
3.合约编写
- assetsExchange.go
4.合约部署
- 关闭docker
- 生成通道的创世交易
- 查看生成的交易文件
- 启动网络
- 登录到client会话操作
- 创建通道
- 查看通道
- 加入通道
- 创建mychannel
- 安装智能合约
- 链码实例化
- 注册用户
- 查询用户
- 资产登记
- 资产查询
- 注册第二个用户
- 查询第二个用户
- 资产转让
- 查看用户2的资产信息,已经有资产1的Id了
- 查询资产1的历史
- 查询所有资产的变更历史
- 注销用户
- 查询用户是否存在
5.链码开发者模式
- 特殊配置
- 使用dev模式启动peer节点
- 方法一:peer node start --peer-chaincodedev=true
- 方法二(给peer节点注入环境变量):CORE_CHAINCODE_MODE=dev
- 删除之前的网络
- 修改文件
- 启动网络
- 运行代码
- 进入cli
- 创建通道
- 加入通道
- 安装链码
- 实例化链码
- 注册用户
- 查询用户
- 修改方法
- 再次运行,就可以生效
- 关闭docker
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
- 可以查看4个SDK的release
- 这里选用第三个版本
- 下载SDK
- 切换版本
- 查看日志
8.外部服务编写和部署
- 编写main.go
- 编译文件
- 运行外部服务
9.外部服务调用
- 进入目录
- 启动网络
- 登录到client会话操作
- 创建通道
- 加入通道
- 安装智能合约
- 链码实例化
- 用户注册
- 可以去linux中查询用户
- 用户查询,目前user2的资产还没有登记
- 为user2资产登记
- 再次查询user2,此时已经有资产了
- 也可以单独查询资产
- 创建user3用户,测试资产转让
- user2的asset2资产,转让给user3
- 查看user2和user3,资产已经被转让给了user3
- 查询资产变更历史
- 删除user3
- 查看用户和资产,都没有了