使用fabric提供的cryptogen工具生成文件模板
創(chuàng)新互聯(lián)公司主營和林格爾網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶App定制開發(fā),和林格爾h5小程序設(shè)計搭建,和林格爾網(wǎng)站營銷推廣歡迎和林格爾等地區(qū)企業(yè)咨詢
$ cryptogen showtemplate crypto-config.yaml
進行修改,添加一個組織,一個orderer節(jié)點.
根據(jù)crypto-config.yaml文件生成證書文件:
$ cryptogen generate --config=crypto-config.yaml
查看生成的證書文件夾結(jié)構(gòu):
需要從fabric的源碼案例中拷貝configtx.yaml文件
$ cp $GOPATH/src/github.com/hyperledger/fabric-samples/first-network/configtx.yaml ./
對configtx.yaml文件進行修改.
修改之前,創(chuàng)建一個文件夾,來保存即將創(chuàng)建的創(chuàng)世區(qū)塊文件
將創(chuàng)建區(qū)塊文件和通道的命令寫到一個腳本中! generate.sh
腳本文件和配置文件的目錄結(jié)構(gòu):
執(zhí)行g(shù)enerate.sh文件生成創(chuàng)世區(qū)塊文件和通道,其實只有一個組織,也沒必要生成錨節(jié)點更新文件..
$ ./generate.sh
配置docker-compose文件:
啟動容器, 啟動后查看容器運行情況
$ docker-compose up -d
$ docker-compose ps
在這里,創(chuàng)建兩個腳本文件,用于docker容器的管理
clear_docker.sh 文件:
restart.sh 文件:
創(chuàng)建配置文件的時候,有兩個文件可以進行參考...
修改后的sdk配置文件:
創(chuàng)建出一個模型對象,給其賦值,并開始初始化sdk
使用 pkg/fabsdk/fabsdk.go中的New()方法進行實例化
創(chuàng)建請求之前,需要使用 gopackager.NewCCPackage 方法生成一個resource.CCPackage 對象,傳遞兩個參數(shù),一個是鏈碼的路徑(相對于工程的路徑), 一個是GOPATH的路徑.
安裝鏈碼,使用pkg/client/resmgmt/resmgmt.go文件中的方法
創(chuàng)建請求之前,需要生成一個*cb.SignaturePolicyEnvelope類型的對象,使用 third_party/github.com/hyperledger/fabric/common/cauthdsl/cauthdsl_builder.go 文件中的方法即可,提供了好幾個方法, 使用任意一個即可.這里使用 SignedByAnyMember 方法: 需要傳入所屬組織ID
實例化鏈碼
使用 pkg/client/channel/chclient.go 中的 Execute() 方法,來進行數(shù)據(jù)寫入的操作:
rsp, err := model.Channelclient.Execute(req)
寫入之前,要創(chuàng)建請求:
tempArgs是要傳給鏈碼的參數(shù),可以做下封裝,就不受參數(shù)個數(shù)的限制了
使用 pkg/client/channel/chclient.go 中的 Query() 方法,來進行數(shù)據(jù)查詢的操作: 查詢之前,同樣需要創(chuàng)建請求.
鏈碼在工程中的路徑應該是 工程名/chaincode文件夾
比如:
driverFabricDemo/chaincode
而不應該省略掉工程名這樣寫: chaincode
錯誤原因:cert.URIs 和 tpl.URIs 這兩個字段沒有被定義.
進入tpl對象中, /usr/local/go/src/crypto/x509/x509.go 是個結(jié)構(gòu)體,并沒有發(fā)現(xiàn) URIs 字段
對go版本進行升級,從1.9.3升級到1.11.3, 再次進入 /usr/local/go/src/crypto/x509/x509.go 文件中,查看結(jié)構(gòu)體內(nèi)容:
在執(zhí)行sdk的Excute()方法時報錯.
方法不存在,一般是由于鏈碼的Invoke方法中的方法名和Excute()方法傳入的方法名不一樣.
但是可以肯定的是,鏈碼的Invoke方法中的方法名和,項目中執(zhí)行Excute()方法時傳入的方法名是完全一樣的! 但是很奇怪了,為什么會出現(xiàn)這個錯誤呢? 使用 docker rmi 刪除掉 dev-peerx.travle.xq.com 的鏡像,再重新運行即可.
在創(chuàng)建實例化鏈碼請求的時候
總是提示
Cannot use str (type *cb.SignaturePolicyEnvelope) as type *common.SignaturePolicyEnvelope less... (?F1) Inspection info: Reports composite literals with incompatible types and values
明明是相同的類型,卻總是報錯,應該是IDE的問題.把vendor文件夾刪除后,就不會有提示了. 再使用vendor對工程進行init 和 add +external 就好了!!
出現(xiàn)這個錯誤,一般都是配置文件哪個地方寫錯了,需要細心檢查
Go語言由Google公司開發(fā),并于2009年開源,相比Java/Python/C等語言,Go尤其擅長并發(fā)編程,性能堪比C語言,開發(fā)效率肩比Python,被譽為“21世紀的C語言”。
Go語言在云計算、大數(shù)據(jù)、微服務、高并發(fā)領(lǐng)域應用應用非常廣泛。BAT大廠正在把Go作為新項目開發(fā)的首選語言。
Go語言能干什么?
1、服務端開發(fā):以前你使用C或者C++做的那些事情,用Go來做很合適,例如日志處理、文件系統(tǒng)、監(jiān)控系統(tǒng)等;
2、DevOps:運維生態(tài)中的Docker、K8s、prometheus、grafana、open-falcon等都是使用Go語言開發(fā);
3、網(wǎng)絡(luò)編程:大量優(yōu)秀的Web框架如Echo、Gin、Iris、beego等,而且Go內(nèi)置的 net/http包十分的優(yōu)秀;
4、Paas云平臺領(lǐng)域:Kubernetes和Docker Swarm等;
5、分布式存儲領(lǐng)域:etcd、Groupcache、TiDB、Cockroachdb、Influxdb等;
6、區(qū)塊鏈領(lǐng)域:區(qū)塊鏈里面有兩個明星項目以太坊和fabric都使用Go語言;
7、容器虛擬化:大名鼎鼎的Docker就是使用Go語言實現(xiàn)的;
8、爬蟲及大數(shù)據(jù):Go語言天生支持并發(fā),所以十分適合編寫分布式爬蟲及大數(shù)據(jù)處理。
1、簡單易學。
Go語言的作者本身就很懂C語言,所以同樣Go語言也會有C語言的基因,所以對于程序員來說,Go語言天生就會讓人很熟悉,容易上手。
2、并發(fā)性好。
Go語言天生支持并發(fā),可以充分利用多核,輕松地使用并發(fā)。 這是Go語言最大的特點。
描述
Go的語法接近C語言,但對于變量的聲明有所不同。Go支持垃圾回收功能。Go的并行模型是以東尼·霍爾的通信順序進程(CSP)為基礎(chǔ),采取類似模型的其他語言包括Occam和Limbo,但它也具有Pi運算的特征,比如通道傳輸。
在1.8版本中開放插件(Plugin)的支持,這意味著現(xiàn)在能從Go中動態(tài)加載部分函數(shù)。
與C++相比,Go并不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數(shù)等功能,但增加了 切片(Slice) 型、并發(fā)、管道、垃圾回收、接口(Interface)等特性的語言級支持。
Fabric區(qū)塊鏈開發(fā)詳解,本課程面向初學者,內(nèi)容即包含Hyperledger Fabric的身份證書與MSP服務、權(quán)限策略、通道配置與啟動、鏈碼通信接口等核心概念,也包含F(xiàn)abric網(wǎng)絡(luò)設(shè)計、鏈碼與應用開發(fā)的操作實踐,是學習Fabric區(qū)塊鏈開發(fā)的最佳選擇。
給你個免費區(qū)塊鏈博客看看。