中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

枞阳县| 伊通| 周宁县| 胶南市| 沛县| 申扎县| 罗定市| 当涂县| 石泉县| 获嘉县| 芜湖市| 桃江县| 襄垣县| 应城市| 盐边县| 航空| 台州市| 上饶市| 洛扎县| 丹凤县| 沽源县| 乌兰浩特市| 丹江口市| 达日县| 通渭县| 横山县| 洛川县| 荔波县| 虞城县| 青浦区| 衡水市| 赫章县| 桐柏县| 肇东市| 许昌县| 泰州市| 霍城县| 六枝特区| 涡阳县| 关岭| 涟源市|