【问题标题】:Hyperledger fabric: How to add new organization and a peer to existing Hyperledger Composer single organization fabric network?Hyperledger Fabric:如何向现有的 Hyperledger Composer 单组织结构网络添加新组织和对等点?
【发布时间】:2019-04-01 02:26:19
【问题描述】:

我是 Hyperledger 结构的新手。

我能够使用一个教程来:

  1. 安装先决条件和超级账本作曲家开发工具

  2. 创建结构网络

  3. 安装/部署业务网络

  4. 创建一个有角度的前端

但是,创建的结构网络只有一个组织和一个对等点。对于我的 POC,我需要三个组织,每个组织都有一个同行。

如何在现有结构网络中添加其他组织和对等点?

【问题讨论】:

标签: hyperledger-fabric


【解决方案1】:

步骤

A) 安装先决条件

(Run in dir - dev5@ubuntu:~$)

1) 您可以从更新和升级包管理器开始

sudo apt-get update

sudo dpkg --configure -a

2 安装 curl

sudo apt-get install curl

3 检查 curl 版本

curl --version

4 安装 Go 语言

$ cd $HOME/
wget https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz
$ tar -xvf go1.8.1.linux-amd64.tar.gz
$ mkdir $HOME/gopath
$ export GOPATH=$HOME/gopath
$ export GOROOT=$HOME/go
$ export PATH=$PATH:$GOROOT/bin
$ go version

5 使用以下命令下载必备文件 \

curl -O https://hyperledger.github.io/composer/latest/prereqs-ubuntu.sh

6 安装 libltdl-dev

apt-get install libltdl-dev

7 打开 preres-ubuntu.sh 文件以供参考。从文件中获取以下命令。检查它们是否匹配。如果不是,则使用文件中的那个。

8 此命令位于字符串“支持的版本数组”中。运行它

declare -a versions=('trusty' 'xenial' 'yakkety', ‘bionic’);

9 更新将来使用的 CODENAME var

if [ -z "$1" ]; then
    source /etc/lsb-release || \
        (echo "Error: Release information not found, run script passing Ubuntu         version codename as a parameter"; exit 1)
    CODENAME=${DISTRIB_CODENAME}
else
    CODENAME=${1}
fi

10 检查是否支持版本

if echo ${versions[@]} | grep -q -w ${CODENAME}; then
    echo "Installing Hyperledger Composer prereqs for Ubuntu ${CODENAME}"
else
    echo "Error: Ubuntu ${CODENAME} is not supported"
    exit 1
fi

11 更新包管理器

sudo apt-get update

12 安装 Git

sudo apt-get install -y git

13 安装 nvm 依赖项

sudo apt-get -y install build-essential libssl-dev

14 执行nvm安装脚本

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash

15 在不重启shell的情况下设置nvm环境

export NVM_DIR="${HOME}/.nvm"
        [ -s "${NVM_DIR}/nvm.sh" ] && . "${NVM_DIR}/nvm.sh"
        [ -s "${NVM_DIR}/bash_completion" ] && . "${NVM_DIR}/bash_completion"

16 安装节点

nvm install --lts

17 配置 nvm 使用 6.9.5 版本

nvm use --lts
nvm alias default 'lts/*'

18 安装最新版npm

npm install npm@latest -g

19 将 Docker 存储库密钥添加到 APT 钥匙串

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

20 更新 APT 搜索 Docker 包的位置

echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu 
${CODENAME} stable" | \
sudo tee /etc/apt/sources.list.d/docker.list

21 更新包列表

sudo apt-get update

22 验证 APT 是否从正确的存储库中提取

sudo apt-cache policy docker-ce

23 安装 Docker

sudo apt-get -y install docker-ce

24 安装 docker compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.13.0/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose

25 如果需要,安装 python v2

set +e
COUNT="$(python -V 2>&1 | grep -c 2.)"
if [ ${COUNT} -ne 1 ]
then
   sudo apt-get install -y python-minimal
fi

26 安装解压缩,安装超级账本结构所需。

sudo apt-get -y install unzip

27 需要将 docker-compose 升级为 >= 1.18

sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-    compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

28 从 github 克隆 fabric-samples

git clone https://github.com/mahoney1/fabric-samples.git

B 安装 hyperledger composer 开发工具
(在目录中运行 - dev5@ubuntu:~$)

1 安装 CLI 工具 -

    composer-cli    npm install -g composer-cli
    composer-rest-server    npm install -g composer-rest-server
    generator-hyperledger-composer  npm install -g generator-hyperledger-composer
    Yeoman  npm install -g yo

2 设置你的 IDE

    https://code.visualstudio.com/download

Open VSCode, go to Extensions, then search for and install the Hyperledger Composer extension from the Marketplace. 

C 运行 Fabric 网络

(Run in dir - dev5@ubuntu:~$ fabric-samples)

1 将目录更改为 fabric-samples

cd fabric-samples

2 使用此命令下载平台二进制文件,包括 cryptogen(bash 命令需要三个参数):

3 要使用当前结构级别,请运行此命令

git checkout multi-org

4 检查下载的二进制文件。将目录更改为 bin

cd bin
ls

5 切换到第一个网络目录

cd ../
cd first-network
ls

6 为您的第一个网络生成所需的证书和文件

./byfn.sh -m generate

7 启动结构

sudo ./byfn.sh -m up -s couchdb -a

On error - "Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?"    

检查docker是否处于活动状态

sudo systemctl is-active docker

如果不活跃,那么
sudo docker 图片 sudo usermod -aG docker $(whoami) sudo usermod -a -G docker $USER sudo docker --version

要启动docker,运行

sudo service docker restart     

8 再次启动结构

$ sudo ./byfn.sh -m up -s couchdb -a

9 如果仍然无法启动网络,则重新启动频道

sudo ./byfn.sh -m restart -c mychannel

D Run Fabric 网络

*Organization Org1 is represented by Alice  
Organization Org2 is represented by Bob*    

1 创建一个临时工作目录(和子目录)来管理 Composer 连接配置文件和密钥/证书文件

mkdir -p /tmp/composer/org1
mkdir -p /tmp/composer/org2

2 创建一个描述此结构网络的基本连接配置文件,该配置文件可以提供给
爱丽丝和鲍勃
转到 /tmp/composer

cd /
cd tmp
cd composer

Open editor and copy paste the contents of byfn-network.json sheet in the editor and save it as byfn-network.json   

nano

3 打开 byfn-network.json 并将文本 INSERT_ORG1_CA_CERT 的所有实例替换为 Org1 对等节点的 CA 证书

[在目录中运行-dev5@ubuntu:~$ fabric-samples/first-network]

3.1 运行命令,从生成的.pem文件中获取证书,以便嵌入到上面的连接配置文件中

3.11 转到第一个网络文件夹
光盘 / cd 主页/dev5 cd fabric-samples/first-network

3.12 执行命令生成/tmp/composer/org1/ca-org1.txt

awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt > /tmp/composer/org1/ca-org1.txt

3.13 打开ca-org1

3.14 复制文件/tmp/composer/org1/ca-org1.txt的内容,替换.json文件中的文本INSERT_ORG1_CA_CERT

4 在同一个 .json 文件中 - 您需要将文本 INSERT_ORG2_CA_CERT 的所有实例替换为 Org2 对等节点的 CA 证书

4.1 运行命令,从生成的.pem文件中获取证书,以便嵌入到上面的连接配置文件中

4.11 执行命令生成/tmp/composer/org1/ca-org2.txt

awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt > /tmp/composer/org2/ca-org2.txt

4.12 打开ca-org2

4.13 复制文件/tmp/composer/org1/ca-org2.txt的内容并替换文本

INSERT_ORG2_CA_CERT in the .json file   

5 替换文本的所有实例

INSERT_ORDERER_CA_CERT with the CA certificate for the orderer node 

5.1 运行命令,从生成的.pem文件中获取证书,以便嵌入到上面的连接配置文件中

5.11 执行命令生成/tmp/composer/org1/ca-orderer.txt

awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt > /tmp/composer/ca-orderer.txt

5.12 打开ca-orderer.txt

5.13 复制文件/tmp/composer/org1/ca-orderer.txt的内容,替换.json文件中的文本INSERT_ORDERER_CA_CERT

6 将此文件另存为 /tmp/composer/byfn-network.json
此连接配置文件现在描述了结构网络设置、作为网络一部分的所有对等方、订购者和证书颁发机构,它定义了参与网络的所有组织,还定义了该网络上的通道。 {{site.data.conrefs.composer_full}} 只能与单个频道交互,因此只应定义一个频道。

7 自定义 Org1 的连接配置文件

In the connection profile /tmp/composer/byfn-network.json between the version property and just before the channel property, add this block that specifies the organization that alice belongs to, in a client section with optional timeouts. Save the connection profile file as a NEW file called byfn-network-org1.json in /tmp/composer/org1/      

"client": {
    "organization": "Org1",
    "connection": {
        "timeout": {
            "peer": {
                "endorser": "300",
                "eventHub": "300",
                "eventReg": "300"
            },
            "orderer": "300"
        }
    }
},

8 自定义 Org2 的连接配置文件
在 version 属性和 channel 属性之前的连接配置文件 /tmp/composer/byfn-network.json 中,在带有可选超时的客户端部分中添加此块,该块指定 bob 所属的组织。将连接配置文件保存为 /tmp/composer/org2/ 中名为 byfn-network-org2.json 的新文件

"client": {
        "organization": "Org2",
        "connection": {
        "timeout": {
            "peer": {
                "endorser": "300",
                "eventHub": "300",
                "eventReg": "300"
                },
                "orderer": "300"
            }
        }
    },

9 将证书和私钥复制到 /tmp/composer/org1 for Org1

export ORG1=crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
    cp -p $ORG1/signcerts/A*.pem /tmp/composer/org1
    cp -p $ORG1/keystore/*_sk /tmp/composer/org1

10 将证书和私钥复制到 /tmp/composer/org2 for Org2

export ORG2=crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
    cp -p $ORG2/signcerts/A*.pem /tmp/composer/org2
    cp -p $ORG2/keystore/*_sk /tmp/composer/org2

11 为 Org1 的管理员创建业务网卡

composer card create -p /tmp/composer/org1/byfn-network-org1.json -u PeerAdmin -c /tmp/composer/org1/Admin@org1.example.com-cert.pem -k /tmp/composer/org1/*_sk -r PeerAdmin -r ChannelAdmin -f PeerAdmin@byfn-network-org1.card

12 为 Org2 的管理员创建业务网卡

composer card create -p /tmp/composer/org2/byfn-network-org2.json -u PeerAdmin -c /tmp/composer/org2/Admin@org2.example.com-cert.pem -k /tmp/composer/org2/*_sk -r PeerAdmin -r ChannelAdmin -f PeerAdmin@byfn-network-org2.card

13 为 Org1 的管理员导入业务网卡

composer card import -f PeerAdmin@byfn-network-org1.card --card PeerAdmin@byfn-network-org1

14 为 Org2 的管理员导入业务网卡

composer card import -f PeerAdmin@byfn-network-org2.card --card PeerAdmin@byfn-network-org2

15 为所需的业务网络创建业务网络存档文件

16 将业务网络安装到 Org1 的对等节点上

composer network install --card PeerAdmin@byfn-network-org1 --archiveFile trade-network.bna

17 将业务网络安装到 Org2 的对等节点上

composer network install --card PeerAdmin@byfn-network-org2 --archiveFile fta-fab-net.bna

18 定义业务网络的背书策略
使用表单 endorsement-policy.json 的内容创建一个背书策略文件,并将其保存在 /tmp/composer/ 中,名称为 endorsement-policy.json

The endorsement policy you have just created states that both Org1 and Org2 must endorse transactions in the business network before they can be committed to the blockchain. If Org1 or Org2 do not endorse transactions, or disagree on the result of a transaction, then the transaction will be rejected by the business network.   

19 检索 Org1 的业务网络管理员证书
运行 composer identity request 命令来为 Alice 检索证书以用作 Org1 的业务网络管理员

composer identity request -c PeerAdmin@byfn-network-org1 -u admin -s adminpw -d alice

20 检索 Org2 的业务网络管理员证书
运行 composer identity request 命令来检索证书,让 Bob 用作 Org2 的业务网络管理员

composer identity request -c PeerAdmin@byfn-network-org2 -u admin -s adminpw -d bob

21 启动业务网络

composer network start -c PeerAdmin@byfn-network-org1 -n fta-fab-net -V 0.1.14 -o endorsementPolicyFile=/tmp/composer/endorsement-policy.json -A alice -C alice/admin-pub.pem -A bob -C bob/admin-pub.pem

注意:此命令中应使用bna文件的版本号

如果命令失败,则检查 docker,启动 fabric n/w,安装 bna 文件,检查 tmp/compser 是否存在

一旦业务网络启动。 Alice 和 Bob 都将能够访问业务网络,开始设置业务网络,并加入各自组织的其他参与者。

Alice 和 Bob 必须使用他们在前面步骤中创建的证书创建新的业务网络卡,以便他们可以访问业务网络。

22 创建业务网卡,以 Org1 身份访问业务网

创建一个商业 n/w 卡

composer card create -p /tmp/composer/org1/byfn-network-org1.json -u alice -n fta-fab-net -c alice/admin-pub.pem -k alice/admin-priv.pem

导入商务网卡

composer card import -f alice@fta-fab-net.card

测试与区块链业务网络的连接

composer network ping -c alice@fta-fab-net

23 创建业务网卡,以 Org2 身份访问业务网

创建一个商业 n/w 卡

composer card create -p /tmp/composer/org2/byfn-network-org2.json -u bob -n fta-fab-net -c bob/admin-pub.pem -k bob/admin-priv.pem

导入商务网卡

composer card import -f bob@fta-fab-net.card

测试与区块链业务网络的连接

composer network ping -c bob@fta-fab-net

24 启动 RESTful API composer-rest-server 回答以下问题:
输入要使用的名片名称:alice@fta-fab-net
指定是否要在生成的 REST API 中使用命名空间:从不使用命名空间
指定是否要使用 API 密钥来保护 REST API:否
指定是否要使用 Passport 为 REST API 启用身份验证:否
指定是否要启用资源管理器测试界面:是
如果要启用动态日志记录,请指定密钥:dts
指定是否要启用事件发布 oevr websockets:是
指定是否要为 REST API 启用 TLS 安全性:否

打开浏览器并转到网址

http://localhost:3000/explorer

这将打开休息服务器

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 2019-02-06
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多