第一章 单群组FISCO BCOS联盟链的搭建

准备环境

  • 安装依赖
sudo apt 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.1.0/build_chain.sh && chmod u+x build_chain.sh

搭建单群组4节点联盟链

在fisco目录下执行下面的指令,生成一条单群组4节点的FISCO链:

bash build_chain.sh -l "127.0.0.1:4" -p 30300,20200,8545

注:请确保机器的30300-30303,20200-20203,8545-8548端口没有被占用。其中 -p
选项指定起始端口,分别是p2p_port,channel_port,jsonrpc_port,出于安全考虑jsonrpc/channel默认监听127.0.0.1。需要外网访问请添加-i参数。


图片为在虚拟机上部署成功的截图

启动FISCO BCOS链

  • 启动四个节点:
bash nodes/127.0.0.1/start_all.sh

在这里插入图片描述

启动成功会输出类似图上内容的响应。否则请使用netstat -an | grep
tcp检查机器的30300-30303,20200-20203,8545-8548端口是否被占用。

检查进程

  • 检查进程是否启动
ps -ef | grep -v grep | grep fisco-bcos

在这里插入图片描述

正常情况会有类似上图的输出;如果进程数不为4,则进程没有启动(一般是端口被占用导致的)

检查日志输出

  • 查看节点node0链接的节点数:
tail -f nodes/127.0.0.1/node0/log/log* | grep connected

正常情况会不停地输出链接信息,从输出可以看出node0与另外3个节点有链接。在这里插入图片描述

  • 执行下面指令,检查是否在共识
tail -f nodes/127.0.0.1/node0/log/log* | grep +++

正常情况会不停输出++++Generating seal,表示共识正常。
在这里插入图片描述
按crtl+c即可停止输出。

配置及使用控制台

  • 安装openjdk
sudo apt install -y default-jdk
  • 获取控制台并返回到fisco目录
cd ~/fisco && bash <(curl -s https://raw.githubusercontent.com/FISCO-BCOS/console/master/tools/download_console.sh)

启动控制台

  • 启动
cd ~/fisco/console && bash start.sh

在这里插入图片描述

输出上述信息表明启动成功 否则请检查conf/applicationContext.xml中节点端口配置是否正确

使用控制台获取信息

  • 获取客户端版本
    在这里插入图片描述
  • 获取节点信息
    在这里插入图片描述

部署及调用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,参考下面命令部署即可。

# 在控制台输入以下指令 部署成功则返回合约地址
[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

注:由于搭建单群组的fisco-bcos链是入门级,相对于简单,所以本篇基本都是参考fisco-bcos官网的入门教程的,只有在部署控制台那一块有少许代码进行了变动。附上官网的链接:单群组FISCO BCOS联盟链的搭建 后续的几篇文章会讲采用企业级部署工具来搭建一个多群组的链,以及关于如何搭建webase中间件平台。

发布了25 篇原创文章 · 获赞 2 · 访问量 636

猜你喜欢

转载自blog.csdn.net/qq_39200980/article/details/104619580