区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载cleos convert unpack_transaction是 EOSeosio 开源智能合约平台客户端工具 cleos 中convert子命令族的一员用于把网络上传输的打包交易packed transactionJSON 还原为人类可读的明文签名交易 JSON是调试交易、核对签名数据与检查链上交易内容的实用工具。读完本文你将掌握该命令的完整语法、参数含义、输入输出格式以及其底层基于packed_transaction_v0的反序列化解包原理并能与pack_transaction等配套命令组合使用。命令概述packed 与 plain 两种形态在 EOS 网络协议中一笔已签名交易在节点间传播、入库和落盘时通常以紧凑打包packed形态存在签名列表、压缩方式、打包后的交易体packed_trx与打包后的上下文无关数据packed_context_free_data以十六进制字符串承载便于高效传输与存储。而开发者阅读、调试交易时需要的是展开后的明文签名 JSONplain signed JSON其中包含expiration、ref_block_num、actions等可读字段。unpack_transaction正是完成这一由密到明转换的命令它是cleos convert子命令族pack_transaction、unpack_transaction、pack_action_data、unpack_action_data中与 pack_transaction 互逆的一环整体族命令概览见 convert 命令索引。命令语法与参数cleos convert unpack_transaction transaction [--unpack-action-data]位置参数Positionals参数类型说明transactionTEXT打包交易 JSON即包含packed_trx字段、可选包含compression等字段的 JSON 字符串必填选项Options选项说明-h, --help打印帮助信息并退出--unpack-action-data解包交易内的全部 action data需要与nodeos交互用于获取合约 ABI使用示例完整命令实战直接传入一个打包交易 JSON 字符串即可完成解包cleos convert unpack_transaction { signatures: [ SIG_K1_KmRbWahefwxs6uyCGNR6wNRjw7cntEeFQhNCbyg8S92Kbp7zdSSVGTD2QS7pNVWgcU126zpxaBp9CwUxFpRwSnfkjd46bS ], compression: none, packed_context_free_data: , packed_trx: 8468635b7f379feeb95500000000010000000000ea305500409e9a2264b89a010000000000ea305500000000a8ed3232660000000000ea305500a6823403ea30550100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d8010000000100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d80100000000 }输入 JSON 中的各字段含义如下signatures已附加到交易上的签名列表SIG_K1_前缀表明使用 K1 曲线签名compression交易体的压缩方式取值为none或zlib对应源码packed_transaction_v0::compression_type枚举见 libraries/chain/include/eosio/chain/transaction.hpppacked_context_free_data打包后的上下文无关数据context-free data十六进制串此处为空packed_trx按二进制协议序列化后的交易体十六进制串是解包的主体。输出结果逐字段解析命令执行后将输出如下明文签名交易 JSON{ expiration: 2018-08-02T20:24:36, ref_block_num: 14207, ref_block_prefix: 1438248607, max_net_usage_words: 0, max_cpu_usage_ms: 0, delay_sec: 0, context_free_actions: [], actions: [{ account: eosio, name: newaccount, authorization: [{ actor: eosio, permission: active } ], data: 0000000000ea305500a6823403ea30550100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d8010000000100000001000240cc0bf90a5656c8bb81f0eb86f49f89613c5cd988c018715d4646c6bd0ad3d801000000 } ], transaction_extensions: [], signatures: [ SIG_K1_KmRbWahefwxs6uyCGNR6wNRjw7cntEeFQhNCbyg8S92Kbp7zdSSVGTD2QS7pNVWgcU126zpxaBp9CwUxFpRwSnfkjd46bS ], context_free_data: [] }各输出字段对应交易头与交易体的组成部分类型定义见 libraries/chain/include/eosio/chain/transaction.hppexpiration交易过期时间time_point_sec超过该时间后交易不再允许被打包进区块ref_block_num/ref_block_prefix参考区块号与参考区块 ID 低 32 位用于防重放max_net_usage_words本交易网络带宽用量上限按 8 字节字为单位计数max_cpu_usage_ms本交易 CPU 用量上限毫秒delay_sec延迟交易秒数延迟期内可被取消context_free_actions上下文无关动作列表本例为空actions动作列表本例为一次eosio::newaccount建号动作authorization指明由eosioactive授权data为动作参数的打包十六进制数据transaction_extensions交易扩展字段signatures签名列表与输入保持一致context_free_data解包后的上下文无关数据数组每个上下文无关动作对应一项。--unpack-action-data连动作参数一起解码默认情况下unpack_transaction只还原交易结构动作data仍以十六进制字符串呈现。若希望将data进一步解码为可读的 JSON 参数对象需加上--unpack-action-data选项cleos convert unpack_transaction packed transaction json --unpack-action-data该选项要求 cleos 与nodeos建立连接以获取合约 ABI才能把data字节流按 ABI 解码为字段化的 JSON。从源码实现看这一分支正是通过abi_serializer::to_variant完成的见 programs/cleos/main.cpp。底层原理packed_transaction_v0 的解包路径cleos 侧的反序列化调用链unpack_transaction在 cleos 中的实现位于 programs/cleos/main.cpp将输入 JSON 解析为fc::variantjson_from_file_or_string因此参数既可以是内联 JSON 字符串也可以指向包含 JSON 的文件路径通过fc::from_variantpacked_transaction_v0反序列化为packed_transaction_v0对象若失败则抛出transaction_type_exception提示 Invalid packed transaction format调用get_signed_transaction()取出内部缓存的signed_transaction未加--unpack-action-data时直接以signed_transaction序列化输出否则经abi_serializer::to_variant将动作 data 一并解码最终以fc::json::to_pretty_string输出美化后的 JSON。链端数据结构的支撑packed_transaction_v0定义于 libraries/chain/include/eosio/chain/transaction.hpp其存储字段为signatures、compression、packed_context_free_data、packed_trx并在构造时通过local_pack_transaction()生成打包体反序列化构造后内部缓存解包后的signed_transactionunpacked_trx与trx_idget_signed_transaction()直接返回该缓存。解包动作的核心逻辑在 libraries/chain/transaction.cpplocal_unpack_transaction()调用unpack_transaction(packed_trx, compression)将打包字节流还原为signed_transaction并重新计算trx_idlocal_unpack_context_free_data()将packed_context_free_data解包进context_free_data数组pack_transaction()/unpack_transaction()均按compression分支处理none直接读写字节流zlib则先做 zlib 压缩/解压遇到未知压缩算法会抛出unknown_transaction_compression。由此可以推断unpack_transaction命令等价于在链端节点内部对收到交易的解包路径只是将结果以 JSON 形式呈现在客户端侧因此非常适合离线验证一笔交易的完整内容。配套命令组合使用unpack_transaction通常与convert族其他命令配合形成完整的工作流参见 convert 命令索引命令作用与 unpack_transaction 的关系pack_transaction明文签名 JSON → 打包 JSON逆操作用于生成可广播的紧凑形态unpack_transaction打包 JSON → 明文签名 JSON本文主角pack_action_dataJSON 动作数据 → 十六进制 packed data可配合--unpack-action-data做往返验证unpack_action_data十六进制 packed data → JSON 动作数据单独解码单个动作的 data 字段典型排障场景从区块或日志中复制一条packed_trx先用unpack_transaction还原交易结构再用unpack_action_data指定account与name后单独解码某个动作的参数即可完整还原一笔交易的语义而无需部署任何合约或编写解析代码。注意事项与常见问题输入必须是合法 JSONunpack_transaction使用 JSON 解析器读取输入格式错误会直接报错反序列化失败时错误信息会回显原始输入数据便于排查字段不可缺失位置参数transaction为必填缺少时会提示用法并退出--unpack-action-data依赖 nodeos该选项需要与运行中的nodeos交互获取 ABI离线环境下请省略该选项仅查看交易结构compression字段要如实填写若打包交易使用了zlib压缩而输入中误填为none解包会因字节流无法解析而失败从链上获取的打包交易通常可从区块工具如eosio-blocklog或 RPC 响应中直接取得包含compression字段的完整 JSON大交易耗时cleos 内部对 ABI 解析设置了最大执行时间abi_serializer_max_time超大交易在--unpack-action-data模式下可能超时此时可去掉该选项分步处理。参考实现路径命令注册与回调实现programs/cleos/main.cpppacked_transaction_v0/signed_transaction/transaction_header数据结构libraries/chain/include/eosio/chain/transaction.hpp打包/解包底层实现含 zlib 分支libraries/chain/transaction.cpp命令族总览docs/02_cleos/03_command-reference/convert/index.md赞分享区块链【免费下载链接】eosAn open source smart contract platform项目地址https://gitcode.com/gh_mirrors/eo/eos点击查看免费下载相关推荐cosign bundle upgrade 命令详解将 Sigstore Protobuf 签名包升级到 v0.3cosign bundle upgrade 命令详解将 Sigstore Protobuf 签名包升级到 v0.3 本指南以 cosign 仓库中 cosig供应链安全云原生应用安全WSABuilds 实战指南用目录联接mklink /J把 WSA 移动或安装到其他分区/磁盘WSABuilds 实战指南用目录联接mklink /J把 WSA 移动或安装到其他分区/磁盘 本篇指南介绍如何将 Windows Subsystem f区块链freqtrade convert-db 详解交易数据库跨系统迁移命令与源码原理freqtrade convert db 详解交易数据库跨系统迁移命令与源码原理 本篇基于 docs/commands/convert db.md https金融科技后端机器学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
BERT中文图书多分类实战:从数据清洗到ONNX部署 简介:本资源是一个面向Python与自然语言处理初学者的BERT实战项目,聚焦图书文本多分类任务,适用于课程设计、期末大作业及NLP入门实践。项目基于Hugging Face Transformers框架实现,完整封装了数据预处理、BERT微调、模型训练与测… · 2026/9/23 9:48:10
3个致命陷阱:中国电信积分兑换商城源码避坑指南 3个致命陷阱:中国电信积分兑换商城源码避坑指南 面试被问到积分系统高并发下的数据一致性,你答不上来?别慌,这不只是面试尴尬,更是业务崩溃的前兆。中国电信积分兑换商城源码避坑指南,直接带你拆解官方源码仓库中的核心逻辑。很多应届生只盯着前端页面… · 2026/9/23 9:48:02
C++在单片机上如何实现零开销抽象:从C迁移到C++的工程实践 1. C在单片机上的真实定位与认知纠偏1.1 为什么会有“C能不能跑单片机”这个问题很多人第一次听到“用C写单片机”,脑子里蹦出来的第一个念头就是:那玩意儿不是写桌面软件和游戏的吗,放到只有几KB RAM的单片机上,不是分分钟把内存… · 2026/9/23 9:47:47
手写实现钟的图片逻辑:3个底层坑点让你告别教程依赖 手写实现钟的图片逻辑:3个底层坑点让你告别教程依赖 别再对着视频傻眼了,代码抄完还是报错,这才是大多数转行程序员的真实写照。 你肯定也遇到过这种崩溃时刻:B站教程刷了十几集,GitHub… · 2026/9/23 11:15:09
无线HDMI选型实战:3大方案源码解析与避坑指南 无线HDMI选型实战:3大方案源码解析与避坑指南 复制来的代码跑不通,日志一片红,调试半天找不到原因?这种抓狂感太真实了。很多应届生拿到开源项目或教程里的无线投屏Demo,直接复制到VSCode里就报错,要么连接超时,要么画面卡顿。问题出在… · 2026/9/23 11:14:56
3个高频坑讲透毛利润源码解析 3个高频坑讲透毛利润源码解析 翻遍官方文档,还是没搞懂毛利润计算逻辑?别急,源码解析才是破局关键。 考点梳理 毛利润不是简单的“收入减成本”。在面试中,考官常设陷阱:你报的是毛利额还是毛利率?成本里到底含不含运费、税费? 标准答法… · 2026/9/23 11:14:49
DIE查壳工具实战指南:识别加壳程序与批量扫描 简介:DIE(Detect It Easy)是一款专业查壳工具,主要面向安全分析、逆向工程与恶意代码检测场景,可快速识别程序加壳类型、编译语言及打包器特征,并支持超大文件读取,相比PEID在复杂程序检测上更具… · 2026/9/23 11:14:37
一文搞懂ios8.0.2 iOS 8.0.2 内存泄漏与性能瓶颈 面试必问深度解析 面试被问“为什么老版本 iOS 应用卡顿”,你答不上来? 这是 面试必问 的底层原理题,很多候选人只会背 API,却不懂 iOS 8.0.2 时代的内存管理陷阱。… · 2026/9/23 11:14:37
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29