91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go語言中怎么利用fabric實現區塊鏈開發

發布時間:2021-07-06 15:57:06 來源:億速云 閱讀:362 作者:Leah 欄目:互聯網科技

go語言中怎么利用fabric實現區塊鏈開發,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

1.go語言環境搭建,安裝go,安裝后,配置gopath和goroot

gopath下目錄應該有三層:

go語言中怎么利用fabric實現區塊鏈開發

src下包含自己的項目及引入的依賴包

2.安裝mingw-w64,下載地址:https://sourceforge.net/projects/mingw-w64/   

解決exec: "gcc": executable file not found in %PATH%異常

安裝過程中適配好自己的電腦配置

安裝后配置到系統path,安裝成功后cmd輸入gcc -v出現如下,說明成功:

go語言中怎么利用fabric實現區塊鏈開發

3.引入fabric包,下載地址:https://github.com/hyperledger/fabric

放置到gopath的src\github.com\hyperledger\fabric目錄下即可

下載好 https://github.com/miekg/pkcs11

4.開啟智能合約的開發:

..\..\vendor\github.com\miekg\pkcs11\pkcs11.go:26:10: fatal error: ltdl.h: No such file or directory
 #include <ltdl.h>
          ^~~~~~~~
compilation terminated.

執行go get -u --tags nopkcs11即可

注意git項目權限問題,要同時具有pull & push權限

5.基于fabric的msp(權限):

msp的實現是CA,fabric的實現是fabric-ca

前提go版本1.10以上,配置了gopath,安裝了libtool和libtdhl-dev工具包

先安裝號fabric-ca,安裝命令:go get -u github.com/hyperledger/fabric-ca/cmd/...

然后啟動facric-ca-server的服務端,命令:fabric-ca-server start -b admin:adminpw --cacount 2

生成了ca1 和ca2的證書

go語言中怎么利用fabric實現區塊鏈開發

生成的證書在ca1 和ca2目錄下ca-cert.pem,

查看證書內容,進入ca1目錄:

命令: openssl x509 -in ca-cert.pem -inform pem -noout -text

go語言中怎么利用fabric實現區塊鏈開發

證書包含申請者公鑰信息,簽名算法信息,申請者基本信息等。

進入sqlite數據庫查看信息:先安裝號sqlite,配置號path即可

命令:sqlite3 fabric-ca-server.db

go語言中怎么利用fabric實現區塊鏈開發

可看到有以上這些表,其中users目前只有啟動時引導的節點:

certificates沒有任何證書發放的記錄

查看user信息如下:

go語言中怎么利用fabric實現區塊鏈開發

登陸啟動時引導節點:

客戶端:

go語言中怎么利用fabric實現區塊鏈開發

服務端顯示:

go語言中怎么利用fabric實現區塊鏈開發

登陸成功后,查看ca-server下的證書信息,已經全部記錄在sqlite數據庫中了,查看如下:

go語言中怎么利用fabric實現區塊鏈開發

然后使用ca-client來注冊一個節點,這一步過程就是對facric中的peer,user角色進行注冊并登記的過程了,

注冊命令:fabric-ca-client register --id.name admin2 --id.type user --id.affiliation org1.department1 --id.attrs 'hf.Revoker=true,foo=bar'

需要注意:

1. --id.type參數必須是是server端配置文件里hf.Registrar.Roles屬性值里的一個

打開fabric-ca-server的配置文件:可注冊的類型有client,user,peer,validator和auditor

go語言中怎么利用fabric實現區塊鏈開發

2. --id.affiliation這個屬性表示:被注冊對象的從屬關系參數一定要歸屬于預先配置的組織屬性。

go語言中怎么利用fabric實現區塊鏈開發

添加之后執行以上命令:fabric-ca-client register --id.name admin2 --id.type user --id.affiliation org1.department1 --id.attrs 'hf.Revoker=true,foo=bar'

注意要記住生成的密碼,后面登陸的時候需要用到

go語言中怎么利用fabric實現區塊鏈開發

然后可以登陸后面的admin2的節點,可查看server端的證書內容即可:

登陸命令: fabric-ca-client enroll -u http://admin2:ItpaeebVWAuY@localhost:7054 -M $FABRIC_CA_CLIENT_HOME/msp

go語言中怎么利用fabric實現區塊鏈開發

說明信息注冊進去了,然后打開ca-server端sqlite的user,可以查看到多了一條客戶端證書信息:

go語言中怎么利用fabric實現區塊鏈開發

可看到一個client節點的admin, 一個user節點的admin2,其中admin是intermediateCA,打開certificates表可查看到admin2的證書信息:

go語言中怎么利用fabric實現區塊鏈開發

在節點即將到期時,需要重新登記節點,登記命令: fabric-ca-client reenroll

go語言中怎么利用fabric實現區塊鏈開發

登記即重新發送簽名證書請求,獲取新的數字證書。

查看服務端,可看到證書頒發的時間不同,如下:

go語言中怎么利用fabric實現區塊鏈開發

注銷證書命令:  fabric-ca-client revoke -e <enrollment_id> -r <reason>

reason的參數可以為下面的這些:

1. keycompromise 
2. cacompromise 
3. affiliationchange 
4. superseded 
5. cessationofoperation 
6. certificatehold 
7. removefromcrl 
8. privilegewithdrawn 
9. aacompromise
10. unspecified

我們將剛剛登記的節點admin2注銷掉,執行命令:fabric-ca-client revoke -e admin2

go語言中怎么利用fabric實現區塊鏈開發

然后查看sqlite的服務端的證書信息,可看到已經變成revoked,已經注銷掉了

go語言中怎么利用fabric實現區塊鏈開發

----同理可新建個中間CA,命令:fabric-ca-server start -b admin1:adminpw1 -u http://admin:adminpw@localhost:7054

重新啟動一個CA服務器,作為引導節點CA服務器下的中間CA

ca-chain.pem可查看剛剛注冊的中間CA

同意添加節點,可以先注冊然后enroll

當一個用戶擁有兩條鏈的權限時,需要用到交叉認證(本質上時通過restful接口獲取到另一個CA鏈上的證書信息)

交叉認證命令 : fabric-ca-client getcacert -u http://localhost:7055 -M $FABRIC_CA_CLIENT_HOME/msp

關于鏈碼這塊,fabric提供了基于權限的擴展,即msp模塊,本質上是給服務端和客戶端生成證書,證書作為權限的標識,其中在鏈碼中我們獲取這個標識的方式可通過如下:

id, err := cid.GetID(stub)

得到如下:

eDUwOTo6Q049YWRtaW4sT1U9RmFicmljLE89S7777777777777777779Tm9ydGggQ2Fyb2xpbmEsQz1VUzo6Q049ZXhhbXBsZS5jb20sT1U9V88888888850ZXJuZXQgV2lkZ2V0cyxMPVNhbiBGcmFuY2lzY28sU1Q9Q2FsaWZvcm5pYSxDPVAA

當然也可通過

creator,err :=stub.GetCreator()

得到證書如下:

SampleOrg?-----BEGIN CERTIFICATE-----
MIICXTCCAgSgAwIBAgIUeLy6uQnq8wwyElU/jCKRYz3tJiQwCgYIKoZIzj0EAwIw
eTELssssssVkZ2VyMQ8wDQYDVQQLEwZGYWJyaWMxDjAMBgNV
BAMs's's's'sFkwyyyyyyQcDQgAEFq/90YMuH4tWugHa
oyZtt4MbxxxxxxW5pbHMtTWFjQm9vay1Qcm8ubG9jYWwwCgYI
KoZIzj0EAwIDRwAwRAIgCoXaCdU8ZiRKkai0QiXJM/GL5fysLnmG2oZ6XOIdwtsC
IEmCsI8Mhrvx1doTbEOm7kmIrhQwUVDBNXCWX1t3kJVN
-----END CERTIFICATE-----

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

遵化市| 芒康县| 德格县| 广德县| 新干县| 金门县| 介休市| 双柏县| 平远县| 桦甸市| 徐水县| 景德镇市| 凤阳县| 亳州市| 乐清市| 遵义县| 芦溪县| 宝兴县| 洪洞县| 利辛县| 荆门市| 蕲春县| 兴义市| 新宁县| 双牌县| 淮滨县| 安顺市| 惠水县| 宜城市| 宁化县| 明溪县| 九台市| 德令哈市| 吉木乃县| 黑河市| 灵丘县| 定边县| 莱阳市| 乌鲁木齐县| 通化县| 宜丰县|