浅试Hyperledger Fabric go 小项目

这篇具有很好参考价值的文章主要介绍了浅试Hyperledger Fabric go 小项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文简述

记录第一次使用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"浅试Hyperledger Fabric go 小项目

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 目录结构:
浅试Hyperledger Fabric go 小项目
注意 chaincode中,如果你的项目中 main函数所在代码中首行包名
浅试Hyperledger Fabric go 小项目
准备好Chaincode 项目后 以及 test-network 已经 启动后,创建通道,上链,初始化账本,测试。
创建通道

1.创建通道

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

没有报错出现以下界面则成功
浅试Hyperledger Fabric go 小项目

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

没有报错出现以下界面则成功
浅试Hyperledger Fabric 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":[]}'

出现错误

浅试Hyperledger Fabric go 小项目

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

成功

浅试Hyperledger Fabric go 小项目

4.测试:以ID 查某资产

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

浅试Hyperledger Fabric go 小项目
下一篇会记录一下,简单应用程序与Chaincode交互过程,以及实现过程中一些我认为需要注意的地方。第一次写go和使用Hyperledger Fabric,多有不足,请各位大佬包含指正。文章来源地址https://www.toymoban.com/news/detail-507330.html

到了这里,关于浅试Hyperledger Fabric go 小项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    区块链浏览器官网:https://github.com/hyperledger/blockchain-explorer 如果虚拟机没有联网,导致下载不下来,也可以前往Fabric-explorer附件下载进行下载,之后在本地根据需要修改,修改后上传到虚拟机 此时目录结构如下图所示 3.1修改test-network.json—— 网络配置文件,包含身份的指定

    2024年02月08日
    浏览(36)
  • Linux搭建Hyperledger Fabric区块链框架 - Hyperledger Fabric模型概念

    2015年,Linux基金会启动了Hyperledger项目,目标是发展跨行业的区块链技术。 Hyperledger Fabric是Hyperledger中的一个区块链项目,包含一个账本,使用智能合约并且是一个通过所有参与者管理交易的系统。 Hyperledger Fabric 是分布式账本解决方案的平台,以模块化架构为基础,支持不同

    2023年04月08日
    浏览(40)
  • 【Fabric学习】什么是HyperLedger Fabric?

    本文总结自 Fabric官方文档 ,描述了Fabric产生的背景、特性、主要组件。 区块链 是不可更改的交易账本,由同等节点(peer nodes)组成的分布式网络来维护。 比特币:第一个使用区块链的应用; 以太坊:引入 智能合约 来开发分布式应用。 二者都是 公有链 ( public / permissi

    2024年01月19日
    浏览(37)
  • 【Hyperledger Fabric 学习】运行一个Fabric应用

    中文网址:https://hyperledger-fabric.readthedocs.io/zh_CN/latest 英文网址:https://hyperledger-fabric.readthedocs.io/en/latest 一般情况英文网址的内容更全面,版本也比中文新。 本教程介绍了 Fabric 应用程序如何与已部署的区块链网络进行交互。本教程使用使用 Fabric Gateway 客户端 API 构建的示例

    2023年04月08日
    浏览(60)
  • Hyperledger Fabric 环境搭建

    以 fabric:2.2.0 ; ca:1.4.7 为例 官网下载go Downloads - The Go Programming Language (google.cn) 没有问题就完成啦 官方安装脚本(修改过了): 两个简单脚本直接开启/关闭测试区块链: 开启: 关闭:

    2024年02月11日
    浏览(34)
  • Hyperledger Fabric 链码

    懂哪写哪,随时补充 链码在开发过程中需要实现链码接口,交易的类型决定了哪个接口函数将会被调用,链码的接口定义如下: 链码的必要结构如下: shim.ChaincodeStubInterface接口 1、Init方法 Init方法中,首先通过stub的GetFunctionAndParameters()方法提取本次调用的交易中所指定的

    2023年04月08日
    浏览(36)
  • Hyperledger Fabric架构设计

    目录 1、逻辑架构 答疑:什么叫做背书策略? 2、运行时架构         答疑:什么是锚节点? Hyperledger Fabric从1.X开始,在扩展性及安全性方面有了很大的提升,且新增了诸多特性。 多通道:支持多通道,提高隔离安全性。 可插拔的组件:支持共识组件、权限管理组件等可

    2024年02月11日
    浏览(26)
  • Hyperledger Fabric问题汇总

    Ubuntu 20.04 Hyperledger Fabric 2.3.3 SDK对应的Go 1.17.5 链码对应的Go 1.18 Fabric-sdk-go 1.0.0 Docker 20.10.12 Docker-Compose 2.11.2 调用命令: peer chaincode invoke -o localhost:7050 – ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts

    2024年02月04日
    浏览(35)
  • Hyperledger Fabric 架构概览

    fabric 版本 v2.4.1 超级账本 Fabric 自诞生以来已经发布了两个主要版本:1.0 系列版本(2017 年 7 月)和 2.0 系列版本(2020 年 1 月)。2016 年 9 月,Fabric 发布了 v0.6.0 预览版本,通过这一版本社区收集了大量来自实践的反馈和建议,主要集中在性能、安全、可扩展性等方面。2017

    2024年02月01日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包