From cf5ad6a4dfaf261aedfbcb3823902f184b4b6ca2 Mon Sep 17 00:00:00 2001 From: Robin Salen <30937548+Nashtare@users.noreply.github.com> Date: Tue, 26 Nov 2024 09:00:53 -0500 Subject: [PATCH] v0.7.0 release (#808) * Bump with plonky2 v1.0.0 * Update CHANGELOG * Bump versions * Update lock --- CHANGELOG.md | 216 ++++++++++++++++++ Cargo.lock | 56 +++-- Cargo.toml | 18 +- evm_arithmetization/Cargo.toml | 2 +- evm_arithmetization/src/get_challenges.rs | 1 + evm_arithmetization/src/prover.rs | 2 + evm_arithmetization/src/recursive_verifier.rs | 16 ++ mpt_trie/Cargo.toml | 2 +- smt_trie/Cargo.toml | 2 +- trace_decoder/Cargo.toml | 2 +- 10 files changed, 274 insertions(+), 43 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 474a41e3d..18b94e3b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,222 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.7.0] - 2024-11-25 + +### Changed + +- Implement first iteration of continuations by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/69 +- Fix trace lengths by @hratoanina in https://github.com/0xPolygonZero/zk_evm/pull/110 +- Merge clock fix by @hratoanina in https://github.com/0xPolygonZero/zk_evm/pull/114 +- Add context pruning by @hratoanina in https://github.com/0xPolygonZero/zk_evm/pull/112 +- continuations: initial cleanup pass by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/181 +- Generate all segments before proving. by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/135 +- Put kernel code in first MemBefore by @hratoanina in https://github.com/0xPolygonZero/zk_evm/pull/178 +- continuations: Remove `GenerationInputs` cloning for segment generation by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/186 +- Adapt the circuitry to zero-bin by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/184 +- Add dummy segment to the left by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/185 +- Add segment indexing by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/191 +- Introduce verify_all_proofs and update integration tests by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/192 +- New context pruning logic by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/170 +- Merge with develop by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/195 +- Add log for end of jumpdest analysis simulation. by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/201 +- continuations: Remove redundant simulation by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/203 +- feat(continuations): trim public values at block proof level by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/235 +- Merge `develop` into `feat/continuations` by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/250 +- Bring back support for multi-txn batches by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/227 +- feat(continuations): reduce some memory overhead by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/260 +- perf(continuations): Only copy non-stale contexts by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/264 +- continuations: Remove the need for dummy segments by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/245 +- Merge develop into `feat/continuations` by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/359 +- Improve get_descriptor() by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/380 +- feat: expand trace decoder tests by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/394 +- refactor: use typed tries in trace_decoder by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/393 +- Cleanup `KeccakSpongeStark` index accesses by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/418 +- Serialize flaky inputs as 'json' files by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/420 +- feat: Implement `Columns` view for `MemoryStark` by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/417 +- Now warns if file descriptor limit is too small for native mode by @BGluth in https://github.com/0xPolygonZero/zk_evm/pull/411 +- chore(deps): bump openssl from 0.10.64 to 0.10.66 by @dependabot in https://github.com/0xPolygonZero/zk_evm/pull/431 +- Make `prove_stdio.sh` work on apple chips by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/430 +- feat: add conditional feature support in the kernel assembly by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/416 +- Reinitialize TO transaction field in `main` by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/440 +- Add overflow check in `codecopy` by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/444 +- Check for overflow in `context_id` increment by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/443 +- fix: `StorageTrie`, `ReceiptTrie` and `TransactionTrie` shouldn't use `TypedMpt` by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/446 +- fix: cleanup alloy dependencies by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/449 +- Ensure proper `offset + size` bounds in `wcopy` by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/445 +- fix: set min stack length for transient opcodes by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/450 +- feat: test native tracer by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/423 +- Increase `MAXCODESIZE` for Polygon PoS by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/419 +- Fix jump_to by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/453 +- Fix Arithmetic trace length by @hratoanina in https://github.com/0xPolygonZero/zk_evm/pull/454 +- Linked lists for the state trie by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/402 +- Added derives to `pub` types where possible for `mpt_trie` by @BGluth in https://github.com/0xPolygonZero/zk_evm/pull/456 +- perf(continuations): Improve initializations and reduce redundant computations by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/429 +- feat(continuations): write storage values directly in linked lists by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/433 +- Remove self destructs from the native tracer by @4l0n50 in https://github.com/0xPolygonZero/zk_evm/pull/461 +- implement version command for all zero bin binaries by @temaniarpit27 in https://github.com/0xPolygonZero/zk_evm/pull/451 +- Preinitialize segments in all contexts by @hratoanina in https://github.com/0xPolygonZero/zk_evm/pull/466 +- Fix 2-to-1 test for Cancun by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/464 +- Process state trie at the end by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/476 +- bug(zero-bin): verifier binary not picking up pre-processed circuits by @temaniarpit27 in https://github.com/0xPolygonZero/zk_evm/pull/474 +- feat: Implement `Columns` view for `BytePackingStark` by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/422 +- chore: flush logs upon success by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/481 +- Fix account creation reversion in decoder processing by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/480 +- Feat/237 mpt trie ext to branch collapse error by @BGluth in https://github.com/0xPolygonZero/zk_evm/pull/455 +- Fix `SELFDESTRUCT` by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/487 +- Circuit cache dir now uses os cache dir by @BGluth in https://github.com/0xPolygonZero/zk_evm/pull/405 +- refactor: trace_decoder::decoding by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/469 +- fix: do not force precompile address access in case of txn reversion by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/488 +- chore: reorganize cli params and rename some types by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/485 +- Fix txn indexing in error message by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/490 +- Revert "Fix `SELFDESTRUCT`" by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/491 +- Allow features with macros within macros by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/492 +- Check the global variable `GLOBAL_METADATA_TRIE_DATA_SIZE` by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/483 +- Update CODEOWNERS to add more folks by @muursh in https://github.com/0xPolygonZero/zk_evm/pull/497 +- Do not propagate zero values by @hratoanina in https://github.com/0xPolygonZero/zk_evm/pull/484 +- handle case when contract creation was reverted by @temaniarpit27 in https://github.com/0xPolygonZero/zk_evm/pull/482 +- refactor: use typed_mpt in the backend by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/494 +- chore: add common crate for project wide definitions by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/500 +- feat: Remove duplicate `new_txn_trie_node_byte` by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/477 +- Fix selfdestruct for EIP-6780 with non-empty balances by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/493 +- Fix: `zero-bin` is now able again to accesses `evm_arithmetization` for circuit versions by @BGluth in https://github.com/0xPolygonZero/zk_evm/pull/310 +- Add collapse strategy to `PartialTrie` variants by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/501 +- refactor: remove dead `client_code_hash_resolve_f` by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/514 +- continuations: have segment iterator return a `Result` by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/509 +- feat: retrieve prover input per block by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/499 +- refactor: Hash2Code by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/522 +- Made sub-trie errors better by @BGluth in https://github.com/0xPolygonZero/zk_evm/pull/520 +- Feat/continuations by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/171 +- add check for checkpoint block number by @temaniarpit27 in https://github.com/0xPolygonZero/zk_evm/pull/517 +- feat: add `leader` command to flush cache by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/527 +- fix: output block proof to array format by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/536 +- Ignore `too_long_first_doc_paragraph` lint by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/545 +- Add txn parsing tests by @hratoanina in https://github.com/0xPolygonZero/zk_evm/pull/540 +- Check the keys in the state trie correspond to accounts and storage linked lists by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/502 +- Reuse txn rlp by @hratoanina in https://github.com/0xPolygonZero/zk_evm/pull/547 +- refactor: StateTrie operations are keyed by Address where possible by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/537 +- feat: use eth_call with sc to retrieve block hashes by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/519 +- feat: extract decoded transaction from the block by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/504 +- fix: limit number of connections by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/546 +- fix: eth_call for previous block hashes by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/556 +- refactor: trait StateTrie by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/542 +- Move documentation to Github Pages by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/557 +- Remove unnecessary global metadata by @hratoanina in https://github.com/0xPolygonZero/zk_evm/pull/549 +- fix: dockerhub access by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/486 +- chore: move provider to the common crate by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/567 +- refactor: `trace_decoder` input structures by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/558 +- Reuse the same RLP blob by @hratoanina in https://github.com/0xPolygonZero/zk_evm/pull/552 +- Prune non-necessary values from `PublicValues` prior 2-to-1 aggregation by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/526 +- Introduce a burn address for `cdk_erigon` by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/463 +- chore: update alloy by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/573 +- `trace_decoder`: Tweak batch size for small blocks by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/576 +- chore: fix some variable names and comments by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/578 +- Reduce overhead in storage reads and fix stack descriptions by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/572 +- Fix pairing tests for null accumulated values by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/579 +- Expand conditional blocks logic in Kernel parsing by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/574 +- feat: follow from block interval by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/582 +- Fix `clean` leader's command by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/586 +- fix: disable dockerhub login in ci tests by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/588 +- chore: Add additional people as code owners for CI related changes by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/589 +- fix: Do not write proofs to disk in test only mode by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/592 +- chore: cleanup rpc tool parameters by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/595 +- refactor: trace decoder tests by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/596 +- Mark constant functions with `const` by @julianbraha in https://github.com/0xPolygonZero/zk_evm/pull/571 +- chore: remove unused code by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/602 +- Bring in Poseidon implementation under `cdk_erigon` feature flag by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/577 +- feat: add pre-state execution for `polygon-cdk` by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/594 +- feat: Add feature-gating in prover code based on target network by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/598 +- optimize: limit number of blocks proving in parallel by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/600 +- doc(book): Fill up empty sections and add table diagram by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/608 +- Fix github pages deployment by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/616 +- Enable withdrawals only for Eth mainnet by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/610 +- Clarify `eth_to_gwei` helper name and move to `common` crate by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/619 +- chore: move utility functions to common crate by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/615 +- refactor: trace decoder backend by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/583 +- feat: add consolidated block hashes across checkpoints by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/551 +- Skip missing Cancun bits for non Eth mainnet chains by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/605 +- Search in linked lists using a BTree by @4l0n50 in https://github.com/0xPolygonZero/zk_evm/pull/603 +- Small fixes to `rpc` and `common` modules by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/629 +- refactor: one zero package by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/625 +- feat(type2): Skip jumpdest analysis by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/631 +- refactor: --version in the CLI by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/632 +- Refactor linked lists initial hashing by @4l0n50 in https://github.com/0xPolygonZero/zk_evm/pull/581 +- Fix address masking in `trace_decoder` processing by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/639 +- make pool size configurable by @temaniarpit27 in https://github.com/0xPolygonZero/zk_evm/pull/644 +- Check block_timestamp always increases. by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/638 +- Remove unnecessary overhead in linked list preprocessing by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/642 +- misc: Do not perform sanity check on `test_only` runs by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/635 +- Refactor recursive circuit initialization and per table proving and verification with macros by @sai-deng in https://github.com/0xPolygonZero/zk_evm/pull/647 +- feat: add network-specific pre-state execution in decoder by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/633 +- Hide associated types and remove `types` module in `proof_gen` by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/649 +- Remove `proof_gen` crate by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/650 +- feat: trie diff tool by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/630 +- build: pin toolchain by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/665 +- Fix misplaced overflow check in `wcopy` by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/661 +- Refactor access list search by @4l0n50 in https://github.com/0xPolygonZero/zk_evm/pull/637 +- perf: Remove some binary ops & make KERNEL `init` section free of logic operations by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/658 +- refactor: sort, merge, cleanup dependencies by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/677 +- fix(ci): use install-action instead of cargo-binstall by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/679 +- Refactor proof types and method outputs by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/672 +- fix: add timeouts to ci tests by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/687 +- misc: print script logs upon failure by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/686 +- Fix flaky test when `DEBUG` logging is enabled by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/685 +- Add Tests for Segment Proving Without Keccak Tables by @sai-deng in https://github.com/0xPolygonZero/zk_evm/pull/648 +- dev: syntax highlighting for EVM Assembly by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/674 +- Expand error messages by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/689 +- Fix decoder parsing with new storage tries by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/692 +- Fix invalid `blob_gas_fee` burn by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/691 +- Fix address marking for state reads by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/695 +- fix: missing code read in state write by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/699 +- feat: trie multi diff comparison by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/655 +- Gate Code for Testing Purposes Under testing Modules by @sai-deng in https://github.com/0xPolygonZero/zk_evm/pull/688 +- perf: Improve PUSH checking in JDA by @hratoanina in https://github.com/0xPolygonZero/zk_evm/pull/696 +- Update the root circuit to conditionally verify Keccak proofs by @sai-deng in https://github.com/0xPolygonZero/zk_evm/pull/652 +- Enables optional verification of Keccak tables by @sai-deng in https://github.com/0xPolygonZero/zk_evm/pull/657 +- Fix zero_bin test by @sai-deng in https://github.com/0xPolygonZero/zk_evm/pull/708 +- Fix contract call reversion by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/709 +- fix: Add jump DDOS protection by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/710 +- fix: check for gas limit overflow by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/711 +- perf: Inline some hot spots in witness generation by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/715 +- perf: reduce `MemBefore` initial size by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/684 +- Optimize code by using De Morgan laws by @einar-polygon in https://github.com/0xPolygonZero/zk_evm/pull/670 +- fix: reset global metadata fields in memory post txn processing by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/717 +- Fix check against 0xEF byte in contract creation. by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/719 +- Optimize zkVM Proving by Skipping Unused Keccak Tables by @sai-deng in https://github.com/0xPolygonZero/zk_evm/pull/690 +- Assign specific jobs to dedicated workers by @temaniarpit27 in https://github.com/0xPolygonZero/zk_evm/pull/564 +- feat: SMT support in `trace_decoder` ignores storage by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/693 +- Bump plonky2 (serialization fix) by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/729 +- Fix max_cpu_len_log by @sai-deng in https://github.com/0xPolygonZero/zk_evm/pull/714 +- feat: Enable more optional tables by @sai-deng in https://github.com/0xPolygonZero/zk_evm/pull/724 +- fix: unused MemAfter table by @sai-deng in https://github.com/0xPolygonZero/zk_evm/pull/738 +- fix: more robust SMT parsing by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/733 +- Move opcode_count Under Test Configuration by @sai-deng in https://github.com/0xPolygonZero/zk_evm/pull/736 +- feat: trait World for `trace_decoder` by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/732 +- BlockInterval support for hash ranges by @sergerad in https://github.com/0xPolygonZero/zk_evm/pull/728 +- chore: update codeowners by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/750 +- ci: warn on outdated top level dependencies by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/757 +- chore: remove conditional ci execution by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/754 +- feat: add yaml linter by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/756 +- Replace regex in trie diff main by @sergerad in https://github.com/0xPolygonZero/zk_evm/pull/758 +- feat: add ci shellcheck by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/753 +- Add faster STARK configuration for testing purposes by @sai-deng in https://github.com/0xPolygonZero/zk_evm/pull/739 +- Add test config in zero bin by @sai-deng in https://github.com/0xPolygonZero/zk_evm/pull/742 +- ci: update actions/checkout@v3 -> v4 by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/771 +- Prune child context in create and call faults by @LindaGuiga in https://github.com/0xPolygonZero/zk_evm/pull/747 +- Refactor recursion params by @sai-deng in https://github.com/0xPolygonZero/zk_evm/pull/769 +- feat: use abort signal for proving tasks by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/748 +- feat: github proving benchmark by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/701 +- feat: prove stdio using amqp docker compose setup by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/763 +- Fix witness endpoint for cdk by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/773 +- Use test config in CI by @sai-deng in https://github.com/0xPolygonZero/zk_evm/pull/770 +- Fix bytecode hashing for Type2 SMT by @Nashtare in https://github.com/0xPolygonZero/zk_evm/pull/782 +- feat: Add env support to all leader prog args by @BGluth in https://github.com/0xPolygonZero/zk_evm/pull/786 +- fix: follow from block interval by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/789 +- Replace `ethereum_types` with `alloy::primitives` in `smt_trie` crate by @sergerad in https://github.com/0xPolygonZero/zk_evm/pull/772 +- refactor: remove the `compat` crate by @0xaatif in https://github.com/0xPolygonZero/zk_evm/pull/795 +- Oxidize prove_rpc.sh by @sergerad in https://github.com/0xPolygonZero/zk_evm/pull/796 +- feat: revamp zero prove function by @atanmarko in https://github.com/0xPolygonZero/zk_evm/pull/793 + ## [0.6.0] - 2024-07-15 ### Changed diff --git a/Cargo.lock b/Cargo.lock index 268462b69..2375e0ff3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2020,7 +2020,7 @@ dependencies = [ [[package]] name = "evm_arithmetization" -version = "0.4.0" +version = "0.5.0" dependencies = [ "alloy", "alloy-compat", @@ -2046,7 +2046,7 @@ dependencies = [ "pest", "pest_derive", "plonky2", - "plonky2_maybe_rayon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "plonky2_maybe_rayon", "plonky2_util", "rand", "rand_chacha", @@ -3109,7 +3109,7 @@ dependencies = [ [[package]] name = "mpt_trie" -version = "0.4.1" +version = "0.5.0" dependencies = [ "bytes", "enum-as-inner", @@ -3427,8 +3427,8 @@ dependencies = [ [[package]] name = "paladin-core" -version = "0.4.3" -source = "git+https://github.com/0xPolygonZero/paladin.git?branch=main#f1b6e254abb8068f4c2e7c489116a25e2d137a60" +version = "0.4.4" +source = "git+https://github.com/0xPolygonZero/paladin.git?rev=f58cbc14a751f1000603cfd9fdd4f350986ec2e7#f58cbc14a751f1000603cfd9fdd4f350986ec2e7" dependencies = [ "anyhow", "async-trait", @@ -3460,7 +3460,7 @@ dependencies = [ [[package]] name = "paladin-opkind-derive" version = "0.4.4" -source = "git+https://github.com/0xPolygonZero/paladin.git?branch=main#f1b6e254abb8068f4c2e7c489116a25e2d137a60" +source = "git+https://github.com/0xPolygonZero/paladin.git?rev=f58cbc14a751f1000603cfd9fdd4f350986ec2e7#f58cbc14a751f1000603cfd9fdd4f350986ec2e7" dependencies = [ "quote", "syn 2.0.77", @@ -3700,8 +3700,9 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "plonky2" -version = "0.2.2" -source = "git+https://github.com/0xPolygonZero/plonky2.git?rev=2488cdacd49ede15737bc1172546d82e9521b79b#2488cdacd49ede15737bc1172546d82e9521b79b" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f856aea4c9a5a8632f310cd830005e612c563391a4cdb33d34c7f523edf1dc8" dependencies = [ "ahash", "anyhow", @@ -3712,7 +3713,7 @@ dependencies = [ "log", "num", "plonky2_field", - "plonky2_maybe_rayon 0.2.0 (git+https://github.com/0xPolygonZero/plonky2.git?rev=2488cdacd49ede15737bc1172546d82e9521b79b)", + "plonky2_maybe_rayon", "plonky2_util", "rand", "rand_chacha", @@ -3724,8 +3725,9 @@ dependencies = [ [[package]] name = "plonky2_field" -version = "0.2.2" -source = "git+https://github.com/0xPolygonZero/plonky2.git?rev=2488cdacd49ede15737bc1172546d82e9521b79b#2488cdacd49ede15737bc1172546d82e9521b79b" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3ddfe8817d0c5c2d4557979c51c5253dab1b555ecc19833e5b7ea7dd86f39b8" dependencies = [ "anyhow", "itertools 0.11.0", @@ -3739,25 +3741,18 @@ dependencies = [ [[package]] name = "plonky2_maybe_rayon" -version = "0.2.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92ff44a90aaca13e10e7ddf8fab815ba1b404c3f7c3ca82aaf11c46beabaa923" -dependencies = [ - "rayon", -] - -[[package]] -name = "plonky2_maybe_rayon" -version = "0.2.0" -source = "git+https://github.com/0xPolygonZero/plonky2.git?rev=2488cdacd49ede15737bc1172546d82e9521b79b#2488cdacd49ede15737bc1172546d82e9521b79b" +checksum = "9e1e554181dc95243b8d9948ae7bae5759c7fb2502fed28f671f95ef38079406" dependencies = [ "rayon", ] [[package]] name = "plonky2_util" -version = "0.2.0" -source = "git+https://github.com/0xPolygonZero/plonky2.git?rev=2488cdacd49ede15737bc1172546d82e9521b79b#2488cdacd49ede15737bc1172546d82e9521b79b" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c32c137808ca984ab2458b612b7eb0462d853ee041a3136e83d54b96074c7610" [[package]] name = "plotters" @@ -4681,7 +4676,7 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "smt_trie" -version = "0.1.1" +version = "0.2.0" dependencies = [ "alloy", "hex-literal", @@ -4743,8 +4738,9 @@ checksum = "8acdd7dbfcfb5dd6e46c63512508bf71c2043f70b8f143813ad75cb5e8a589f2" [[package]] name = "starky" -version = "0.4.0" -source = "git+https://github.com/0xPolygonZero/plonky2.git?rev=2488cdacd49ede15737bc1172546d82e9521b79b#2488cdacd49ede15737bc1172546d82e9521b79b" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22eadeff1e044deb9c7dc8f513350a55435551c1de7c98211baab428aac91297" dependencies = [ "ahash", "anyhow", @@ -4753,7 +4749,7 @@ dependencies = [ "log", "num-bigint", "plonky2", - "plonky2_maybe_rayon 0.2.0 (git+https://github.com/0xPolygonZero/plonky2.git?rev=2488cdacd49ede15737bc1172546d82e9521b79b)", + "plonky2_maybe_rayon", "plonky2_util", "serde", ] @@ -5231,7 +5227,7 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "trace_decoder" -version = "0.6.0" +version = "0.7.0" dependencies = [ "alloy", "alloy-compat", @@ -5260,7 +5256,7 @@ dependencies = [ "mpt_trie", "nunny", "plonky2", - "plonky2_maybe_rayon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "plonky2_maybe_rayon", "rlp", "serde", "serde_json", @@ -5997,7 +5993,7 @@ dependencies = [ "once_cell", "paladin-core", "plonky2", - "plonky2_maybe_rayon 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "plonky2_maybe_rayon", "rlp", "ruint", "serde", diff --git a/Cargo.toml b/Cargo.toml index cadf0a13a..9759d859e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,7 +70,7 @@ num-traits = "0.2.19" nunny = "0.2.1" once_cell = "1.19.0" # TODO: update when paladin is released to 0.4.4 with abort signal support -paladin-core = { git = "https://github.com/0xPolygonZero/paladin.git", branch = "main" } +paladin-core = { git = "https://github.com/0xPolygonZero/paladin.git", rev = "f58cbc14a751f1000603cfd9fdd4f350986ec2e7" } parking_lot = "0.12.3" pest = "2.7.10" pest_derive = "2.7.10" @@ -103,19 +103,19 @@ url = "2.5.2" winnow = "0.6.13" # local dependencies -evm_arithmetization = { path = "evm_arithmetization", version = "0.4.0", default-features = false } -mpt_trie = { path = "mpt_trie", version = "0.4.1" } -smt_trie = { path = "smt_trie", version = "0.1.1" } -trace_decoder = { path = "trace_decoder", version = "0.6.0", default-features = false } +evm_arithmetization = { path = "evm_arithmetization", version = "0.5.0", default-features = false } +mpt_trie = { path = "mpt_trie", version = "0.5.0" } +smt_trie = { path = "smt_trie", version = "0.2.0" } +trace_decoder = { path = "trace_decoder", version = "0.7.0", default-features = false } zk_evm_common = { path = "common", version = "0.1.0" } zk_evm_proc_macro = { path = "proc_macro", version = "0.1.0" } zero = { path = "zero", default-features = false } # plonky2-related dependencies -plonky2 = { git = "https://github.com/0xPolygonZero/plonky2.git", rev = "2488cdacd49ede15737bc1172546d82e9521b79b" } -plonky2_maybe_rayon = "0.2.0" -plonky2_util = { git = "https://github.com/0xPolygonZero/plonky2.git", rev = "2488cdacd49ede15737bc1172546d82e9521b79b" } -starky = { git = "https://github.com/0xPolygonZero/plonky2.git", rev = "2488cdacd49ede15737bc1172546d82e9521b79b" } +plonky2 = "1.0.0" +plonky2_maybe_rayon = "1.0.0" +plonky2_util = "1.0.0" +starky = "1.0.0" [workspace.lints.clippy] too_long_first_doc_paragraph = "allow" diff --git a/evm_arithmetization/Cargo.toml b/evm_arithmetization/Cargo.toml index 22a40013f..94bfa66b9 100644 --- a/evm_arithmetization/Cargo.toml +++ b/evm_arithmetization/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "evm_arithmetization" description = "Implementation of STARKs for the Ethereum Virtual Machine" -version = "0.4.0" +version = "0.5.0" authors = [ "Daniel Lubarov ", "William Borgeaud ", diff --git a/evm_arithmetization/src/get_challenges.rs b/evm_arithmetization/src/get_challenges.rs index 23a46d5c5..4bdffd5ae 100644 --- a/evm_arithmetization/src/get_challenges.rs +++ b/evm_arithmetization/src/get_challenges.rs @@ -303,6 +303,7 @@ pub mod testing { Some(&ctl_challenges), true, config, + None, )) } else { None diff --git a/evm_arithmetization/src/prover.rs b/evm_arithmetization/src/prover.rs index 698c23934..41007d61b 100644 --- a/evm_arithmetization/src/prover.rs +++ b/evm_arithmetization/src/prover.rs @@ -328,6 +328,8 @@ where Some(ctl_challenges), challenger, &[], + None, + None, timing, ) .map(|proof_with_pis| StarkProofWithMetadata { diff --git a/evm_arithmetization/src/recursive_verifier.rs b/evm_arithmetization/src/recursive_verifier.rs index f70b9f166..62c7e1252 100644 --- a/evm_arithmetization/src/recursive_verifier.rs +++ b/evm_arithmetization/src/recursive_verifier.rs @@ -4,6 +4,7 @@ use core::fmt::Debug; use anyhow::Result; use ethereum_types::{BigEndianHash, U256}; use plonky2::field::extension::Extendable; +use plonky2::fri::FriConfig; use plonky2::gates::constant::ConstantGate; use plonky2::gates::exponentiation::ExponentiationGate; use plonky2::gates::gate::GateRef; @@ -93,6 +94,7 @@ where C: GenericConfig, C::Hasher: AlgebraicHasher, { + pub(crate) stark_fri_config: FriConfig, pub(crate) circuit: CircuitData, pub(crate) stark_proof_target: StarkProofTarget, pub(crate) ctl_challenges_target: GrandProductChallengeSet, @@ -113,6 +115,7 @@ where gate_serializer: &dyn GateSerializer, generator_serializer: &dyn WitnessGeneratorSerializer, ) -> IoResult<()> { + buffer.write_fri_config(&self.stark_fri_config)?; buffer.write_circuit_data(&self.circuit, gate_serializer, generator_serializer)?; buffer.write_target_vec(self.init_challenger_state_target.as_ref())?; buffer.write_target(self.zero_target)?; @@ -127,6 +130,7 @@ where gate_serializer: &dyn GateSerializer, generator_serializer: &dyn WitnessGeneratorSerializer, ) -> IoResult { + let stark_fri_config = buffer.read_fri_config()?; let circuit = buffer.read_circuit_data(gate_serializer, generator_serializer)?; let target_vec = buffer.read_target_vec()?; let init_challenger_state_target = @@ -136,6 +140,7 @@ where let ctl_challenges_target = GrandProductChallengeSet::from_buffer(buffer)?; Ok(Self { + stark_fri_config, circuit, stark_proof_target, ctl_challenges_target, @@ -151,10 +156,18 @@ where ) -> Result> { let mut inputs = PartialWitness::new(); + let stark_config = StarkConfig { + fri_config: self.stark_fri_config.clone(), + // we only care about the FRI parameters + ..Default::default() + }; + let degree_bits = proof_with_metadata.proof.recover_degree_bits(&stark_config); + set_stark_proof_target( &mut inputs, &self.stark_proof_target, &proof_with_metadata.proof, + degree_bits, self.zero_target, )?; @@ -298,6 +311,8 @@ where challenges, Some(&ctl_vars), inner_config, + degree_bits, + None, ); add_common_recursion_gates(&mut builder); @@ -309,6 +324,7 @@ where let circuit = builder.build::(); StarkWrapperCircuit { + stark_fri_config: inner_config.fri_config.clone(), circuit, stark_proof_target, ctl_challenges_target, diff --git a/mpt_trie/Cargo.toml b/mpt_trie/Cargo.toml index fcdf14663..f72835492 100644 --- a/mpt_trie/Cargo.toml +++ b/mpt_trie/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "mpt_trie" description = "Types and utility functions for building/working with partial Ethereum tries." -version = "0.4.1" +version = "0.5.0" authors = ["Polygon Zero "] readme = "README.md" edition.workspace = true diff --git a/smt_trie/Cargo.toml b/smt_trie/Cargo.toml index c1a4cdb9d..b0499235d 100644 --- a/smt_trie/Cargo.toml +++ b/smt_trie/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "smt_trie" description = "Types and utility functions for building/working with Polygon Hermez Sparse Merkle Trees." -version = "0.1.1" +version = "0.2.0" authors = ["William Borgeaud "] readme = "README.md" categories = ["cryptography"] diff --git a/trace_decoder/Cargo.toml b/trace_decoder/Cargo.toml index da9394823..9a9af3570 100644 --- a/trace_decoder/Cargo.toml +++ b/trace_decoder/Cargo.toml @@ -2,7 +2,7 @@ name = "trace_decoder" description = "Ethereum node witness -> Prover input" authors = ["Polygon Zero"] -version = "0.6.0" +version = "0.7.0" edition.workspace = true license.workspace = true repository.workspace = true