网站源码模板,机关 网站 建设方案,办公室装修设计效果图免费,贵金属网站建设前提 好久不见#xff0c;最近因为毕业的手续等问题#xff0c;一直都没有更新#xff0c;FISCO BCOS第二季task挑战赛如期展开啦#xff0c;因为毕业的问题#xff0c;也是非常遗憾的错过了上一期的task挑战赛#xff0c;这一期一定双倍挑战#xff0c;hhhhhh
Air版本… 前提 好久不见最近因为毕业的手续等问题一直都没有更新FISCO BCOS第二季task挑战赛如期展开啦因为毕业的问题也是非常遗憾的错过了上一期的task挑战赛这一期一定双倍挑战hhhhhh
Air版本FISCO BCOS采用all-in-one的封装模式将所有模块编译成一个二进制进程一个进程即为一个区块链节点包括网络、共识、接入等所有功能模块适用于初学者入门、功能验证、POC产品。
所以我们这篇文章会更加注重的去讲3.0Air和2.0的区别以便于各位更加轻松的向3.0进行转型 环境Ubuntu20 FISCO BCOS V3.0 rc1
正文
首先咱们先看第一个区别第一个区别最大的地方还是在体验上起链的时候虽然一如既往的使用了build_chain但是增加了许多新的选项参数比如
build_chain 2.X 版本的help 参数 功能 -lIP list[必需]“ip1:nodeNum1ip2:nodeNum2”例如“192.168.0.1:2192.168.0.2:3” -fIP list file[可选]按行拆分每行应为“IP:nodeNum agencyName groupList p2p_portchannel_port-vFISCO-BCOS二进制版本默认为最新的v$Default_versiont-eFISCO-BCOS二进制路径默认从GitHub下载FISCO-BCOS。如果设置-e则在指定位置使用二进制-o输出方向默认值/节点/-p开始端口默认30300202008545表示p2p_Port从30300开始channel_Port从20200开始jsonrpc_Port从8545开始-q列出FISCO-BCOS发布列出FISCO-BCOS发布版本-i主机ip默认127.0.0.1。如果设置-i则侦听0.0.0.0-sDB类型默认RocksDB。选项可以是RocksDB/MySQL/Scalible建议使用RocksDB-ddocker mode默认关闭。如果设置为-d则使用docker构建-c共识算法默认PBFT。选项可以是pbft/rraft/rpbft建议使用pbft-CChain id默认值1。可以设置uint。-g生成国密节点默认否-z生成tar数据包默认否-t证书配置文件默认自动生成-6使用ipv6默认编号。如果设置为-6则将IP视为ipv6-kca根的路径默认自动生成ca.crt和ca.key必须在路径中如果使用中间值则root.crt必须在路径-Ksm crypto ca root的路径默认自动生成gmca.crt和gmca.key必须在路径中如果使用中间路径则gmroot.crt必须在路径-D使用部署模式默认值为false如果设置为-D则使用部署模式目录结构并使tar-Gchannel use sm crypto ssl默认为false仅适用于国密模式-X证书到期时间默认36500天-T启用调试日志默认关闭。如果设置为-T则启用调试日志-RChannel use ecdsa crypto ssl默认值为false。如果设置了-R请为通道ssl使用ecdsa证书否则将使用rsa证书-S启用统计信息默认关闭。如果设置为-S则启用统计信息-F禁用日志自动刷新默认打开。如果设置为-F则禁用日志自动清除-EEnable free_storage_evm默认关闭。如果设置为-E则启用free_storage _evm-h帮助 build_chain 3.X 版本的help 参数 功能 -CCommand[可选]命令现在支持“deploy”和“expand”默认为deploy-ggroup id[可选]设置组id默认值group0-Ichain id[可选]设置chain id默认值chain0-vFISCO-BCOS二进制版本[可选]默认为最新的v3.4.0-lIP list[必需]“ip1:nodeNum1ip2:nodeNum2”例如“192.168.0.1:2192.168.0.2:3”-Lfisco-bcos lightnode exec[可选]fisco-bdos 轻节点的好可执行文件输入“download_binary”下载lightnode二进制文件或指定正确的lightnode二元路径-efisco-bcos exec〔可选〕 fisco-bcosbinary exec -tmtail exec[可选]mtail二进制exec -ooutput dir〔可选〕输出目录默认值/节点-p启动端口〔可选〕默认3030020200表示p2p_port从30300开始rpc_port从20200开始-sSM型号[可选]SM SSL连接与否默认为false-HHSM型号[可选]是否使用HSM硬件安全模块默认为false-cConfig Path〔展开节点时必需〕指定展开节点的路径Config.ini、Config.generion和p2p连接文件nodes.json-dCA cert path[展开节点时必需]展开节点时指定CA证书和私钥所在的路径-Ddocker模式默认关闭如果设置为-D则使用docker构建如果设置为-D则使用docker构建当Auth模式时指定管理员帐户地址。当Auth模式时指定管理员帐户地址。是否使用WASM虚拟机引擎默认为false-RSerial_mode[可选]是否使用串行执行默认为true-k关键页大小[可选]关键页大小默认为10240关键页大小默认为10240节点监视器与否默认值为false节点监视器与否默认值为false展开节点时应指定ip和端口展开节点时应指定ip和端口展开节点时指定prometheus所在的路径-z生成tar包〔可选〕将数据打包到链上生成tar包-nnode-key path[可选]设置要加载nodeid的节点密钥文件的路径-Nnode path[可选]-Nnode path[可选]-umulti-ca-path[可选]-umulti-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这里的返回是UUIDUUID是我们分布式系统中常见的唯一性表示就和物理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.0nodes/
├── 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.0nodes/
├── 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.0try to start node0
try to start node1
try to start node2
try to start node3node3 start successfully pid5947node2 start successfully pid5957node1 start successfully pid5962node0 start successfully pid5951V2.0try to start node0
try to start node1
try to start node2
try to start node3node2 start successfullynode1 start successfullynode0 start successfullynode3 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监听端口为30304RPC监听端口为20204
$ sed -i .bkp s/listen_port30300/listen_port30304/g config/config.ini
$ sed -i .bkp s/listen_port20200/listen_port20204/g config/config.ini
# linux系统设置P2P监听端口为30304RPC监听端口为20204
$ sed -i s/listen_port30300/listen_port30304/g config/config.ini
$ sed -i s/listen_port20200/listen_port20204/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/node4cat ~fisco/nodes/127.0.0.1/node4/conf/node.nodeidcp -rf nodes/127.0.0.1/sdk/* console/conf/#这里可以根据自己的实际情况来改我就不改了直接使用示例文件
cp -rf console/conf/config-example.toml console/conf/config.tomladdObserveraddSealer V2.0curl -#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 node4cp node0/config.ini node0/start.sh node0/stop.sh node4/#修改node4/config.ini。对于[rpc]模块修改channel_listen_port20204和jsonrpc_listen_port8549对于[p2p]模块修改listen_port30304并在node.中增加自身节点信息cp node0/conf/group.1.genesis node0/conf/group.1.ini node4/conf/bash node4/start.shcat node4/conf/node.nodeidgetObserverListaddSealer
这里我们可以发现v3.0的扩容步骤明显多于且复杂于v2.0所以我们这里可以仔细的分析一下里面为什么要这么做
V3.0对于证书的要求明显是更加的严格了引入了2.0所没有的证书文件以及加密方式但是对于轻量级的版本来说又不如pro或者max那版复杂剩下的我们在下一篇中来分享搭建pro以及max版本所体会到的感受