Hyperledger架构:如何向现有Hyperledger Composer单一组织架构网络添加新组织和对等实体?

时间:2018-10-27 16:01:21

标签: hyperledger-fabric

我是Hyperledger面料的新手。

我能够使用一个教程来完成

  1. 安装必备软件和Hyperledger Composer开发工具

  2. 创建结构网络

  3. 安装/部署业务网络

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

但是,创建的光纤网络只有一个组织和一个对等方。对于我的POC,我需要三个组织,每个组织有一个同行。

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

1 个答案:

答案 0 :(得分:0)

步骤

A)安装先决条件

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

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

sudo apt-get update

sudo dpkg --configure -a

2安装curl

sudo apt-get install curl

3检查卷曲版本

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变量

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在不重新启动外壳程序的情况下设置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克隆面料样品

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

B安装hyperledger作曲家开发工具
    (在dir-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运行结构网络

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

1将目录更改为结构样本

cd fabric-samples

2使用以下命令(包括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 usermod -aG泊坞窗$(whoami)     sudo usermod -a -G泊坞窗$ 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运行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 /     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文件中-您需要用Org2对等节点的CA证书替换文本INSERT_ORG2_CA_CERT的所有实例

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的连接配置文件
    在版本属性和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将Org1的证书和私钥复制到/ tmp / composer / 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将Org2的证书和私钥复制到/ tmp / composer / 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,启动结构n / w,安装bna文件,检查是否存在tmp / compser

一旦业务网络启动。爱丽丝(Alice)和鲍勃(Bob)都将能够访问业务网络,开始建立业务网络,并加入各自组织的其他参与者。

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

22创建一个业务网卡以Org1的身份访问业务网络

创建一张不带名片的

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的身份访问业务网络

创建一张不带名片的

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 websocket:是
    指定是否要为REST API启用TLS安全性:否

打开浏览器并转到URL

http://localhost:3000/explorer

这将打开休息服务器