一 準(zhǔn)備工作
1.1 Ubuntu
版本:18.04
1.2 go
版本 : 1.14.2
- go 環(huán)境變量配置
vim /etc/profile
export GOROOT=/opt/go
export GOPATH=/opt/gocode
export PATH=PATH
export GOBIN=$GOPATH/bin
- 刷新環(huán)境變量
source /etc/profile
- 解壓 SDK
tar -C /opt/go -xzvf go1.14.2.linux-amd64.tar.gz
1.3 docker
1.3.1 安裝Docker-CE
- 卸載舊版本docker
sudo apt-get remove docker docker-engine docker.io
- 添加HTTPS協(xié)議玛界,允許apt從HTTPS安裝軟件包
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
- 安裝GPG證書
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
- 寫入軟件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
- 更新并安裝Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
- 將當(dāng)前用戶添加到Docker用戶組
創(chuàng)建docker用戶組
sudo groupadd docker
- 將當(dāng)前用戶添加到docker用戶組
sudo usermod -aG docker $USER
- 將docker鏡像更改為國(guó)內(nèi)鏡像
編輯daemon.json文件漱竖,如果沒有該文件自行創(chuàng)建
sudo vim /etc/docker/daemon.json
文件中添加以下內(nèi)容
{
"registry-mirrors":["https://obou6wyb.mirror.aliyuncs.com","https://registry.docker-cn.com","http://hub-mirror.c.163.com"]
}
- 最后重啟服務(wù)
sudo systemctl daemon-reload
sudo systemctl restart docker
- 查看docker版本,看是否安裝成功
docker version
- 執(zhí)行docker info,如果結(jié)果中含有如下內(nèi)容則說(shuō)明鏡像配置成功
...
Registry Mirrors:
https://obou6wyb.mirror.aliyuncs.com/
https://registry.docker-cn.com/
http://hub-mirror.c.163.com/
Live Restore Enabled: false
...
1.3.2 安裝Docker-Compose
- 方法一:
sudo curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
或
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
用方法一下載完后要設(shè)置權(quán)限
sudo chmod +x /usr/local/bin/docker-compose
- 方法二:
sudo apt-get install python-pip
sudo pip install docker-compose
- 下載完成后查看是否安裝成功
docker-compose version
1.3.2 拉取fabric鏡像
docker pull hyperledger/fabric-peer:1.4.6
docker pull hyperledger/fabric-tools:1.4.6
docker pull hyperledger/fabric-orderer:1.4.6
docker pull hyperledger/fabric-javaenv:1.4.6
docker pull hyperledger/fabric-ca:1.4.6
docker pull hyperledger/fabric-ccenv:1.4.6
docker pull hyperledger/fabric-zookeeper:0.4.18
docker pull hyperledger/fabric-kafka:0.4.18
docker pull hyperledger/fabric-couchdb:0.4.18
docker pull hyperledger/fabric-baseimage:0.4.18
docker pull hyperledger/fabric-baseos:0.4.18
docker pull hyperledger/fabric-membersrvc:latest
或者
docker pull hyperledger/fabric-peer:1.4.6 && docker pull hyperledger/fabric-tools:1.4.6 && docker pull hyperledger/fabric-orderer:1.4.6 && docker pull hyperledger/fabric-javaenv:1.4.6 && docker pull hyperledger/fabric-ca:1.4.6 && docker pull hyperledger/fabric-ccenv:1.4.6 && docker pull hyperledger/fabric-zookeeper:0.4.18 && docker pull hyperledger/fabric-kafka:0.4.18 && docker pull hyperledger/fabric-couchdb:0.4.18 && docker pull hyperledger/fabric-baseimage:0.4.18 && docker pull hyperledger/fabric-baseos:0.4.18 && docker pull hyperledger/fabric-membersrvc:latest
- 拉取完鏡像鏡像后,可以查看docker鏡像庫(kù)
docker images
- (可忽略)
為了方便配置Docker Compose,將所有鏡像的tag都改為latest,執(zhí)行如下格式的命令:
docker tag IMAGEID(鏡像ID) REPOSITORY:TAG(倉(cāng)庫(kù):標(biāo)簽)
例如:
docker tag 68914607b3a5 docker.io/hyperledger/fabric-tools:latest
將標(biāo)簽全部更改完后,再次查看鏡像庫(kù)
docker images
二 Fabric命令行工具的編譯安裝
編譯安裝
2.1 創(chuàng)建目錄并下載代碼
- 創(chuàng)建hyperledger目錄
mkdir -p $GOPATH/src/github.com/hyperledger
cd $GOPATH/src/github.com/hyperledger
- 下載 fabric 源碼
git clone https://github.com/hyperledger/fabric
- 下載失敗,errno 54的解決方案
sudo git config --global http.postBuffer 5242880000
sudo git config --global https.postBuffer 5242880000
- 或者,從碼云上下載
git clone https://gitee.com/mirrors/hyperledger-fabric.git
2.2 編譯Fabric的模塊
- 進(jìn)入到Fabirc源碼所在的文件夾
cd $GOPATH/src/github.com/hyperledger/fabric
- 切換分支v1.4.6
git checkout v1.4.6
編譯方式一
make release
- 上述命令執(zhí)行完成之后蛤袒,會(huì)自動(dòng)將將編譯好的二進(jìn)制文件存放在以下路徑中:
$GOPATH/src/github.com/hyperledger/fabric/==release/linux-amd64/bin==
- 查看版本是否符合
cd $GOPATH/src/github.com/hyperledger/fabric/release/linux-amd64/bin
./peer version
編譯方式二
make orderer
make peer
make configtxlator
make certificategen
make configtxgen
查看 ==.build/bin== 目錄
ll .build/bin/
- Fabric的模塊
模塊名稱 | 功能 |
---|---|
peer | 主節(jié)點(diǎn)模塊询一,負(fù)責(zé)存儲(chǔ)區(qū)塊鏈數(shù)據(jù)健蕊,運(yùn)行維護(hù)鏈碼 |
orderer | 交易打包晴及、排序模塊 |
certificategen | 組織和證書生成模塊 |
configtxgen | 區(qū)塊和交易生成模塊 |
configtxlator | 區(qū)塊和交易解析模塊 |
2.4 Fabric模塊的安裝
就是將上述模塊添加到環(huán)境變量里去
- 第一步 Ubuntu和Centos將Fabric模塊編譯后的文件復(fù)制到系統(tǒng)文件夾中
cp $GOPATH/src/github.com/hyperledger/fabric/release/linux-amd64/bin/* /usr/local/bin
- MacOS上面將Fabric模塊編譯后的文件復(fù)制到系統(tǒng)文件夾中的方法如下:
cp $GOPATH/src/github.com/hyperledger/fabric/release/darwin-amd64/bin/* /usr/local/bin
復(fù)制成功之后通過(guò)以下命令修改文件的執(zhí)行權(quán)限,否則可能無(wú)法執(zhí)行。
sudo chmod -R 775 /usr/local/bin/configtxgen
sudo chmod -R 775 /usr/local/bin/configtxlator
sudo chmod -R 775 /usr/local/bin/certificategen
sudo chmod -R 775 /usr/local/bin/peer
sudo chmod -R 775 /usr/local/bin/orderer
通過(guò)上面這些命令之后溯壶,可以在系統(tǒng)的任何路徑下面運(yùn)行這些模塊了且改。下面通過(guò)一組命令來(lái)進(jìn)檢查安裝過(guò)程是否成功。
- 第二步: 檢查安裝
采用 version
命令行選項(xiàng)
peer version
orderer version
三 快速啟動(dòng)一個(gè)Fabric應(yīng)用
3.1 第一步:生成組織結(jié)構(gòu)及加密證書
證書等配置文件為crypto-config.yaml
3.1.1 創(chuàng)建存放證書的文件夾
- 將生成的證書文件存放在
/var/hyperledger/certificate
文件夾下
mkdir -p /var/hyperledger/certificate
3.1.2 證書文件的生成命令
- cryptogen 提供了一個(gè)命令可以獲取cryptogen模塊所需要的配置文件的樣式,該命令如下所示:
cryptogen showtemplate
- ==執(zhí)行如下命令:==
cryptogen generate --config=crypto-config.yaml --output ./crypto-config
該命令執(zhí)行完成之后我們會(huì)發(fā)現(xiàn)在文件夾中會(huì)新增加一個(gè)文件夾crypto-config
感混,里面存放有本例的相關(guān)配置文件浩习,可以通過(guò)tree命令查看生成證書文件的內(nèi)容洽蛀。
org1.binny.com
org2.binny.com
3.1.3 節(jié)點(diǎn)域名映射
通過(guò)上述步驟所有的證書文件都已經(jīng)生成完畢峡碉,現(xiàn)在需要將測(cè)試域名映射到本機(jī)的IP地址上面,否則后面的操作可能會(huì)出現(xiàn)錯(cuò)誤。
執(zhí)行以下命令以便提取相關(guān)的域名熙掺,
cd /var/hyperledger/certificate
tree -L 5
使用上述命令就可觀察發(fā)現(xiàn)币绩,一個(gè)orderer 域名和 2 個(gè) peer 域名
- 打開端映射文件蜡秽,將域名代理為本機(jī)
vi /etc/hosts
192.168.23.79 peer0.org1.binny.com
192.168.23.79 peer0.org2.binny.com
192.168.23.79 peer1.org2.binny.com
192.168.23.79 peer1.org1.binny.com
192.168.23.79 orderer.binny.com
orderer.binny.com
peer0.org1.binny.com
peer0.org2.binny.com
輸入以上內(nèi)容之后保存/etc/hosts文件缆镣,然后用ping命令測(cè)試以下配置是否正確。
ping peer0.org1.binny.com
3.2 第二步 創(chuàng)建orderer 服務(wù)寞蚌,啟動(dòng)創(chuàng)始?jí)K的生成
創(chuàng)建服務(wù)啟動(dòng)初始區(qū)塊及應(yīng)用通道交易配置文件需要指定 Orderer 服務(wù)的相關(guān)配置以及當(dāng)前的聯(lián)盟信息, 這些信息定義在一個(gè)名為 configtx.yaml
文件中。
3.2.1 Orderer服務(wù)啟動(dòng)初始區(qū)塊的創(chuàng)建
- ==創(chuàng)建 Orderer 服務(wù)啟動(dòng)初始區(qū)塊==
cd /var/hyperledger/certificate
export set FABRIC_CFG_PATH=/var/hyperledger/certificate
- ==生成創(chuàng)始?jí)K文件==
configtxgen -profile TestTwoOrgsOrdererGenesis -outputBlock ./orderer.genesis.block
注意:TestTwoOrgsOrdererGenesis
:在配置文件中睬澡,orderer.genesis.block
:名字隨意,但是后續(xù)配置文件中要用到
上述命令執(zhí)行完成之后會(huì)在文件夾$GOPATH/src/github.com/hyperledger/certificate
中生成文件orderer.genesis.block
。這是Fabric系統(tǒng)的創(chuàng)始?jí)K文件。
3.2.2 創(chuàng)建必須的應(yīng)用通道交易配置文件
- 指定通道名稱的環(huán)境變量,名字隨意,==設(shè)置臨時(shí)變量昔脯,channel 名字==
export set CHANNEL_NAME=binnychannel
因?yàn)槲覀兒竺娴拿钚枰啻问褂猛粋€(gè)通道名稱,所以先指定一個(gè)通道名稱將其設(shè)為環(huán)境變量静陈,后期需要使用該通道名稱時(shí)時(shí)只需要使用對(duì)應(yīng)的環(huán)境變量名稱即可.
- ==生成應(yīng)用通道交易配置文件==
指定使用 configtx.yaml
配置文件中的 TestTwosOrgsChannel
模板, 來(lái)生成新建通道的配置交易文件,TestTwosOrgsChannel
模板指定了 Org1 和 Org2 都屬于后面新建的應(yīng)用通道
configtxgen -profile TestTwosOrgsChannel -outputCreateChannelTx ./binnychannel.tx -channelID $CHANNEL_NAME
- ==node-sdk 測(cè)試拐格,創(chuàng)建新通道==
configtxgen -profile TestOneOrgsChannel -outputCreateChannelTx ./binnychannel01.tx -channelID binnychannel01
3.2.3 生成錨節(jié)點(diǎn)更新配置文件
同樣基于 configtx.yaml 配置文件中的 TestTwosOrgsChannel 模板,為每個(gè)組織分別生成錨節(jié)點(diǎn)更新配置刑赶,且注意指定對(duì)應(yīng)的組織名稱捏浊。
- channelID 要和上面的一樣
configtxgen -profile TestTwosOrgsChannel -outputAnchorPeersUpdate ./Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP
configtxgen -profile TestTwosOrgsChannel -outputAnchorPeersUpdate ./Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP
上面命令執(zhí)行完成之后會(huì)在相應(yīng)的文件夾下面生成文件 Org1MSPanchors.tx 和 Org2MSPanchors.tx ,這些文件在后面會(huì)被使用到撞叨。
3.2.4 Orderer節(jié)點(diǎn)的啟動(dòng)
在配置文件orderer.yaml
所在的目錄執(zhí)行如下命令啟動(dòng)orderer
orderer start
- 問(wèn)題:Not bootstrapping because of 2 existing channels
刪除目錄下的orderer遺留文件
3.3 Peer節(jié)點(diǎn)的啟動(dòng)
Please make sure that FABRIC_CFG_PATH is set to a path which contains core.yaml
設(shè)置環(huán)境變量
export set FABRIC_CFG_PATH=/var/hyperledger/certificate
啟動(dòng)命令
- 在配置文件core.yaml所在的文件夾中執(zhí)行以下命令啟動(dòng)order節(jié)點(diǎn)
peer node start >> log_peer.log 2>&1 &
ps axu | grep peer
3.4 創(chuàng)建通道
現(xiàn)在我們可以創(chuàng)建通道金踪,創(chuàng)建通道的過(guò)程一共需要三個(gè)步驟。
3.4.1 設(shè)置環(huán)境變量
cd $GOPATH/src/github.com/hyperledger/certificate
export set CHANNEL_NAME=binnychannel
export set CORE_PEER_MSPCONFIGPATH=/var/hyperledger/certificate/crypto-config/peerOrganizations/org1.binny.com/users/Admin@org1.binny.com/msp
export set CORE_PEER_LOCALMSPID=Org1MSP
3.4.2 創(chuàng)建通道
peer channel create -t 50s -o orderer.binny.com:7050 -c $CHANNEL_NAME -f /var/hyperledger/certificate/binnychannel.tx
- -f:指定上次生成的那個(gè)文件路徑
2020-05-12 01:32:47.537 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2020-05-12 01:32:47.568 UTC [cli.common] readBlock -> INFO 002 Received block: 0
創(chuàng)建通道完成之后牵敷,會(huì)在執(zhí)行命令的當(dāng)前目錄生成名為binnychannel.block
的通道創(chuàng)始?jí)K文件
<font color="red">
- 查看已開啟的端口
netstat -tupln
- ==查看channel.tx和genesis.block內(nèi)容==
configtxgen -inspectChannelCreateTx binnychannel.tx
configtxgen -inspectBlock genesis.block
選項(xiàng) | 意義 |
---|---|
-o | 連接的orderer的地址胡岔,hostname:port |
-c | channel的名稱,默認(rèn)為mychannel |
-f | 配置的交易信息(暫時(shí)還沒搞清楚) |
–tls | 和orderer通信時(shí)是否啟用tls |
–cafile | 使用tls時(shí)劣领,所使用的orderer的證書 |
</font>
3.4.3 讓已經(jīng)運(yùn)行的Peer模塊加入通道
export set CORE_PEER_LOCALMSPID=Org1MSP
export set CORE_PEER_ADDRESS=peer0.org1.binny.com:7051
export set CORE_PEER_MSPCONFIGPATH=/var/hyperledger/certificate/crypto-config/peerOrganizations/org1.binny.com/users/Admin@org1.binny.com/msp
peer channel join -b /var/hyperledger/certificate/binnychannel.block
在上述創(chuàng)建通道的命令中-b
后面的參數(shù)為==上一步==中生成的文件binnychannel.block
姐军,需要注意這個(gè)文件的路徑。
peer channel list
3.4.4 更新錨節(jié)點(diǎn)
export set CORE_PEER_LOCALMSPID=Org1MSP
export set CORE_PEER_ADDRESS=peer0.org1.binny.com:7051
export set CORE_PEER_MSPCONFIGPATH=/var/hyperledger/certificate/crypto-config/peerOrganizations/org1.binny.com/users/Admin@org1.binny.com/msp
peer channel update -o orderer.binny.com:7050 -c binnychannel -f /var/hyperledger/certificate/Org1MSPanchors.tx
3.5 Chaincode的部署和調(diào)用
現(xiàn)在可以部署一個(gè)Chaincode(關(guān)于Chaincode的詳細(xì)內(nèi)容在本書的第七章會(huì)有詳細(xì)的介紹)來(lái)測(cè)試Peer節(jié)點(diǎn)和Orderer節(jié)點(diǎn)的部署是否正確尖淘。這里采用Fabric源碼自帶的例子來(lái)作為測(cè)試Chaincode奕锌。測(cè)試用Chaincode的源代碼路徑如下所示:
$GOPATH/src/github.com/hyperledger/fabric-samples/chaincode/chaincode_example02
Chaincode相關(guān)的測(cè)試一共有四個(gè)步驟。
第一步:設(shè)置環(huán)境變量
export set CORE_PEER_LOCALMSPID=Org1MSP
export set CORE_PEER_ADDRESS=peer0.org1.binny.com:7051
export set CORE_PEER_MSPCONFIGPATH=/var/hyperledger/certificate/crypto-config/peerOrganizations/org1.binny.com/users/Admin@org1.binny.com/msp
第二步: 部署chaincode代碼
- ==使用的chaincode的位置如下==:
$GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go/example02/cmd
- ==安裝部署==
peer chaincode install -n binny_test_01 -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/example02/cmd
2020-05-12 07:21:24.559 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
2020-05-12 07:21:24.559 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2020-05-12 07:21:25.482 UTC [chaincodeCmd] install -> INFO 003 Installed remotely response:<status:200 payload:"OK" >
- == 可以通過(guò)下面命令查看 chaincode的安裝信息==
peer chaincode list --installed
第三步: 實(shí)例化chaincode代碼
- 執(zhí)行下面的步驟村生,需要系統(tǒng)中已安裝 docker
export set CHANNEL_NAME=binnychannel
peer chaincode instantiate -o orderer.binny.com:7050 -C $CHANNEL_NAME -n binny_test_01 -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "OR('Org1MSP.member','Org2MSP.member')"
第四步:通過(guò)chaincode寫入數(shù)據(jù)
- ==設(shè)置臨時(shí)變量惊暴,channel 名字==
export set CHANNEL_NAME=binnychannel
export set CORE_PEER_LOCALMSPID=Org1MSP
export set CORE_PEER_ADDRESS=peer0.org1.binny.com:7051
export set CORE_PEER_MSPCONFIGPATH=/var/hyperledger/certificate/crypto-config/peerOrganizations/org1.binny.com/users/Admin@org1.binny.com/msp
peer chaincode invoke -o orderer.binny.com:7050 -C $CHANNEL_NAME -n binny_test_01 -c '{"Args":["invoke","a","b","1"]}'
第五步:通過(guò)chaincode查詢數(shù)據(jù)
export set CORE_PEER_LOCALMSPID=Org1MSP
export set CORE_PEER_ADDRESS=peer0.org1.binny.com:7051
export set CORE_PEER_MSPCONFIGPATH=$GOPATH/src/github.com/hyperledger/certificate/certificate-config/peerOrganizations/org1.binny.com/users/Admin@org1.binny.com/msp
peer chaincode query -C $CHANNEL_NAME -n binny_test_01 -c '{"Args":["query","a"]}'
peer chaincode query -C $CHANNEL_NAME -n binny_test_01 -c '{"Args":["query","b"]}'
如果上述命令都能正確執(zhí)行,那么一個(gè)簡(jiǎn)單的Fabric系統(tǒng)就已經(jīng)部署完成了趁桃。
五 自定義 chaincode
將寫好的 chaincode 同步到節(jié)點(diǎn)服務(wù)器上
5.1 調(diào)試模式(IDE中設(shè)置)
- 設(shè)置參數(shù)
-peer.address=192.168.35.131:7052
- 配置環(huán)境變量
CORE_PEER_ADDRESS=192.168.35.131:7051
CORE_CHAINCODE_ID_NAME=helloworld_1222:1.0//chaincode名字:版本號(hào)
CORE_CHAINCODE_LOGGING_LEVEL=debug
CORE_CHAINCODE_LOGGING_SHIM=debug
5.2 進(jìn)入節(jié)點(diǎn)服務(wù)
5.2.1 設(shè)置環(huán)境變量
- 設(shè)置 MSP
export set CORE_PEER_LOCALMSPID=Org1MSP
- 設(shè)置證書路徑
export set CORE_PEER_MSPCONFIGPATH=$GOPATH/src/github.com/hyperledger/certificate/crypto-config/peerOrganizations/org1.binny.com/users/Admin@org1.binny.com/msp
- 設(shè)置
core.yaml
所在路徑
export set FABRIC_CFG_PATH=$GOPATH/src/github.com/hyperledger/certificate
- 設(shè)置一個(gè)節(jié)點(diǎn)地址
export set CORE_PEER_ADDRESS=peer0.org1.binny.com:7051
- 設(shè)置日志級(jí)別
export set FABRIC_LOGGING_SPEC=DEBUG
- 設(shè)置日志級(jí)別
export set CORE_LOGGING_LEVEL=DEBUG
5.2.2 打包 chaincode
在以上環(huán)境變量的基礎(chǔ)上執(zhí)行下列代碼辽话,將指定的鏈碼打包為CDS(Chaincode Deployment Spec)格式肄鸽,并存入節(jié)點(diǎn)上指定的路徑。
peer chaincode install -n helloworld_1222 -v 1.0 -p chaincode
- ==選項(xiàng)說(shuō)明:==
-
--connectionProfile
Connection profile that provides the necessary connection information for the network. Note: currently only supported for providing peer connection information -
-c, --ctor
Constructor message for the chaincode in JSON format (default "{}") -
-h, --help
help for install -
-l, --lang
Language of chaincode, either "golang" (default), "node", or "java" -
-n, --name
Name of the chaincode -
-p, --path
Path to chaincode, for "golang" use relative path from $GOPATH/src, for "node" or "java" use absolute path -
-v, --version
Version of the chaincode specified in install/instantiate/upgrade commands
- 查看一下
peer chaincode list --installed
- 輸出結(jié)果
Get installed chaincodes on peer:
Name: binny_test_01, Version: 1.0, Path: github.com/hyperledger/fabric/examples/chaincode/go/example02/cmd, Id: c405e9d12c9adc4a8773786de35bababed8d41ca8242d00ba402d932d934805e
Name: helloworld_1222, Version: 1.0, Path: fabric_cc_study/1.4.6/binny, Id: 6f9b8c6fff1951402b97ef685741aba144af89f0ab026ad0a31d0d1ce5e73f20
5.2.3 將指定的鏈碼部署到網(wǎng)絡(luò)上油啤。
執(zhí)行下面命令會(huì)調(diào)用 Init
方法
peer chaincode instantiate -o orderer.binny.com:7050 -C binnychannel -n helloworld_1222 -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
- 執(zhí)行以下命名典徘,查看一下
peer chaincode list --instantiated -C binnychannel
5.2.4 調(diào)用指定給的鏈碼,并初始化參數(shù)
- 調(diào)用
set
方法
peer chaincode invoke -o orderer.binny.com:7050 --waitForEvent -C binnychannel -n helloworld_1222 -c '{"Args":["set","name","徐耀益咬,曹歡","fabric--2019-12-22"]}'
- 調(diào)用
get
方法
peer chaincode query -C binnychannel -n helloworld_1222 -c '{"Args":["get","name","參數(shù) 2","參數(shù)3"]}'
5.2.5 調(diào)用get
方法
獲取并顯示鏈碼函數(shù)調(diào)用的背書結(jié)果逮诲。該命令不會(huì)生成交易。
peer chaincode query -C binnychannel -n helloworld_1222 -c '{"Args":["get","get","key1222","chaincode v 1.5 = query11111"]}'