我是Hyperledger面料的新手。
我能够使用一个教程来完成
安装必备软件和Hyperledger Composer开发工具
创建结构网络
安装/部署业务网络
创建一个有角度的前端
但是,创建的光纤网络只有一个组织和一个对等方。对于我的POC,我需要三个组织,每个组织有一个同行。
如何在现有结构网络中添加其他组织和对等方?
答案 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 /
"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
这将打开休息服务器