浅试Hyperledger Fabric ,go 小项目

  • 本文简述
    • 第一次,go项目中的小tips
    • Linux中使用Hyperledger Fabric官方test-network运行自己CC
      • 1.创建通道
      • 2.部署链码
      • 3.初始化账本
      • 4.测试:以ID 查某资产

本文简述

记录第一次使用go语言编写项目的一些流程tips,以及在linux中使用Hyperledger Fabric官方test-network运行自己的Chaincode流程。

第一次,go项目中的小tips

1.包名一定要有

package chaincode

注意,一个项目中,在main函数(启动函数)所在代码中注明package main,如果没有main包会出现类似以下错误:
error starting container: error starting container: API error (400): OCI runtime create failed: container_linux.go:380: starting container process caused: exec: “chaincode”: executable file not found in $PATH: unknown"

2.import 导入 要使用的包

import ("fmt""io/ioutil""net/http""net/url"_ "net/http/pprof"
)
// 在import中导包,路径从项目的包名开始写
import (manufacture "channel1/manufacture"
)

3.写完后 进行 go mod init 项目名,生成go.mod

go mod init channel1

4.当在go.mod中填写了 require

// 用以下命令将模块添加到项目
go mod tidy
// 生成sum 文件

5.按下载的包 生成对应的verdor目录

go mod vendor

6.添加某一个包模块基本流程

//下载包以及对应文件
go get github.com/gin-gonic/gin
//在其中 go get 模块包时 报错时
// 开启代理命令,再尝试
go env -w GOPROXY=https://goproxy.cn

Linux中使用Hyperledger Fabric官方test-network运行自己CC

搭建Hyperledger Fabric参考:
https://blog.csdn.net/sinat_36082782/article/details/112793386
官方运行案参考:
https://hyperledger-fabric.readthedocs.io/zh_CN/release-2.2/test_network.html
Chaincode编写 参考官方任何一个案例 都可以。
注意:Chaincode 和 应用代码 要分为两个项目,也就是 编写出来应该要经历两次 上文中阐述的步骤。
我的 Chaincode 目录结构:

注意 chaincode中,如果你的项目中 main函数所在代码中首行包名

准备好Chaincode 项目后 以及 test-network 已经 启动后,创建通道,上链,初始化账本,测试。
创建通道

1.创建通道

# 创建通道
./network.sh createChannel -c channeltest2

没有报错出现以下界面则成功

2.部署链码

# -c channeltest2 指定通道名
# -ccn svcmatrix_2 指定链码名
# -ccp /root/SCC/c2/c2cc 指定 链码路径
# -ccl go -指定语言
./network.sh deployCC -c channeltest2  -ccn svcmatrix_2  -ccp /root/SCC/c2/c2cc  -ccl go

没有报错出现以下界面则成功

启动链码后需要给配置一些配置文件,以及命令的环境变量,按官方文档的配置文件,在test-network目录下:

# 注意,export 命令是临时设置环境变量,当切换终端后就可能会失效,若永久设置 写入环境变量文件。
# 命令的全局变量使用
export PATH=${PWD}/../bin:$PATH
# 配置文件环境变量
export FABRIC_CFG_PATH=$PWD/../config/
# 设置环境变量,以允许您作为Org1操作peer CLI:
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_ADDRESS=localhost:7051
# 若要交给Org2操作
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
export CORE_PEER_ADDRESS=localhost:9051

3.初始化账本

# 命令 与官方给的几乎一样 需要修改的参数
# -C channeltest2 -n svcmatrix_2
# -C 通道名 -n 链码名称 应与上文中创建通道 部署链码时名称一致。
# 注意'{"function":"InitLedger","Args":[]}' function后面的值要与你的Chaincode中对应
[root@xuegod63 test-network]# peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C channeltest2 -n svcmatrix_2  --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"InitLedger","Args":[]}'

出现错误

将只能合约起始包名改为main,返回步骤2,但是上链时修改链码名称,因为删除已有链码比较繁琐不如直接重新给个名字再来。

成功

4.测试:以ID 查某资产

# 查询调用cc中函数是,指定通道,cc名,以及函数名和参数
peer chaincode query -C channeltest2 -n svcmatrix_2 -c '{"Args":["ReadAsset","1020001"]}


下一篇会记录一下,简单应用程序与Chaincode交互过程,以及实现过程中一些我认为需要注意的地方。第一次写go和使用Hyperledger Fabric,多有不足,请各位大佬包含指正。

浅试Hyperledger Fabric go 小项目相关推荐

  1. 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1

    摘要: 全球开源区块链领域影响最为广泛的Hyperledger Fabric日前宣布了1.1版本的正式发布,带来了一系列丰富的新功能以及在安全性.性能与扩展性等方面的显著提升.阿里云容器服务区块链解决 ...

  2. 《HyperLedger Fabric 实战》—— 十、项目演练 -- 反欺诈系统

    <HyperLedger Fabric 实战>-- 十.项目演练 – 反欺诈系统 注意点 1.用户唯一ID应该是姓名与身份证号组合后的MD5,这样可以防止加盟用户仅通过机器生成的大量身份证 ...

  3. vue练手小项目--眼镜在线试戴

    最近看到了一个眼镜在线试戴小项目使用纯js手写的,本人刚学习vue.js没多久,便试试用vue做做看了,还没完善. 其中包括初始图片加载,使用keywords查找,父子组件之间传递信息,子组件之间传递 ...

  4. hyperledger fabric v2.4环境搭建及区块链项目开发

    基础环境配置,不再详细描述:学习交流可联系博主. 安装go 安装docker 安装docker-compose 清空历史docker images docker system prune --all ...

  5. Hyperledger Fabric项目搭建区块链浏览器Hyperledger-blockchain-explorer

    Hyperledger Fabric项目搭建区块链浏览器 1.下载配置文件 区块链浏览器官网:https://github.com/hyperledger/blockchain-explorer # ...

  6. Hyperledger Fabric 2.0 官方文档中文版 第6章 教程(下)

    Hyperledger Fabric 2.0 官方文档中文版 第6章 教程下 总目录 6.教程(下) 使用CouchDB 为什么使用CouchDB? 在Hyperledger Fabric中启用Cou ...

  7. 浅析Hyperledger Fabric共识算法

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 区块链系统是一个分布式架构,交易账本信息由各个节点管理,组成一个庞大的分布式账本.在分布式系统中,各个节点收到的交易信息 ...

  8. Hyperledger Fabric 1.2 --- Chaincode Operator 解读和测试(一)

    前言 本文主要目的是用于整理Hyperledger  Fabric中关于chaincode 管理和操作的内容,作者以release-1.2为范本进行讲解. 主要参考链接: https://hyperl ...

  9. Hyperledger Fabric on SAP Cloud Platform(SAP云平台上的超级账本简介)

    今天的文章来自Wen Aviva, 坐Jerry面对面的程序媛. Jerry在之前的公众号文章<在SAP UI中使用纯JavaScript显示产品主数据的3D模型视图>已经介绍过Aviva ...

最新文章

  1. Mysql笔记2-----重要小点
  2. 监控j服务器jvm运行情况 - spring boot jvisualvm
  3. @ControllerAdvice这个注解主要作用是什么
  4. 【VS Code】vue.js ESLint + vscode 代码格式配置
  5. mysql relay_技术分享 | MySQL:产生大量小 relay log 的故障一例
  6. 乐鑫代理启明云端分享|基于ESP32-S2彩色触摸屏86面板方案
  7. 小程序开发过程注意事项
  8. 复制Linux虚拟机后的网卡问题解决
  9. 简单工厂模式、工厂方法模式、抽象工厂模式
  10. SparkStreaming之updateStateByKey
  11. idea快速搭建spring cloud-注册中心与注册
  12. Anscombe's Quartet 问题
  13. 不知不觉 CDSN 也有了百万访问量了
  14. 无线通信设备安装工程概预算编制_平谷彩钢板净化工程工程安装,洁净棚_青岛嘉瑞宏业净化设备...
  15. css loader.net,css-loader style-loader原理探究
  16. matlab中二维图plot,semilogx,semilogy,semilogy之间的作图区别
  17. 女孩子取什么名字好听又独特?自己家的宝宝就要个好名字
  18. 计算机键盘功能教案,键盘认识教案
  19. MySQL数据库表结构设计优化技巧总结
  20. mysql增加重做日志组_mysql重做日志

热门文章

  1. 机器学习开源数据集整理
  2. 工业机器人:四大家族垄断全球市场
  3. 8个老手都不一定知道的sketch技巧
  4. 数据结构--Avl树的创建,插入的递归版本和非递归版本,删除等操作
  5. canon 计数器清零软件
  6. SPF9139支持安卓微信7.0版本数据恢复
  7. JSFL制作swf素材包
  8. GEF中组合按键设置汇总以及org.eclipse.gef.KeyStroke的方法的使用
  9. 伪静态 mysql php,Ubuntu 12.04 搭建PHP环境(MySQL+PHP+Apache环境)手把手教程 含伪静态
  10. 苹果mp3软件_推荐超级实用的苹果软件《一,音视频格式转换软件Total Video Converter Pro》...