Solidity 尾部元数据检查¶
Issue:https://github.com/morluto/rea/issues/2388
结果¶
现有的 EVM 接口操作应保留从精确选定的字节中独立解码出的尾部 CBOR 候选事实,而不是依赖引擎所报告元数据中的精度未知项。此增量涵盖尾部范围、有界解码、精确的整数/非文本标量键证据以及编译器版本表示形式。
要求¶
- 保留现有的载体/解码身份和完整的原始字节码。
- 将合理的尾部根映射候选与 Solidity 来源证明分开报告。缺失或非映射的尾部仍保持不可用,而非被证明不存在。
- 无损地解释标量根映射键/值:整数作为十进制字符串,字节作为十六进制,以及字符串、布尔值和 null。通过原始字节码和精确的候选偏移/长度,保留未解码/不支持的值。
- 显式报告部分覆盖和未解码覆盖、解析器/profile 失败以及不支持的 CBOR 形式。不要将未知键静默强制转换为对象属性。
- 仅从观察到的条目中解释已认可的 solc 发布/预发布表示形式;如果出现重复的编译器版本键,则保留歧义。
- 保持新增字段与历史 Evidence 的兼容性,并在选定的摘要交付和公共 CLI/MCP 中保留它。历史省略在解析时作为 null 的未知方面,且不修改源数据。
- 在解码器递归之前限制嵌套深度,在分配之前限制集合长度。将解析保持在现有的自有 worker 及其资源/输出预算内。
- 不获取元数据或源代码内容,不联系 RPC,也不执行合约代码。
验收与限制¶
项目自有的编译器夹具以及畸形/合成的尾部涵盖了超出 Number 精度的整数、非文本键、嵌套/未解释的值、无效 UTF-8、无效长度、不支持的标签和嵌套界限。公共边界测试保留了该字段及旧版省略行为。一个真实且固定版本的 solc 构件验证实际的元数据事实;现有的仅限 Linux 的 EVM 主机 profile 保持不变。
延期问题标准¶
将提供的元数据 JSON 绑定到 IPFS/Swarm 承诺是 #2388 的一个后续独立增量。此 PR 必须引用而不是关闭整个 issue。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 rea2/rea