Hyperledger Fabric java chaincode 编译部署(1.4V)
前提条件:
构建好了一个拥有四个peer 一个Order 的1.4版本的Fabric网络。
证书通过Cryptogen生成,没有使用CA服务。
开启TLS。
网络中的peer都加入了一个 名为mychannel的通道中。
123
一.链码编写
java版本的链码参考官网有很多,我使用的是
https://github.com/hyperledger/fabric-samples/tree/release-1.4/chaincode/chaincode_example02/java
项目本身是个gradle工程,因为我使用maven比较多,所以修改了项目中的build.gradle文件:添加
apply plugin: 'java
apply plugin: 'maven'将项目转换成一个maven工程。
二 chaincode安装 实例化
chaincode安装可以有两种方式,1 直接通过peer install 安装 2 通过peer package 打包
我这里使用的是第一种:
首先需要明白的是 链码的安装需要在所有的peer节点上执行peer install。 实例化只需要在一个节点上实例化。
使用 docker exec -it 进入容器。
执行
peer chaincode install -n loc -v 1.0 -l java -p /usr/local/workspace/assert/java/
loc是chaincode的名称 1.0是版本 -l后面跟的是编程语言 ,java。 -p后面的路径就是第一步的链码放在服务器上的路径。这种方式服务器会通过java env的容器来构建java工程。
切换peer 节点,分别在每个peer上执行一次peer chaincode install的操作。
选择一个peer节点执行实例化操作:
peer chaincode instantiate -o orderer.example.com:7050 --tls true --cafile /usr/local/workspace/firstnetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n loc -l java -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')"
这里指定了背书策略。
表示成功。
第二种peer package的方式大同小异,后续会补充。
这里开启了TLS 和指定了背书策略,会影响下面介绍的通过JAVA SDK 调用该链码的编写。