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),仅供参考

相关新闻

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

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

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

2026/9/23 13:58:57 阅读更多 →
车载IGBT模块AQG324测试与功率循环可靠性验证

车载IGBT模块AQG324测试与功率循环可靠性验证

简介:面向新能源汽车电驱动系统开发场景,聚焦车载电机控制器中IGBT模块的欧标AQG324测试要求,这份资料适合电机控制器硬件工程师、功率模块测试工程师、可靠性工程师以及需要对接第三方认证的质保人员。内容围绕车规级IGBT模块的可靠性验证展…

2026/9/23 13:57:56 阅读更多 →
YOLOv8渔船作业监控系统毕设资源拆包:环境配置、训练与部署避坑指南

YOLOv8渔船作业监控系统毕设资源拆包:环境配置、训练与部署避坑指南

简介:这份资源是一套基于YOLOv8的渔船作业监控系统完整项目,面向计算机、人工智能、通信工程、自动化等专业的在校学生与教师,可用于毕业设计、课程设计、大作业或项目立项演示,也适合希望进阶目标检测实战的小白。压缩包共97个文…

2026/9/23 13:57:56 阅读更多 →

最新新闻

zynq 以太网连接不稳定问题解决方案

zynq 以太网连接不稳定问题解决方案

背景描述:使用EBAZ4205矿板做了一个项目,其中用到了以太网与上位机通讯。故障现象:矿板与上位机进行PING操作时,偶尔出现无法ping通的现象,如下图所示:这种现象是PC和下位机连接状态不稳定造成的&#xff0…

2026/9/23 16:44:43 阅读更多 →
寒衣调手写实现:3招搞定报错,新手避坑指南

寒衣调手写实现:3招搞定报错,新手避坑指南

寒衣调手写实现:3招搞定报错,新手避坑指南 看着满屏红色的 StackTrace,心里是不是咯噔一下?别慌,这种“报错一堆看不懂”的情况,90%的新手都遇到过。很多教程只会告诉你“这里错了”,却从不解释为什么错,更不教你怎么 手写实现…

2026/9/23 16:44:43 阅读更多 →
cytoscape.js 集合邻域关系判定:`eles.allAreNeighbors()` 全量邻接检测实战与源码解析

cytoscape.js 集合邻域关系判定:`eles.allAreNeighbors()` 全量邻接检测实战与源码解析

数据可视化 【免费下载链接】cytoscape.js Graph theory (network) library for visualisation and analysis 项目地址: https://gitcode.com/gh_mirrors/cy/cytoscape.js 点击查看 免费下载 导读 在 cytoscape.js 的图分析场景中,经常需要回答"目…

2026/9/23 16:44:43 阅读更多 →
弱电系统工程师怎么考证?从报名学习到考试拿证,报考全攻略

弱电系统工程师怎么考证?从报名学习到考试拿证,报考全攻略

弱电系统工程师是网络安全与防护领域的重要技术方向。随着智能建筑、智慧园区建设持续推进,弱电系统工程师需求保持增长。如果你正在考虑考取弱电系统工程师证书,本文将从报名学习到考试拿证,做一份完整的报考攻略。 一、弱电系统工程师是做什…

2026/9/23 16:44:43 阅读更多 →
基于dlib和EAR的疲劳驾驶检测系统设计与实现

基于dlib和EAR的疲劳驾驶检测系统设计与实现

简介:一份PDF版技术文献,围绕基于计算机视觉的司机驾驶疲劳检测系统展开,适合计算机视觉、图像处理方向的学生与开发者作为参考文献与专业指导。内容涵盖人脸特征点检测、人眼定位、基于EAR值的疲劳识别算法,以及完整系统实现与结…

2026/9/23 16:44:43 阅读更多 →
YOLOv11工业多模态质检:时序对齐与跨模态融合实战

YOLOv11工业多模态质检:时序对齐与跨模态融合实战

简介:本资源是一份面向工业视觉检测工程师、AI算法落地实践者及智能制造领域技术人员的深度技术案例文档,聚焦YOLOv11在工业质检场景中融合多模态数据(图像、音频、传感器信号)实现缺陷实时检测的完整落地路径。文档共45页PDF&…

2026/9/23 16:43:39 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →