Allureluoli 二月FEBRUARY

区块链国赛笔记 01|FISCO BCOS 建链、端口与控制台配置

先把建链脚本、节点目录和控制台的关系弄清楚,再检查端口与证书。这里保留了当时使用的不同部署模式参数,实际操作时要先确认脚本版本。

本文由个人备赛旧笔记整理,整理日期为 2026-11-03。命令、输出和测试记录属于当时的实验环境;本文未重新搭建整套环境验证。

阅读前先确认

FISCO BCOS 2.x、3.x 以及 Air、Pro 的参数不能混用。以手头脚本的 bash build_chain.sh -h 为准,控制台和 SDK 也要匹配。

FISCO 1

FISCO BCOS 的组成

build_chain.sh 是节点的部署工具 会自动下载节点部署文件和相应的.sh 脚本

download_console.sh 会为我们下载控制台的压缩包并解压

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

检查证书内容确认证书匹配

1
2
3
4
┌──(cure㉿LAPTOP-CMAM5D0J)-[~/test_2/console]
└─$ cat conf/ca.crt
-----BEGIN CERTIFICATE-----
MIIDHTCCAgWgAwIBAgIUDCLqjjN
1
2
3
4
┌──(cure㉿LAPTOP-CMAM5D0J)-[~/test_2/fisco/nodes/127.0.0.1]
└─$ cat sdk/ca.crt
-----BEGIN CERTIFICATE-----
MIIDHTCCAgWgAwIBAgIUDCLqjjNQug

控制台的配置文件 conf/config.toml

中文注释版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
[cryptoMaterial]
certPath = "conf" # 证书路径

# 以下配置如果注释掉,默认使用certPath路径
# caCert = "conf/ca.crt" # CA证书文件路径
# 如果连接国密节点,默认CA证书路径为 ${certPath}/gm/gmca.crt

# sslCert = "conf/sdk.crt" # SSL证书文件路径
# 如果连接国密节点,默认SDK证书路径为 ${certPath}/gm/gmsdk.crt

# sslKey = "conf/sdk.key" # SSL密钥文件路径
# 如果连接国密节点,默认SDK私钥路径为 ${certPath}/gm/gmsdk.key

# enSslCert = "conf/gm/gmensdk.crt" # 国密加密证书文件路径
# 默认从 ${certPath}/gm/gmensdk.crt 加载国密SSL加密证书

# enSslKey = "conf/gm/gmensdk.key" # 国密SSL证书文件路径
# 默认从 ${certPath}/gm/gmensdk.key 加载国密SSL加密私钥

[network]
peers = ["127.0.0.1:20200", "127.0.0.1:20201"] # 要连接的节点列表

# 将私有主题配置为主题消息发送者
# [[amop]]
# topicName = "PrivateTopic1"
# publicKeys = [ "conf/amop/consumer_public_key_1.pem" ] # 您想要向其发送此主题AMOP消息的节点的公钥

# 将私有主题配置为主题订阅者
# [[amop]]
# topicName = "PrivateTopic2"
# privateKey = "conf/amop/consumer_private_key.p12" # 用于订阅者验证的私钥
# password = "123456"

[account]
keyStoreDir = "account" # 加载/存储账户文件的目录,默认为"account"
# accountFilePath = "" # 账户文件路径(默认从keyStoreDir指定的路径加载)
accountFileFormat = "pem" # 账户文件的存储格式(默认为"pem",可选"p12")

# accountAddress = "" # 交易发送账户地址
# 默认为随机生成的账户
# 随机生成的账户存储在keyStoreDir指定的路径中

# password = "" # 用于加载账户文件的密码

[threadPool]
# channelProcessorThreadSize = "16" # 处理通道回调的线程池大小
# 默认为CPU核心数

# receiptProcessorThreadSize = "16" # 处理交易回执通知的线程池大小
# 默认为CPU核心数

maxBlockingQueueSize = "102400" # 线程池的最大阻塞队列大小

国密配置

FISCO 2

命令解析

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

这是启动构建区块链节点脚本的命令参数解析如下

  • 设置了IP为本地主机地址
    • 4代表启动四个节点
    • 三个端口是三个起始端口
    • 分别是
      • P2P网络起始端口
      • RPC/Channel端口
      • JSON/RPC端口

命令后的端口分配

1
2
3
4
节点1: 127.0.0.1:30300, 127.0.0.1:20200, 127.0.0.1:8545
节点2: 127.0.0.1:30301, 127.0.0.1:20201, 127.0.0.1:8546
节点3: 127.0.0.1:30302, 127.0.0.1:20202, 127.0.0.1:8547
节点4: 127.0.0.1:30303, 127.0.0.1:20203, 127.0.0.1:8548

注意事项

JavaSDK连接节点存在失败的可能 排查思路

  • 解决方法摘自官方issue:

Important: 前置说明

1. jdk版本支持

JavaSDK原则上支持从jdk 1.8到jdk 15的OracleJDK和OpenJDK,但中间有部分版本禁用或者不支持secp256k1曲线,会导致sdk与节点之间握手失败,请首先检查当前使用的jdk是否支持secp256k1曲线,目前已经覆盖测试的jdk版本如下,推荐大家使用:

  • OracleJDK:
    • 1.8.0_141
    • 1.8.0_202
    • 11.0.2
    • 14.0.2
    • 15.0.2
  • OpenJDK:
    • 11.0.2
    • 14.0.2
    • 15.0.2

踩坑

fisco 2.x版本启动console 有SSL问题

3.x版本没有这个问题 溯源四小时无结果,默认2.x版本被淘汰

  • 尝试:
    • CA证书添加到jre信任
    • 更换多个jdk版本
    • 更换操作系统

FISCO 3

这些是合约存放目录存放有大量的合约

1
2
3
4
5
┌──(cure㉿LAPTOP-CMAM5D0J)-[~/fisco/console/contracts/solidity]
└─$ ls
Asset.sol CastTest.sol DelegateCallTest.sol EventSubDemo.sol KVTableTest.sol Table.sol TableTestV320.sol
Cast.sol Crypto.sol EntryWrapper.sol HelloWorld.sol ShaTest.sol TableTest.sol TableV320.sol

FISCI build chain

FISCO BCOS 一键脚本

FISCO BCOS提供了build_chain.sh脚本帮助用户快速搭建FISCO BCOS联盟链。

通过脚本 + 参数我们就可以使用其中的功能

例子:

1
bash build_chain.sh -C expand_node -V pro -o expand_node -c ./config.toml

通用参数(适用于 air 模式)

参数 说明
-C <Command> 【可选】命令类型,当前支持 deploy(部署)和 expand(扩展),默认为 deploy
-g <group id> 【可选】群组ID,默认为 group0
-I <chain id> 【可选】链ID,默认为 chain0
-v <FISCO-BCOS binary version> 【可选】FISCO-BCOS二进制版本,默认为最新版 v3.10.0
-l <IP list> 【必需】IP列表,格式为 "ip1:节点数1,ip2:节点数2",例如:"192.168.0.1:2,192.168.0.2:3"
-L <fisco bcos lightnode exec> 【可选】轻节点可执行文件路径,输入 download_binary 下载或指定正确的轻节点二进制路径
-e <fisco-bcos exec> 【可选】fisco-bcos 二进制可执行文件路径
-t <mtail exec> 【可选】mtail 二进制可执行文件路径
-o <output dir> 【可选】输出目录,默认为 ./nodes
-p <Start port> 【可选】起始端口,默认为 30300,20200(即 p2p_port 从 30300 开始,rpc_port 从 20200 开始)
-s <SM model> 【可选】是否启用国密SSL连接,默认为 false
-H <HSM model> 【可选】是否使用硬件安全模块(HSM),默认为 false
-c <Config Path> 【扩展节点时必需】指定扩展节点的配置文件路径(需包含 config.ini、config.genesis 和 nodes.json)
-d <CA cert path> 【扩展节点时必需】扩展节点时指定CA证书和私钥的路径
-D <docker mode> 【可选】是否启用Docker模式,默认为关闭。设置 -D 时使用Docker构建
-E <Enable debug log> 【可选】是否启用调试日志,默认为关闭。设置 -E 时启用
-a <Auth account> 【可选】认证模式下指定管理员账户地址
-w <WASM mode> 【可选】是否使用WASM虚拟机引擎,默认为 false
-R <Serial_mode> 【可选】是否使用串行执行,默认为 true
-k <key page size> 【可选】键值分页大小,默认为 10240
-m <fisco-bcos monitor> 【可选】是否启用节点监控,默认为 false
-i <fisco-bcos monitor ip/port> 【可选】扩展节点时需指定监控服务的IP和端口
-M <fisco-bcos monitor> 【可选】扩展节点时指定Prometheus监控工具的路径
-z <Generate tar packet> 【可选】打包链上数据生成tar包
-n <node key path> 【可选】设置节点密钥文件路径以加载节点ID
-N <node path> 【可选】设置需修改为多CA模式的节点路径
-u <multi ca path> 【可选】设置多CA模式下其他CA的路径
-6 <ipv6 mode> 【可选】是否启用IPv6模式(默认监听 ::),默认为 false
-T <Consensus Algorithm> 【可选】共识算法,默认为 PBFT,可选 pbft / rpbft(推荐 pbft)
-h 显示帮助信息

Pro/Max 模式专用参数

参数 说明
-C <Command> 【可选】命令类型,当前仅支持 deploy(部署),默认为 deploy
-g <group id> 【可选】群组ID,默认为 group0
-I <chain id> 【可选】链ID,默认为 chain0
-V <chain version> 【可选】链版本,支持 air、pro、max,默认为 air
-l <IP list> 【必需】IP列表,格式同通用模式
-p <Start port> 【可选】起始端口,默认为 30300,20200,40400,2379(即 p2p_port 从 30300 开始,rpc_port 从 20200 开始,tars_port 从 40400 开始,tikv_port 默认为 2379)
-e <service binary path> 【可选】RPC网关节点服务的二进制路径
-y <service binary download type> 【可选】RPC网关节点服务二进制下载类型,默认为 cdn
-v <service binary version> 【可选】服务二进制版本,默认为最新版 v3.10.0
-r <service binary download path> 【可选】服务二进制下载路径,默认为 binary
-c <Config Path> 【可选】指定部署节点的 config.toml 配置文件路径
-t <deploy type> 【可选】部署类型,支持 rpc、gateway、node、all,默认为 all
-o <output dir> 【可选】输出目录,默认为 generated
-s <SM model> 【可选】是否启用国密SSL连接,默认为 false
-h 显示帮助信息

复现时的自查

  • 记录自己实际使用的版本、配置和缺失依赖。
  • 对照本篇关键步骤,保存命令或调用结果,并解释结果代表什么。
  • 对失败或与原记录不一致的情况保留错误信息,不把历史输出当成自己的验证结果。

返回系列导读 · 下一篇

评论COMMENTS