国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Fabric 搭建測試網(wǎng)絡并部署智能合約

這篇具有很好參考價值的文章主要介紹了Fabric 搭建測試網(wǎng)絡并部署智能合約。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.搭建網(wǎng)絡: 詳見博客
2.對Test Network的創(chuàng)建和關閉
cd ${HOME}/fabric-samples/test-network
創(chuàng)建網(wǎng)絡:
./network.sh up

關閉網(wǎng)絡:
./network.sh down

創(chuàng)建通道:
./network.sh createChannel  -c xxx :創(chuàng)建名為xxx的通道
3.Starting a chaincode on the channel:

智能合約(Smart Contract): 包含管理區(qū)塊鏈賬本上assets的邏輯。在Fabric上智能合約就是鏈碼的形式存在. 當網(wǎng)絡運行后,鏈碼會被部署到網(wǎng)絡中節(jié)點和通道上.

應用(Application): 由區(qū)塊鏈系統(tǒng)的成員執(zhí)行,通過應用來觸發(fā)智能合約,然后實現(xiàn)鏈上的操作,比如對賬本的增刪改查.

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

Explanation:將asset-transfer(basic)鏈碼安裝在 peer0.org1.example.com andpeer0.org2.example.com 兩個節(jié)點上

Note: -ccn:鏈碼命名 -ccp:鏈碼路徑 -ccl:如果第一次部署鏈碼,需要安裝鏈碼的依賴即語言類型,此處選擇的是Go .下面將會解釋如何手動部署自己寫的智能合約(鏈碼),即5. 在測試網(wǎng)絡上部署自己的智能合約其實是在解釋./network.sh 腳本中deployCC函數(shù)執(zhí)行的步驟
因此如果在測試環(huán)境中部署自己的智能合約,只要指定-ccn:鏈碼名;-ccp:鏈碼路徑 -ccl:鏈碼編寫語言即可用./network.sh deployCC來完成“鏈碼打包、鏈碼安裝、鏈碼批準、鏈碼提交以及觸發(fā)鏈碼這些步驟”自動部署

4. Interacting with the network:

當測試網(wǎng)絡開啟后,我們可以用peer CLI和你的測試網(wǎng)絡交互.即用peer CLI充當客戶端
peer CLI作用: 通過peer CLI可以調(diào)用已經(jīng)部署的智能合約、更新通道或安裝與部署新的智能合約
requirement:

  1. 先設置環(huán)境變量PATH
export PATH=${HOME}/fabric-samples/bin:$PATH
  1. 設置變量FABRIC_CFG_PATH
export FABRIC_CFG_PATH=${HOME}/fabric-samples/config
  1. 先進入test-network文件夾中,然后按照下面的命令行設置環(huán)境變量(目的: operate the peer CLI as the Org1 and Org2 admin user)
# Environment variables for Org1

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

# Environment variables for 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

CORE_PEER_TLS_ROOTCERT_FILECORE_PEER_MSPCONFIGPATH這兩個環(huán)境變量都是指向/test-network/organizations文件夾的Org1的加密材料

Peer CLI的使用:
1.調(diào)用初始化賬本的鏈碼

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":[]}'

Fabric 搭建測試網(wǎng)絡并部署智能合約
2.實現(xiàn)的是查詢鏈上的所有資產(chǎn)信息

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

Explanation:-C:通道名 -n:鏈碼名 -c:用json格式寫參數(shù)
3. 調(diào)用轉(zhuǎn)移asset6資產(chǎn)的鏈碼

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":"TransferAsset","Args":["asset6","Christopher"]}'

Explanation:本測試網(wǎng)絡中背書策略是需要both peer0.org1.example.com and peer0.org2.example.com背書,因此需要用 兩個**–peerAddresses分別指定Org1和Org2的背書節(jié)點的IP地址和端口號**

-C:通道名 -n:鏈碼名 --peerAddress:指明背書節(jié)點的IP地址和端口號, --tlsRootCertFiles:由于本測試網(wǎng)絡中開啟了TLS(Transport Layer Security)安全傳輸層協(xié)議 因此需要用–tlsRootCertFiles標簽為每個peer指定TLS的證書位置. -c :為鏈碼參數(shù)的json格式

5. 在測試網(wǎng)絡上部署自己的智能合約

require: 創(chuàng)建網(wǎng)絡并創(chuàng)建通道

Optional: 日志輸出(Logsout)功能:This step is not required but is extremely useful for troubleshooting chaincode.作用:檢測智能合約的日志,管理員可以看到多個節(jié)點容器集成的日志輸出(by logspout tool.).
安裝步驟:

cd fabric-samples/test-network
# 把安裝Logsout tool的腳本復制到當前目錄下
cp ../commercial-paper/organization/digibank/configuration/cli/monitordocker.sh .

運行步驟:

./monitordocker.sh fabric_test

接下來就進入正題

5.1.Package the smart contract: 將鏈碼安裝到各個節(jié)點上前需要對我們的合約進行打包

智能合約可以用Go、JavaScript和TypeScript三種語言寫,下面介紹Go的智能合約部署

  1. 寫完智能合約(Go 的Fabric智能合約API文檔后,對Go采用Go module包管理器(go mod init),然后在module目錄下執(zhí)行命名(go mod vendor),下載依賴至module的目錄下其中Module和Vendor部分我寫在Go Module一篇就夠

  2. 需要用Peer CLI與測試網(wǎng)絡進行交互所以

cd ${HOME}/fabric-samples/test-network
#然后設置環(huán)境變量,
export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
  1. 利用Peer CLI創(chuàng)建Go package
peer lifecycle chaincode package basic.tar.gz --path ../asset-transfer-basic/chaincode-go/ --lang golang --label basic_1.0

–path路徑下的智能合約源碼打包成名為basic.tar.gz的包,指定語言(–lang) golang,并將這個智能合約記為(–label)basic_1.0

5.2. Install the chaincode package

After we package the asset-transfer (basic) smart contract, we can install the chaincode on our peers.

本測試網(wǎng)絡中有兩個組織Org1和Org2,因此需要分別對這兩個組織部署鏈碼,現(xiàn)在以Org1為例

  1. 設置環(huán)境變量
# 設置環(huán)境變量,使得以Org1 admin user的身份操作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

# 設置環(huán)境變量,使得以Org2 admin user的身份操作Peer CLI
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
  1. 在Org1上安裝鏈碼
peer lifecycle chaincode install basic.tar.gz

basic.tar.gz是已經(jīng)打包后的鏈碼名

對于Org2的安裝重復以上兩個步驟.

5.3. Approve a chaincode definition

定義了鏈碼治理的重要參數(shù),比如名字、版本以及鏈碼的背書策略.鏈碼在一個通道中使用之前要求足夠的通道成員批準鏈碼. Because we have only two organizations on the channel, and a majority of 2 is 2, we need approve a chaincode definition of asset-transfer (basic) as Org1 and Org2.

具體過程:

  1. 查詢鏈碼的包ID(Package ID):由鏈碼label和二進制標識組成

    peer lifecycle chaincode queryinstalled
    

Fabric 搭建測試網(wǎng)絡并部署智能合約

  1. 把package id存放在環(huán)境變量中(注意:下面的命令中package ID需要自行修改)
 export CC_PACKAGE_ID=basic_1.0:69de748301770f6ef64b42aa6bb6cb291df20aa39542c3ef94008615704007f3
  1. 批準鏈碼
  peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name basic --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem"

注意的是我們需要對Org1和Org2分別批準鏈碼,切換至Org1的命令行如下:

export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_ADDRESS=localhost:7051

peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name basic --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem"
5.4. Committing the chaincode definition to the channel

當鏈碼被網(wǎng)絡中的絕大多數(shù)組織認可批準后,只需要其中一個組織提交鏈碼定義至通道上即可.(one organization can commit the chaincode definition to the channel.)

如何查看組織對某鏈碼的批準情況呢? 利用peer lifecycle chaincode checkcommitreadiness

peer lifecycle chaincode checkcommitreadiness  --channelID mychannel --name basic --version 1.0 --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" --output json

Fabric 搭建測試網(wǎng)絡并部署智能合約

上面的都是True,因此可以Committing the chaincode defination to the channel

peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name basic --version 1.0 --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" --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"

以上這筆Transaction使用了--peerAddressed flag即發(fā)向peer0.org1.example.com from Org1和peer0.org2.example.comfrom Org2.

Fabric 搭建測試網(wǎng)絡并部署智能合約

查詢鏈碼提交情況?

peer lifecycle chaincode querycommitted --channelID mychannel --name basic --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem"

Fabric 搭建測試網(wǎng)絡并部署智能合約

提交成功!

5.Invoking the chaincode

The asset-transfer (basic) chaincode is now ready to be invoked by client applications

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":[]}'
6. Upgrading a smart contract
7.Clean Up

如果完成了網(wǎng)絡的相關操作,需要停止logspout tool和關閉網(wǎng)絡文章來源地址http://www.zghlxwxcb.cn/news/detail-438573.html

docker stop logsout
docker rm logsout

# 進入test-network文件夾然后關閉網(wǎng)絡
cd ${HOME}/fabric-samples/test-network
./network.sh down

到了這里,關于Fabric 搭建測試網(wǎng)絡并部署智能合約的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • fabric智能合約

    fabric智能合約

    fabric架構(gòu)分為兩個部分, 應用層 和 區(qū)塊鏈底層 。 對于 應用層 來說,fabric提供了基于GRPC協(xié)議的API來于區(qū)塊鏈進行通訊,并且在API的基礎上封裝了支持go語言、Java語言、node.js等SDK,方便客戶端的調(diào)用。由于區(qū)塊鏈是分布式的賬本,并且交易需要進行共識之后才能夠進行上鏈

    2023年04月23日
    瀏覽(35)
  • fabric智能合約開發(fā)步驟

    在fabric中,智能合約使用Go語言編寫。以下是一些編寫智能合約的步驟: 例如: mychaincode 。在終端中輸入以下命令: shim 包提供了與fabric交互的API, pb 包提供了用于定義chaincode的protobuf消息。 Init 方法在chaincode實例化時調(diào)用, Invoke 方法在chaincode被調(diào)用時調(diào)用。在上面的例子

    2024年02月15日
    瀏覽(18)
  • Fabric智能合約——Chaincode(一)簡介

    Fabric智能合約——Chaincode(一)簡介

    Fabric智能合約整體介紹,首先看一下 Fabric交易流程 ?在這張圖中,5、6步是public數(shù)據(jù)的步驟,7、8、9是private數(shù)據(jù)的步驟,除了這一部分外,其他步驟均相同。 ????????Fabric中智能合約稱為鏈碼(Chaincode),使用計算機語言描述合約條款、交易的條件、交易的業(yè)務邏輯等,

    2024年02月07日
    瀏覽(18)
  • truffle 創(chuàng)建測試合約并部署到測試網(wǎng)絡

    1、npm 安裝truffle 2、創(chuàng)建truffle項目 3、初始化truffle目錄,會生成如下幾個目錄 contracts 存放.sol合約文件 migrations 部署腳本目錄 test 測試文件目錄 truffle-config.js truffle配置文件 4、編譯合約 編譯合約以后會生成build目錄,存放編譯好生成的合約的json文件 5、修改合約 如果要部署

    2024年02月08日
    瀏覽(21)
  • ganache私鏈部署智能合約+本地網(wǎng)絡Dapp

    ganache私鏈部署智能合約+本地網(wǎng)絡Dapp

    參考自(3條消息) 區(qū)塊鏈投票應用:使用solidity+truffle+metamsk開發(fā)Dapp應用_一袋芋頭的博客-CSDN博客下載了項目示例webpack之后 ? 我們需要將里面的其他合約都刪除,也可以直接刪除這兩個文件夾里的內(nèi)容 ?然后就可以開始正片了(當然,你得先前就安裝好環(huán)境) 開啟ganache私鏈,

    2024年02月08日
    瀏覽(19)
  • Hyperledger Fabric 使用 CouchDB 和復雜智能合約開發(fā)

    在上個實驗中,我們已經(jīng)實現(xiàn)了簡單智能合約實現(xiàn)及客戶端開發(fā),但該實驗中智能合約只有基礎的增刪改查功能,且其中的數(shù)據(jù)管理功能與傳統(tǒng) MySQL 比相差甚遠。本文將在前面實驗的基礎上,將 Hyperledger Fabric 的默認數(shù)據(jù)庫支持 LevelDB 改為 CouchDB 模式,以實現(xiàn)更復雜的數(shù)據(jù)檢

    2023年04月15日
    瀏覽(29)
  • Hyperledger Fabric 智能合約開發(fā)及 fabric-sdk-go/fabric-gateway 使用示例

    在上個實驗 Hyperledger Fabric 多組織多排序節(jié)點部署在多個主機上 中,我們已經(jīng)實現(xiàn)了多組織多排序節(jié)點部署在多個主機上,但到目前為止,我們所有的實驗都只是研究了聯(lián)盟鏈的網(wǎng)絡配置方法(盡管這確實是重難點),而沒有考慮具體的應用開發(fā)。本文將在前面實驗的基礎上

    2024年01月20日
    瀏覽(15)
  • Web3 處理智能合約部署到本地區(qū)塊鏈,并在本地進行測試

    Web3 處理智能合約部署到本地區(qū)塊鏈,并在本地進行測試

    上文 Web3 在Truffle項目中編寫出自己的第一個solidity智能合約我們演示了 在Truffle環(huán)境下寫一個智能合約并編譯的功能 編譯出的文件夾中的這個JSON就非常重要了 我們就可以通過 它這個ABI鏈接到需要的智能合約程序上去 但這也僅僅是編譯完了 我們的智能合約還沒有部署到我們

    2024年02月13日
    瀏覽(27)
  • 如果Fabric的智能合約函數(shù)陷入死循環(huán)會怎么樣

    大家好,我是 powervip !今天和大家一起探討一下:如果Fabric的智能合約函數(shù)陷入死循環(huán)會怎么樣 先看一段合約函數(shù)代碼: func (t *SimpleChaincode) Test(stub shim.ChaincodeStubInterface, args []string) pb.Response { // 選擇商品價格在1元到100元之間的商品名稱和數(shù)量 s := \\\"{\\\"fields\\\": [\\\"GoodsName\\\",

    2023年04月21日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包