Allureluoli 二月FEBRUARY

区块链国赛笔记 02|FISCO BCOS 控制台命令与节点状态检查

控制台既是合约交互入口,也是确认群组、节点和共识状态的工具。这篇把常用命令和原始状态检查记录放在一起。

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

阅读前先确认

进程存在只证明程序启动;还要检查连接、群组成员、块高及交易执行结果。无交易时块高不增长,不能单凭这一点判定故障。

FISCO CONSOLE

CONSOLE 是官方开发的控制台

1.x版本基于 WEB3SDK实现 2.6往后版本都是使用JAVA SDK实现

但是JAVA版本很抽象 上一个文档有讲 官方推荐使用java 14

基本命令 (Basic Command)

  • help([-h, -help, --h, --H, --help, -H, h]) 提供帮助信息
  • clearNodeName 清空默认节点名称为空
  • quit([quit, q, exit]) 退出控制台
  • getNodeName 获取此客户端中的默认节点名称
  • switch([s]) 按名称切换到特定群组
  • setNodeName 设置发送请求的默认节点名称

合约操作 (Contract Operation)

  • call 通过函数和参数调用合约
  • deploy 在区块链上部署合约
  • getCode 查询给定地址的代码
  • getDeployLog 查询已部署合约的日志
  • listAbi 列出合约的函数和事件信息
  • listDeployContractAddress 列出指定合约的合约地址
  • transfer 将代币转移到指定地址

区块链状态查询 (Blockchain Status Query)

  • getBlockByHash 通过哈希查询区块信息
  • getBlockByNumber 通过区块号查询区块信息
  • getBlockHashByNumber 通过区块号查询区块哈希
  • getBlockHeaderByHash 通过哈希查询区块头信息
  • getBlockHeaderByNumber 通过区块号查询区块头信息
  • getBlockNumber 查询最新区块的编号(也就是块高 区块链编号代表区块链高度)
  • getPeers 查询当前连接到客户端的对等节点
  • getPendingTxSize 查询待处理交易的大小
  • getSyncStatus 查询同步状态
  • getSystemConfigByKey 通过键查询系统配置值
  • getTotalTransactionCount 查询总交易数量
  • getTransactionByHash 通过交易哈希查询交易信息
  • getTransactionByHashWithProof 通过交易哈希查询交易和交易证明
  • getTransactionReceipt 通过交易哈希查询交易收据
  • getTransactionReceiptByHashWithProof 通过交易哈希查询收据和交易收据证明
  • setSystemConfigByKey 通过键设置系统配置值

共识操作 (Consensus Operation)

  • addObserver 添加观察者节点
  • addSealer 添加共识节点
  • getCandidateList 查询候选共识节点的节点ID列表
  • getConsensusStatus 查询共识状态
  • getObserverList 查询观察者节点的节点ID列表
  • getPbftView 查询节点的PBFT视图
  • getSealerList 查询共识节点的节点ID列表
  • removeNode 移除节点
  • setConsensusWeight 为指定节点设置共识权重

BFS 操作 (BFS Operation)

  • cd 更改目录到给定路径
  • fixBFS 修复指定版本的BFS错误
  • ln 创建链接以访问合约
  • ls 列出给定路径中的资源
  • mkdir 在给定路径中创建目录
  • pwd 显示工作目录名称的绝对路径
  • tree 以树状格式列出目录内容

CRUD 合约操作 (CRUD Contract Operation)

  • alter 通过SQL更改表列
  • create 通过SQL创建表
  • delete 通过SQL删除记录
  • desc 描述表信息
  • insert 通过SQL插入记录
  • select 通过SQL选择记录
  • update 通过SQL更新记录

群组信息查询 (Group Info Query)

  • getGroupInfo 查询当前群组信息
  • getGroupInfoList 获取所有群组信息
  • getGroupList 列出所有群组列表
  • getGroupNodeInfo 获取群组节点信息
  • getGroupPeers 列出所有群组对等节点

权限操作 (Authority Operation)

  • abolishAccount 废除特定账户
  • abolishContract 废除特定合约
  • addObserverProposal 向委员会创建提案,尝试添加新的共识观察者节点
  • addSealerProposal 向委员会创建提案,尝试添加新的共识节点
  • checkDeployAuth 检查账户是否具有部署权限
  • checkMethodAuth 检查特定合约中账户的方法访问控制列表(ACL)
  • closeDeployAuthProposal 向委员会创建提案,尝试关闭特定账户的部署ACL
  • closeMethodAuth 关闭特定合约中账户的方法ACL
  • freezeAccount 冻结特定账户
  • freezeContract 冻结特定合约
  • getAccountStatus 获取账户状态
  • getCommitteeInfo 获取委员会信息
  • getContractAdmin 从特定合约获取管理员地址
  • getContractStatus 获取合约状态
  • getDeployAuth 全局获取部署ACL策略
  • getLatestProposal 获取最新提案信息
  • getMethodAuth 获取特定合约中账户的方法ACL
  • getProposalInfo 从委员会获取特定提案信息或提案信息列表
  • initAuth 初始化委员会合约系统
  • openDeployAuthProposal 向委员会创建提案,尝试为特定账户开启部署ACL
  • openMethodAuth 为特定合约中的账户开启方法ACL
  • removeNodeProposal 向委员会创建提案,尝试移除共识节点
  • resetAdminProposal 向委员会创建提案,尝试重置特定合约的管理员
  • revokeProposal 从委员会撤销特定提案
  • setConsensusNodeWeightProposal 向委员会创建提案,尝试设置共识节点的权重
  • setDeployAuthTypeProposal 向委员会创建提案,尝试全局设置部署ACL类型
  • setMethodAuth 在特定合约中设置方法ACL类型
  • setRateProposal 向委员会创建提案,尝试更新委员会投票率
  • setSysConfigProposal 向委员会创建提案,尝试设置系统配置
  • unfreezeAccount 解冻特定账户
  • unfreezeContract 解冻特定合约
  • updateGovernorProposal 向委员会创建提案,尝试更新治理者
  • upgradeVoteProposal 向委员会创建提案,尝试升级委员会投票计算逻辑
  • voteProposal 向委员会投票特定提案

账户操作 (Account Operation)

  • getCurrentAccount 获取当前账户信息
  • listAccount 列出当前保存的账户列表
  • loadAccount 加载账户以进行交易签名
  • newAccount 创建账户

分片操作 (Sharding Operation)

  • getContractShard 获取合约所属的分片
  • linkShard 将合约添加到分片
  • makeShard 创建分片

余额预编译操作 (Balance Precompiled Operation)

  • addBalance 向账户添加余额。仅余额治理者(balanceGovernor)可以使用
  • getBalance 获取账户的余额
  • listBalanceGovernor 列出所有注册的余额治理者
  • registerBalanceGovernor 将账户注册为余额治理者。仅治理者(Governor)账户可以使用
  • subBalance 从账户扣除余额。仅余额治理者可以使用
  • transferBalance 将余额从一个账户转移到另一个账户。仅余额治理者可以使用
  • unregisterBalanceGovernor 从余额治理者中注销账户。仅治理者账户可以使用

FISCO 监控状态

监控区块链状态

文档中提到:监控区块链网络的节点数量、节点ID、块高、pbftview和节点运行状态,我们可以通过一些命令来查看节点数量

  • 监控区块链网络的节点数量

    • 通过进程查看

      1
      2
      3
      4
      5
      └─$ ps aux |grep -v grep |grep fisco-bcos
      cure 25655 4.4 0.6 1905492 78308 pts/1 Sl 15:15 5:38 /home/cure/fisco/nodes/127.0.0.1/node1/../fisco-bcos -c config.ini -g config.genesis
      cure 25657 4.4 0.6 1947004 77896 pts/1 Sl 15:15 5:37 /home/cure/fisco/nodes/127.0.0.1/node3/../fisco-bcos -c config.ini -g config.genesis
      cure 25659 4.4 0.6 1956748 82488 pts/1 Sl 15:15 5:39 /home/cure/fisco/nodes/127.0.0.1/node0/../fisco-bcos -c config.ini -g config.genesis
      cure 25661 4.4 0.6 1982360 79432 pts/1 Sl 15:15 5:38 /home/cure/fisco/nodes/127.0.0.1/node2/../fisco-bcos -c config.ini -g config.genesis
    • 查看一个群组的节点数量

      进入console 后通过命令查看(首先你已经在正确的群组内了)

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      [group0]: /apps> getObserverList
      []

      [group0]: /apps> getSealerList
      [
      Sealer{
      nodeID='2ae72c97e19a93ac3cee2951326bc5daba0ac7db0991bb5b8069d18130e638cb4981aa6f6dec246d0374c1d068d74559b7edef3ce259793e369300e638ba3c07',
      weight=1
      },
      Sealer{
      nodeID='3e80932ce833e5e186c293c5ff4982650b1236709fa1fd9ff79db79765900e9bf0ba2ab7dc17aee9c7aed74d9a208e2eb2ad1c2e9fe14cc5d07e8eba9a17aae8',
      weight=1
      },
      Sealer{
      nodeID='6a249c4013ab54c5d40ee541d00f831ea27cb3d4e7cb56730882f7780613faadacb698c30b2e0869958e12087554f972da05a103fee3ad0acbc6095927bec879',
      weight=1
      },
      Sealer{
      nodeID='ce907b6e4a120a22d0247267f00348cf101f9ca4e8a907dd73d342a851e5d1471a7d4ab0849f17633302242e89c6446df876cf3d051011fd3453dac2adcaafd1',
      weight=1
      }
      ]

      [group0]: /apps>
  • 查看节点ID

    • 通过 console 有三个列表命令

    • getCandidateList 查询候选共识节点的节点ID列表

      1
      2
      [group0]: /apps> getCandidateList
      []
    • getObserverList 查询观察者节点的节点ID列表

      1
      2
      [group0]: /apps> getObserverList
      []
    • getSealerList 查询共识节点的节点ID列表

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      [group0]: /apps> getSealerList
      [
      Sealer{
      nodeID='2ae72c97e19a93ac3cee2951326bc5daba0ac7db0991bb5b8069d18130e638cb4981aa6f6dec246d0374c1d068d74559b7edef3ce259793e369300e638ba3c07',
      weight=1
      },
      Sealer{
      nodeID='3e80932ce833e5e186c293c5ff4982650b1236709fa1fd9ff79db79765900e9bf0ba2ab7dc17aee9c7aed74d9a208e2eb2ad1c2e9fe14cc5d07e8eba9a17aae8',
      weight=1
      },
      Sealer{
      nodeID='6a249c4013ab54c5d40ee541d00f831ea27cb3d4e7cb56730882f7780613faadacb698c30b2e0869958e12087554f972da05a103fee3ad0acbc6095927bec879',
      weight=1
      },
      Sealer{
      nodeID='ce907b6e4a120a22d0247267f00348cf101f9ca4e8a907dd73d342a851e5d1471a7d4ab0849f17633302242e89c6446df876cf3d051011fd3453dac2adcaafd1',
      weight=1
      }
      ]
    • 通过cat 命令读取文件直接查看

      这里以查看node3为例

      1
      2
      └─$ cat node3/conf/node.nodeid
      ce907b6e4a120a22d0247267f00348cf101f9ca4e8a907dd73d342a851e5d1471a7d4ab0849f17633302242e89c6446df876cf3d051011fd3453dac2adcaafd1
  • 查询区块链高度

    • 在console 通过 getBlockNumber 查看区块链编号

      1
      2
      3
      =============================================================================================
      [group0]: /apps> getBlockNumber
      2
  • 监控 pbftview

    • 在console 通过 getPbftView查看view的编号

      1
      2
      [group0]: /apps> getPbftView
      3

科普

最新区块编号(或称区块高度)表示当前区块链网络中最新的、已被共识确认的区块的序号。其核心含义是:

  • 链增长标识:编号从 0(创世块)开始单调递增,数值越大代表链越长,包含的交易和历史越多。
  • 网络状态指标:反映了网络的活跃度和数据处理进度。编号增长越快,通常说明网络交易吞吐量越高或出块间隔越短。
  • 同步参考点:新节点或落后节点通过对比此编号来判断自己与网络最新状态的差距,以完成数据同步。

PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错)是一种共识算法,旨在解决分布式系统中节点可能发生恶意行为(拜占庭错误)的问题。其核心目标是在最多不超过1/3的节点出现故障或恶意行为时,系统仍能达成一致并正常运行

共识算法可以在少数节点作恶(如伪造消息)场景中达成共识,它采用签名、签名验证、哈希等密码学算法确保消息传递过程中的防篡改性、防伪造性、不可抵赖性,并优化了前人工作,将拜占庭容错算法复杂度从指数级降低到多项式级别,在一个由(3f+1)个节点构成的系统中,只要有不少于(2f+1)个非恶意节点正常工作,该系统就能达成一致性,如:7个节点的系统中允许2个节点出现拜占庭错误。

主要特点:

  • 容错性:最多容忍f个恶意节点(系统总节点数需≥3f+1)。
  • 确定性:一旦达成共识,结果不可逆转。
  • 性能:相比PoW等算法,能耗低、延迟较低,适合联盟链或私有链场景。

getPbftView 返回的视图 View 是PBFT中的一种状态机制,用于在主节点(Primary)出现故障时切换领导权。

  • 视图编号从0开始递增(通常为整数),每次主节点切换时视图编号+1。

复现时的自查

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

返回系列导读 · 上一篇 · 下一篇

评论COMMENTS