希望按照本篇文章的步骤,助你一遍搭完 FISCO-BCOS V3。
笔者由于学业原因,最近重新接触联盟链,发现现在的 FISCO-BCOS V3 版本是可以直接使用 Remix 等我们常用的合约开发工具,感觉非常好。
这篇文章我们来搭建单群组区块链(Air版本)并且借助 build_chain 一键建链工具。
希望按照本篇文章的步骤,助你一遍搭完 FISCO-BCOS V3。
sudo apt install -y curl openssl wget
# 创建操作目录
cd ~ && mkdir -p fisco && cd fisco
# 下载建链脚本
curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v3.12.1/build_chain.sh
chmod u+x build_chain.sh
脚本下载好后,如果不指定 fisco-bcos 的二进制文件,那么会在运行脚本的过程中下载。
往往由于网络原因,不能一次性下载好,或者其他原因,需要重新运行脚本,那么又会重新下载一遍。
所以,这里推荐可以先下载好压缩包,然后上传到服务器上,之后指定二进制文件路径来运行脚本。
下载地址:
https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v3.12.1/fisco-bcos-linux-x86_64.tar.gz
解压,可以选择放在 /fisco-bcos/bin 目录下解压:
tar -xvzf fisco-bcos-linux-x86_64.tar.gz
使用以下命令启动脚本,搭建 4 节点:
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200 -e ./fisco-bcos/bin
参数解释:
p 选项
指定节点P2P和RPC服务的监听的起始端口,P2P服务默认以30300为起始端口,RPC服务默认以20200为起始端口。
l 选项
生成节点的IP与对应IP上部署的区块链节点数目,参数格式为 ip1:nodeNum1, ip2:nodeNum2。
在IP为192.168.0.1的机器上部署2个节点,IP为127.0.0.1的机器上部署4个节点的l选项示例如下: 192.168.0.1:2, 127.0.0.1:4
e 选项[Optional]
指定Air版本FISCO BCOS的二进制可执行文件路径,若不指定,则默认拉取最新版本的FISCO BCOS。
结果如下:
[INFO] Use binary ./fisco-bcos
[INFO] Generate ca cert successfully!
Processing IP 127.0.0.1 Total:4
[INFO] Generate ./nodes/127.0.0.1/sdk cert successful!
[INFO] Generate ./nodes/127.0.0.1/node0/conf cert successful!
[INFO] Generate ./nodes/127.0.0.1/node1/conf cert successful!
[INFO] Generate ./nodes/127.0.0.1/node2/conf cert successful!
[INFO] Generate ./nodes/127.0.0.1/node3/conf cert successful!
==============================================================
[INFO] GroupID : group0
[INFO] ChainID : chain0
[INFO] fisco-bcos path : ./fisco-bcos
[INFO] Auth mode : true
[INFO] Admin account : 0x4b6887da11e0d40c5cef05d18f0f8678dd4c0518
[INFO] Start port : 30300 20200
[INFO] Server IP : 127.0.0.1:4
[INFO] SM model : false
[INFO] enable HSM : false
[INFO] nodes.json : 127.0.0.1:30300,127.0.0.1:30301,127.0.0.1:30302,127.0.0.1:30303,
[INFO] Output dir : ./nodes
[INFO] All completed. Files in ./nodes
参考以下文档,我们把 Web3 Chain ID 的配置项打开。
具体操作只需要把其中一个节点的配置文件修改一下。
vim nodes/127.0.0.1/node0/config.ini
[web3_rpc]
enable=true
listen_ip=0.0.0.0
listen_port=8545
thread_count=8
这个时候我们就可以起链了:
bash nodes/127.0.0.1/start_all.sh
启动成功会输出如下信息:
try to start node0
try to start node1
try to start node2
try to start node3
node1 start successfully pid=3412
node0 start successfully pid=3408
node3 start successfully pid=3414
node2 start successfully pid=3416
ps aux |grep -v grep |grep fisco-bcos
如果刚刚搭建使用的是 4 个节点,正常情况下,可以看到 4 个进程。
查看每个节点的网络连接数目,以node0为例:
tail -f nodes/127.0.0.1/node0/log/* |grep -i "heartBeat,connected count"
正常情况下会每间隔10秒输出连接信息,从输出日志可看出node0与另外3个节点均有连接,网络连接正常:
info|2024-12-13 03:24:27.312404|ioService-0x00007f86b0ff6640|[P2PService][Service][METRIC]heartBeat,connected count=3
info|2024-12-13 03:24:37.312534|ioService-0x00007f86b0ff6640|[P2PService][Service][METRIC]heartBeat,connected count=3
info|2024-12-13 03:24:47.312676|ioService-0x00007f86b0ff6640|[P2PService][Service][METRIC]heartBeat,connected count=3
info|2024-12-13 03:24:57.312915|ioService-0x00007f86b0ff6640|[P2PService][Service][METRIC]heartBeat,connected count=3
...
在这里根据官方的建议,安装 oracle jdk 14,否则之后会遇到问题,已经提前踩过坑。
https://www.oracle.com/sg/java/technologies/javase/jdk14-archive-downloads.html
这里附上网上公开分享的 oracle 账号密码:
账号:`83926039@qq.com`
密码:`Oracle0.`
创建安装目录:
sudo mkdir -p /usr/lib/jvm/
解压缩:
sudo tar -xvzf ~/jdk-14.0.2_linux-x64_bin.tar.gz -C /usr/lib/jvm/
将 JAVA_HOME 添加到环境变量中:
sudo vim /etc/profile
添加以下内容(根据实际路径):
export JAVA_HOME=/usr/lib/jvm/jdk-14.0.2
export PATH=$JAVA_HOME/bin:$PATH
保存并退出后,运行以下命令使更改生效:
source /etc/profile
验证是否生效:
java -version
java version "14.0.2" 2020-07-14
Java(TM) SE Runtime Environment (build 14.0.2+12-46)
Java HotSpot(TM) 64-Bit Server VM (build 14.0.2+12-46, mixed mode, sharing)
可以通过脚本下载:
cd ~/fisco
curl -LO https://github.com/FISCO-BCOS/console/releases/download/v3.8.0/download_console.sh
bash download_console.sh
同样,推荐手动下载,再传到服务器上:
下载链接: https://github.com/FISCO-BCOS/console/releases/download/v3.8.0/console.tar.gz
放在 ~/fisco 后解压:
tar -xvzf console.tar.gz
拷贝控制台配置文件
cp -n console/conf/config-example.toml console/conf/config.toml
配置控制台证书
控制台与节点之间默认开启 SSL 连接,控制台需要配置证书才可连接节点。开发建链脚本在生成节点的同时,生成了 SDK 证书,可直接拷贝生成的证书供控制台使用:
cp -r nodes/127.0.0.1/sdk/* console/conf
cd ~/fisco/console && bash start.sh
如果遇到以下报错: the error = [libproviders.so: cannot open shared object file: No such file or directory]
则先退出控制台:
[group0]: /apps> exit
在 openssl 的配置文件(/etc/ssl/openssl.cnf)中找到 openssl_conf = ....,注释掉此行即可。
sudo vim /etc/ssl/openssl.cnf
注释行 openssl_conf = ....
再重新启动控制台。
启动完控制台后,可以选择把余额功能打开:
# 开启总体功能
setSystemConfigByKey feature_balance 1
# 开启Balance预编译功能
setSystemConfigByKey feature_balance_precompiled 1
我们在建链的时候,会默认开启权限治理和随机生成一个 admin 账户地址。
现在我们需要这个地址来进入控制台,以便使用管理员权限才能使用的功能。
当然,在建链的时候可以 -a 来指定 admin 账户,前提是你有对应该地址的私钥文件。
如果第一次搭建,建议还是直接让脚本随机生成一个公私钥,在链的ca目录中,然后再复制到控制台的目录中。
查看治理委员地址:
[group0]: /apps> getCommitteeInfo
---------------------------------------------------------------------------------------------
Governor Address | Weight
index0 : 0x4b6887da11e0d40c5cef05d18f0f8678dd4c0518 | 1
从私钥文件中获取 admin 账户的信息。
bash ~/fisco/console/get_account.sh -k ~/fisco/nodes/ca/accounts/0x4b6887da11e0d40c5cef05d18f0f8678dd4c0518.pem
[INFO] Account Address : 0x4b6887da11e0d40c5cef05d18f0f8678dd4c0518
[INFO] Account privateHex: 0xa0f2e328112274abc5c92e66cc7c38b5b804c330ad7faf1a6ad4f6dbc6aa3ce6
[INFO] Account publicHex : 0x02fe90486403f3b7e3e04a838325bc054af226528695c215d1a296e51a12ffc8501c6951d544ffd3f925e44ba7bd3d1f2286a5fb02c626356891b1a9be33db5a
其中 privateHex 就是我们平时熟悉的私钥,可导入到小狐狸钱包。
为了能在控制台使用治理委员的功能,所以我们需要把账户私钥对放在~/fisco/console/account/ecdsa/
目录下。
sudo cp -r ~/fisco/nodes/ca/accounts/0x4b6887da11e0d40c5cef05d18f0f8678dd4c0518.pem ~/fisco/console/account/ecdsa/
修改私钥文件的权限:
sudo chmod 777 ~/fisco/console/account/ecdsa/0x4b6887da11e0d40c5cef05d18f0f8678dd4c0518.pem
重新进入控制台,输入命令,查看文件中可用的地址:
listAccount
切换账号成 admin :
[group0]: /apps> loadAccount 0x4b6887da11e0d40c5cef05d18f0f8678dd4c0518
Load account 0x4b6887da11e0d40c5cef05d18f0f8678dd4c0518 success!
试试管理员才能使用的增加余额:
[group0]: /apps> addBalance 0x4b6887da11e0d40c5cef05d18f0f8678dd4c0518 10000 ether
addBalance 0x4b6887da11e0d40c5cef05d18f0f8678dd4c0518 10000 ether
transaction hash:0x356e8cb9ee85e78e469838d4f666c53e49f2b6b1251676db3bc4bc0ae8f91da7
add balance 0x4b6887da11e0d40c5cef05d18f0f8678dd4c0518 success. You can use 'getBalance' to check
查看余额:
[group0]: /apps> getBalance 0x4b6887da11e0d40c5cef05d18f0f8678dd4c0518
balance: 10000000000000000000000 wei
官方手册:https://webasedoc.readthedocs.io/zh-cn/latest/docs/WeBASE-Install/developer.html
下载安装包:
wget https://github.com/WeBankBlockchain/WeBASELargeFiles/releases/download/v3.1.1/webase-front.zip
同样,如果遇到网络问题,可以先下载到本地,再上传到服务器。
可以选择放在根目录下:
unzip webase-front.zip
cd webase-front
拷贝sdk证书文件(build_chain的时候生成的):
cp -r ~/fisco/nodes/127.0.0.1/sdk/* ./conf/
服务启停命令:
启动: bash start.sh
停止: bash stop.sh
检查: bash status.sh
启动服务后出现:
===============================================================================================
Server com.webank.webase.front.Application Port 5002 ...PID(82593) [Starting]. Please check message through the log file (default path:./log/).
===============================================================================================
并且查看日志 WeBASE-Front.log,最后出现:
[main] INFO Application() - main run success...
说明启动成功。
之后需要检查浏览器运行情况,可以检查服务:
bash status.sh
===============================================================================================
Server com.webank.webase.front.Application Port 5002 is running PID(82593)
===============================================================================================
使用该链接访问:
http://{deployIP}:5002/WeBASE-Front
到此为止,链、控制台和浏览器就搭建好了。
然后做合约开发的时候,和往常一样,把链的 RPC (http://{deployIP}:8545) 接入,Chain ID 为 20200 配置好就行。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!