资讯详情

Gas Schedule Changes

📅 2026/9/17 7:41:12 | 华诺云谱 👁 阅读
Gas Schedule Changes
Gas Schedule Changes【免费下载链接】aptos-coreAptos is a layer 1 blockchain built to support the widespread use of blockchain through better technology and user experience.项目地址: https://gitcode.com/GitHub_Trending/ap/aptos-coreGas feature version: 30 - 31I have reviewed the gas schedule changes below.Changeschangeparameteroldnewsign-offmodifiedinstr.add5065addedinstr.mul/90removedinstr.sub80/modifiedtxn.max_execution_gas9200000001000000000[ ]这份文件虽然在测试目录下但它同时是发布流程中对人类读者的**核心审查界面**发布负责人Release Captain无需阅读原始 Move 治理脚本仅凭这份摘要即可快速判断本次 Gas 参数动了什么并在顶部复选框与关键参数行完成签核。 --- ## 二、摘要文件的四段式结构 从金标准文件可以归纳出摘要文件固定的四段式结构其生成逻辑在 [summary.rs](https://link.gitcode.com/i/11dd1b323d4b3c106dc57903842222ea) 中逐行对应 ### 1. 标题与 Gas feature version markdown # Gas Schedule Changes Gas feature version: 30 - 31只有存在旧快照old参数为Some时才会输出Gas Schedule Changes标题并显示版本迁移区间若没有旧快照则输出# Gas Schedule 单版本号并追加一行斜体说明_No previous gas schedule was provided, so a parameter diff cannot be shown._。2. 总览签核复选框- [ ] I have reviewed the gas schedule changes below.这是总览级签核确保审查者先扫描全部变更再打勾。与之对应feature-flags.mdFeature Flag 变更摘要在有变更时也会输出同样的- [ ] I have reviewed the feature flag changes below.复选框若无变更则直接写_No feature flag changes in this release._且不输出复选框没有可审查内容就不制造签核负担。3. 变更明细表格## Changes | change | parameter | old | new | sign-off | | -------- | --------------------- | --------: | ---------: | -------- | | modified | instr.add | 50 | 65 | | | added | instr.mul | / | 90 | | | removed | instr.sub | 80 | / | | | modified | txn.max_execution_gas | 920000000 | 1000000000 | [ ] |当GasScheduleV2::diff返回的变更集为空时此处输出_No parameter changes._否则渲染完整表格。4. 关键参数逐项签核列sign-off表格最后一列sign-off是逐参数签核位只有关键 Gas 参数会获得自己的[ ]复选框其余行留空。这份金标准恰好覆盖了三种变更类型与两种签核形态的排列组合因此成为理想的测试样本。三、变更类型的判定底层 diff 算法摘要表中change列的modified/added/removed三态直接来自GasScheduleV2::diff的实现位于 types/src/on_chain_config/gas_schedule.rspub fn diffa(old: a Self, new: a Self) - BTreeMapa str, DiffItemu64 { let mut old old.to_btree_map_borrowed(); let new new.to_btree_map_borrowed(); // 遍历 new键同时存在于 old 且值不同 - Modify仅存在于 new - Add // 遍历剩余 old仅存在于 old - Delete // ... }其判定规则为场景DiffItem 变体表格 change 列oldnew参数在旧新快照中均存在但值不同Modify { old_val, new_val }modified旧值新值参数仅出现在新快照Add { new_val }added/新值参数仅出现在旧快照被删除Delete { old_val }removed旧值/注意diff基于BTreeMap实现返回的键天然按参数名字典序排列因此表格行序是确定且稳定的——这也是金标准比对能够逐字节成立的前提。测试数据佐证金标准对应的两份输入快照就放在同一测试目录下gas_old.jsonfeature_version: 30含txn.large_transaction_cutoff600、txn.max_execution_gas920000000、instr.add50、instr.sub80gas_new.jsonfeature_version: 31含txn.large_transaction_cutoff600、txn.max_execution_gas1000000000、instr.add65、instr.mul90。对照可得instr.add50 → 65即modifiedinstr.mul新出现即addedold 记为/instr.sub被移除即removednew 记为/txn.max_execution_gas920000000 → 1000000000modified且因其属于关键参数而带[ ]txn.large_transaction_cutoff600 → 600值未变不进入变更集。这正是一份理想的一网打尽测试夹具单次比对同时覆盖三种变更类型和关键/非关键两类参数。四、关键参数清单哪些行必须逐项签核哪些参数会获得独立的sign-off复选框由 summary.rs 中的常量表决定const CRITICAL_GAS_PARAMS: [str] [ txn.max_execution_gas, txn.max_io_gas, txn.max_storage_fee, txn.max_transaction_size_in_bytes, txn.maximum_number_of_gas_units, txn.gas_unit_scaling_factor, ];这六项参数直接决定单笔交易的 Gas 上限、IO 上限、存储费用上限与交易大小上限一旦放宽或收紧会立刻影响全网手续费水平与交易吞吐边界因此必须逐项显式确认。渲染逻辑在 emit_gas_change_table 中命中清单的参数在 sign-off 列输出[ ]其余参数留空——总览签核 关键参数逐项签核形成两级审查防线。五、表格的源码级对齐为什么原文如此整齐细看金标准表格old与new两列是右对齐、数字按宽度补空的。这并非偶然而是 table.rs 刻意实现的源码级对齐渲染器先计算每列最大字符宽度含表头最少 3 格以保持分隔线合法再按列对齐方向change/parameter/sign-off 左对齐old/new 右对齐在生成 Markdown 原文时就补足空格。let aligns [ Align::Left, // change Align::Left, // parameter Align::Right, // old Align::Right, // new Align::Left, // sign-off ];因此expected_gas_summary.md不只是渲染后好看其原始.md文本本身就是对齐的——这既提升了 diff 审查的可读性也让金标准比对具备强稳定性任何列宽或对齐变化都会使测试失败从而被显式捕获。六、这份摘要从哪里来生成链路与 CLI 命令expected_gas_summary.md所代表的产物在真实发布流程中位于 bundle 的summary/gas-schedule-changes.md文件名由常量GAS_SUMMARY: str gas-schedule-changes.md定义由generate-bundle命令在生成发布包时一并产出cargo run -p aptos-release-tool -- generate-bundle \ --release-config aptos-move/aptos-release-tool/data/framework-release.yaml \ --bundle $BUNDLE_DIR其生成链路在 commands/generate.rs 中依次为generate_scripts生成多步治理脚本scripts/N-*.move头部以// Script hash:注释打入字节码哈希供治理投票审计与metadata.jsonmaterialize_gas从发布配置的Gas条目拉取新旧快照写入gas/old.json、gas/new.jsonmaterialize_gas 还会先比较old new无变化则跳过 Gas 产物write_gas_summary基于两份快照调用GasScheduleV2::diff并渲染成summary/gas-schedule-changes.md复制config.yaml、计算全部文件校验和与全局摘要、写入bundle.toml最后自动执行一遍完整性校验全部通过才宣告生成成功。端到端测试 tests/e2e.rs 验证了上述产物清单含summary/gas-schedule-changes.md确实全部落地。注意该测试运行在 256MB 栈的专用线程上因为 Move 框架编译器递归过深、默认测试线程栈会溢出——这也是项目对框架编译深度的真实写照。七、金标准测试如何验证与更新单元测试 gas_summary_matches_golden 是这份金标准文件的守护者它从测试目录加载gas_old.json与gas_new.json调用write_gas_summary生成实际输出再与expected_gas_summary.md逐字节比对测试刻意设计为纯函数不编译框架因此即使框架变更导致端到端测试失败该测试依然保持绿色成为快速更新金标准的首选入口。更新金标准只需设置基线更新环境变量后运行UB1 cargo test -p aptos-release-tool --lib测试失败时的报错信息也会明确提示set UB1 to update将金标准过期转化为一键刷新操作。八、签核的强制执行verify-bundle --require-signoff摘要文件的复选框不是摆设verify-bundle命令通过--require-signoff将其变成发布前置门禁cargo run -p aptos-release-tool -- verify-bundle \ --bundle $BUNDLE_DIR \ --require-signoff【免费下载链接】aptos-coreAptos is a layer 1 blockchain built to support the widespread use of blockchain through better technology and user experience.项目地址: https://gitcode.com/GitHub_Trending/ap/aptos-core创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。