EOSIO cleos get info 命令详解:获取区块链节点实时状态

发布时间:2026/9/23 13:58:58

EOSIO cleos get info 命令详解:获取区块链节点实时状态 EOSIO cleos get info 命令详解获取区块链节点实时状态【免费下载链接】eosAn open source smart contract platform项目地址: https://gitcode.com/gh_mirrors/eo/eoscleos get info是 EOSIO 智能合约平台中最常用的命令之一用于查询当前连接的 nodeos 节点的实时区块链状态包括最新区块高度、不可逆区块高度、链 ID、资源限制等核心指标。本文将结合仓库源码深入讲解该命令的完整用法、返回字段语义及其底层实现原理帮助你准确解读节点运行状态、排查同步问题并为交易签名提供必要的链上参考数据。命令概览cleos get info属于cleos get子命令族用于从区块链获取各类条目与信息见 programs/cleos/main.cpp其功能是获取当前区块链信息。语法cleos get info位置参数无该命令不接受任何位置参数。选项选项说明-h,--help打印帮助信息并退出命令本身没有业务参数但 cleos 的全局参数对其同样生效其中最常用的是指定连接节点cleos -u http://127.0.0.1:8888 get info-u/--url用于指定 nodeos 节点运行的 HTTP 地址默认值为http://127.0.0.1:8888见 programs/cleos/main.cpp。运行示例在节点正常运行时执行cleos get info会以美化后的 JSON 格式打印节点状态{ server_version: 7451e092, head_block_num: 6980, last_irreversible_block_num: 6963, head_block_id: 00001b4490e32b84861230871bb1c25fb8ee777153f4f82c5f3e4ca2b9877712, head_block_time: 2017-12-07T09:18:48, head_block_producer: initp, recent_slots: 1111111111111111111111111111111111111111111111111111111111111111, participation_rate: 1.00000000000000000 }说明以上示例出自 docs/02_cleos/03_command-reference/get/info.md是文档编写时期的早期版本返回格式。在当前仓库源码对应的版本中返回字段已大幅扩充新增chain_id、资源限制与分叉数据库等字段同时recent_slots与participation_rate两个字段已在实现中被注释移除见 plugins/chain_plugin/include/eosio/chain_plugin/chain_plugin.hpp实际返回格式请以当前节点版本为准。返回字段逐一解读当前版本中cleos get info的完整返回结构由read_only::get_info_results定义见 plugins/chain_plugin/include/eosio/chain_plugin/chain_plugin.hpp各字段含义如下字段类型含义server_versionstring节点版本号的十六进制表示server_version_stringstring可选语义化版本字符串如v2.1.0server_full_version_stringstring可选完整版本字符串通常附带构建信息chain_idstring当前链的 ID是交易签名的必要参数head_block_numuint32最新头区块高度head_block_idstring最新区块的 ID由区块号与区块哈希构成head_block_timestring最新区块的生产时间head_block_producerstring最新区块的生产者账户名last_irreversible_block_numuint32最后不可逆区块的高度LIBlast_irreversible_block_idstring最后不可逆区块的 IDlast_irreversible_block_timestring可选最后不可逆区块的生产时间fork_db_head_block_numuint32可选分叉数据库中待定头区块高度可能大于head_block_numfork_db_head_block_idstring可选分叉数据库中待定头区块 IDvirtual_block_cpu_limituint64虚拟 CPU 资源限制微秒virtual_block_net_limituint64虚拟网络带宽限制字节block_cpu_limituint64当前区块 CPU 限制微秒block_net_limituint64当前区块网络带宽限制字节其中资源限制相关字段virtual_block_cpu_limit等来自节点的资源限制管理器Resource Limits Manager用于衡量当前区块可用的 CPU 与网络带宽余量是判断链上资源使用压力、估算交易可用额度的重要参考。典型判断场景节点是否在同步比较head_block_num与last_irreversible_block_num若两者持续增长但fork_db_head_block_num长期停滞说明节点可能处于分叉或追块状态链身份确认chain_id用于区分主网与各类测试网错误的chain_id会导致交易签名后无法被目标网络接受资源余量block_cpu_limit/block_net_limit接近 0 时说明链上资源已高度紧张提交交易可能因资源不足被拒绝。底层实现从 cleos 到 nodeos 的完整调用链cleos get info并非本地读取而是通过 HTTP 调用 nodeos 的 RPC 接口实现的其完整链路如下子命令注册在 programs/cleos/main.cpp 中注册get info子命令回调函数将get_info()的返回值以美化 JSON 输出get-add_subcommand(info, localized(Get current blockchain information))-callback([] { std::cout fc::json::to_pretty_string(get_info()) std::endl; });HTTP 请求构造get_info()programs/cleos/main.cpp调用call(url, get_info_func)其中get_info_func定义为/v1/chain/get_info见 programs/cleos/httpc.hppeosio::chain_apis::read_only::get_info_results get_info() { return call(url, get_info_func).aseosio::chain_apis::read_only::get_info_results(); }节点端路由nodeos 的chain_api_plugin将该路径注册为只读接口CHAIN_RO_CALL(get_info, 200, http_params_types::no_params_required)表明该接口不接收任何请求参数见 plugins/chain_api_plugin/chain_api_plugin.cpp。对应地OpenAPI 描述中/get_info为 POST 接口描述为返回包含区块链各种细节的对象见 plugins/chain_api_plugin/chain.swagger.yaml。数据组装最终由chain_plugin的只读接口实现完成plugins/chain_plugin/chain_plugin.cpp所有字段直接取自节点的控制器controller与资源限制管理器read_only::get_info_results read_only::get_info(const read_only::get_info_params) const { const auto rm db.get_resource_limits_manager(); return { itoh(static_castuint32_t(app().version())), // server_version db.get_chain_id(), db.head_block_num(), db.last_irreversible_block_num(), db.last_irreversible_block_id(), db.head_block_id(), db.head_block_time(), db.head_block_producer(), rm.get_virtual_block_cpu_limit(), rm.get_virtual_block_net_limit(), rm.get_block_cpu_limit(), rm.get_block_net_limit(), // ... app().version_string(), db.fork_db_pending_head_block_num(), db.fork_db_pending_head_block_id(), app().full_version_string(), db.last_irreversible_block_time() }; }从源码结构可以推断该接口完全基于节点内存中的链状态数据返回因此响应速度极快且不需要额外的数据库查询。深度应用cleos 内部如何依赖 get infoget info不只是给用户查看的它在 cleos 内部也是交易提交链路的关键依赖。在push_transaction流程中programs/cleos/main.cppcleos 会先调用get_info()获取链上信息用于设置交易过期时间trx.expiration info.head_block_time tx_expiration以最新区块时间为基准加上用户指定的过期时间设置 TAPoS 参考块默认取info.last_irreversible_block_id作为交易的参考区块replay protection用户可通过--ref-block覆盖交易签名使用info.chain_id对交易进行签名确保交易只对该链有效。auto info get_info(); if (trx.signatures.size() 0) { trx.expiration info.head_block_time tx_expiration; block_id_type ref_block_id info.last_irreversible_block_id; // ... trx.set_reference_block(ref_block_id); // ... } if (!tx_skip_sign) { // ... sign_transaction(trx, required_keys, info.chain_id); }此外get_info()还用于cleos get block --info等场景获取当前高度作为查询上下文见 programs/cleos/main.cpp、programs/cleos/main.cpp。进阶用法与 jq 配合提取字段cleos -u http://127.0.0.1:8888 get info | jq .head_block_num, .last_irreversible_block_num脚本化监控同步进度cleos get info | jq -r head\(.head_block_num) lib\(.last_irreversible_block_num) producer\(.head_block_producer)通过 curl 直接调用 RPC由于cleos get info本质是对/v1/chain/get_info的无参数 POST 请求也可以直接用 curl 获取等价结果curl -X POST http://127.0.0.1:8888/v1/chain/get_info -d {}小结cleos get info是 EOSIO 节点运维与开发调试的第一入口一条命令即可掌握链身份、同步进度、头区块与不可逆区块状态以及资源限制。理解其返回字段的来源get_info_results结构体与调用链cleos →/v1/chain/get_info→ chain_plugin不仅能更准确地解读输出还能明白为什么交易提交前 cleos 必须先从该接口获取参考区块与链 ID——这背后正是 EOSIO 交易签名与 TAPoS 机制的基石。【免费下载链接】eosAn open source smart contract platform项目地址: https://gitcode.com/gh_mirrors/eo/eos创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/23 13:58:58

IIS配置后网站无法访问?一文搞定从定位到排查的所有坑

以前在Windows服务器上搭网站,最怕听到的一句话就是“配置都弄好了,怎么还是访问不了”。IIS这个东西,装起来确实简单,下一步下一步,绑个目录填个端口,网站好像就成了。可真到了浏览器里去访问,…

2026/9/23 13:58:58

DPP是什么,哪些企业需要注册DPP,中国企业怎么注册DPP?

数字产品护照DPP:中国企业如何完成欧盟注册合规 2026年7月20日,欧盟数字产品护照(Digital Product Passport,简称DPP)中央注册系统正式上线运行。这意味着,DPP不再停留在政策讨论层面,而是进入了…

2026/9/23 13:53:57

C++安全编程实战:从内存安全到并发防御的完整指南

1. 为什么要专门谈C安全编程C这门语言,从诞生到现在几十年了,性能确实能打,但它也是最容易“伤到自己”的语言之一。很多人在初学阶段被指针、内存管理、类型转换这些概念绕晕,等真正写起项目来,又发现各种莫名其妙的崩…

2026/9/23 14:59:11

索斯塔性能调优实战:手写实现让接口延迟降80%

索斯塔性能调优实战:手写实现让接口延迟降80% 版本升级后 API 全变了,老代码跑不动,直接手写实现核心逻辑才是救命稻草。 做市政公用工程的都知道,索斯塔(Sosta)这类底层调度组件在升级 2.0…

2026/9/23 14:59:11

一文搞懂优势的英文:3个真实项目避坑指南

一文搞懂优势的英文:3个真实项目避坑指南 看了一堆教程还是不会写项目?别慌,这病我治好了。很多开发者卡在“优势”这个词上,明明知道是 Advantage,但一到面试或写文档就卡壳。今天咱们不背单词,直接上干货, 一文搞懂…

2026/9/23 14:59:11

碧蓝航线独角兽开发避坑指南:应届生如何搞定移动端架构

碧蓝航线独角兽开发避坑指南:应届生如何搞定移动端架构 版本升级后 API 全变了,导致你昨天还在跑通的代码今天直接崩盘?别慌,这是很多刚入行做移动端的应届生都会遇到的“至暗时刻”。特别是当你试图复刻《碧蓝航线独角兽》这种高并发、实时性强的游…

2026/9/23 14:59:11

Python时间处理与安全随机数实战技巧

1. 时间操控:datetime模块的隐藏玩法Python标准库中的datetime模块远不止基础日期处理那么简单。最近在优化一个高频交易系统时,我意外发现了几个鲜为人知的时间操控技巧。1.1 时区转换的陷阱与解决方案大多数人知道用pytz处理时区,但标准库自…

2026/9/23 14:59:11

ESP、MSR与恢复分区:UEFI/GPT电脑启动的三大核心分区

1. 这三个“看不见”的分区,才是现代电脑真正开机的钥匙你有没有试过重装系统时突然发现磁盘里多出几个100MB、500MB甚至几GB的“空白分区”,既打不开又删不掉?右键一看属性——类型是“系统”“恢复”“EFI系统分区”,名字一串乱…

2026/9/23 12:07:00

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/23 12:06:55

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/23 0:01:54

3个实战技巧搞定形式英语:从看教程到跑通性能优化

3个实战技巧搞定形式英语:从看教程到跑通性能优化 看了一堆教程还是不会写项目?别慌,这种“眼高手低”的困境在开发者圈子里太常见了。很多人以为卡点在语法,其实真正拦路虎是缺乏将知识点串联成完整链路的能力。今天咱们不聊虚的,直接拿【形式英语】这…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码