All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Implement first iteration of continuations by @LindaGuiga in #69
- Fix trace lengths by @hratoanina in #110
- Merge clock fix by @hratoanina in #114
- Add context pruning by @hratoanina in #112
- continuations: initial cleanup pass by @Nashtare in #181
- Generate all segments before proving. by @LindaGuiga in #135
- Put kernel code in first MemBefore by @hratoanina in #178
- continuations: Remove
GenerationInputs
cloning for segment generation by @Nashtare in #186 - Adapt the circuitry to zero-bin by @LindaGuiga in #184
- Add dummy segment to the left by @LindaGuiga in #185
- Add segment indexing by @Nashtare in #191
- Introduce verify_all_proofs and update integration tests by @LindaGuiga in #192
- New context pruning logic by @LindaGuiga in #170
- Merge with develop by @LindaGuiga in #195
- Add log for end of jumpdest analysis simulation. by @LindaGuiga in #201
- continuations: Remove redundant simulation by @Nashtare in #203
- feat(continuations): trim public values at block proof level by @Nashtare in #235
- Merge
develop
intofeat/continuations
by @LindaGuiga in #250 - Bring back support for multi-txn batches by @Nashtare in #227
- feat(continuations): reduce some memory overhead by @Nashtare in #260
- perf(continuations): Only copy non-stale contexts by @Nashtare in #264
- continuations: Remove the need for dummy segments by @LindaGuiga in #245
- Merge develop into
feat/continuations
by @LindaGuiga in #359 - Improve get_descriptor() by @LindaGuiga in #380
- feat: expand trace decoder tests by @atanmarko in #394
- refactor: use typed tries in trace_decoder by @0xaatif in #393
- Cleanup
KeccakSpongeStark
index accesses by @Nashtare in #418 - Serialize flaky inputs as 'json' files by @Nashtare in #420
- feat: Implement
Columns
view forMemoryStark
by @Nashtare in #417 - Now warns if file descriptor limit is too small for native mode by @BGluth in #411
- chore(deps): bump openssl from 0.10.64 to 0.10.66 by @dependabot in #431
- Make
prove_stdio.sh
work on apple chips by @Nashtare in #430 - feat: add conditional feature support in the kernel assembly by @Nashtare in #416
- Reinitialize TO transaction field in
main
by @LindaGuiga in #440 - Add overflow check in
codecopy
by @Nashtare in #444 - Check for overflow in
context_id
increment by @Nashtare in #443 - fix:
StorageTrie
,ReceiptTrie
andTransactionTrie
shouldn't useTypedMpt
by @0xaatif in #446 - fix: cleanup alloy dependencies by @atanmarko in #449
- Ensure proper
offset + size
bounds inwcopy
by @Nashtare in #445 - fix: set min stack length for transient opcodes by @Nashtare in #450
- feat: test native tracer by @atanmarko in #423
- Increase
MAXCODESIZE
for Polygon PoS by @Nashtare in #419 - Fix jump_to by @LindaGuiga in #453
- Fix Arithmetic trace length by @hratoanina in #454
- Linked lists for the state trie by @LindaGuiga in #402
- Added derives to
pub
types where possible formpt_trie
by @BGluth in #456 - perf(continuations): Improve initializations and reduce redundant computations by @Nashtare in #429
- feat(continuations): write storage values directly in linked lists by @LindaGuiga in #433
- Remove self destructs from the native tracer by @4l0n50 in #461
- implement version command for all zero bin binaries by @temaniarpit27 in #451
- Preinitialize segments in all contexts by @hratoanina in #466
- Fix 2-to-1 test for Cancun by @Nashtare in #464
- Process state trie at the end by @LindaGuiga in #476
- bug(zero-bin): verifier binary not picking up pre-processed circuits by @temaniarpit27 in #474
- feat: Implement
Columns
view forBytePackingStark
by @Nashtare in #422 - chore: flush logs upon success by @Nashtare in #481
- Fix account creation reversion in decoder processing by @Nashtare in #480
- Feat/237 mpt trie ext to branch collapse error by @BGluth in #455
- Fix
SELFDESTRUCT
by @Nashtare in #487 - Circuit cache dir now uses os cache dir by @BGluth in #405
- refactor: trace_decoder::decoding by @0xaatif in #469
- fix: do not force precompile address access in case of txn reversion by @Nashtare in #488
- chore: reorganize cli params and rename some types by @atanmarko in #485
- Fix txn indexing in error message by @Nashtare in #490
- Revert "Fix
SELFDESTRUCT
" by @Nashtare in #491 - Allow features with macros within macros by @LindaGuiga in #492
- Check the global variable
GLOBAL_METADATA_TRIE_DATA_SIZE
by @LindaGuiga in #483 - Update CODEOWNERS to add more folks by @muursh in #497
- Do not propagate zero values by @hratoanina in #484
- handle case when contract creation was reverted by @temaniarpit27 in #482
- refactor: use typed_mpt in the backend by @0xaatif in #494
- chore: add common crate for project wide definitions by @atanmarko in #500
- feat: Remove duplicate
new_txn_trie_node_byte
by @Nashtare in #477 - Fix selfdestruct for EIP-6780 with non-empty balances by @Nashtare in #493
- Fix:
zero-bin
is now able again to accessesevm_arithmetization
for circuit versions by @BGluth in #310 - Add collapse strategy to
PartialTrie
variants by @Nashtare in #501 - refactor: remove dead
client_code_hash_resolve_f
by @0xaatif in #514 - continuations: have segment iterator return a
Result
by @Nashtare in #509 - feat: retrieve prover input per block by @atanmarko in #499
- refactor: Hash2Code by @0xaatif in #522
- Made sub-trie errors better by @BGluth in #520
- Feat/continuations by @Nashtare in #171
- add check for checkpoint block number by @temaniarpit27 in #517
- feat: add
leader
command to flush cache by @Nashtare in #527 - fix: output block proof to array format by @atanmarko in #536
- Ignore
too_long_first_doc_paragraph
lint by @LindaGuiga in #545 - Add txn parsing tests by @hratoanina in #540
- Check the keys in the state trie correspond to accounts and storage linked lists by @LindaGuiga in #502
- Reuse txn rlp by @hratoanina in #547
- refactor: StateTrie operations are keyed by Address where possible by @0xaatif in #537
- feat: use eth_call with sc to retrieve block hashes by @atanmarko in #519
- feat: extract decoded transaction from the block by @atanmarko in #504
- fix: limit number of connections by @atanmarko in #546
- fix: eth_call for previous block hashes by @atanmarko in #556
- refactor: trait StateTrie by @0xaatif in #542
- Move documentation to Github Pages by @Nashtare in #557
- Remove unnecessary global metadata by @hratoanina in #549
- fix: dockerhub access by @atanmarko in #486
- chore: move provider to the common crate by @atanmarko in #567
- refactor:
trace_decoder
input structures by @0xaatif in #558 - Reuse the same RLP blob by @hratoanina in #552
- Prune non-necessary values from
PublicValues
prior 2-to-1 aggregation by @Nashtare in #526 - Introduce a burn address for
cdk_erigon
by @LindaGuiga in #463 - chore: update alloy by @0xaatif in #573
trace_decoder
: Tweak batch size for small blocks by @Nashtare in #576- chore: fix some variable names and comments by @Nashtare in #578
- Reduce overhead in storage reads and fix stack descriptions by @Nashtare in #572
- Fix pairing tests for null accumulated values by @Nashtare in #579
- Expand conditional blocks logic in Kernel parsing by @Nashtare in #574
- feat: follow from block interval by @atanmarko in #582
- Fix
clean
leader's command by @Nashtare in #586 - fix: disable dockerhub login in ci tests by @atanmarko in #588
- chore: Add additional people as code owners for CI related changes by @Nashtare in #589
- fix: Do not write proofs to disk in test only mode by @Nashtare in #592
- chore: cleanup rpc tool parameters by @atanmarko in #595
- refactor: trace decoder tests by @0xaatif in #596
- Mark constant functions with
const
by @julianbraha in #571 - chore: remove unused code by @Nashtare in #602
- Bring in Poseidon implementation under
cdk_erigon
feature flag by @Nashtare in #577 - feat: add pre-state execution for
polygon-cdk
by @Nashtare in #594 - feat: Add feature-gating in prover code based on target network by @Nashtare in #598
- optimize: limit number of blocks proving in parallel by @atanmarko in #600
- doc(book): Fill up empty sections and add table diagram by @Nashtare in #608
- Fix github pages deployment by @Nashtare in #616
- Enable withdrawals only for Eth mainnet by @Nashtare in #610
- Clarify
eth_to_gwei
helper name and move tocommon
crate by @Nashtare in #619 - chore: move utility functions to common crate by @atanmarko in #615
- refactor: trace decoder backend by @0xaatif in #583
- feat: add consolidated block hashes across checkpoints by @Nashtare in #551
- Skip missing Cancun bits for non Eth mainnet chains by @Nashtare in #605
- Search in linked lists using a BTree by @4l0n50 in #603
- Small fixes to
rpc
andcommon
modules by @Nashtare in #629 - refactor: one zero package by @0xaatif in #625
- feat(type2): Skip jumpdest analysis by @Nashtare in #631
- refactor: --version in the CLI by @0xaatif in #632
- Refactor linked lists initial hashing by @4l0n50 in #581
- Fix address masking in
trace_decoder
processing by @Nashtare in #639 - make pool size configurable by @temaniarpit27 in #644
- Check block_timestamp always increases. by @LindaGuiga in #638
- Remove unnecessary overhead in linked list preprocessing by @Nashtare in #642
- misc: Do not perform sanity check on
test_only
runs by @Nashtare in #635 - Refactor recursive circuit initialization and per table proving and verification with macros by @sai-deng in #647
- feat: add network-specific pre-state execution in decoder by @Nashtare in #633
- Hide associated types and remove
types
module inproof_gen
by @Nashtare in #649 - Remove
proof_gen
crate by @Nashtare in #650 - feat: trie diff tool by @atanmarko in #630
- build: pin toolchain by @0xaatif in #665
- Fix misplaced overflow check in
wcopy
by @Nashtare in #661 - Refactor access list search by @4l0n50 in #637
- perf: Remove some binary ops & make KERNEL
init
section free of logic operations by @Nashtare in #658 - refactor: sort, merge, cleanup dependencies by @0xaatif in #677
- fix(ci): use install-action instead of cargo-binstall by @0xaatif in #679
- Refactor proof types and method outputs by @Nashtare in #672
- fix: add timeouts to ci tests by @atanmarko in #687
- misc: print script logs upon failure by @Nashtare in #686
- Fix flaky test when
DEBUG
logging is enabled by @Nashtare in #685 - Add Tests for Segment Proving Without Keccak Tables by @sai-deng in #648
- dev: syntax highlighting for EVM Assembly by @0xaatif in #674
- Expand error messages by @Nashtare in #689
- Fix decoder parsing with new storage tries by @Nashtare in #692
- Fix invalid
blob_gas_fee
burn by @Nashtare in #691 - Fix address marking for state reads by @Nashtare in #695
- fix: missing code read in state write by @Nashtare in #699
- feat: trie multi diff comparison by @atanmarko in #655
- Gate Code for Testing Purposes Under testing Modules by @sai-deng in #688
- perf: Improve PUSH checking in JDA by @hratoanina in #696
- Update the root circuit to conditionally verify Keccak proofs by @sai-deng in #652
- Enables optional verification of Keccak tables by @sai-deng in #657
- Fix zero_bin test by @sai-deng in #708
- Fix contract call reversion by @Nashtare in #709
- fix: Add jump DDOS protection by @Nashtare in #710
- fix: check for gas limit overflow by @Nashtare in #711
- perf: Inline some hot spots in witness generation by @Nashtare in #715
- perf: reduce
MemBefore
initial size by @Nashtare in #684 - Optimize code by using De Morgan laws by @einar-polygon in #670
- fix: reset global metadata fields in memory post txn processing by @Nashtare in #717
- Fix check against 0xEF byte in contract creation. by @LindaGuiga in #719
- Optimize zkVM Proving by Skipping Unused Keccak Tables by @sai-deng in #690
- Assign specific jobs to dedicated workers by @temaniarpit27 in #564
- feat: SMT support in
trace_decoder
ignores storage by @0xaatif in #693 - Bump plonky2 (serialization fix) by @Nashtare in #729
- Fix max_cpu_len_log by @sai-deng in #714
- feat: Enable more optional tables by @sai-deng in #724
- fix: unused MemAfter table by @sai-deng in #738
- fix: more robust SMT parsing by @0xaatif in #733
- Move opcode_count Under Test Configuration by @sai-deng in #736
- feat: trait World for
trace_decoder
by @0xaatif in #732 - BlockInterval support for hash ranges by @sergerad in #728
- chore: update codeowners by @atanmarko in #750
- ci: warn on outdated top level dependencies by @0xaatif in #757
- chore: remove conditional ci execution by @atanmarko in #754
- feat: add yaml linter by @atanmarko in #756
- Replace regex in trie diff main by @sergerad in #758
- feat: add ci shellcheck by @atanmarko in #753
- Add faster STARK configuration for testing purposes by @sai-deng in #739
- Add test config in zero bin by @sai-deng in #742
- ci: update actions/checkout@v3 -> v4 by @0xaatif in #771
- Prune child context in create and call faults by @LindaGuiga in #747
- Refactor recursion params by @sai-deng in #769
- feat: use abort signal for proving tasks by @atanmarko in #748
- feat: github proving benchmark by @atanmarko in #701
- feat: prove stdio using amqp docker compose setup by @atanmarko in #763
- Fix witness endpoint for cdk by @Nashtare in #773
- Use test config in CI by @sai-deng in #770
- Fix bytecode hashing for Type2 SMT by @Nashtare in #782
- feat: Add env support to all leader prog args by @BGluth in #786
- fix: follow from block interval by @atanmarko in #789
- Replace
ethereum_types
withalloy::primitives
insmt_trie
crate by @sergerad in #772 - refactor: remove the
compat
crate by @0xaatif in #795 - Oxidize prove_rpc.sh by @sergerad in #796
- feat: revamp zero prove function by @atanmarko in #793
- Implement EIP-4788 for Cancun (#40)
- Implement Blob transactions (type-3) and BLOBHASH opcode (#50)
- Fix beacons root contract bytecode (#70)
- LxLy exit roots (#90)
- Eip 1153 (TLOAD/TSTORE) (#59)
- Remove blobbasefee from block header (#100)
- Fix MCOPY from rebasing (#103)
- Fix storage write for beacons root contract (#102)
- EIP-4844 part 2: Point evaluation precompile (#133)
- Some fixes to Cancun (#187)
- Insert blob versioned hashes in signature payload for hashing (#209)
- Fix KZG precompile context setup (#210)
- Fix txn type encoding for receipts (#214)
- Add blob gas fee burn for type-3 txns (#219)
- Update decoder processing for cancun (#207)
- cancun: Add a full block test (#223)
- Fix KZG precompile I/O (#213)
- Fix selfdestruct address listing (#225)
- Fix withdrawals without txns and add test for empty block (#228)
- doc: update README (#242)
- Cleanup and bring back deadcode lint (#232)
- fix(cancun): dummy payloads and public input retrieval (#249)
- fix: encode calldata for EIP-4780 as U256 (#253)
- fix: handle KZG precompile errors properly (#251)
- fix(cancun):
mcopy
check offsets and overwrites (#252) - fix(cancun): correct search loop in transient storage (#257)
- perf: Charge gas before tload search (#272)
- fix: add check on decoded versioned hashes (#278)
- fix: Add beacon roots touched slots into
state_access
with native tracer (#353) - feat(cancun): update test blocks (#365)
- fix: failed to send proof (#366)
- feat: cancun jerigon test network (#367)
- fix(cancun): properly update accumulator in fake_exponential() (#376)
- fix(cancun): tweak ranges in integration tests (#377)
cancun
: cleanup pre-release (#392)
- fix: docker images (#108)
- feat: add transaction hash to zero trace (#103)
- perf: add benchmarks for different components (#273)
- fix: add check on decoded versioned hashes (#278)
- fix: discard intermediate proofs (#106)
- feat: stdio parallel proving (#109)
- Fixes related to nightly and alloy (#101)
- Introduce native tracer support (#81)
- chore: bump alloy to v0.1.1 (#111)
- Migrate
zero-bin
intozk-evm
- fix: Bring back Cargo.lock (#280)
- ci: add labeler flag for new
zero-bin
crate + updateCODEOWNERS
(#281) - fix: only executables should choose a global allocator (#301)
- doc: fix typos (#298)
- misc: fix logging filename (#305)
- refactor zero_bin leader cli (#317)
- Removed non-existing dep public
__compat_primitive_types
(#321) - perf: Check for zero amount early in 'add_eth' (#322)
- fix: interval (#324)
- fix: optimize previous hashes retrieval (#316)
- feat: add jerigon test workflow (#303)
- fix: do not add selfdestruct journal entry for empty accounts (#328)
- ci: add PR check job (#332)
- Constrain FP254 operations and SUBMOD to be kernel-only (#333)
- fix: add recipient to touched_addresses even when skipping empty transfer (#336)
- Fixed leader crashing when
.env
not present (#335) - perf: reduce overhead in final iteration of memset (#339)
- Make leader work no matter what the CWD is (#307)
- Cleanup/clippy and update pass (#341)
- Add
Columns
andDerefColumns
derive macros (#315) - migrate compat to micro crate (#308)
- fix: docker build for worker and leader (#329)
- parse embedded short nodes (#345)
- Add
LogicColumnsView
struct forLogicStark
(#347) - fix: properly log final result when due (#352)
- fix: Check valid range for s and add test (#363)
- feat: add caching for
get_block
(#346) - refactor!: docker builds (#357)
- fix: tweak fetching of previous block hashes (#370)
- fix(evm_arithmetization): Adjust layout of
CpuGeneralColumnsView
(#355) - feat: skip range-checking
PUSH
operations inKERNEL
mode (#373) - Fix iterator length when fetching block hashes (#374)
- fix: scale withdrawals amount to gwei (#371)
- refactor: frontend of
trace_decoder
(#309)
- Some cleanup (#190)
- Silence jumpdest analysis logs (#193)
- Charge call value gas prior to call (#199)
- refactor: fix todos (#162)
- Remove print call in trace_decoder (#208)
- Update CODEOWNERS (#224)
- Fix access lists pointers check (#217)
- Add a few QoL useability functions to the interface (#169)
- Amortize
sha2
compression loop (#231) - ci: add cargo audit job (#236)
- fix: Revert interpreter stack display (#238)
- Fix clippy
doc_lazy_continuation
(#247) - perf: Improve
blake2
precompile (#239) - fix: rustdoc and tests (#255)
- Native trace processing support (#246)
- Added
Clone
to a few error types inmpt_trie
(#259) - cleanup: remove outdated segment (#262)
- fix: add G2 subgroup check for
ECPAIRING
(#268) - add partial trie builder (#258)
- Fix withdrawals accesses in state trie (#176)
- Update plonky2 dependencies (#119)
- Swap out the internal U512 inside nibbles to [u64;5] (#132)
- Charge gas before SLOAD and refactor
insert_accessed_storage_keys
(#117) - Increased the public interface for
trie_tools
(#123) - Mpt trie panic refactor (#118)
- refactor: remove some reallocations from decoder (#126)
- Charge cold access cost in CALL before accessing state (#124)
- chore: add debug function for better logging in development (#134)
- Make test_receipt_encoding more meaningful. (#131)
- Add a getter for the KERNEL codehash (#136)
- Remove interpreter-specific preinialization logic from State trait (#139)
- Make some more functions constant (#154)
- fix(keccak-sponge): properly constrain padding bytes (#158)
- Reduce verbosity in logs (#160)
- Bump with latest starky (#161)
- Decouple trace_decoder and proof_gen (#163)
- Extend trace decoder err info (#148)
- Add debug function for better public values logging in development (#134)
- Simplify withdrawals logic (#168)
- Clean up logging output upon Kernel failure (#74)
- Fix CPU Cycle display in logs during simulations (#77)
- Fix blake2 precompile (#78)
- Create subtries without ever hashing leaves (#76)
- Fix generation inputs logging pre-transaction execution (#89)
- Reduce state trie size for dummy payloads (#88)
- Fix post-txn trie debugging output for multi-logs receipts (#86)
- Fixed most failing blocks caused by the merged in aggressive pruning changes (#97)
- Fixed trie hash collision issue when constructing storage tries (#75)
- Fix interpreter rollback by adding the clock to generation state checkpoints (#109)
- Add verification for invalid jumps (#36)
- Refactor accessed lists as sorted linked lists (#30)
- Change visibility of
compact
mod (#57) - Fix running doctests in release mode (#60)
- Fix block padding without withdrawals (#63)
- Change position of empty node encoding in RLP segment (#62)
- Unify interpreter and prover witness generation (#56)
- Add utility method for testing CPU execution (#71)
- Expose common types and dummy proof method for testing (#73)
- Initial release.