控制台既是合约交互入口,也是确认群组、节点和共识状态的工具。这篇把常用命令和原始状态检查记录放在一起。
本文由个人备赛旧笔记整理,整理日期为 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向委员会创建提案,尝试关闭特定账户的部署ACLcloseMethodAuth关闭特定合约中账户的方法ACLfreezeAccount冻结特定账户freezeContract冻结特定合约getAccountStatus获取账户状态getCommitteeInfo获取委员会信息getContractAdmin从特定合约获取管理员地址getContractStatus获取合约状态getDeployAuth全局获取部署ACL策略getLatestProposal获取最新提案信息getMethodAuth获取特定合约中账户的方法ACLgetProposalInfo从委员会获取特定提案信息或提案信息列表initAuth初始化委员会合约系统openDeployAuthProposal向委员会创建提案,尝试为特定账户开启部署ACLopenMethodAuth为特定合约中的账户开启方法ACLremoveNodeProposal向委员会创建提案,尝试移除共识节点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。
复现时的自查
- 记录自己实际使用的版本、配置和缺失依赖。
- 对照本篇关键步骤,保存命令或调用结果,并解释结果代表什么。
- 对失败或与原记录不一致的情况保留错误信息,不把历史输出当成自己的验证结果。
本文作者 Allureluoli
文字版权归作者所有,转载请注明出处;商业用途请先联系二月。