注意:
本系列文章遇到的问题都可以参考查找 官方文档 或 本系列问题总结!
FISCO-BCOS 及 WeBase 问题记录
FISCO-BCOS 官方文档
WeBase 官方文档
本文是在官方提供的安装教程上进行补充,记录本人在安装过程中遇到的问题
先准备一台阿里云CentOS 7.3 64位服务器,如下
阿里云官网链接
本教程为单机上部署一条4节点的FISCO BCOS联盟链
使用开发部署工具build_chain.sh
脚本协助我们在本地快速搭建
yum update
使用ubuntu则将yum换为apt,然后apt update
和apt upgrade
Linux yum 指令详细说明
yum update
和yum upgrade
都会对软件进行升级,也都对内核进行升级但是yum update不删除旧包,而yum upgrade删除旧包
在生产环境建议使用yum update,防止因旧软件包依赖而出现问题
build_chain.sh
依赖开发部署工具
build_chain.sh
脚本依赖于openssl , curl
CentOS,将下面命令中的apt替换为yum执行即可
macOS执行brew install openssl curl即可
sudo yum install -y openssl curl
如果update了,这里应该显示为 已安装
cd ~ && mkdir -p fisco && cd fisco
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
进入官网,在左侧点击实例
继续在左侧点击 本实例安全组
然后在右侧点击 配置规则
端口范围、授权对象
30300/30303
20200/20203
8545/8548
0.0.0.0/0
因为后期还需要开放其他许多端口,为了避免麻烦建议直接开放全部端口
协议类型选择全部,授权对象为0.0.0.0/0
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
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
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
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
键入:ctrl+C
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...
键入:ctrl+C
至此,单群组FISCO BCOS联盟链搭建完毕!下面开始搭建控制台
yum -y list java*
yum -y install java-1.8.0-openjdk*
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
补充
:使用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
之后保存退出
source /etc/profile
java -version
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
若节点未采用默认端口(这里我们采用了默认端口),请将文件中的20200替换成节点对应的channle端口。
cp -n console/conf/applicationContext-sample.xml console/conf/applicationContext.xml
cp nodes/127.0.0.1/sdk/* console/conf/
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合约提供两个接口,分别是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合约已经内置于控制台中,位于控制台目录下contracts/solidity/HelloWorld.sol
,参考下面命令部署即可。在部署前还应该需要对合约进行一下编译,那么这里就没有进行编译,而直接部署,结果就是使用浏览器或者WeBASE等查看交易记录的内容时会显示空
。不过目前测试没编译也可以,同样是会产生一部交易,可以查看到。
# 在控制台输入以下指令 部署成功则返回合约地址
[group:1]> deploy HelloWorld
contract address:0xb3c223fc0bf6646959f254ac4e4a7e355b50a344
# 查看当前块高
[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