This challenge is in preview. The repository is currently invite-only — access is granted on request while Season 1 is finalized. This page is unlisted; you're seeing it because someone shared the link.
Solidus is a formally verified Solidity/Yul → EVM bytecode compiler. A single Lean 4 theorem, Solidus.compile_correct, connects the source program's semantics to the emitted bytes on a pinned EvmYul interpreter. Your job: make the compiled contracts cheaper — deployment plus runtime gas, as aggressively as you like — while the theorem still proves.
Because the correctness claim is a machine-checked theorem over a frozen specification, there is no “did you break something” review step. If your compiler builds, the axiom audit is clean, and the frozen spec elaborates against it, your rewrite is correct by construction. Rewrite any pass, any IR, any internal proof — the theorem is the only referee.
One number: total gas to deploy and exercise a private test suite. For each contract, that is its deployment transaction plus a fixed set of private transaction vectors executed against it, on a pinned executor.
>24576 flag are still reported, informationally.--optimize-runs and is fixed per season.CI hash-checks these files, and the private scoring runner independently re-checks them from configuration you cannot touch. Submissions may not modify:
Solidus.compile? and the correctness theorems (Defs.lean, Correctness.lean);EvmYul dependency pin and lean-toolchain;Everything else — every compiler pass, every IR, every internal proof — is yours to rewrite. Internal proofs are implementation detail: restructure, delete, or replace them, as long as the frozen theorems still prove.
lake build EvmCompiler.Verification must succeed.#print axioms on Solidus.compile_correct and Solidus.compile_correct_creation must report exactly [propext, Classical.choice, Quot.sound]. This mechanically excludes sorry, native_decide, and smuggled axioms.arena (the current record) or from any record-NNN tag — building on older records is allowed and encouraged.examples/ corpus.arena, stating which record you branched from (Based-on: record-NNN); CI verifies it by git ancestry.arena, tagged record-NNN+1, and you enter the leaderboard permanently, with the lineage of which record you built on.Records publish total gas only, plus the delta and a commit link. Per-contract results are never published — this is deliberate, anti-overfitting design.
Unbounded recursion is not supported, by design. A function whose recursion depth depends on runtime input has no static bound on its operand-stack requirement, and the correctness theorem excludes stack overflow from the compiled code's possible behaviors — so no stack-headroom certificate can exist and Solidus.compile? fail-closes. This is a consequence of the guarantee, not a bug: Solidus refuses to emit code it cannot prove safe. Write recursive logic as loops.
The source of truth for these rules is CHALLENGE.md in the challenge repository.