您好,登錄后才能下訂單哦!
go語言中怎么利用fabric實現區塊鏈開發,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
1.go語言環境搭建,安裝go,安裝后,配置gopath和goroot
gopath下目錄應該有三層:
src下包含自己的項目及引入的依賴包
2.安裝mingw-w64,下載地址:https://sourceforge.net/projects/mingw-w64/
解決exec: "gcc": executable file not found in %PATH%異常
安裝過程中適配好自己的電腦配置
安裝后配置到系統path,安裝成功后cmd輸入gcc -v出現如下,說明成功:
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的證書
生成的證書在ca1 和ca2目錄下ca-cert.pem,
查看證書內容,進入ca1目錄:
命令: openssl x509 -in ca-cert.pem -inform pem -noout -text
證書包含申請者公鑰信息,簽名算法信息,申請者基本信息等。
進入sqlite數據庫查看信息:先安裝號sqlite,配置號path即可
命令:sqlite3 fabric-ca-server.db
可看到有以上這些表,其中users目前只有啟動時引導的節點:
certificates沒有任何證書發放的記錄
查看user信息如下:
登陸啟動時引導節點:
客戶端:
服務端顯示:
登陸成功后,查看ca-server下的證書信息,已經全部記錄在sqlite數據庫中了,查看如下:
然后使用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
2. --id.affiliation這個屬性表示:被注冊對象的從屬關系參數一定要歸屬于預先配置的組織屬性。
添加之后執行以上命令:fabric-ca-client register --id.name admin2 --id.type user --id.affiliation org1.department1 --id.attrs 'hf.Revoker=true,foo=bar'
注意要記住生成的密碼,后面登陸的時候需要用到
然后可以登陸后面的admin2的節點,可查看server端的證書內容即可:
登陸命令: fabric-ca-client enroll -u http://admin2:ItpaeebVWAuY@localhost:7054 -M $FABRIC_CA_CLIENT_HOME/msp
說明信息注冊進去了,然后打開ca-server端sqlite的user,可以查看到多了一條客戶端證書信息:
可看到一個client節點的admin, 一個user節點的admin2,其中admin是intermediateCA,打開certificates表可查看到admin2的證書信息:
在節點即將到期時,需要重新登記節點,登記命令: fabric-ca-client reenroll
登記即重新發送簽名證書請求,獲取新的數字證書。
查看服務端,可看到證書頒發的時間不同,如下:
注銷證書命令: 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
然后查看sqlite的服務端的證書信息,可看到已經變成revoked,已經注銷掉了
----同理可新建個中間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-----
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。