sudo yum install -y openssl curl
cd ~ && mkdir -p fisco && cd fisco
curl -LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.5.0/build_chain.sh && chmod u+x build_chain.sh
在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
文件中的错误信息。
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
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合约提供两个接口,分别是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
,参考下面命令部署即可。
[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