Skip to content
This repository was archived by the owner on Apr 18, 2025. It is now read-only.

[FEAT] support mainnet block in mainnet.rs (#814) #1004

Merged
merged 43 commits into from
Nov 20, 2023
Merged

Conversation

noel2004
Copy link
Member

@noel2004 noel2004 commented Oct 25, 2023

This PR plan to fixed #814 so we can test mainnet block /tx data from a RPC node.

Some non-trivial update has been induced:

  • A "relaxed mode" to raise some restricts in builder / circuit so we can specify coinbase / difficulity dynamically.
  • pi circuit's config should not use max_txs / max_inner_blocks etc

Current work should be applicable with both L1 (mainnet) and L2 (scroll's rollup). Now it can grep blocks / txs from L2 node, or legacy txs from L1. However, we are still blocked in handling L1 txs / blocks since tx circuit still not support EIP1559.

A test case for tx in L1:

TX_ID=0x7b8d6dc93aa2e0f6faa565340e48af3fb2a14e094d960389b2e3c76383944dfa RUST_BACKTRACE=1 RUST_LOG=debug GETH0_URL=http://<the rpc node with debug API> cargo test --features=scroll test_mock_prove_tx --release

@lispc
Copy link

lispc commented Oct 26, 2023

ready for review?

@noel2004 noel2004 requested review from kunxian-xia and lispc October 26, 2023 02:48
@noel2004 noel2004 marked this pull request as ready for review October 26, 2023 03:00
@lispc
Copy link

lispc commented Oct 26, 2023

\b run testool 1

@zkevm-circuits-bots
Copy link

@noel2004
Copy link
Member Author

noel2004 commented Oct 31, 2023

Have scanned several hundreds blocks in mainnet to investiage the compatibility

It seems we still need following feature to support most txs in mainnet:

  • EIP1559 in bus-mapping tx circuit (tx type = 2)
  • BASEFEE opcode

And for support most blocks we need:

  • Support >128 max txs for rlp / sig circuit
  • large copy data (> 500,000 which is hardcoded currently, 1.5M is adviced)

@lispc lispc merged commit 0c3b39f into develop Nov 20, 2023
@lispc lispc deleted the feat/mainnet_run branch November 20, 2023 08:35
@kunxian-xia
Copy link

BASEFEE opcode for ethereum mainnet will be supported by #1033.

naure added a commit that referenced this pull request Dec 13, 2023
* [FEAT] support mainnet block in mainnet.rs (#814) (#1004)

* patch for L2 node rpc

* constrain max_txs to pass pi circuit

* revert get access set to the same implement as upstream

* update for using prestateTracer for state

* fix coinbase issue

* apply mock fill root

* better form for mock filling mpt

* dep issue

* some trivial optimizations

* grep mpt standlone circuit from test

* update poseidon row params

* fix issues in old_root setting

* update ethblock for some fields

* update more fields

* update keccak inputs

* update prev state root

* update more fields for state root

* update code size

* fix storage issue on missing field

* optimize the pre state handling

* induce relax mode to raise some restrict

* picking coinbase/difficulity from block instead of default constants

* custom diff/coinbase in padding

* fix the max_txs issue in pi_circuit

* clippy and fmt

* support single tx test

* adjust params

* rebuild mpt state in mock tx proven

* fmt

* resume some fields in prestate trace

* test creating supercircuit from dummy witness block

* revert most params

* mitigate an issue in prestate tracer

* add timeout spec for robust API call

* fmt

* add readme for test

* add more comment according to review

---------

Co-authored-by: Steven <asongala@163.com>

* fix: only enable circuit for `BASEFEE` opcode (without opcode mapping) (#1033)

* Enable `BlockCtxU256Gadget` for `BASEFEE` opcode in `scroll` feature.

* Fix to restrict `DIFFICULTY` execution state only for scroll (to avoid soundness).

* Disable applying MPT if non-scroll in integration-tests. (#1034)

* Add `AccessListGasCost` to `TxContextFieldTag`. (#1041)

* [feat] enum error in GethExecStep  (#1037)

* make error enum

* remove non_exhaustive

* [feat] add feature switch of memory/stack/storage (#1038)

* add feature switch

* add missing

* fix merge

* parallel assignment of evm circuit (#1027)

* done

* retry

* seem done

* fix

* Temp to comment out `Cached assign at ...` log.

* clean-codes

---------

Co-authored-by: Steven Gu <asongala@163.com>

* Refactor PI Circuit (#1042)

* refactor assign into sub-methods, more docs

* fmt

* fix: doc escape square braces

* fix offset increment

* fix macos build (#1047)

* remove halo2wrong (#1048)

* feat: Add `TxEip2930Gadget` to handle EIP-2930 (for evm-circuit part) (#1045)

* Add `TxEip2930Gadget` to begin-tx to handle EIP-2930 in evm circuit.

* Move `AccessList*` to the front of `BlockNumber` to fix tx-circuit tests.

* Merge `CopyDataType` of access list to `AccessListAddresses` and `AccessListStorageKeys`.

* Delete `is_eip1559_tx` function which should be better to add in the EIP-1559 PR.

* Rename function `access_list_address_and_storage_key_sizes` to `access_list_size`.

* Add `AccessListRLC` to tx-table.

* Fix test.

* Remove `AccessListGasCost`, and try to calculate it by `AccessListAddressesLen` and `AccessListStorageKeysLen`

---------

Co-authored-by: Rohit Narurkar <rohit.narurkar@protonmail.com>

* [FEAT] precompile-sha256 (#1032)

* init table16 with generic refactoring

* update cargo

* add required cfgs

* add benchmarking

* customable bench

* fmt

* config gates for sha256 circuit

* complete sha256 circuit

* induce SHA256 in bus mapping

* better challenge spec

* integrate sha256 circuit into super

* readme (wip)

* complete precompile and sha256 table

* clippies

* fmt

* better tests

* fix issues and better printing for circuit layout

* refine and fix issues

* fix digest in table16

* fix layout, clippy and fmt

* complete sha256 table

* fix rw

* fix rlc on padding

* clippy and fmt

* more tests

* test added

* sha256: update row cost per block

* update readme (wip)

* lookup input len

* enable sha256

* more tests cases

* refactoring aux data

* fmt

* fix precompile call test

* fix another callop test

* + update bench to circuit-sha256,
+ update readme

* fix vk issue, add more test

* trivial fixs

* move sha256 circuit into zkevm-circuits

* purge unused sha256 dir

* bump halo2 version

* fix blank comment

* fix fmt (#1049)

* chore: upgrade group/ff/halo2 and rust version (#1022)

* wip

* enforce eth v2.0.7

* update links

* clean up zktrie

* fix keccak circuit

* fix gadgets

* fix bus-mapping

* everything compiles now

* compiles

* compiles

* clean up

* update zktrie links

* update dep for zktrie

* Fix all dep/compliation issues in Sync ff 0.13 (#1056)

* fix all dep issue

* use updated misc-precompile

* fix test issue

* purge lock file by upgrading mpt-circuit

* final update for dep of mpt-circuits

* update deps

* build?

---------

Co-authored-by: Zhang Zhuo <mycinbrin@gmail.com>

* upgrade halo2;

* build

* Upgrade rust-toolchain to `nightly-2023-10-27` in CI.

* Fix some byte values (u8) from `u128` to `u64` in `SAR`.

* uncomment unit tests for aggregator

* fix clippy

* uncomment sig circuit and tx circuit

* uncomment rlc gates unit tests

* fix make doc

* uncomment sig/ecc related code

* minor fix

* clippy

* undo last clippy..

* disable some super circuit tests

---------

Co-authored-by: Ho Vei <noelwei@gmail.com>
Co-authored-by: Ho <noel.wei@gmail.com>
Co-authored-by: Zhang Zhuo <mycinbrin@gmail.com>
Co-authored-by: Steven Gu <asongala@163.com>

* [chore] update rust toolchain to 1.76 nightly; replace  lazy_static/once_cell with std::sync::LazyLock (#1050)

* part1

* part2

* wip

* enforce eth v2.0.7

* update links

* clean up zktrie

* fix keccak circuit

* fix gadgets

* fix bus-mapping

* everything compiles now

* compiles

* compiles

* clean up

* update zktrie links

* update dep for zktrie

* [chore] update rust toolchain to 1.76 nightly

* Fix all dep/compliation issues in Sync ff 0.13 (#1056)

* fix all dep issue

* use updated misc-precompile

* fix test issue

* purge lock file by upgrading mpt-circuit

* final update for dep of mpt-circuits

* update deps

* build?

---------

Co-authored-by: Zhang Zhuo <mycinbrin@gmail.com>

* upgrade halo2;

* remove lazy_static and once_cell

* update snark-verifier

* build

* Upgrade rust-toolchain to `nightly-2023-10-27` in CI.

* Fix some byte values (u8) from `u128` to `u64` in `SAR`.

* uncomment unit tests for aggregator

* fix clippy

* uncomment sig circuit and tx circuit

* uncomment rlc gates unit tests

* fix make doc

* uncomment sig/ecc related code

* minor fix

* clippy

* undo last clippy..

* disable some super circuit tests

* update ci script

* fix missing

* post merge

* soundness fix

* fix missing

* fix missing

---------

Co-authored-by: zhenfei <zhenfei.zhang@hotmail.com>
Co-authored-by: Ho Vei <noelwei@gmail.com>
Co-authored-by: lightsing <light.tsing@gmail.com>
Co-authored-by: Ho <noel.wei@gmail.com>
Co-authored-by: Steven Gu <asongala@163.com>

* bus-auto: fixes after merge

* bus-auto: support for parallel assign_regions

---------

Co-authored-by: Ho <noel.wei@gmail.com>
Co-authored-by: Steven <asongala@163.com>
Co-authored-by: Akase Cho <lightsing@users.noreply.github.com>
Co-authored-by: Zhang Zhuo <mycinbrin@gmail.com>
Co-authored-by: Rohit Narurkar <rohit.narurkar@protonmail.com>
Co-authored-by: zhenfei <zhenfei.zhang@hotmail.com>
Co-authored-by: Ho Vei <noelwei@gmail.com>
Co-authored-by: lightsing <light.tsing@gmail.com>
Co-authored-by: Aurélien Nicolas <info@nau.re>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

test: support scroll l2 trace in integration-tests/mainnet.rs
4 participants