前言
对上一章做个补充:如果我不想在root环境下测试fabric?
其实只需要在创建并启动docker的时候用到root账户,当然由于up的时候是会创建一些文件,需要把这些文件放权,用chown
先把文件转给普通用户,或者chmod -R 775
,否则后续非root用户的操作都会被permission deny。
另外上一章节主要是参考Hyperledger官方的示例尝试网络启动。这里我做了一些研究,也试图通过NodeJS的API,fabric-client去操作peer和channel,但是最终发现都非常的不方便,即便使用了这个API依然需要用到官方给的bin下的命令,例如需要使用cryptogen创建节点秘钥配置文件。所以综合考虑下我决定把网络部署,环境搭建交还给shell去做。只有合约本身,以及操作合约的逻辑通过nodejs使用typescript或javascript开发。
大体步骤
我们来看下在常规的Fabric网络,从docker启动到部署合约需要哪些步骤:
开始
创建Organization和Orderer
使用cryptogen或ca创建组织。如果使用cryptogen则如下:
先创建一个组织,organization节点
这里用到一个crypto-config-orgX.yaml
来创建组织文件,yaml请至官方sample中查找文件模板
int=1
cryptogen generate --config=./organizations/cryptogen/crypto-config-org$int.yaml --output="organizations"
这里可以是灵活的,int可以是任何整数,用于代表组织1,2,3,4…你可创建无数的组织
创建order节点
cryptogen generate --config=./organizations/cryptogen/crypto-config-orderer.yaml --output="organizations"
org节点和order节点责任不同
- orderer叫做排序节点,提供共识服务的网络节点,例如,使用Kafka或PBFT
- peer维护账本的网络节点,通常在Hyperledger Fabric中担任背书或者记账角色。
- 另外还有个comitter,检查交易的合法性,最终将交易提交到区块链中。
启动节点
docker-compose docker-compose-test-net.yaml up -d
docker配置和启动需要自行处理,这边给一个docker-compose的template参考,在官方的fabric-sample/test-network/docker
下有更为详细配置文件
version: '2.4'
volumes:
orderer.example.com:
peer0.org1.example.com:
networks:
test:
name: fabric_test
services:
orderer.example.com:
container_name: orderer.example.com
image: hyperledger/fabric-orderer:latest
labels: