FISCO BCOS V3.0 Air リンク構築エクスペリエンス - V2.9 リンク構築の違いとの比較

 前提

 お久しぶりです。卒業手続き等で最近更新がありませんでした。FISCO BCOS タスクチャレンジ第 2 シーズンが予定通り始まりました。卒業の関係で、前回のタスクチャレンジを逃したのも残念です今度は必ず倍の挑戦ですよ

FISCO BCOS の Air バージョンは、すべてのモジュールをバイナリ (プロセス) にコンパイルするオールインワン パッケージング モードを採用しています。プロセスは、ネットワーク、コンセンサス、アクセスなどのすべての機能モジュールを含むブロックチェーン ノードです。初心者向け、学者の紹介、機能検証、POC製品。

したがって、この記事では、より簡単に 3.0 に移行できるように、3.0Air と 2.0 の違いに重点を置きます。

環境:Ubuntu20

        フィスコ BCOS V3.0 rc1

文章

まず、最初の違いを見てみましょう. 最大の違いはエクスペリエンスにあります. チェーンを開始するときにいつものように build_chain が使用されますが、多くの新しいオプション パラメーターが追加されています。

build_chain 2.X バージョンのヘルプ

パラメータ  

関数

-l<IP リスト>[必須] 「ip1:nodeNum1、ip2:nodeNum2」 例: 「192.168.0.1:2192.168.0.2:3」
 -f<IP リスト ファイル>[オプション] 行ごとに分割され、各行は「IP:nodeNum AgencyName groupList p2p_port、channel_port、
-v <FISCO-BCOS バイナリ バージョン> のデフォルトは最新の v${Default_version}t、
-e <FISCO-BCOS バイナリ パス> FISCO-BCOS は、デフォルトで GitHub からダウンロードされます。-e が設定されている場合は、指定された場所でバイナリを使用します
-o <出力方向>デフォルト値/node/
-p <開始ポート> デフォルトの 30300202008545 は、p2p_Port が 30300 から始まり、channel_Port が 20200 から始まり、jsonrpc_Port が 8545 から始まることを意味します。
-q <FISCO-BCOSリリース一覧>FISCO-BCOSリリース一覧
-私 <ホスト IP> のデフォルトは 127.0.0.1 です。-i が設定されている場合は、0.0.0.0 でリッスンします。
-s <DB タイプ> デフォルトは RocksDB です。オプションは RocksDB/MySQL/Scalible です。RocksDB の使用をお勧めします。
-d <docker mode> はデフォルトではオフになっています。-d に設定すると、docker を使用してビルドします。
-c <コンセンサスアルゴリズム> デフォルトはPBFTです。オプションは pbft/rraft/rpbft です。pbft の使用をお勧めします。
-C <チェーン ID> デフォルト値は 1 です。単位を設定できます。
-g <国家秘密ノードの生成> デフォルト いいえ
-z <tar パケットの生成> デフォルトは no
-t <証明書構成ファイル> はデフォルトで自動的に生成されます
-6 <IPv6 を使用>デフォルトの番号。-6 に設定すると、IP は ipv6 として扱われます。
-k <ca root へのパス> はデフォルトで自動的に生成されます。ca.crt と ca.key がパスに含まれている必要があります。中間値が使用される場合は、root.crt がパスに含まれている必要があります。
-K <sm crypto ca root のパス> はデフォルトで自動的に生成されます。gmca.crt と gmca.key がパスに含まれている必要があります。中間パスが使用される場合は、gmroot.crt がパスに含まれている必要があります。
-D <デプロイメント モードを使用する> デフォルト値は false です。-D に設定すると、デプロイメント モードのディレクトリ構造を使用して tar を作成します。
-G <channel use sm crypto ssl> のデフォルトは false で、国内暗号化モードにのみ適用されます。
-バツ <証明書の有効期限>デフォルト 36500 日
-T <デバッグ ログを有効にする> はデフォルトでオフになっています。-T に設定すると、デバッグ ログが有効になります。
-R <Channel use ecdsa crypto ssl>デフォルト値は false です。-R が設定されている場合は、チャネル ssl に ecdsa 証明書を使用します。それ以外の場合は、rsa 証明書が使用されます。
-S <統計を有効にする> はデフォルトではオフになっています。-S に設定すると、統計が有効になります。
-F <自動ログ更新を無効にする> はデフォルトで有効になっています。-F に設定すると、自動ログクリアが無効になります。
-E <Enable free_storage_evm> はデフォルトでオフになっています。-E に設定すると、free_storage _evm が有効になります
-h ヘルプ

 

 

build_chain 3.X バージョンのヘルプ

パラメータ  

関数

-C<コマンド>[オプション]コマンド 现在支持“deploy”和“expand”,默认为deploy
-g<group id>[可选] 设置组id,默认值:group0
-I<chain id>[可选] 设置chain id,默认值:chain0
-v<FISCO-BCOS二进制版本>[可选] 默认为最新的v3.4.0
-l<IP list>[必需] “ip1:nodeNum1,ip2:nodeNum2”例如:“192.168.0.1:2192.168.0.2:3”
-L<fisco-bcos lightnode exec>[可选] fisco-bdos 轻节点的好可执行文件,输入“download_binary”下载lightnode二进制文件或指定正确的lightnode二元路径
-e<fisco-bcos exec>〔可选〕

fisco-bcosbinary exec

-t<mtail exec>[可选]mtail二进制exec

-o<output dir>〔可选〕 输出目录,默认值/节点
-p<启动端口>〔可选〕 默认3030020200表示p2p_port从30300开始,rpc_port从20200开始
-s<SM型号>[可选] SM SSL连接与否,默认为false
-H<HSM型号>[可选] 是否使用HSM(硬件安全模块),默认为false
-c<Config Path>〔展开节点时必需〕 指定展开节点的路径Config.ini、Config.generion和p2p连接文件nodes.json
-d<CA cert path>[展开节点时必需] 展开节点时,指定CA证书和私钥所在的路径
-D<docker模式>默认关闭 如果设置为-D,则使用docker构建
如果设置为-D,则使用docker构建 当Auth模式时指定管理员帐户地址。
当Auth模式时指定管理员帐户地址。 是否使用WASM虚拟机引擎,默认为false
-R<Serial_mode>[可选] 是否使用串行执行,默认为true
-k<关键页大小>[可选] 关键页大小,默认为10240
关键页大小,默认为10240 节点监视器与否,默认值为false
节点监视器与否,默认值为false 展开节点时,应指定ip和端口
展开节点时,应指定ip和端口 展开节点时,指定prometheus所在的路径
-z<生成tar包>〔可选〕 将数据打包到链上生成tar包
-n<node-key path>[可选] 设置要加载nodeid的节点密钥文件的路径
-N<node path>[可选] -N<node path>[可选]
-u<multi-ca-path>[可选] -u<multi-ca-path>[可选]
-h 帮助

我们可以通过脚本的新增参数发现,多乐许多不一样的地方,比如轻节点的概念,亦或者是-d的功能改成--D了,都有不同的变化,那么我们本篇就以启动一个FISCO BCOS V3.0 Air来试一下轻量级的变化

起链对比

V3.0 起链

bash ../tools/build_chain.sh -p 30300,20200 -l 127.0.0.1:4 -o nodes

 V2.0起链

bash ../tools/build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -o nodes

 返回消息对比

与2.0相比起链少了一个指定的8545的端口,默认的起链命令倒是没什么变化

 相较于2.0来说多了很多返回的内容,例如:

Processing IP:127.0.0.1 Total:4
writing RSA key
[INFO] Generate nodes/127.0.0.1/sdk cert successful!
writing RSA key
[INFO] Generate nodes/127.0.0.1/node0/conf cert successful!
writing RSA key
[INFO] Generate nodes/127.0.0.1/node1/conf cert successful!
writing RSA key
[INFO] Generate nodes/127.0.0.1/node2/conf cert successful!
writing RSA key
[INFO] Generate nodes/127.0.0.1/node3/conf cert successful!
[INFO] Downloading get_account.sh from https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/tools/get_account.sh...

这里的返回指的是,创建了RSA的秘钥,RSA秘钥指的是非对称加密算法的秘钥,也就是我们所说的公私钥

 

[INFO] Admin account: 0x984a17c383a35dcc7da48924ca83c078ae384790
[INFO] Generate uuid success: 0578afd8-df1e-49ae-bf93-f01105e33500
[INFO] Generate uuid success: 8505abdf-5c60-45cf-b8d8-94ae641e1e5f
[INFO] Generate uuid success: dae56b62-0584-486c-821a-b5499dd3d2b9
[INFO] Generate uuid success: fd0d62e6-15a6-4422-bb3b-c9ade14a283e

 这里的返回是UUID,UUID是我们分布式系统中常见的唯一性表示,就和物理mac地址一样 

[INFO] GroupID              : group0
[INFO] ChainID              : chain0
[INFO] fisco-bcos path      : bin/fisco-bcos
[INFO] Auth mode            : false
[INFO] Start port           : 30300 20200
[INFO] Server IP            : 127.0.0.1:4
[INFO] SM model             : false
[INFO] enable HSM           : false
[INFO] Output dir           : nodes
[INFO] All completed. Files in nodes

这里就是一些基本情况的阐述

文件目录对比

最终生成的目录对比,我们发现3.0多了许多证书类,监控类的文件,这意味着我们的3.0更加安全,完善

V3.0

nodes/
├── monitor
│   ├── grafana # grafana配置文件
│   ├── prometheus # prometheus配置文件
│   ├── start_monitor.sh # 启动脚本,用于开启监控
│   ├── stop_monitor.sh # 停止脚本,用于停止监控
│   ├── compose.yaml # docker-compose配置文件
├── 127.0.0.1
│   ├── fisco-bcos # 二进制程序
│   ├── mtail # 二进制程序
│   ├── node0 # 节点0文件夹
│   │   ├── mtail # mtail配置文件夹
│   │   │   ├── start_mtail_monitor.sh  # 启动脚本,用于启动该节点mtail程序
│   │   │   ├── stop_mtail_monitor.sh   # 停止脚本,用于停止该节点mtail程序
│   │   │   ├── node.mtail # mtail配置文件
│   │   ├── conf # 配置文件夹
│   │   │   ├── ca.crt # 链根证书
│   │   │   ├── cert.cnf
│   │   │   ├── ssl.crt # ssl证书
│   │   │   ├── ssl.key # ssl连接证书私钥
│   │   │   ├── node.pem # 节点签名私钥文件
│   │   │   ├── node.nodeid # 节点id,公钥的16进制表示
│   │   ├── config.ini # 节点主配置文件,配置监听IP、端口、证书、日志等
│   │   ├── config.genesis # 创世配置文件,共识算法类型、共识超时时间和交易gas限制等
│   │   ├── nodes.json # 节点json信息,展示节点的ip和端口,示例:{"nodes": [127.0.0.1:30300]}
│   │   ├── start.sh # 启动脚本,用于启动节点
│   │   └── stop.sh # 停止脚本,用于停止节点
│   ├── node1 # 节点1文件夹
│   │.....
│   ├── node2 # 节点2文件夹
│   │.....
│   ├── node3 # 节点3文件夹
│   │.....
│   ├── sdk # SDK证书
│   │   ├── ca.crt # SSL连接根证书
│   │   ├── cert.cnf # 证书配置
│   │   ├── sdk.crt # SDK根证书
│   │   ├── sdk.key # SDK证书私钥
│   ├── start_all.sh # 启动脚本,用于启动所有节点
│   ├── stop_all.sh # 停止脚本,用于停止所有节点
V2.0

nodes/
├── 127.0.0.1
│   ├── download_bin.sh
│   ├── download_console.sh
│   ├── fisco-bcos
│   ├── node0
│   │   ├── conf
│   │   │   ├── ca.crt
│   │   │   ├── group.1.genesis
│   │   │   ├── group.1.ini
│   │   │   ├── node.crt
│   │   │   ├── node.key
│   │   │   └── node.nodeid
│   │   ├── config.ini
│   │   ├── scripts
│   │   │   ├── load_new_groups.sh
│   │   │   ├── monitor.sh
│   │   │   ├── reload_sdk_allowlist.sh
│   │   │   └── reload_whitelist.sh
│   │   ├── start.sh
│   │   └── stop.sh
│   ├── node1
│   │   ├── conf
│   │   │   ├── ca.crt
│   │   │   ├── group.1.genesis
│   │   │   ├── group.1.ini
│   │   │   ├── node.crt
│   │   │   ├── node.key
│   │   │   └── node.nodeid
│   │   ├── config.ini
│   │   ├── scripts
│   │   │   ├── load_new_groups.sh
│   │   │   ├── monitor.sh
│   │   │   ├── reload_sdk_allowlist.sh
│   │   │   └── reload_whitelist.sh
│   │   ├── start.sh
│   │   └── stop.sh
│   ├── node2
│   │   ├── conf
│   │   │   ├── ca.crt
│   │   │   ├── group.1.genesis
│   │   │   ├── group.1.ini
│   │   │   ├── node.crt
│   │   │   ├── node.key
│   │   │   └── node.nodeid
│   │   ├── config.ini
│   │   ├── scripts
│   │   │   ├── load_new_groups.sh
│   │   │   ├── monitor.sh
│   │   │   ├── reload_sdk_allowlist.sh
│   │   │   └── reload_whitelist.sh
│   │   ├── start.sh
│   │   └── stop.sh
│   ├── node3
│   │   ├── conf
│   │   │   ├── ca.crt
│   │   │   ├── group.1.genesis
│   │   │   ├── group.1.ini
│   │   │   ├── node.crt
│   │   │   ├── node.key
│   │   │   └── node.nodeid
│   │   ├── config.ini
│   │   ├── scripts
│   │   │   ├── load_new_groups.sh
│   │   │   ├── monitor.sh
│   │   │   ├── reload_sdk_allowlist.sh
│   │   │   └── reload_whitelist.sh
│   │   ├── start.sh
│   │   └── stop.sh
│   ├── sdk
│   │   ├── ca.crt
│   │   ├── sdk.crt
│   │   ├── sdk.key
│   │   └── sdk.publickey
│   ├── start_all.sh
│   └── stop_all.sh
├── cert
│   ├── agency
│   │   ├── agency.crt
│   │   ├── agency.key
│   │   ├── agency.srl
│   │   ├── ca.crt
│   │   └── cert.cnf
│   ├── ca.crt
│   ├── ca.key
│   ├── ca.srl
│   └── cert.cnf
└── cert.cnf

起链返回内容

这里更新了启动进程不仅仅是返回启动成功,并且将进程号也一并返回了

V3.0

try to start node0
try to start node1
try to start node2
try to start node3
 node3 start successfully pid=5947
 node2 start successfully pid=5957
 node1 start successfully pid=5962
 node0 start successfully pid=5951
V2.0

try to start node0
try to start node1
try to start node2
try to start node3
 node2 start successfully
 node1 start successfully
 node0 start successfully
 node3 start successfully

扩容节点对比

V3.0

# 创建扩容配置存放目录
$ mkdir config

# 拷贝根证书、根证书私钥
$ cp -r nodes/ca config

# 从被扩容节点node0拷贝节点配置文件config.ini,创世块配置文件config.genesis以及节点连接配置文件nodes.json
$ cp nodes/127.0.0.1/node0/config.ini config/
$ cp nodes/127.0.0.1/node0/config.genesis config/
$ cp nodes/127.0.0.1/node0/nodes.json config/nodes.json.tmp

# 设置新节点P2P和RPC监听端口
# macOS系统(设置P2P监听端口为30304,RPC监听端口为20204)
$ sed -i .bkp 's/listen_port=30300/listen_port=30304/g' config/config.ini
$ sed -i .bkp 's/listen_port=20200/listen_port=20204/g' config/config.ini
# linux系统(设置P2P监听端口为30304,RPC监听端口为20204)
$ sed -i 's/listen_port=30300/listen_port=30304/g' config/config.ini
$ sed -i 's/listen_port=20200/listen_port=20204/g' config/config.ini

# 将新节点连接加入到nodes.json
$ sed -e 's/"nodes":\[/"nodes":\["127.0.0.1:30304",/' config/nodes.json.tmp > config/nodes.json
# 确认新节点连接信息: 127.0.0.1:30304加入成功
$ cat config/nodes.json
{"nodes":["127.0.0.1:30304","127.0.0.1:30300","127.0.0.1:30301","127.0.0.1:30302","127.0.0.1:30303"]}


扩容节点
# 调用build_chain.sh扩容节点,新节点扩容到nodes/127.0.0.1/node4目录
# -c: 指定扩容配置config.ini, config.genesis和nodes.json路径
# -d: 指定CA证书和私钥的路径
# -o: 指定扩容节点配置所在目录
bash ../tools/build_chain.sh -C expand -c config -d config/ca -o nodes/127.0.0.1/node4


cat ~fisco/nodes/127.0.0.1/node4/conf/node.nodeid

cp -rf nodes/127.0.0.1/sdk/* console/conf/

#这里可以根据自己的实际情况来改,我就不改了直接使用示例文件
cp -rf console/conf/config-example.toml console/conf/config.toml

addObserver

addSealer

V2.0

curl -#LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master-2.0/tools/gen_node_cert.sh

# -c指定机构证书及私钥所在路径
# -o输出到指定文件夹,其中node4/conf中会存在机构agency新签发的证书和私钥
# 成功会输出 All completed 提示
bash gen_node_cert.sh -c ../cert/agency -o node4

cp node0/config.ini node0/start.sh node0/stop.sh node4/

#修改node4/config.ini。对于[rpc]模块,修改channel_listen_port=20204和jsonrpc_listen_port=8549;对于[p2p]模块,修改listen_port=30304并在node.中增加自身节点信息;

cp node0/conf/group.1.genesis node0/conf/group.1.ini node4/conf/

bash node4/start.sh

cat node4/conf/node.nodeid

getObserverList

addSealer 

这里我们可以发现,v3.0的扩容步骤明显多于且复杂于v2.0,所以我们这里可以,仔细的分析一下里面为什么要这么做

V3.0对于证书的要求明显是更加的严格了,引入了2.0所没有的证书文件,以及加密方式,但是对于轻量级的版本来说又不如pro或者max那版复杂,剩下的我们在下一篇中来分享搭建pro以及max版本所体会到的感受

おすすめ

転載: blog.csdn.net/qq_57309855/article/details/132203568