十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Aptos 治理配置更新函数的 Move 规范推断评估样本:AF-aptos-governance-034 全解

Aptos 治理配置更新函数的 Move 规范推断评估样本:AF-aptos-governance-034 全解 Aptos 治理配置更新函数的 Move 规范推断评估样本AF-aptos-governance-034 全解【免费下载链接】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-coreAF-aptos-governance-034是 Aptos Core 仓库中 Move 规范推断spec-inference评估体系aptos-move/flow/evaluation/spec-inference下 corpus-v1.2 语料库中的一个标准样本它把目标锁定在框架模块0x1::aptos_governance::update_governance_config——一个只允许 Aptos 框架签名者调用、用于在链上治理提案中更新治理参数的函数。本文围绕该样本的 README 说明结合仓库内真实源码、规范文件、变异体数据与评估管线完整还原这个recipe配方式样本的构造原理、编译上下文、准备流程与评分机制帮助读者理解 MoveFlow 如何用复制共享包 打补丁 哈希校验的方式为 AI Agent 构造一个可复现、可隔离、可验证的规范推断任务。样本是什么语料库上的单一可编辑包 recipe样本 README 开宗明义地说明了自己的定位This sample is a recipe over the corpuss single editableframeworkpackage.即该样本不是一份独立源码而是作用在语料库共享framework包之上的一份配方。运行流程分三步复制评估运行器把共享的framework包整体复制到独立工作区打补丁对复制结果应用preparation.patch哈希校验校验补丁后的树哈希与预期一致然后才把隔离的工作区交给 AI Agent。其中共享包位于样本目录下的framework/其清单记录在framework/corpus-modules.json包含AptosFramework、AptosStdlib、AptosExperimental、AptosTrading、MoveStdlib五组源码目录及Move.toml、Prover.toml。corpus-modules.json同时记录了包的模块/文件映射与解析后的命名地址named addresses这是运行器验证复制得到的包就是语料库中那个包的依据之一。目标声明Target样本的核心目标是链上治理配置更新函数全部元信息如下项目值目标函数0x1::aptos_governance::update_governance_config推断粒度Granularityfunction函数级原始源码aptos_governance.move共享包内路径sources/AptosFramework/aptos_governance.move源码根目录aptos-move/framework/aptos-frameworkAptos Core 提交950e413e46090d2056740c36dd7a77b1764b6936共享包 SHA-2561c41a4a754554758e1632217bb867a0dc8c622072f937edf1e1ef44adaf1f116补丁后树 SHA-25681b74a60e2db85ae955d8dd92e75d26641aa193d073c593c42b24cceba4d08d4必需合约类别normal-result、state-transition、frame三个必需合约类别对应 Move 规范spec中的三类关键契约normal-result正常结果下的后置条件、state-transition状态转移/modifies声明、frame涉及signer帧与借用的访问约束。这决定了 Agent 产出的规范必须覆盖哪些语义维度也是后续评分时逐类别核对的依据。哈希值共享包哈希与补丁后树哈希用于校验分发出去的工作区与设计者筛选用的工作区逐字节一致杜绝 Agent 拿到被篡改或被污染的源码。目标函数实现与参考规范可执行实现在原始仓库 aptos_governance.move 中update_governance_config的实现如下/// Update the governance configurations. This can only be called as part of resolving a proposal in this same /// AptosGovernance. public fun update_governance_config( aptos_framework: signer, min_voting_threshold: u128, required_proposer_stake: u64, voting_duration_secs: u64, ) acquires GovernanceConfig { system_addresses::assert_aptos_framework(aptos_framework); let governance_config borrow_global_mutGovernanceConfig(aptos_framework); governance_config.voting_duration_secs voting_duration_secs; governance_config.min_voting_threshold min_voting_threshold; governance_config.required_proposer_stake required_proposer_stake; event::emit( UpdateConfig { min_voting_threshold, required_proposer_stake, voting_duration_secs }, ); }函数语义非常清晰先通过system_addresses::assert_aptos_framework强制签名者为aptos_framework随后就地修改aptos_framework地址下的GovernanceConfig资源borrow_global_mut 三个字段赋值最后发出UpdateConfig事件。acquires GovernanceConfig声明了它对全局存储的访问权。同一文件中还有两个单元测试佐证行为test_update_governance_config框架签名者参数10, 20, 30正常路径与test_update_governance_config_unauthorized_should_fail普通账户应当中止见 aptos_governance.move。参考规范被隐藏的目标仓库自带的规范文件 aptos_governance.spec.move 给出了该函数的标准答案式参考规范spec update_governance_config( aptos_framework: signer, min_voting_threshold: u128, required_proposer_stake: u64, voting_duration_secs: u64, ) { let addr signer::address_of(aptos_framework); let governance_config globalGovernanceConfig(aptos_framework); let post new_governance_config globalGovernanceConfig(aptos_framework); aborts_if addr ! aptos_framework; aborts_if !existsGovernanceConfig(aptos_framework); aborts_if !features::spec_is_enabled(features::MODULE_EVENT_MIGRATION) !existsGovernanceEvents( aptos_framework ); modifies globalGovernanceConfig(addr); ensures new_governance_config.voting_duration_secs voting_duration_secs; ensures new_governance_config.min_voting_threshold min_voting_threshold; ensures new_governance_config.required_proposer_stake required_proposer_stake; }这份参考规范覆盖了三个必需类别aborts_if中止条件对应normal-result/abort 语义非框架签名者中止GovernanceConfig不存在时中止模块事件迁移未启用且GovernanceEvents不存在时中止modifies对应state-transition声明会修改GovernanceConfigensures后置条件三个治理参数逐一等于入参完整刻画状态转移结果。样本的准备阶段会把这一参考块从 Agent 可见源码中移除详见下文让 Agent 在不知道标准答案的前提下重新推断。编译上下文传递模块依赖与透明边界共享包即编译上下文README 明确共享包包含目标模块与其源码级传递模块依赖的并集。样本只把0x1::aptos_governance::update_governance_config作为推断目标其余模块一律只是编译上下文compilation context不是额外的推断目标。这一设计保证了 Agent 在完整框架语义下工作——例如update_governance_config用到的GovernanceConfig、UpdateConfig事件结构、system_addresses模块都必须可编译、可解析——同时又把任务边界收敛到单一函数。Opaque/bodyless 边界合约规范推断依赖对被调用函数的行为假设。样本声明了在证明该目标时**契约可见的透明可执行被调用方opaque/bodyless boundary**闭包0x1::event::emit0x1::system_addresses::assert_aptos_framework这两个函数在证明过程中被视为不透明边界其既有合约如assert_aptos_framework的aborts_if行为会作为假设被引用而非重新推断。其中assert_aptos_framework的实现语义可在 system_addresses.move 中查看is_aptos_framework_address 权限拒绝错误。传递规范函数这些边界合约又引用了两个传递性规范函数证明器需要它们来展开signer相关属性0x1::signer::$address_of0x1::signer::$borrow_address即从signer中取地址address_of与借用borrow_address的规范函数供let addr signer::address_of(aptos_framework)这类表达式在证明中被正确求值。传递源码模块清单要编译该样本共享包必须包含以下全部传递源码模块共 132 个按模块名排序0x1::account、account_abstraction、aggregator、aggregator_factory、aggregator_v2、any、aptos_account、aptos_coin、aptos_hash、auth_data、bcs、bcs_stream、big_ordered_map、block、bls12381、bn254_algebra、chain_id、chain_status、chunky_dkg、chunky_dkg_config、chunky_dkg_config_seqnum、cmp、code、coin、comparator、confidential_amount、confidential_asset、confidential_balance、confidential_range_proofs、config_buffer、consensus_config、copyable_any、create_signer、crypto_algebra、decryption、delegation_pool、dispatchable_fungible_asset、dkg、ed25519、epoch_timeout_config、error、event、execution_config、features、federated_keyless、fixed_point32、fixed_point64、from_bcs、function_info、fungible_asset、gas_schedule、genesis、governance_proposal、guid、hash、init、jwk_consensus_config、jwks、keyless、keyless_account、math128、math64、math_fixed64、mem、multi_ed25519、multi_key、multisig_account、nonce_validation、object、option、optional_aggregator、ordered_map、pool_u64、pool_u64_unbound、primary_fungible_store、randomness、randomness_api_v0_config、randomness_config、randomness_config_seqnum、reconfiguration、reconfiguration_state、reconfiguration_with_dkg、reflect、resource_account、result、ristretto255、ristretto255_bulletproofs、ristretto255_pedersen、secp256k1、secp256r1、sigma_protocol、sigma_protocol_fiat_shamir、sigma_protocol_homomorphism、sigma_protocol_key_rotation、sigma_protocol_proof、sigma_protocol_registration、sigma_protocol_representation、sigma_protocol_representation_vec、sigma_protocol_statement、sigma_protocol_statement_builder、sigma_protocol_transfer、sigma_protocol_utils、sigma_protocol_withdraw、sigma_protocol_witness、signer、simple_map、single_key、smart_table、stake、staking_config、staking_contract、state_storage、storage_gas、storage_slots_allocator、string、string_utils、system_addresses、table、table_with_length、timestamp、transaction_context、transaction_fee、transaction_limits、transaction_validation、type_info、util、validator_consensus_info、vector、version、vesting、voting该清单与 preparation.patch 中生成的.move-inference-task.json内transitive_module_dependencies字段一一对应是任务配方的机器可读形态package_module_target、target_functions、called_function_dependencies即透明边界、spec_function_dependencies即传递规范函数、transitive_called_function_dependencies含0x1::error::canonical、0x1::error::permission_denied、0x1::event::write_module_event_to_store、0x1::system_addresses::is_aptos_framework_address等更深的调用、source_commit、schema_version: 3、task_id: AF-aptos-governance-034等字段共同构成样本的完整机器清单。准备流程Preparation隐藏答案、锁定可编辑面补丁做了什么README 的核心承诺是可执行 Move 实现保持不变唯一被移除的是 Agent 可见源中的参考规范块。具体到本样本从 Agent 可见源码中删除的目标参考块为sources/AptosFramework/aptos_governance.spec.moveupdate_governance_config的参考规范块1 个块preparation.patch 展示了这一可复现变换的完整 diff除了把aptos_governance.spec.move第 111-135 行附近的spec update_governance_config(...) { ... }整块替换为空白行外还新增了.move-inference-task.json任务描述文件。也就是说补丁做两件事——(1) 写入机器可读的任务清单(2) 擦除参考规范迫使 Agent 从实现上下文独立推断。Agent 的可编辑范围README 明确限定 Agent只能编辑两个文件sources/AptosFramework/aptos_governance.movesources/AptosFramework/aptos_governance.spec.move其余 260 个.move文件、Move.toml、Prover.toml、corpus-modules.json均视为不可变上下文。这一约束防止 Agent 通过修改system_addresses或event等被调用模块来作弊式放宽证明义务保证所有被推断契约都落在目标函数自身。为什么需要哈希Shared package SHA-256与Prepared tree SHA-256两枚哈希在评估中承担双重角色其一运行器在复制与打补丁后校验哈希确保分发给 Agent 的树与语料库中筛选、评分用的树一致其二评估框架把哈希写入调度清单与轮次清单round manifest实现装置身份校验apparatus-identity check——正如 spec-inference 主 README 所述修改harness/或prompts/会使对应哈希失效从而在运行中阻断未记录的环境变更。变异体与合约类别评分规范质量的试金石样本的价值最终由它能否被评分决定。仓库为该样本维护了两组变异体数据反驳集refutation会话中展示给 Agentmutants/AF-aptos-governance-034/mutants.json含 3 个 essential 变异体持出评分集held-out scoring会话后用于打分mutants-scoring/AF-aptos-governance-034/mutants.json另有 3 个。评分结果记录在metadata/mutation-validation-005/AF-aptos-governance-034.json全部 6 个变异体都被参考规范击杀killed。反驳集变异体对应会话内反馈变异体 ID变更内容所属合约类别被击杀时的证明器报错AF-aptos-governance-034-duration-off-by-one voting_duration_secs 1normal-resultpost-condition does not holdAF-aptos-governance-034-no-framework-check删除assert_aptos_framework调用abortcaller does not have permission to modify aptos_governance::GovernanceConfigAF-aptos-governance-034-threshold-halved阈值被减半normal-resultpost-condition does not hold持出评分集变异体对应会话后门禁变异体 ID变更内容所属合约类别被击杀时的证明器报错AF-aptos-governance-034-stake-unchangedrequired_proposer_stake不更新normal-resultpost-condition does not holdAF-aptos-governance-034-return-when-missing资源缺失时提前返回而非中止abortfunction does not abort under this conditionAF-aptos-governance-034-duration-zeroedvoting_duration_secs被清零normal-resultpost-condition does not hold从变异体rationale可以看出设计意图每个变异体都精确钉住参考规范中的一条契约——duration-off-by-one钉住ensures ...voting_duration_secs voting_duration_secsno-framework-check钉住aborts_if addr ! aptos_frameworkstake-unchanged钉住ensures ...required_proposer_stake required_proposer_stakereturn-when-missing钉住aborts_if !existsGovernanceConfig。因此只有当 Agent 推断出的规范足够强能证明这些错误实现不满足契约它才能通过变异测试一份只写aborts_if不写ensures、或只写部分字段后置条件的弱规范会放过这些变异体而被扣分。这种变异体击杀机制与move-flow experiment prove --target 0x1::aptos_governance::update_governance_config --timeout 40的证明命令配合构成了对推断规范的客观质量门禁。样本在 MoveFlow 评估管线中的位置从 flow/README.md 可知整个体系是 MoveFlowAI 辅助的 Aptos Move 智能合约开发工具链的论文评估装置evaluation/spec-inference托管控制器、隐藏裁判、语料库构建器与随机调度工具。AF-aptos-governance-034这类样本在其中扮演任务单元角色调度调度器读取样本 manifest含screening_status、哈希、目标函数、变异体路径把该样本分配给某一实验臂agent_only/hybrid_guided/hybrid_flexible的单元格会话Agent 在沙箱内复制共享包、应用补丁、校验哈希后只能编辑两个指定文件借助 MCP 工具move_package_verify跑 Move Prover、move_package_wp做最弱前置条件推断等完成任务评分会话结束后harness.score_round用持出评分集本样本即mutants-scoring对推断规范做变异测试同时corpus-v1.2的用法是把mutants集作为门禁disqualification gate——变异体存活即否决该契约本轮成绩作废而非计入测量。样本命名规则AF-aptos-governance-034也暗示了语料库的组织方式AF前缀代表 AptosFramework 模块族aptos-governance是模块名034是该模块下的序号同族样本如AF-account-025、AF-stake-004共享同一套 268 文件的framework包骨架仅在目标函数、补丁与变异体上分化从而保证跨样本可比性。小结一份可复现、可评分、可审计的推断任务AF-aptos-governance-034展示了 Move 规范推断评估样本的标准形态以共享framework包为编译上下文132 个传递模块以update_governance_config为单一函数目标粒度function以event::emit与system_addresses::assert_aptos_framework为透明边界通过preparation.patch擦除参考规范并写入机器可读任务清单再用两枚 SHA-256 哈希锁定树的完整性。它既是 Agent 的考卷只能编辑两个文件、推断覆盖normal-result/state-transition/frame三类契约也是裁判的评分卡六枚变异体逐一检验规范对中止条件、修改声明与后置条件的刻画。想要复现验证可在本仓库内查看样本目录 AF-aptos-governance-034、参考规范 aptos_governance.spec.move、补丁 preparation.patch 与评分数据 AF-aptos-governance-034.json完整追溯从目标函数到变异体击杀的整条证据链。【免费下载链接】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),仅供参考
返回列表