准备环境
- 安装依赖
开发部署工具 build_chain.sh脚本依赖于openssl, curl,使用下面的指令安装。
sudo yum install -y openssl curl
- 创建操作目录
cd ~ && mkdir -p fisco && cd fisco
- 下载 build_chain.sh脚本
curl -LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.5.0/build_chain.sh && chmod u+x build_chain.sh
搭建单组4节点联盟链
在fisco目录下执行下面的指令,生成一条单群组4节点的FISCO链。 请确保机器的30300~30303,20200~20203,8545~8548
端口没有被占用。
bash build_chain.sh -l "127.0.0.1:4" -p 30300,20200,8545 -v 2.5.0
命令执行成功会输出All completed
。如果执行出错,请检查nodes/build.log
文件中的错误信息。
启动FISCO BCOS链
- 启动所有节点
bash nodes/127.0.0.1/start_all.sh
启动成功会输出类似下面内容的响应。否则请使用netstat -an | grep tcp
检查机器的30300~30303,20200~20203,8545~8548
端口是否被占用。
try to start node0
try to start node1
try to start node2
try to start node3
node1 start successfully
node0 start successfully
node3 start successfully
node2 start successfully
检查进程
- 检查进程是否启动
ps -ef | grep -v grep | grep fisco-bcos
正常情况会有类似下面的输出; 如果进程数不为4,则进程没有启动(一般是端口被占用导致的)
root 3742 1 0 10:06 pts/0 00:00:00 /root/fisco/nodes/127.0.0.1/node0/../fisco-bcos -c config.ini
root 3744 1 0 10:06 pts/0 00:00:00 /root/fisco/nodes/127.0.0.1/node1/../fisco-bcos -c config.ini
root 3746 1 0 10:06 pts/0 00:00:00 /root/fisco/nodes/127.0.0.1/node2/../fisco-bcos -c config.ini
root 3748 1 0 10:06 pts/0 00:00:00 /root/fisco/nodes/127.0.0.1/node3/../fisco-bcos -c config.ini
检查日志输出
- 如下,查看节点node0链接的节点数
tail -f nodes/127.0.0.1/node0/log/log* | grep connected
正常情况会不停地输出链接信息,从输出可以看出node0与另外3个节点有链接。
info|2020-07-06 10:11:05.069651|[P2P][Service] heartBeat,connected count=3
info|2020-07-06 10:11:15.069711|[P2P][Service] heartBeat,connected count=3
info|2020-07-06 10:11:25.069763|[P2P][Service] heartBeat,connected count=3
info|2020-07-06 10:11:35.069817|[P2P][Service] heartBeat,connected count=3
- 执行下面的命令,检查是否存在共识
tail -f nodes/127.0.0.1/node0/log/log* | grep +++
正常情况会不停输出++++Generating seal
,表示共识正常。
info|2020-07-06 10:13:02.109280|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=3a836945...
info|2020-07-06 10:13:06.135305|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=7adac73e...
info|2020-07-06 10:13:10.199725|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=980cf77e...
info|2020-07-06 10:13:14.227869|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=beee252a...
info|2020-07-06 10:13:18.255894|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=1ece4a08...
配置及使用控制台
在控制台通过Web3SDK链接FISCO BCOS节点,实现查询区块链状态、部署调用合约等功能,能够快速获取到所需要的信息。
准备依赖
-
java环境配置
-
创建文件夹,用来安装jdk,使用
mkdir software
实现 -
解压jdk ,
tar -zxvf jdk-8u144-linux-x64.tar.gz
-
查看jdk路径,我这里为
/root/software/jdk1.8.0_144
-
配置java环境,编辑/etc/profile文件
vim /etc/profile
,在最后一行添加环境变量# 配置java环境 export JAVA_HOME=/root/software/jdk1.8.0_144 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
-
使配置文件生效,
source /etc/profile
-
查询java版本,
java -version
-
-
获取控制台并返回fisco目录
cd ~/fisco && curl -LO https://github.com/FISCO-BCOS/console/releases/download/v1.0.10/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
输出下述信息表明启动成功 否则请检查conf/applicationContext.xml中节点端口配置是否正确
=============================================================================================
Welcome to FISCO BCOS console(1.0.10)!
Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console.
________ ______ ______ ______ ______ _______ ______ ______ ______
| | \/ \ / \ / \ | \ / \ / \ / \
| $$$$$$$$\$$$$$| $$$$$$| $$$$$$| $$$$$$\ | $$$$$$$| $$$$$$| $$$$$$| $$$$$$\
| $$__ | $$ | $$___\$| $$ \$| $$ | $$ | $$__/ $| $$ \$| $$ | $| $$___\$$
| $$ \ | $$ \$$ \| $$ | $$ | $$ | $$ $| $$ | $$ | $$\$$ \
| $$$$$ | $$ _\$$$$$$| $$ __| $$ | $$ | $$$$$$$| $$ __| $$ | $$_\$$$$$$\
| $$ _| $$_| \__| $| $$__/ | $$__/ $$ | $$__/ $| $$__/ | $$__/ $| \__| $$
| $$ | $$ \\$$ $$\$$ $$\$$ $$ | $$ $$\$$ $$\$$ $$\$$ $$
\$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$
=============================================================================================
[group:1]>
控制台启动失败,参考 附录:JavaSDK启动失败场景
使用控制台获取信息
- 获取用户版本信息
[group:1]> getNodeVersion
{
"Build Time":"20200619 06:32:10",
"Build Type":"Linux/clang/Release",
"Chain Id":"1",
"FISCO-BCOS Version":"2.5.0",
"Git Branch":"HEAD",
"Git Commit Hash":"72c6d770e5cf0f4197162d0e26005ec03d30fcfe",
"Supported Version":"2.5.0"
}
- 获取节点链接信息
[group:1]> getPeers
[
{
"Agency":"agency",
"IPAndPort":"127.0.0.1:30302",
"Node":"node2",
"NodeID":"a23b7714730cfb998730bb1a12e51dadd6dba21ff55fef1e6acd8640cdffeeedf940cc63e921762fe21cf692dbc655807e7b71085a5c6b4a8cdb0ff991daa649",
"Topic":[
]
},
{
"Agency":"agency",
"IPAndPort":"127.0.0.1:30301",
"Node":"node1",
"NodeID":"d28e8bb924349f0a9d8360ff8e614d81d8b613add15488c8da40ce5fcd4d5d00adde05400819b599352f952550ddf2f724c8d9f1a4181ba2f44e3340aebc204b",
"Topic":[
]
},
{
"Agency":"agency",
"IPAndPort":"127.0.0.1:30303",
"Node":"node3",
"NodeID":"6ea529eb9918a98f594498819b826c2be802a7129a9ec702ab9b75d5179cca7c925421dca460045588e0bec64ab5835672830e94ae50e3810490c03c18602e3a",
"Topic":[
]
}
]
部署以及调用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
,参考下面命令部署即可。
[group:1]> deploy HelloWorld
contract address: 0x2ffb1a6af30745c280174b7e34df3bd64b05bcc0
调用HelloWorld合约
[group:1]> getBlockNumber
1
调用get接口获取name变量 此处合约地址是deploy指令返回的地址
[group:1]> call HelloWorld 0x89e7256e74781e721826011766f7fc059b12a272 get
Hello, World!
查看当前块高,块高不变,get接口不改变账本状态
[group:1]> getBlockNumber
1
调用set设置name
[group:1]> call HelloWorld 0x89e7256e74781e721826011766f7fc059b12a272 set "Hello, FISCO BCOS"
transaction hash: 0xb90d9f79f8b1a9c8ecb4118171644569c8c6413d8168846d18300496d7bbde71
调用get接口获取name变量 ,检查是否生效
[group:1]> call HelloWorld 0x89e7256e74781e721826011766f7fc059b12a272 get
Hello, FISCO BCOS
再次查看块高,块高增加表示已经出块,账本状态已更改
[group:1]> getBlockNumber
2
退出控制台
[group:1]> quit