搭建单组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
<think>好的,我现在需要帮助用户了解如何搭建FISCO BCOS4节点联盟链。首先,我应该回忆一下之前用户提供的引用内容,看看里面有没有相关的步骤。用户给出了四个引用,其中引用1、3、4都提到了搭建4节点联盟链的具体步骤。 首先,用户的问题是关于搭建教程的,所以需要分步骤说明。引用4中的步骤比较详细,包括安装依赖、下载脚本、执行构建命令、启动节点等。这可能是一个主要参考。同时,引用3提到使用build_chain.sh脚本并指定参数,比如-l 127.0.0.1:4和端口号,这应该也是关键步骤。 接下来,我需要将这些信息整理成一个清晰的流程。可能需要按照安装依赖、创建目录、下载脚本、构建联盟链、启动节点、验证进程和日志的顺序来组织。同时,要注意每个步骤中的具体命令是否正确,比如安装依赖是否需要sudo权限,以及脚本的下载地址是否正确。引用4中提到使用curl下载build_chain.sh,并赋予执行权限,这些都是必要的步骤。 另外,用户示例中的代码块使用了Python,但这里需要的是Shell命令,所以要确保命令的正确性。例如,在安装依赖时,引用4使用的是apt安装openssl和curl,而引用1可能是在mac上,但用户的问题可能更关注Linux环境?不过用户提供的引用中有mac的部署,但可能教程需要通用性。可能需要指出不同系统的依赖安装,但根据引用4,教程可能以Linux为例。 还要注意端口号的设置,如-p参数后的30300,20200,8545,这些端口是否冲突,或者是否需要用户自行调整。不过按照教程,可能默认使用这些端口,用户只需按步骤执行即可。 启动节点后,检查进程和日志的步骤也很重要,确保节点正常运行。例如,检查进程是否存在,查看日志中的连接情况,如引用4中的tail命令。 最后,生成相关问题需要考虑用户可能遇到的后续问题,比如多服务器部署、配置文件修改、常见错误处理等。需要根据引用内容中的信息,比如引用2提到准备环境,引用3和4的具体步骤,来生成相关问题。 在回答过程中,还要注意使用正确的LaTeX格式,虽然用户的问题中可能不涉及数学公式,但如果有变量或代码,需要正确使用格式。例如,文件名或路径可能需要用代码块表示,如`build_chain.sh`。 总结一下,回答的结构应该是分步骤的教程,每个步骤详细说明,并附上对应的命令示例,最后生成相关问题。需要确保引用的正确标注,例如引用[^4]对应步骤中的具体操作。同时,检查是否有遗漏的步骤,比如环境准备或权限设置,确保用户能够顺利按照教程操作。</think>### FISCO BCOS 4节点联盟链搭建教程 以下是基于Linux系统(mac系统依赖安装略有不同)的单机4节点联盟链搭建流程: --- #### **1. 安装依赖** 执行以下命令安装必要依赖: ```bash sudo apt install -y openssl curl ``` mac系统可替换为:`brew install openssl curl` --- #### **2. 下载构建脚本** 创建操作目录并下载官方脚本: ```bash mkdir -p ~/fisco && cd ~/fisco curl -LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.11.0/build_chain.sh chmod u+x build_chain.sh # 添加执行权限 ``` --- #### **3. 构建节点配置** 执行脚本生成4节点配置(单机部署): ```bash bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 ``` - `-l 127.0.0.1:4`:表示本地部署4节点 - `-p`:指定P2P、RPC、Channel端口段[^3] --- #### **4. 启动所有节点** 进入节点目录并启动: ```bash cd ~/fisco/nodes/127.0.0.1 && bash start_all.sh ``` --- #### **5. 验证节点状态** - **检查进程**: ```bash ps -ef | grep fisco-bcos ``` 应看到4个`fisco-bcos`进程[^4] - **查看节点连接日志**: ```bash tail -f nodes/127.0.0.1/node0/log/log* | grep "connected" ``` 正常会输出`connected to 1 peers` --- #### **6. 测试链功能** 使用控制台发送交易测试(需单独部署控制台): ```bash # 示例命令(需提前配置控制台) getNodeVersion ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

heromps

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

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

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

打赏作者

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

抵扣说明:

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

余额充值