Fabric测试网络搭建
Fabric测试网络搭建
aliyun centos7 学生机一台
前置条件:
Go语言安装
Docker、Docker-Compose安装
Git安装
node.js、npm安装(使用node.js开发application可装)
Fabric环境搭建:
我当前的空目录地址为:/root/go/src/github.com/kid1999
官方给定的安装流程:
- 如果需要,请克隆 hyperledger/fabric-samples 仓库
- 选择合适的版本
- 将指定版本的 Hyperledger Fabric 平台特定二进制文件和配置文件安装到 fabric-samples 下的 /bin 和 /config 目录中
- 下载指定版本的 Hyperledger Fabric docker 镜像
直接运行脚本即可,默认拉取最新的版本
1 | curl -sSL https://bit.ly/2ysbOFE | bash -s -- <fabric_version> <fabric-ca_version> |
细节参照 脚本boostrap.sh
将命令加入PATH环境变量:
1 | export PATH=/root/go/src/github.com/kid1999/fabric-samples/bin:$PATH |
启动测试网络
- 找到网络管理脚本:
1 | cd fabric-samples/test-network |
附上network.sh的帮助文档(已翻译)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39用法:
network.sh<Mode>[标志]
模式:
up - 启动结构订购程序和对等节点。未创建频道
up createChannel — 启动具有一个通道的结构网络
createChannel - 在创建网络后创建并加入频道
deployCC - 在通道上部署资产转移或指定基本链码
down - 关闭docker compose,清除网络
restart - 重新启动网络
参数:
-ca<使用CAs>-创建证书颁发机构以生成加密材料
-c<channel name>-要使用的频道名称(默认为“mychannel”)
-s <dbtype> 要使用的数据库后端:goleveldb(默认)或couchdb
-r<max retry>-CLI在一定次数的尝试后超时(默认为5)
-d<delay>-延迟持续时间(秒)(默认为3)
-ccn<name>-要部署的链码的短名称:basic(默认)、ledger、private、secured
-ccl<language>-要部署的链码的编程语言:go(默认)、java、javascript、typescript
-ccv<版本>-链码版本。1.0(默认)
-ccs<序列>——链码定义序列。必须是整数、1(默认)、2、3等
-ccp<path>-可选,链码路径。链码的路径。提供时,-ccn将用作已部署名称,而不是已知链码的短名称。
-cci<fcn name>-可选,chaincode init需要调用的函数。如果提供此函数,则在部署链码后将调用此函数,并将链码定义为所需的初始化。
-i<imagetag>-用于启动网络的标签(默认为“latest”)
-cai<ca\u imagetag>-用于ca的图像标签(默认为“latest”)
-verbose -详细模式
-h -打印此信息
可能的模式和标志组合
up -ca -c -r -d -s -i -verbose
up createChannel -ca -c -r -d -s -i -verbose
createChannel -c -r -d -verbose
deployCC -ccn -ccl -ccv -ccs -ccp -cci -r -d -verbose
采用所有默认值:
network.sh up
示例:
network.sh up createChannel -ca -c mychannel -s couchdb -i 2.0.0
network.sh createChannel -c channelName
network.sh deployCC -ccn basic -ccl javascript
- 删除关闭之前的工程、容器
1 | ./network.sh down |
- 启动网络
1 | ./network.sh up |
此命令创建一个由两个Peer节点和一个Orderer节点组成的Fabric网络。 运行./network.sh up
时没有创建任何channel。
Peer 节点 是任何Fabric网络的基本组件。 Peer节点存储区块链账本并在进行交易之前对其进行验证。 同行运行包含业务用于管理区块链账本的智能合约上的业务逻辑。
Orderer节点 负责从客户那里收到认可的交易后,他们就交易顺序达成共识,然后打包区块发送给Peer节点验证。Orderer节点还可以操作定义Fabric网络的功能的系统通道,例如如何制作块以及节点可以使用的Fabric版本。
系统通道定义了哪个组织是该联盟的成员。
创建一个Channel
在Org1和Org2之间创建名为mychannel的通道并加入他们的Peer节点
1
./network.sh createChannel -c mychannel
在Channel里启动一个chainCode
智能合约包含管理区块链账本上资产的业务逻辑。 由成员运行的应用程序网络可以在账本上调用智能合约创建,更改和转让这些资产。 应用程序还通过智能合约查询,以在分类帐上读取数据。
deployCC
子命令将在peer0.org1.example.com
和peer0.org2.example.com
上安装 asset-transfer (basic) 链码。 然后在使用-c
标志(或mychannel
如果未指定通道)的通道上部署指定的通道的链码。 如果您第一次部署 链码,脚本将安装链码的依赖项。默认情况下,脚本安装Go版本的 asset-transfer (basic) 链码。 但是您可以使用语言便签-l
,用于安装 Java 或 javascript 版本的链码。 您可以在fabric-samples
目录的asset-transfer-basic
文件夹中找到 asset-transfer (basic) 链码。 此目录包含作为案例和用来突显 Fabric 特征的样本链码。如何指定特定组织加入channel还值得深入探讨。
与网络交互
启用测试网络后,可以使用
Peer
CLI与您的网络进行交互。Peer
CLI允许您调用已部署的智能合约,更新通道,或安装和部署新的智能合约。详情参见Peer文档。
参考: