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