Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: implement OPSuccinctFaultDisputeGame #342

Merged
merged 32 commits into from
Jan 28, 2025
Merged

Conversation

fakedev9999
Copy link
Member

@fakedev9999 fakedev9999 commented Jan 23, 2025

Summary

Implements the op-succinct fault dispute game compatible to Optimism's Dispute Game Interface, OPSuccinctFaultDisputeGame.sol.

Things modified from the original FaultDisputeGame.sol

Introduces a new method challenge, which allows challengers to challenge the game by bonding a proof reward.

Introduces a new method prove, which allows provers to prove that the claim is valid with a ZK proof. If a valid proof is submitted, proof reward is distributed to the prover in case where challenge occurred.

Removes all methods like step, move, resolveGame which is specific to on-chain VM based FaultDisputeGame, thus there are no sub game mechanisms.

The claimData array is now just a single ClaimData storage.

Bonds are transferred directly to the contract and distributed via resolution with ZK proof validation or clock expiry, avoiding the WETH-based model.

Note

Gas cost of a proposal (game creation) is 448,465.

Copy link

github-actions bot commented Jan 23, 2025

Metric Value
Batch Start 23,145,930
Batch End 23,145,935
Witness Generation (seconds) 34
Execution Duration (seconds) 62
Total Instruction Count 2,612,886,427
Oracle Verify Cycles 430,892,387
Derivation Cycles 1,937,169,065
Block Execution Cycles 121,379,109
Blob Verification Cycles 196,026,881
Total SP1 Gas 0
Number of Blocks 5
Number of Transactions 59
Ethereum Gas Used 6,630,051
Cycles per Block 522,577,285
Cycles per Transaction 44,286,210
Transactions per Block 11
Gas Used per Block 1,326,010
Gas Used per Transaction 112,373
BN Pair Cycles 0
BN Add Cycles 0
BN Mul Cycles 0
KZG Eval Cycles 0
EC Recover Cycles 462,046
P256 Verify Cycles 0

ratankaliani
ratankaliani previously approved these changes Jan 23, 2025
Copy link
Member

@ratankaliani ratankaliani left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You should remove duplicated contracts, address the comments in the DisputeGame contract and add a better PR description.

@fakedev9999 fakedev9999 force-pushed the taehoon/implement-zkfp branch from 7bedecd to c3fd3fc Compare January 24, 2025 15:49
@fakedev9999 fakedev9999 marked this pull request as ready for review January 24, 2025 16:53
@fakedev9999 fakedev9999 changed the title feat: implement OPSuccinctDisputeGame feat: implement OPSuccinctFaultDisputeGame Jan 24, 2025
@fakedev9999 fakedev9999 force-pushed the taehoon/implement-zkfp branch from 1f71af1 to 76de011 Compare January 24, 2025 19:38
@fakedev9999 fakedev9999 marked this pull request as ready for review January 28, 2025 18:56
@fakedev9999 fakedev9999 merged commit 42f9851 into main Jan 28, 2025
9 checks passed
@fakedev9999 fakedev9999 deleted the taehoon/implement-zkfp branch January 28, 2025 20:26
PinelliaC added a commit to mantle-xyz/op-succinct that referenced this pull request Feb 18, 2025
* feat: implement OPSuccinctFaultDisputeGame (succinctlabs#342)

* feat: implement OPSuccinctFaultDisputeGame

* apply comments

* apply comments

* chore: forge fmt

* chore: forge fmt src/ test/ script/

* fix .gitmodules

* fix .gitmodules

* fix .gitmodules

* fix: add missing checks

* chore: forge fmt

* fix .gitmodules

* fix submodules

* feat: implement with new spec

* fix: handle first game

* apply comments

* fix: range vkey, public values from contract storage

* missing fix from ^

* refac: use deadline, proposal status instead of clock

* feat: use genesis l2 block number and hash for initial game

* apply all comments

* feat: make unchallenged games provable

* apply comments

* chore: remove warnings

* test: add more tests

* refac: use payable transfer instead of call

* refac: remove claimant from claimData

claimant never changes + can get from gameCreator()

* fix: remove l2 chain id

* apply comments

* first

* udpate doc

* docs: make fault proof doc visible in the book

* enable mermaid in book

---------

Co-authored-by: Uma Roy <[email protected]>

* docs: update `fault_proof_architecture.md` (succinctlabs#353)

* docs: fix mermaid diagram

* docs: update immutable params

* docs: make doc more comprehensive

* docs: minor updates

* docs: make initalization more clear in terms of initial state

* docs: add types section for new/modified types

* fix: update OPSuccinctFaultDisputeGame with nits (succinctlabs#354)

* fix: update OPSuccinctFaultDisputeGame with nits

* docs: fix proving section

* feat: upgrade to latest `kona` (succinctlabs#344)

* feat: wip, running into fd issues bc zkvm mode

* wip

* add

* wip

* feat: program compiles

* feat: still working through host issues, many of the scripts aren't compiling, making progress

* wip

* update

* wip

* feat: need to clean up host lib

* feat: drop the kv_store so there are no conflicting locks

* add

* feat: move to latest kona

* add

* fix: DOckerfile

* add

* clippy

* fix

* redundant

* fix

* feat: todo

* multi works

* feat: small program works

* feat: got store_oracle working

* remove configs

* feat: works with new blob provider

* feat: docs

* feat: works with upstream kona

* add cycle tracking

* add

* feat: add driver with logging

* fix: more efficient than before

* feat: delete single

* add

* feat: general cleanup

* fix

* clippy

* fix

* clean

* add

* clean

* rm bootinfowithbytesconfig

* feat: new elf

* add

* refactor

* add

* remove configs

* delete

* remove test

* update

* fmt

* feat: in parallel

* feat: update elf

* feat: simplify

* host

* feat: show entire diff

* clippy

* feat: trigger workflow

* feat: fix cost estimator

* add

* chore: remove slack token (succinctlabs#364)

* feat: remove slack token

* tidy

* feat: update

* add

* feat(fetcher): Use finalized block (succinctlabs#366)

* feat(proposer): don't re-checkpoint (succinctlabs#365)

* feat: dont recheckpoint in proposer

* add

* chore: `sp1-sdk` (succinctlabs#368)

* docs: issue template

* chore: `kona` + `sp1` upgrade (succinctlabs#376)

* feat: kona upgrade

* cargo fmt

* delete safe_head_hash

* fmt

* rm

* clippy

* test fix

* add

* works

* expose start_server

* add

* add

* fix: Rust install

* add

* move witnessgen

* add

* lint

* bump to 4.1.0

* one week rolling

* add

* feat: add

* clean

* add

* ad

* add

* ELF

* chore: Use `op-rs` upstream (succinctlabs#379)

* feat(server): add proof mode (succinctlabs#380)

* feat: add agg proof mode

* add

* chore: remove bls patch (succinctlabs#381)

* feat: add agg proof mode

* add

* chore: remove bls patch

* feat(server): debug logs (succinctlabs#351)

* feat: boba debug branch

* fix

* enable push

* fix

* additional debug logs

* build succinct-proposer first

* feat: fetch in order

* add

* add

* rm logs

* fix

* chore: fmt

* chore: trigger docker build (succinctlabs#382)

* feat: `kona` pectra tag (succinctlabs#384)

* chore: kona pectra tag

* docker elf

* chore(server): `Arc` shared state (succinctlabs#385)

* chore: wrap proposer config in arc

* chore: fmt

* fmt

* feat(contracts): use `DisputeGameFactory` (succinctlabs#378)

* feat(contracts): use `DisputeGameFactory`

Removes unnecessary `OPSuccinctDisputeGameFactory`

* fix: fix proposer to call DFG correctly

* fix: make op-succinct validity working with op's dgf

* cleanup

* update

* apply comments

* feat(contracts): remove bond for validity DGF (succinctlabs#386)

* feat(server): Only use `Arc<NetworkProver>` in real proof mode (succinctlabs#387)

* feat(proposer): set default network private key

* add

* fmt

---------

Co-authored-by: Ratan Kaliani <[email protected]>

* chore: Switch to `OPSuccinctHost` (succinctlabs#389)

* chore: clippy

* chore: fix just update-parameters (succinctlabs#392)

* chore: fix contract verification (succinctlabs#391)

* chore(ci): docker tag (succinctlabs#393)

* chore(client + ci): precompile annotation checks (succinctlabs#390)

* chore: kzg_eval precompile

* feat: bump to revm_precompile 0.16.1

* wip

* chore: precompile

* works

* add

* addgs

* ci.yaml

* remove unnecessary tests

* ci

* add

* range elf

* add

* chore(ci): docker build

* fix(proposer): bindings (succinctlabs#396)

* chore: add go test

* checkout

* add

* fix test

* feat: update range elf

* chore: remove unused code

* elf: update range elf

---------

Co-authored-by: fakedev9999 <[email protected]>
Co-authored-by: Uma Roy <[email protected]>
Co-authored-by: Ratan Kaliani <[email protected]>
Co-authored-by: ratankaliani <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants