創建一個智能合約並部署(java)(fabric-chaincode-java)

創建一個智能合約並部署(java)

環境

jdk:java version “1.8.0_221”
gradle:Gradle 5.6.2
fabric:1.4.1
centos:
在這裏插入圖片描述
注意:
gradle需要配置本地倉庫和jvm,gradle和maven都可以採用,不過gradle 5.6.2配置本地倉庫和jvm比較麻煩(IBM官方教程用的gradle),官方沒有提供教程,筆者在這裏浪費了很多時間。

部署

  • 部署單機單節點fabric網絡
  • 將編輯好的Java chaincode拷貝到/opt/gopath/src/github.com/hyperledger/fabric/singlepeer/chaincode/java目錄下,如果不存在此目錄,請自行創建。
    鏈碼的位置需要的文件:
    在這裏插入圖片描述

運行

關閉和刪除已存在的進程

docker stop $(docker ps -a -q)

docker rm $(docker ps -a -q)

生成公私鑰和證書

./bin/cryptogen generate --config=./crypto-config.yaml

生成創世區塊

mkdir channel-artifacts

./bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block

生成通道配置區塊

./bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/mychannel.tx -channelID mychannel

啓動orderer和peer

docker-compose -f docker-compose-cli.yaml up -d

啓動cli容器

docker exec -it cli bash

創建channel

peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/mychannel.tx

peer加入channel

peer channel join -b mychannel.block

安裝鏈碼

peer chaincode install -n mycc -p /opt/gopath/src/github.com/hyperledger/fabric/singlepeer/chaincode/java -v 1.0 -l java

注意:-p後面的是docker容器中鏈碼所在的位置,命令中-l java表示安裝的鏈碼由java編寫
實例化智能合約

peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -l java -n mycc -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "AND ('Org1MSP.peer')"

java編寫的鏈碼編譯速度較慢,耐心等待
查詢

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

轉賬

peer chaincode invoke -C mychannel -n mycc -c '{"Args":["invoke","a","b","10"]}'

參考:

  • 博客園博主靈龍關於Fabric 1.4 單機單節點部署(solo)的實例:https://www.cnblogs.com/llongst/p/9571321.html
  • 鏈碼實例參考fabric-chaincode-java-1.4.1,地址:https://github.com/hyperledger/fabric-chaincode-java/tree/v1.4.1
  • IBM教程:https://www.ibm.com/developerworks/java/library/j-chaincode-for-java-developers/j-chaincode-for-java-developers-pdf.pdf
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章