EVM
Yul + 锁定 solc 0.8.34 · Anvil 工程差分
目标
evm
族
合约虚拟机
轨道
accepted Phase 1
成熟度
Yul + 锁定 solc 0.8.34 · Anvil 工程差分
主制品
Yul + solc bytecode (.bin / .abi)
工具锁定
solc 0.8.34 + Anvil 0.3.0(双 profile:默认 + cancun)
可部署
true
Feature 清单
本目标的产品面计数(工程词汇,不是营销分数)。
12
合计
9
已支持
1
部分
1
显式拒绝
1
缺失
执行模型
账户 + storage
持久 storage 槽;message-call 语义;gas 与原子回滚。
Anvil 工程门
G4 脚本跑 Counter/TipJar/TokenJar/EnvRead 语料——不是 formal Reference↔Anvil。
pf.assets 绑定
产品路径含 native deposit/transfer、token.transfer、balanceOfSelf 环境读。
体积诚实
大型 Token creation bytecode 可超 EIP-3860;不能单凭此声称主网可部署。
制品
| 文件 | 角色 | 说明 |
|---|---|---|
| *.yul / *.bin / *.abi.json | 主制品 | Yul IR + 锁定 solc 字节码 + ABI。planDigest 绑定身份。 |
| proof-forge.output.v1 | 闭包 | inspect 用的精确 path/size/hash 输出集。 |
Feature 列表
今天能 lower 什么、显式拒绝什么、仍缺失什么。
流水线与工具
Target-owned EvmPlan → Yul → 锁定 solc。
3/4 已支持
- SUPPORTED
EvmPlan / materializeResult
基于 CompiledSemanticV1 的 planFromCapability;无 alpha residual 路径。
- SUPPORTED
锁定 solc finalize
EvmSolcsolc --strict-assembly 验收;缺工具按 profile 干净跳过或 fail-closed。
- SUPPORTED
Anvil 差分(G4)
G4工程 init/mutate/overflow/emit 语料——不是 formal D4/TST。
- MISSING
Formal Reference↔Anvil
未闭合;不得把 Anvil 绿灯写成 formal 完成。
状态与类型
各 target 中最宽的标量/聚合面之一。
3/4 已支持
- SUPPORTED
多宽度 UInt/Int + UInt128/256
窄/宽 body 子集,含 EVM-only 宽整数。
- SUPPORTED
Field bn254
mod-p 域算术通道。
- SUPPORTED
Struct/Enum/Array/Map/Bytes/Option/String
Map cap-8 UInt64 + Principal 键试点;Bytes N×UInt8;Option UInt64 状态;String match N-A1。
- FAIL-CLOSED
Option 参数 / 嵌套 Option
Option UInt64 状态试点之外仍 fail-closed。
副作用与资产
emit/revert、context 键、static-QN 调用、pf.assets。
3/4 已支持
- SUPPORTED
emit / bare revert / assert
产品路径;语料含 Anvil 日志观察。
- SUPPORTED
contextRead(时间/高度/caller)
ADR-0025 / S1-S2版本化键;未知键 FC。caller = u32le(20)||CALLER。
- PARTIAL
externalCall / schedule(static QN)
对 path-hash 地址真实 CALL 桩;部署地址绑定未闭合。
- SUPPORTED
pf.assets native + token + balanceOfSelf
ADR-0029/0030TipJar/TokenJar/EnvRead 产品 + Anvil 腿。transferAsync 仍 FC。
Profile
evm-yul-solc-0.8.34-v1默认锁定 solc 路径;无 ambient --evm-version。
evm-yul-solc-0.8.34-cancun-v1同 solc 引脚加 --evm-version cancun;runtime 用 Anvil --hardfork cancun。
构建
# EVM (after tool root materialize)
just toolchains-provision-external
just toolchains-materialize-external "$PWD/build/dev-tool-root"
PROOF_FORGE_TOOL_ROOT="$PWD/build/dev-tool-root" \
lake env .lake/build/bin/proof-forge-next build \
Examples/Counter.lean \
--module Examples.Counter \
--target evm -o build/counter-evm
lake env .lake/build/bin/proof-forge-next inspect build/counter-evm --json