搭建单组4节点联盟链

准备环境

  • 安装依赖
    开发部署工具 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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

heromps

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值