HyperLeger Fabric安装

安装curl、git

yum -y install curl
yum -y install git

安装docker

下载fabric

mkdir hyperledgerFabric
cd hyperledgerFabric
git clone https://github.com/hyperledger/fabric.git

在这里插入图片描述

安装fabric-samples示例

cd fabric/scripts
git clone -b main https://github.com/hyperledger/fabric-samples.git

在这里插入图片描述

安装二进制文件,解压后将自动安装到fabric-samples目录下的bin和config目录下

wget https://github.com/hyperledger/fabric/releases/download/v2.4.2/hyperledger-fabric-linux-amd64-2.4.2.tar.gz
tar -xzvf hyperledger-fabric-linux-amd64-2.4.2.tar.gz -C fabric-samples

制作成docker镜像
修改bootstrap.sh文件内容并运行即可成功制作成docker镜像

cd fabric/scripts
vim bootstrap.sh

BINARIES=false  # 将136行的BINARIES的true改为false

./bootstrap.sh  # 运行安装脚本

成功运行后查看docker容器
在这里插入图片描述

启动测试网络
       创建一个由两个对等节点和一个排序节点组成的Fabric网络

cd /fabric-samples/test-network

./network.sh up

如果报错可以运行下面的命令
curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

在这里插入图片描述

创建一个通道

./network.sh createChannel

遇见如下问题的解决方法
       Error: failed to normalize chaincode path: failed to determine module root: exec: “go”: executable file not found in $PATH
       Chaincode packaging has failed
       Deploying chaincode failed

在这里插入图片描述

安装go

cd ~
mkdir go
cd go
wget https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz
tar -C /usr/local -zxf go1.14.2.linux-amd64.tar.gz
vim /etc/profile
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin

更新配置文件
source /etc/profile
go version

在这里插入图片描述

遇见如下问题解决方法
       Error: failed to normalize chaincode path: ‘go list’ failed with: go: github.com/golang/protobuf@v1.3.2: Get “https://proxy.golang.org/github.com/golang/protobuf/@v/v1.3.2.mod”: dial tcp 142.251.43.17:443: i/o timeout: exit status 1
       Chaincode packaging has failed
       Deploying chaincode failed

在这里插入图片描述

go env -w GOPROXY=https://goproxy.io,direct
go env -w GO111MODULE=on

链码测试

./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

出现一下问题
       Error: chaincode install failed with status: 500 - failed to invoke backing implementation of ‘InstallChaincode’: chaincode already successfully installed (package ID ‘basic_1.0:dee2d612e15f5059478b9048fa4b3c9f792096554841d642b9b59099fa0e04a4’)
       Chaincode installation on peer0.org1 has failed
       Deploying chaincode failed

在这里插入图片描述

解决

go env -w GOPROXY=https://goproxy.io,direct
go env -w GO111MODULE=on
go mod vendor

或者重新启动镜像
./network.sh down
./network.sh up createChannel
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

成功后如下
在这里插入图片描述

与网络交互

export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
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
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 mychannel -n basic --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":[]}'

peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'

peer channel list
.crt -c '{"function":"InitLedger","Args":[]}'

peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'

peer channel list
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hyperledger Fabric是一个面向企业应用的区块链平台,智能合约也称为链码(Chaincode),是Hyperledger Fabric的核心概念之一。在Hyperledger Fabric中,链码是一段运行在区块链节点上的代码,它可以实现各种业务逻辑,例如资产转移、身份验证、规则检查等等。本文将介绍Hyperledger Fabric的链码开发。 一、链码类型 在Hyperledger Fabric中,链码分为两种类型:Go和Java。Go链码采用Go语言编写,Java链码则采用Java语言编写。Go链码的优点是运行速度快、部署简单;Java链码的优点是易于开发和维护。 二、链码开发 链码是Hyperledger Fabric应用的核心组件,它实现了业务逻辑、数据存储和访问控制等功能。链码开发的步骤如下: 1、创建链码项目 使用命令行工具创建一个新的链码项目: ``` $ mkdir mychaincode $ cd mychaincode $ touch main.go ``` 2、编写链码 在main.go文件中编写链码的业务逻辑。下面是一个简单的示例代码: ```go package main import ( "fmt" "github.com/hyperledger/fabric/core/chaincode/shim" pb "github.com/hyperledger/fabric/protos/peer" ) type MyChaincode struct { } func (t *MyChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { return shim.Success(nil) } func (t *MyChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response { function, args := stub.GetFunctionAndParameters() if function == "hello" { return t.hello(stub, args) } return shim.Error("Invalid function name.") } func (t *MyChaincode) hello(stub shim.ChaincodeStubInterface, args []string) pb.Response { name := args[0] message := fmt.Sprintf("Hello, %s!", name) return shim.Success([]byte(message)) } func main() { err := shim.Start(new(MyChaincode)) if err != nil { fmt.Printf("Error starting chaincode: %s", err) } } ``` 在上面的代码中,我们定义了一个名为MyChaincode的结构体,实现了Init和Invoke两个方法。Init方法用于初始化链码,Invoke方法用于处理链码的各种请求。在Invoke方法中,我们根据不同的请求类型来调用不同的函数。例如,当请求类型为hello时,会调用hello函数来返回一条问候消息。 3、编译链码 使用以下命令编译链码: ``` $ go build ``` 4、部署链码 使用以下命令将链码部署到Hyperledger Fabric网络中: ``` $ peer chaincode deploy -n mychaincode -v 1.0 -p /path/to/chaincode -c '{"Args":[]}' -C mychannel ``` 在上面的命令中,-n参数指定链码的名称,-v参数指定链码的版本号,-p参数指定链码的路径,-c参数指定链码的初始化参数,-C参数指定链码所属的通道。 5、调用链码 使用以下命令调用链码: ``` $ peer chaincode invoke -n mychaincode -c '{"Args":["hello", "World"]}' -C mychannel ``` 在上面的命令中,-n参数指定链码的名称,-c参数指定调用链码的参数,-C参数指定链码所属的通道。 三、总结 本文介绍了Hyperledger Fabric的链码开发,包括链码类型、链码开发步骤等。链码是Hyperledger Fabric应用的核心组件,它实现了业务逻辑、数据存储和访问控制等功能。在实际应用中,我们可以根据实际需求开发不同类型的链码,以实现各种业务逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值