前提条件:

构建好了一个拥有四个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')"

这里指定了背书策略。

Hyperledger Fabric java chaincode 编译部署(1.4V)-LMLPHP

表示成功。

第二种peer package的方式大同小异,后续会补充。

这里开启了TLS 和指定了背书策略,会影响下面介绍的通过JAVA SDK 调用该链码的编写。

05-19 22:12