1. 系统创始块的生成
Fabric 中账本的第一个区块是需要手动生成的 。
先生成系统创始块, 再对配置文件修改,之后执行如下命令生成创始块文件。
cd /opt/hyperledger/orderconfigtxgen -profile TestTwoOrgsOrdererGenesis-outputBlock/orderer.genesis. block
上述命令执行完成之后会在文件夹/opt/hyperledger/order 中生成文件 orderer.genesis.block ,这是 Fabric系统的创始块文件
2. 账本创始块的生成
step1. 创建 Channel
Channel 的创始块的配置信息已经定义在前面生成的配置文件 configtx.yaml 中
configtxgen - profile TestTwoOrgsChannel -outputCreateChannelTx ./roberttest channeltx channelID roberttestchannel
命令执行完成之后会在目录生成文件 roberttestchannel.tx ,该文件用来生成 Channel 。
step2. 生成相关的锚点文件
configtxgen -profile TestTwoOrgsChannel -outputA口chorPeersUpdate ./OrglMSPanchors.tx -channelID roberttestchannel -asOrg OrglMSPconf 工 gtxgen prof 工 le TestTwoOrgsChannel -outputAnchorPeersUpdate ./Org2MSPanchors .tx -channelID roberttestchar>nel asOrg Org2MSP
命令执行完成之后会在相应的文件夹下面生成文件 OrglMSPanchors.tx 和 Org2MSPanchors .tx ,这些文件在后面会用到
step3. 启动网络
通过 docker-compose 脚本启动区块链网络,使用本节之前生成的 genesis.block 引导,需要注意在生成命令中需要为 TIMEOUT 变量设置适当值,本文设置为 5s,然后通过 docker-compose 命令启动网络。同时需要在 doker-compose-base.yaml 文件中配置各个节点域名,以方便当前节点被访问。
3. Order 节点的启动
Orderer 节点负责交易的打包和区块的生成,Orderer 节点的配置信息通常放在环境变量或者配置文件中
step1. 复制配置文件到 Orderer 文件夹
cd /opt/hyperledger/peercp $GOPATH/src/github . com/hyperledger/fabr 工 C /sampleconf 工 gI orderer. yaml I opt Ihyperledger/order
step2. 修改模板配置文件
在配置文件 orderer.yaml 所在的目 录执行如下命令启动 orderer: orderer start
4. Peer 节点的启动
Peer 模块是 Fabric 的 核心节点 ,所有 的交易数据 经过 Orderer 排序打包之后 由 Peer 模块存储在区块链 中 ,所有的 Chaincode 也是由 Peer 模块打包并且激活 的 。 Peer 模块的配置信息同样由环境变量和配置文件组成。
step1. 创建存储 Peer 模块的配置文件和区块数据的文件夹,并复制示例配置文件 :
mkdir p /opt/hyperledger/peercd /opt/hyperledger/peercp $GOPATH/ src I g 工 thub . com/hyperl edger Ifabric I sampleconf ig I core . yaml I opt Ihyperledger/peer
step2. 修改后 Peer 模块配置文件
在配置文件 core.yaml 所在的文件夹中执行以下命令启动 order 节点 。
export set FABRIC_CFG_ PATH=/opt/hyperledger/peerpeer node start > log_peer.log 2>&1 &
5. 创建通道
在 Fabric 中,channel 代表了一个私有的通信通道,保证消息的隔离性和安全性并由 orderer 节点管理。首先通过 docker exec 命令进入 CLI 容器,在容器中使用 peer channel create 命令创建通道,命令中
-c 指定 channel 名,
-f 参数选择上文生成的通道文件 channel.tx,
-cafile 是 orderer 的根证书的本地目录,使用 TLS 协议进行握手。
命令执行之后生成一个 mychannel.block 块,然后调用 peer channel join 命令加入通道
step1:创建通道
创建通道完成之后,会在执行命令的当前目录生成名为“ roberttestchannel. block 的通道初始块文件
step2:让已经运行的 Peer 模块加入通道
step3:更新锚节点
6. Chaincode 的部署和调用
通过部署一个 Chaincode 来测试 Peer 节点和 Orderer 节点的部署是否正确,需要在每个执行 Peer 节点和背书节点安装 chaincode。
step1 :部署 Chaincode 代码 。
step2 :实例化 Chaincode 代码 ,设置链码的背书策略。
step3 :通过 Chaincode 写人数据 。
step4 :通过 Chaincode 查询数据 。