欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Fabric2.0如何設(shè)置背書策略

這篇文章將為大家詳細(xì)講解有關(guān)Fabric2.0如何設(shè)置背書策略,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

為清苑等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及清苑網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、做網(wǎng)站、清苑網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

1.背書策略定義

智能合約背書策略用來定義交易是否合法的判斷條件,策略以主體的形式表示。主體格式為'MSP.ROLE', MSP代表所要求的MSPID, ROLE表示角色,一共有四種合法角色:member, admin, client, peer。

2. 背書策略語法

背書策略的語法如下: EXPR(E[, E...]) EXPR可以是AND、OR、OutOf,E可以是一個上面示例的主體或者是另一個嵌套的EXPR策略。示例如下: AND('Org1.member', 'Org2.member', 'Org3.member') :要求三個主體中每一個主體都要簽名。 OR('Org1.member', 'Org2.member') :要求三個主體中至少有一個主體簽名。 OR('Org1.member', AND('Org2.member', 'Org3.member')):要求同時有主體Org1.member的簽名,以及主體Org2.member與Org3.member中至少一個主體的簽名。 OutOf(2, 'Org1.member', 'Org2.member', 'Org3.member') :要求三個主體中,至少有兩個主體簽名。

3. 設(shè)置背書策略

fabric2.0智能合約設(shè)置背書策略得方式主要有兩種,一種是通過提交合約的時候設(shè)置,我們稱之為合約級別的背書策略,一種是直接通過合約動態(tài)設(shè)置,我們稱之為鍵級別背書策略。

3.1 合約級別背書策略設(shè)置

所謂合約級別背書策略,就是在這個合約的交易都必須遵循這個策略,在默認(rèn)情況下,即不設(shè)置背書策略,合約的背書策略為majority of channel members,過半數(shù)通道成員。

輸入以下命令設(shè)置合約級別背書策略 背書策略"OR('Org1.member', 'Org2.member')" 組織1成員或者組織2成員背書即滿足

 peer lifecycle chaincode approveformyorg  --signature-policy "OR('Org1MSP.member','Org2MSP.member')" --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --channelID mychannel --name mycc --version 1 --init-required --package-id mycc_1:4ad799ccef18d596f8c175fe1849cadc63f92a5efb1e7332712fbb2827a2ec6f --sequence 2 --waitForEvent

--signature-policy:設(shè)置背書策略

出現(xiàn)以下錯誤: Error: proposal failed with status: 500 - failed to invoke backing implementation of 'ApproveChaincodeDefinitionForMyOrg': currently defined sequence 3 is larger than requested sequence 2

序列號不是當(dāng)前合約序列號,只需要改成最新的序號即可,假如是這里,sequence值改成3即可

Error: proposal failed with status: 500 - failed to invoke backing implementation of 'ApproveChaincodeDefinitionForMyOrg': attempted to redefine uncommitted sequence (4) for namespace mycc with unchanged content

存在當(dāng)前最新的合約沒有commit,無法進(jìn)行新的approve,只需要將最新的commit后再進(jìn)行這次新的approve即可。

切換節(jié)點重復(fù)命令,知道滿足lifecycle策略 Fabric2.0如何設(shè)置背書策略

假如在操作上都approve成功了,還是出現(xiàn)以下情況:

Fabric2.0如何設(shè)置背書策略 我的實踐是直接先commit,commit成功就可以繼續(xù)走

3.1.2 提交合約

每次調(diào)用完approve之后,必須commit才能起效。

控制臺輸入以下命令

 peer lifecycle chaincode commit -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --channelID mychannel --name mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt --version 1 --sequence 2 --init-required    --signature-policy "OR('Org1MSP.member','Org2MSP.member')"

控制臺輸出以下結(jié)果表示成功 Fabric2.0如何設(shè)置背書策略

此時查詢a的值為90

Fabric2.0如何設(shè)置背書策略

3.1.3 驗證背書策略

3.2設(shè)置的背書策略為組織1成員或者組織2成員背書即滿足, 此時指定背書節(jié)點為peer0.org1.example.com

 peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt  -c '{"Args":["invoke","a","b","10"]}'

控制臺輸出如下:

Fabric2.0如何設(shè)置背書策略 重新查詢a的值為80,更新成功

Fabric2.0如何設(shè)置背書策略

將背書策略修改為 "AND('Org1MSP.member','Org2MSP.member')"

 peer lifecycle chaincode approveformyorg  --signature-policy "AND('Org1MSP.member','Org2MSP.member')" --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --channelID mychannel --name mycc --version 1 --init-required --package-id mycc_1:4ad799ccef18d596f8c175fe1849cadc63f92a5efb1e7332712fbb2827a2ec6f --sequence 3 --waitForEvent
 peer lifecycle chaincode commit -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --channelID mychannel --name mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt --version 1 --sequence 3 --init-required    --signature-policy "AND('Org1MSP.member','Org2MSP.member')"

同樣只設(shè)置peer0.org1.example.com節(jié)點,重新invoke,查看節(jié)點日志結(jié)果如下:

Fabric2.0如何設(shè)置背書策略

ERRO 0ed VSCC error: stateBasedValidator.Validate failed, err validation of endorsement policy for chaincode mycc in tx 15:0 failed: signature set did not satisfy policy

不滿足背書策略,因為我們已經(jīng)重新設(shè)置為"AND('Org1MSP.member','Org2MSP.member')"

接下來,我們通過設(shè)置鍵級別背書策略的方法,將上面操作完成

3.2 鍵級別背書策略設(shè)置

鍵級別的背書策略是通過智能合約內(nèi)部調(diào)用SDK完成

shim包提供了以下的函數(shù)設(shè)置或者恢復(fù)鍵對應(yīng)的背書策略。下面的ep代表是“endorsement policy”的縮寫。 Fabric2.0如何設(shè)置背書策略

對于私有數(shù)據(jù),以下功能適用: Fabric2.0如何設(shè)置背書策略

Go shim提供了擴(kuò)展功能,允許鏈碼開發(fā)人員根據(jù)組織的MSP標(biāo)識符來處理認(rèn)可策略 Fabric2.0如何設(shè)置背書策略

根據(jù)官方給的說明 假如需要兩個特定組織來批準(zhǔn)key更改,設(shè)置key的背書策略,請將兩個org都傳遞MSPIDs給AddOrgs(),然后調(diào)用Policy()構(gòu)造可以傳遞給的認(rèn)可策略字節(jié)數(shù)組SetStateValidationParameter() 接下來我們進(jìn)行實踐

3.2.1 編輯合約提供修改背書策略方法

首先導(dǎo)入相關(guān)依賴包 Fabric2.0如何設(shè)置背書策略

新增function 設(shè)置背書策略

Fabric2.0如何設(shè)置背書策略

endorsement具體實現(xiàn)如下:

Fabric2.0如何設(shè)置背書策略 由于新增了引入包,先下載依賴 進(jìn)入合約目錄輸入以下命令

 go mod vendor

Fabric2.0如何設(shè)置背書策略

3.2.2 升級合約

參考 Fabric2.0 智能合約實踐- 升級智能合約

3.2.3 驗證背書策略

設(shè)置a的背書策略為 AND("Org1MSP.member","Org2MSP.member")

peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt  -c  '{"Args":["endorsement","a","Org1MSP","add"]}'
peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt  -c  '{"Args":["endorsement","a","Org2MSP","add"]}'

Fabric2.0如何設(shè)置背書策略

查看peer日志,交易成功

Fabric2.0如何設(shè)置背書策略

只設(shè)置peer0.org1節(jié)點作為背書節(jié)點

 peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt  -c '{"Args":["addTen","a"]}'

查看節(jié)點日志如下,提示不滿足策略,因為前面設(shè)置的是AND("Org1MSP.member","Org2MSP.member") Fabric2.0如何設(shè)置背書策略

修改背書策略,刪除Org2MSP

peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt  -c  '{"Args":["endorsement","a","Org2MSP","del"]}'

修改成功 Fabric2.0如何設(shè)置背書策略

重新執(zhí)行以下命令:

 peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt  -c '{"Args":["addTen","a"]}'

修改a值從110變成120,執(zhí)行成功 Fabric2.0如何設(shè)置背書策略

關(guān)于“Fabric2.0如何設(shè)置背書策略”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

名稱欄目:Fabric2.0如何設(shè)置背書策略
文章源于:http://aaarwkj.com/article28/pjdpjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、云服務(wù)器、品牌網(wǎng)站制作網(wǎng)站改版、網(wǎng)站維護(hù)、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
日韩黄色资源在线观看| 亚洲国产日韩中文字幕| 99人妻精品一区二区| 久久精品有码视频免费观看| 精品国产成人一区二区| 国产精品水嫩水嫩粉嫩| 亚洲一区二区三区熟妇| 国产精品三级av在线播放| 欧美日韩久久久久久精品| 日韩中文字幕专区在线| 要爽死国产一区在线播放| 国产欧美日本一区二区| 日本和亚洲的香蕉视频| 97在线视频这里只有精品| av天堂久久这里只有精品美国| 少妇性生活视频免费观看| 亚洲青青草原一区二区| 九九热精品在线观看视频| 久久精品有码视频免费观看| 最近日本免费高清完整版| 全黄性性激高免费放视频| 农村人妻一区二区三区视频 | av真人青青小草一区二区欧美| 国产白浆一区二区视频| 精品在欧美一区二区少妇| av成人综合在线资源站| 国产黄色免费精品网站| 伊人99热这里只有精品| 国产在线麻豆在拍91精品| 欧美日韩在线视频第三区| 久久成人午夜免费电影| 国产原创av剧情在线播放| 国产日韩欧美高清免费视频| 最新国产激情福利网站| 欧美一区二区三在线| 在线观看国产小视频不卡| 欧美成人免费做真爱高潮| 麻豆久久精品国产亚洲精品超碰热 | 亚洲成人日韩国产欧美| 亚洲日本一区二区高清| 精品人妻一区二区四区|