简介
应用程序和区块链账本通过链码(chaincode)进行交互,因此我们要在每个执行交易的节点上安装链码,然后在通道上实例化链码(初始化)。
首先,在 Org1 的 peer0 节点上安装 Go、Node.js 或者 Java 链码。这些命令把指定的源码放在节点的文件系统里。
每个链码的名称和版本号规定你只能安装一个版本的源码。源码存在于 Peer 节点文件系统上的链码名称和版本号的上下文里,它是与语言无关的。同样,被实例化的链码容器将反映出是什么编程语言的链码被安装在 Peer 节点上。
安装不同语言的链码
安装基于Golang语言开发的链码
peer chaincode install -n mycc -v 1.0 -p github.com/chaincode/chaincode_example02/go/
安装基于Node.js语言开发的链码
peer chaincode install -n mycc -v 1.0 -l node -p /opt/gopath/src/github.com/chaincode/chaincode_example02/node/
安装基于Java语言开发的链码
peer chaincode install -n mycc -v 1.0 -l java -p /opt/gopath/src/github.com/chaincode/chaincode_example02/java/
在两个组织的锚节点上安装链码
peer0.org1.example.com
首先在 peer0.org1.example.com 上安装基于Go语言开发的链码
- 将操作对象转换成peer0.org1
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
CORE_PEER_ADDRESS=peer0.org1.example.com:7051
CORE_PEER_LOCALMSPID="Org1MSP"
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
- 在 peer0.org1.exmaple.com 上安装链码
peer chaincode install -n mycc -v 1.0 -p github.com/chaincode/chaincode_example02/go/
-
-n指定链码的名称 -
-v指定链码版本号 -
-l指定链码的语言 -
-p指定链码所在的路径 -
安装结果
当我们在通道上实例化链码之后,背书策略被设定为需要 Org1 和 Org2 的节点都背书。所以,我们需要在 Org2 的节点上也安装链码。
peer0.org2.example.com
- 切换到 peer0.org2.example.com 身份
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
CORE_PEER_ADDRESS=peer0.org2.example.com:9051
CORE_PEER_LOCALMSPID="Org2MSP"
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
- 在 peer0.org1.exmaple.com 上安装链码
peer chaincode install -n mycc -v 1.0 -p github.com/chaincode/chaincode_example02/go/
总
我们已经在两个组织的锚节点上安装了链码,这两个锚节点都是背书节点,所以可以模拟执行客户端发来的请求,并根据模拟执行结果对交易背书,如果某笔交易获得了两个锚节点的背书(满足背书策略),那么这笔交易就被判定为有效,接下来会被打包进区块最终上链。