Fabric测试网络搭建

aliyun centos7 学生机一台

前置条件:

  • Go语言安装

  • Docker、Docker-Compose安装

  • Git安装

  • node.js、npm安装(使用node.js开发application可装)

Fabric环境搭建:

我当前的空目录地址为:/root/go/src/github.com/kid1999

官方给定的安装流程:

直接运行脚本即可,默认拉取最新的版本

1
2
curl -sSL https://bit.ly/2ysbOFE | bash -s -- <fabric_version> <fabric-ca_version>
curl -sSL https://bit.ly/2ysbOFE | bash -s -- 2.2.3 1.5.0

细节参照 脚本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.compeer0.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文档。

参考:

Fabric2.2.0官方文档