FISCO BCOS - 01 - 入门

安装

本章介绍FISCO BCOS所需的必要安装和配置。本章通过在单机上部署一条4节点的FISCO BCOS联盟链,帮助用户掌握FISCO BCOS部署流程。请根据这里使用支持的硬件和平台操作。

安装FISCOBCOS:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/installation.html

国密:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/account.html

单群组**FISCO BCOS**联盟链的搭建

准备环境

安装centos依赖

1
2
sudo yum install -y openssl openssl-devel

1

1
2
cd ~ && mkdir -p fisco && cd fisco

​ 下载build_chain.sh脚本

1
2
3

curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.6.0/build_chain.sh && chmod u+x build_chain.sh

2

搭建单群组**4**节点联盟链

在fisco目录下执行下面的指令,生成一条单群组4节点的FISCO链。 请确保机器的3030030303,2020020203,8545~8548端口没有被占用。

1
2
3
4
5
6
7
8
9
10
**注解**

> 国密版本请执行 bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -g -G

> 其中-g表示生成国密配置,-G表示使用国密SSL连接

> web3sdk已经支持国密SSL,如果使用web3sdk建议带上-G选项使用国密SSL

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

3

注解

其中-p选项指定起始端口,分别是p2p_port,channel_port,jsonrpc_port

出于安全性和易用性考虑,v2.3.0版本最新配置将listen_ip拆分成jsonrpc_listen_ip和channel_listen_ip,但仍保留对listen_ip的解析功能,详细请参考 这里

为便于开发和体验,channel_listen_ip参考配置是 0.0.0.0 ,出于安全考虑,请根据实际业务网络情况,修改为安全的监听地址,如:内网IP或特定的外网IP

命令执行成功会输出All completed。如果执行出错,请检查nodes/build.log文件中的错误信息。

启动**FISCO BCOS**

启动所有节点

1
2
bash nodes/127.0.0.1/start_all.sh

3.1

启动成功会输出类似下面内容的响应。否则请使用netstat -an | grep tcp检查机器的3030030303,2020020203,8545~8548端口是否被占用。

检查进程

检查进程是否启动

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

1
ps -ef | grep -v grep | grep fisco-bcos

4

检查日志输出

如下,查看节点node0链接的节点数

1
tail -f nodes/127.0.0.1/node0/log/log*  | grep connected

正常情况会不停地输出链接信息,从输出可以看出node0与另外3个节点有链接。

5

执行下面指令,检查是否在共识

1
tail -f nodes/127.0.0.1/node0/log/log*  | grep +++

正常情况会不停输出++++Generating seal,表示共识正常。

6

配置及使用控制台

重要

控制台1.x 系列基于 Web3SDK 实现,控制台2.6之后 基于 Java SDK 实现,最新版本控制台基于 Java SDK 实现

2.6及其以上版本控制台使用文档请 参考这里 ,1.x版本控制台使用文档请 参考这里

可通过命令 ./start.sh –version 查看当前控制台版本

基于 Web3SDK 开发应用时将 solidity 代码转换为 java 代码时,必须使用 1.x 版本控制台,具体请参考 这里

在控制台链接FISCO BCOS节点,实现查询区块链状态、部署调用合约等功能,能够快速获取到所需要的信息。2.6版本控制台指令详细介绍参考这里,1.x版本控制台指令详细介绍参考这里

准备依赖

安装java

#centos系统安装java

1
sudo yum install -y java java-devel

获取控制台并回到fisco目录

1
cd ~/fisco && curl -#LO https://github.com/FISCO-BCOS/console/releases/download/v2.6.1/download_console.sh && bash download_console.sh

7

注解

如果因为网络问题导致长时间无法下载,请尝试 cd ~/fisco && curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master/tools/download_console.sh

拷贝控制台配置文件

若节点未采用默认端口,请将文件中的20200替换成节点对应的channel端口。

# 最新版本控制台使用如下命令拷贝配置文件

1
cp -n console/conf/config-example.toml console/conf/config.toml

配置控制台证书

注解

使用**1.x**版本控制台时:

1
2
3
4

搭建国密版时,如果使用国密SSL请执行 cp nodes/127.0.0.1/sdk/gm/* console/conf/

搭建国密版时,请修改 applicationContext.xml 中 encryptType 修改为1
1
cp -r nodes/127.0.0.1/sdk/* console/conf/

启动控制台

启动

1
cd ~/fisco/console && bash start.sh

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

8

使用控制台获取信息

# 获取客户端版本

1
[group:1]> getNodeVersion

# 获取节点链接信息

1
[group:1]> getPeers

9

部署及调用**HelloWorld**合约

HelloWorld合约提供两个接口,分别是get()和set(),用于获取/设置合约变量name。合约内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

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

# 在控制台输入以下指令 部署成功则返回合约地址

1
[group:1]> deploy HelloWorld

10

调用**HelloWorld**合约

# 查看当前块高

1
[group:1]> getBlockNumber

# 调用get接口获取name变量 此处的合约地址是deploy指令返回的地址

1
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get

11

# 查看当前块高,块高不变,因为get接口不更改账本状态

1
[group:1]> getBlockNumber

# 调用set设置**name

1
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 set "Hello, FISCO BCOS"

# 再次查看当前块高,块高增加表示已出块,账本状态已更改

1
[group:1]> getBlockNumber

# 调用get接口获取name变量,检查设置是否生效

1
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get

12

# 退出控制台

1
[group:1]> quit
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

请我喝杯咖啡吧~

支付宝
微信