1.创建一个通道:

测试网络示例项目中的脚本可以帮助我们创建网络:

./network.sh createChannel

以上命令会创建默认名为muchannel的通道,若需自定义名称,则加上:

-c <ChanName>

在同一个Fabric网络中,允许创建多个通道;此外通道创建也可以和网络一起启动,组合命令:

./network.sh up createChannel

fabric如何写智能合约可以调用数据库里的数据 fabric 智能合约部署_fabric

2.部署链码:

测试网络示例项目中的脚本可以帮助我们部署链码:

-ccn 连码名称      -ccp 链码所在路径      -ccl 链码编写语言      -c 指定通道名称(默认mychannel)

下面的链码所在路径是fabric-samples仓库中另一个子项目,是已经编译好的链码,当前命令选择go语言版本的链码做演示。

./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

 

fabric如何写智能合约可以调用数据库里的数据 fabric 智能合约部署_fabric_02

3.与测试网络交互一

我们可以通过CLI攻击(即安装的二进制文件)与Fabric测试网络进行交互,在开始之前需要做一些准备("${PWD}"表示当前路径,所以要先进入test-network目录):在windows中可能这个./bashrc里面什么都没有,直接添加配置就行了。 

vim ~/.bashrc

1.将二进制文件添加到系统路径中: 

export PATH=${PWD}/../bin:$PATH

2.配置FABRIC_CFG_PATH:

export FABRIC_CFG_PATH=${PWD}/../config

 4.与测试网络交互二:

由于Fabric是许可网络,我们还需要配置允许操作Org1相关节点,同样是在终端配置文件中加入以下系统变量的配置:

其中CORE_PEER_TLS_ROOTCERT_FILE和CORE_PEER_MSPCONFIGPATH变量环境指向Org1身份加密信息。

export CORE_PEER_TLS_ENABLED=true

export CORE_PEER_LOCALMSPID="Org1MSP"

export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt

export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp

export CORE_PEER_ADDRESS=localhost:7051

 添加完后刷新一下:

source ~/.bashrc

5.与测试网络交互三: 

我们可以通过命令了调用之前部署的asset-transfer(basic)链码中的InitLedger方法来进行数据初始化,它会赋予一些账本初始化资产。

peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"InitLedger","Args":[]}'

fabric如何写智能合约可以调用数据库里的数据 fabric 智能合约部署_运维_03

 6.与测试网络交互四:

进行资产列表的查询以验证前面步骤是否出错。用一个查询初始化资产列表的命令:

peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'

fabric如何写智能合约可以调用数据库里的数据 fabric 智能合约部署_bash_04

 7.关停测试网络:

当使用以下的命令,所有创建的容器,所有网络启动产生的数据全部会被清除,当再开启网络时要重新进行创建通道,链码部署。

./network.sh down

fabric如何写智能合约可以调用数据库里的数据 fabric 智能合约部署_bash_05