注意:
本系列文章遇到的问题都可以参考查找 官方文档 或 本系列问题总结!
FISCO-BCOS 及 WeBase 问题记录
FISCO-BCOS 官方文档
WeBase 官方文档
本文是在官方提供的安装教程上进行补充,记录本人在安装过程中遇到的问题
一.单群组FISCO BCOS联盟链
先准备一台阿里云CentOS 7.3 64位服务器,如下
阿里云官网链接
本教程为单机上部署一条4节点的FISCO BCOS联盟链
使用开发部署工具build_chain.sh
脚本协助我们在本地快速搭建
(一)环境准备
1.更新所有软件
yum update
使用ubuntu则将yum换为apt,然后apt update
和apt upgrade
Linux yum 指令详细说明
yum update
和yum upgrade
都会对软件进行升级,也都对内核进行升级但是yum update不删除旧包,而yum upgrade删除旧包
在生产环境建议使用yum update,防止因旧软件包依赖而出现问题
2.安装build_chain.sh
依赖
开发部署工具
build_chain.sh
脚本依赖于openssl , curl
CentOS,将下面命令中的apt替换为yum执行即可
macOS执行brew install openssl curl即可
sudo yum install -y openssl curl
如果update了,这里应该显示为 已安装
3.创建操作目录
cd ~ && mkdir -p fisco && cd fisco
4.下载build_chain.sh
脚本
github仓库
curl -LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.6.0/build_chain.sh && chmod u+x build_chain.sh
如果因为网络问题导致长时间无法下载build_chain.sh脚本,可以尝试 码云gitee 提供的下载方式
curl -LO https://gitee.com/FISCO-BCOS/FISCO-BCOS/raw/master/tools/build_chain.sh && chmod u+x build_chain.sh
(二)搭建单群组4节点联盟链
1.打开阿里云控制台,为服务器添加安全组规则
进入官网,在左侧点击实例
继续在左侧点击 本实例安全组
然后在右侧点击 配置规则
点击 手动添加
开放如下端口,点击 保存即可
端口范围、授权对象
30300/30303
20200/20203
8545/8548
0.0.0.0/0
因为后期还需要开放其他许多端口,为了避免麻烦建议直接开放全部端口
协议类型选择全部,授权对象为0.0.0.0/0
2.在fisco目录下执行下面的指令,生成一条单群组4节点的FISCO链
bash build_chain.sh -l "127.0.0.1:4" -p 30300,20200,8545
其中-p选项指定起始端口,分别是p2p_port , channel_port , jsonrpc_port
命令执行成功会输出 All completed
如果执行出错,请检查 nodes/build.log文件中的错误信息
如下为成功信息
==============================================================
Generating CA key...
==============================================================
Generating keys ...
Processing IP:127.0.0.1 Total:4 Agency:agency Groups:1
==============================================================
Generating configurations...
Processing IP:127.0.0.1 Total:4 Agency:agency Groups:1
==============================================================
[INFO] Execute the download_console.sh script in directory named by IP to get FISCO-BCOS console.
e.g. bash /home/ubuntu/fisco/nodes/127.0.0.1/download_console.sh
==============================================================
[INFO] FISCO-BCOS Path : bin/fisco-bcos
[INFO] Start Port : 30300 20200 8545
[INFO] Server IP : 127.0.0.1:4
[INFO] Output Dir : /home/ubuntu/fisco/nodes
[INFO] CA Key Path : /home/ubuntu/fisco/nodes/cert/ca.key
==============================================================
[INFO] All completed. Files in /home/ubuntu/fisco/nodes
(三)启动FISCO BCOS链
1.启动所有节点
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
node3 start successfully
node0 start successfully
node1 start successfully
node2 start successfully
(四)检查进程
1.检查进程是否启动
ps -ef | grep -v grep | grep fisco-bcos
如下则已启动
root 27126 1 1 13:20 pts/0 00:00:03 /root/fisco/nodes/127.0.0.1/node0/../fisco-bcos -c config.ini
root 27128 1 1 13:20 pts/0 00:00:02 /root/fisco/nodes/127.0.0.1/node3/../fisco-bcos -c config.ini
root 27130 1 1 13:20 pts/0 00:00:03 /root/fisco/nodes/127.0.0.1/node2/../fisco-bcos -c config.ini
root 27132 1 1 13:20 pts/0 00:00:03 /root/fisco/nodes/127.0.0.1/node1/../fisco-bcos -c config.ini
(五)检查日志输出
1.查看节点node0链接的节点数
tail -f nodes/127.0.0.1/node0/log/log* | grep connected
之后会不停的输出连接信息如下,可以看到count=3,及链接的节点数为3
info|2020-08-11 13:24:47.924035|[P2P][Service] heartBeat,connected count=3
info|2020-08-11 13:24:57.924127|[P2P][Service] heartBeat,connected count=3
info|2020-08-11 13:25:07.924254|[P2P][Service] heartBeat,connected count=3
info|2020-08-11 13:25:17.924354|[P2P][Service] heartBeat,connected count=3
info|2020-08-11 13:25:27.924435|[P2P][Service] heartBeat,connected count=3
2.结束查看
键入:ctrl+C
3.检查是否在共识
tail -f nodes/127.0.0.1/node0/log/log* | grep +++
之后会不停的输出信息如下,表示共识正常
info|2020-08-11 13:27:34.597694|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=6f781f85...
info|2020-08-11 13:27:38.615141|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=dc6d096b...
info|2020-08-11 13:27:42.634262|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=7675b3f3...
4.结束检查
键入:ctrl+C
至此,单群组FISCO BCOS联盟链搭建完毕!下面开始搭建控制台
二.配置及使用控制台
(一)配置Java环境
1、查看yum仓库中的Java版本
yum -y list java*
2、安装Java-1.8.0的所有相关Java程序
yum -y install java-1.8.0-openjdk*
3、查看Java安装路径
update-alternatives --config java
出现如下信息
There is 1 program that provides 'java'.
Selection Command
-----------------------------------------------
*+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/jre/bin/java)
并且记录如下的Java路径,再Ctrl+Z退出
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64
3、配置Java环境变量
补充
:使用vim 或 vi 对文本进行编辑时
先输入 vim {路径}
比如:vim /etc/profile
- 如果有需要修改的内容,键入
i
(不区分大小写)进入编辑模式
编辑完之后按ESC
键推出编辑模式
键入:wq
对修改的内容进行保存- 如果没有需要修改的内容 直接键入
:q
退出即可
vim /etc/profile
再最后添加内容
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64
CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export JAVA_HOME CLASSPATH PATH
之后保存退出
4、激活配置文件
source /etc/profile
5、检查Java版本
java -version
(二)配置控制台
1、获取控制台并回到fisco目录
cd ~/fisco && curl -#LO https://github.com/FISCO-BCOS/console/releases/download/v1.1.0/download_console.sh && bash download_console.sh
如果下载慢,可以切换gitee仓库下载
cd ~/fisco && curl -LO https://gitee.com/FISCO-BCOS/console/raw/master/tools/download_console.sh && bash download_console.sh
2、拷贝控制台配置文件
若节点未采用默认端口(这里我们采用了默认端口),请将文件中的20200替换成节点对应的channle端口。
cp -n console/conf/applicationContext-sample.xml console/conf/applicationContext.xml
3、配置控制台证书
cp nodes/127.0.0.1/sdk/* console/conf/
(三)启动控制台
1、启动
cd ~/fisco/console && bash start.sh
输出下面信息则启动成功
=============================================================================================
Welcome to FISCO BCOS console(1.0.9)!
Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console.
________ ______ ______ ______ ______ _______ ______ ______ ______
| | \/ \ / \ / \ | \ / \ / \ / \
| $$$$$$$$\$$$$$| $$$$$$| $$$$$$| $$$$$$\ | $$$$$$$| $$$$$$| $$$$$$| $$$$$$\
| $$__ | $$ | $$___\$| $$ \$| $$ | $$ | $$__/ $| $$ \$| $$ | $| $$___\$$
| $$ \ | $$ \$$ \| $$ | $$ | $$ | $$ $| $$ | $$ | $$\$$ \
| $$$$$ | $$ _\$$$$$$| $$ __| $$ | $$ | $$$$$$$| $$ __| $$ | $$_\$$$$$$\
| $$ _| $$_| \__| $| $$__/ | $$__/ $$ | $$__/ $| $$__/ | $$__/ $| \__| $$
| $$ | $$ \\$$ $$\$$ $$\$$ $$ | $$ $$\$$ $$\$$ $$\$$ $$
\$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$
=============================================================================================
(四)使用控制台获取信息
# 获取客户端版本
[group:1]> getNodeVersion
{
"Build Time":"20200430 03:22:53",
"Build Type":"Linux/clang/Release",
"Chain Id":"1",
"FISCO-BCOS Version":"2.4.0",
"Git Branch":"HEAD",
"Git Commit Hash":"0d94de1e0f2dc7ce7d226dbd68001a4b43029cf6",
"Supported Version":"2.4.0"
}
# 获取节点链接信息
[group:1]> getPeers
[
{
"Agency":"agency",
"IPAndPort":"127.0.0.1:30301",
"Node":"node1",
"NodeID":"92ee2162de3cbb35aa9c077a17e8efa465546941d312b458169d58a4b85b32c0f3f50d84012c6db1443045200f858fbadb5f631b648a7eeec8f11179c9503118",
"Topic":[
]
},
{
"Agency":"agency",
"IPAndPort":"127.0.0.1:30303",
"Node":"node3",
"NodeID":"b6996813923b50b7af0349040401d1cc6e994f7744755a73380f494d070ed7cc3ea133b3bfac5c7eef5fc28c69c3b0c5dd503a66f1ef1e77eed4027fe39d90f6",
"Topic":[
]
},
{
"Agency":"agency",
"IPAndPort":"127.0.0.1:30302",
"Node":"node2",
"NodeID":"3b0c9b035fe659208cdf12c1b2bdd4a25b152718a5a02aa0b101a4ce96874dd37e3efed89653be5c85438230a1bb3e00bb810f289b739c4a44fc1604ff205ff1",
"Topic":[
]
}
]
附加测试:部署及调用HelloWorld合约
(一)HelloWorld合约
HelloWorld合约提供两个接口,分别是get()
和set()
,用于获取/设置合约变量name
。合约内容如下:
pragma solidity ^0.4.24;
contract HelloWorld {
string name;
function HelloWorld() {
name = "Hello, World!";
}
function get()constant returns(string) {
return name;
}
function set(string n) {
name = n;
}
}
(二)部署HelloWorld合约
为了方便用户快速体验,HelloWorld合约已经内置于控制台中,位于控制台目录下contracts/solidity/HelloWorld.sol
,参考下面命令部署即可。在部署前还应该需要对合约进行一下编译,那么这里就没有进行编译,而直接部署,结果就是使用浏览器或者WeBASE等查看交易记录的内容时会显示空
。不过目前测试没编译也可以,同样是会产生一部交易,可以查看到。
# 在控制台输入以下指令 部署成功则返回合约地址
[group:1]> deploy HelloWorld
contract address:0xb3c223fc0bf6646959f254ac4e4a7e355b50a344
(三)调用HelloWorld合约
# 查看当前块高
[group:1]> getBlockNumber
1
# 调用get接口获取name变量 此处的合约地址是deploy指令返回的地址
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get
Hello, World!
# 查看当前块高,块高不变,因为get接口不更改账本状态
[group:1]> getBlockNumber
1
# 调用set设置name
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 set "Hello, FISCO BCOS"
0x21dca087cb3e44f44f9b882071ec6ecfcb500361cad36a52d39900ea359d0895
# 再次查看当前块高,块高增加表示已出块,账本状态已更改
[group:1]> getBlockNumber
2
# 调用get接口获取name变量,检查设置是否生效
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get
Hello, FISCO BCOS
# 退出控制台
[group:1]> quit
# 账本状态
[group:1]> getBlockNumber
1
# 调用set设置name
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 set "Hello, FISCO BCOS"
0x21dca087cb3e44f44f9b882071ec6ecfcb500361cad36a52d39900ea359d0895
# 再次查看当前块高,块高增加表示已出块,账本状态已更改
[group:1]> getBlockNumber
2
# 调用get接口获取name变量,检查设置是否生效
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get
Hello, FISCO BCOS
# 退出控制台
[group:1]> quit