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: add eth_getStorageAt #134

Merged
merged 23 commits into from
Oct 3, 2023

Conversation

nbaztec
Copy link
Contributor

@nbaztec nbaztec commented Sep 25, 2023

What 💻

  • Adds eth_getStorageAt
  • Allows saving historical block states (currently unbounded)
  • Adds testing::deploy_contract helper

Why ✋

  • Allows users to retrieve raw storage items at a specific height, enabling better debugging.

Evidence 📷

image

Notes 📝

@nbaztec nbaztec requested a review from a team as a code owner September 25, 2023 16:26
src/node.rs Outdated Show resolved Hide resolved
src/node.rs Outdated Show resolved Hide resolved
MexicanAce

This comment was marked as outdated.

MexicanAce
MexicanAce previously approved these changes Sep 27, 2023
mm-zk
mm-zk previously requested changes Sep 28, 2023
src/node.rs Outdated Show resolved Hide resolved
src/node.rs Outdated Show resolved Hide resolved
src/node.rs Show resolved Hide resolved
src/node.rs Outdated Show resolved Hide resolved
Cargo.toml Outdated Show resolved Hide resolved
Copy link
Collaborator

@MexicanAce MexicanAce left a comment

Choose a reason for hiding this comment

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

LGTM

@MexicanAce MexicanAce dismissed mm-zk’s stale review October 3, 2023 13:32

Stale review as updates have been merged

@MexicanAce MexicanAce merged commit b790006 into matter-labs:main Oct 3, 2023
9 checks passed
AntonD3 added a commit that referenced this pull request Oct 25, 2023
* chore: adds proper null response to zks_batchDetails method (#152)

* fix: add back call stacks, console logs, and correct call stack count (#155)

* fix: add back call stacks, console logs, and correct call stack count

* Add comments. Fix typo.

* fix lint

* feat: add eth_getStorageAt (#134)

* add get_storage_at

* add eth_getStorageAt

* limit max archived blocks to 128

* remove ethers-contract dep

* feat: add evm_snapshot/revert (#158)

* fix: update compiled smart contracts to latest (#157)

* Update compile smart contracts checked into source
* Hide Notes section of PR template by default
* Update e2e tests to also be run on MacOS
* Add commented link to YouTube video at the top of release notes
* Limit rust/clippy linting to only the era_test_node package/crate
* Re-enable e2e test for zks_estimateFee
* Add more trace level logs for gas estimation

* feat: add eth_getTransactionByBlockHashAndIndex and eth_getTransactionByBlockNumberAndIndex (#159)

* feat: add eth_protocolVersion (#161)

* feat: impl debug_traceCall (#151)

* feat: impl debug_traceCall

* feat: adds test contract dir

* add refresh_test_contracts in Makefile

* fix: rename contacts_for_l2_call -> contracts_for_l2_call

* move not_implemented() to crate::utils, replace usage of macro

---------

Co-authored-by: Nicolas Villanueva <nicolasvillanueva@msn.com>

* feat: Add well-known log selectors to console output (#162)

* add aarch64-unknown-linux-gnu target (#164)

* feat: add rustbook (#163)

* fix: install mdbook for ci (#169)

* feat: impl debug_traceTransaction (#165)

* feat: impl `debug_traceBlockByHash` and `debug_traceBlockByNumber` (#168)

* fix: update zksync-era deps to v16.0.0 (#173)

* chore: remove hub usage in favour of gh for draft releases (#175)

* feat: add hardhat_setCode (#171)

* feat: impl `zks_getTransactionDetails` (#176)

* feat: forbid ".only" from e2e-tests (#179)

* feat: impl zks_getBlockDetails (#182)

* feat: support builtInWithoutSecurity option (#186)

* feat: add zks_getBridgeContracts (#184)

* feat: add zks_getBytecodeByHash (#180)

* feat: refactor logging to use tracing crate and make it dynamic (#187)

* feat: impl zks_getRawBlockTransactions (#185)

* fix: unit-tests fixed on main (#193)

* fix: fix forking for zksync-era@16.0.2 (#194)

* fix: Release drafts now attach files correctly (#196)

* contracts_for_l2_call was missed during merge

* Fix compilation errors

* Fix tests

---------

Co-authored-by: Dustin Brickwood <dustinbrickwood204@gmail.com>
Co-authored-by: Nicolas Villanueva <nicolasvillanueva@msn.com>
Co-authored-by: Nisheeth Barthwal <nbaztec@gmail.com>
Co-authored-by: George W <140627974+grw-ms@users.noreply.github.com>
AntonD3 added a commit that referenced this pull request Dec 6, 2023
* chore: adds proper null response to zks_batchDetails method (#152)

* fix: add back call stacks, console logs, and correct call stack count (#155)

* fix: add back call stacks, console logs, and correct call stack count

* Add comments. Fix typo.

* fix lint

* feat: add eth_getStorageAt (#134)

* add get_storage_at

* add eth_getStorageAt

* limit max archived blocks to 128

* remove ethers-contract dep

* feat: add evm_snapshot/revert (#158)

* fix: update compiled smart contracts to latest (#157)

* Update compile smart contracts checked into source
* Hide Notes section of PR template by default
* Update e2e tests to also be run on MacOS
* Add commented link to YouTube video at the top of release notes
* Limit rust/clippy linting to only the era_test_node package/crate
* Re-enable e2e test for zks_estimateFee
* Add more trace level logs for gas estimation

* feat: add eth_getTransactionByBlockHashAndIndex and eth_getTransactionByBlockNumberAndIndex (#159)

* feat: add eth_protocolVersion (#161)

* feat: impl debug_traceCall (#151)

* feat: impl debug_traceCall

* feat: adds test contract dir

* add refresh_test_contracts in Makefile

* fix: rename contacts_for_l2_call -> contracts_for_l2_call

* move not_implemented() to crate::utils, replace usage of macro

---------

Co-authored-by: Nicolas Villanueva <nicolasvillanueva@msn.com>

* feat: Add well-known log selectors to console output (#162)

* add aarch64-unknown-linux-gnu target (#164)

* feat: add rustbook (#163)

* fix: install mdbook for ci (#169)

* feat: impl debug_traceTransaction (#165)

* feat: impl `debug_traceBlockByHash` and `debug_traceBlockByNumber` (#168)

* fix: update zksync-era deps to v16.0.0 (#173)

* chore: remove hub usage in favour of gh for draft releases (#175)

* feat: add hardhat_setCode (#171)

* feat: impl `zks_getTransactionDetails` (#176)

* feat: forbid ".only" from e2e-tests (#179)

* feat: impl zks_getBlockDetails (#182)

* feat: support builtInWithoutSecurity option (#186)

* feat: add zks_getBridgeContracts (#184)

* feat: add zks_getBytecodeByHash (#180)

* feat: refactor logging to use tracing crate and make it dynamic (#187)

* feat: impl zks_getRawBlockTransactions (#185)

* fix: unit-tests fixed on main (#193)

* fix: fix forking for zksync-era@16.0.2 (#194)

* fix: Release drafts now attach files correctly (#196)

* feat: impl `zks_getAllAccountBalances` and `zks_getConfirmedTokens` (#198)

* fix: Update transaction type for gas estimation if one is not provided for EIP712 transactions, this fixes paymasters for era-test-node. (#195)

* chore: updates zksync dep, and replaces vm with multivm crate (#199)

* chore: update era test node to latest

* chore: cargo fmt

* chore: switch toolchain actions and use nightly

* chore: updates zks gas estimate

* chore: remove +stable for nexttest action

* chore: use larger runner

* debug: collect runner stats

* chore: invalidate cache to collect stats

* chore: remove default runner for 16core

* chore: fix workflows to use nightly (#203)

* chore: fix workflows to use nightly

* chore: fix workflows to use nightly

* chore: refactor node namespaces (#197)

* fix: validate gas_limit and max_fee_per_gas before transaction execution (#207)

* fix: validate gas_limit and max_fee_per_gas before transaction execution

* fix: add validation for max_fee_per_gas being to low

* fix: move validate_tx to node/in_memoty.ts

* fix: lint

* fix: move tx validation logic to run_l2_tx

* test: add tests for tx validation

* fix: remove unneeded match from eth.rs

* fix: lint

* fix: remove +nightly from vscode debug config

* fix: remove extra new line log

* feat: add parent hash linking for blocks (#209)

* feat: add parent_hash linking for blocks

* test: add tests

* fix: lint

* fix: use correct genesis block hash as initial current_miniblock_hash

* chore: Update zksync-era dependency to latest (#210)

* chore: Update zksync-era dependency to latest

* add Version17 to list of supported version

* chore: add rust toolchain for version mgt, make inner_tx pub (#213)

* chore: add rust toolchain for version mgt, update to make inner tx pub again

* chore: change version to reflect ci

* fix: rename run_l2_tx_inner, fix panics for lib users (#214)

* rename run_l2_tx_inner, fix panics for lib users

* add test

* undo dep changes

* cleanup comments

* inline params

* cleanup ExternalStorage

* fix test messages

* feat: get block returns null for non existing blocks (#218)

* chore: fix docs issue (#215)

* chore: fix rust-toolchain extension (#216)

* run smoke test on PRs (#219)

* feat: update `multivm::vm_virtual_blocks` dependency to `multivim::vm_latest` (#220)

* bugfix: Set removed property in Logs to false (#224)

* feat: Implement web3_clientVersion (#223)

* feat: Implement web3_clientVersion

* lint fix

---------

Co-authored-by: Dustin Brickwood <dustinbrickwood204@gmail.com>

* feat: Update event formatter and observability formatter (#226)

* chore: bump cargo toml for upcoming `0.1.0-alpha.12` release (#227)

* chore: bump cargo toml for upcoming release

* chore: bump cargo toml for upcoming release

* feat(vm): Adapt code for the latest zksync era changes (#230)

Signed-off-by: Danil <deniallugo@gmail.com>

* feat: Allow to pass custom tracers to run_raw_tx (#231)

Signed-off-by: Danil <deniallugo@gmail.com>

* Merge main

* latest vm

* Small refactoring

* System contracts 18.4.0

* EcAdd, EcMul, rebuild system contracts

* Small change in system-contracts/VERSION.md

* Update zksync-era dependency

* Fix test

* Prepare to merge into main

---------

Signed-off-by: Danil <deniallugo@gmail.com>
Co-authored-by: Dustin Brickwood <dustinbrickwood204@gmail.com>
Co-authored-by: Nicolas Villanueva <nicolasvillanueva@msn.com>
Co-authored-by: Nisheeth Barthwal <nbaztec@gmail.com>
Co-authored-by: George W <140627974+grw-ms@users.noreply.github.com>
Co-authored-by: Roman Petriv <petriv.roma@gmail.com>
Co-authored-by: Vasyl Ivanchuk <vasyl.ivanchuk@gmail.com>
Co-authored-by: Agustin Aon <21188659+aon@users.noreply.github.com>
Co-authored-by: Danil <deniallugo@gmail.com>
MexicanAce added a commit that referenced this pull request Dec 15, 2023
* Integrate boojum

* Account impersonating using bootloader

* eth_sendTransaction + some fixes

* Bootloader impersonating fixes

* Update compile-yul script

* fix typo, cargo fmt

* Pin commit for the zksync-era dependency

* fix: support EIP-1559 fields for eth_sendTransaction (#192)

* feat: boojum integration sync with main (#200)

* chore: adds proper null response to zks_batchDetails method (#152)

* fix: add back call stacks, console logs, and correct call stack count (#155)

* fix: add back call stacks, console logs, and correct call stack count

* Add comments. Fix typo.

* fix lint

* feat: add eth_getStorageAt (#134)

* add get_storage_at

* add eth_getStorageAt

* limit max archived blocks to 128

* remove ethers-contract dep

* feat: add evm_snapshot/revert (#158)

* fix: update compiled smart contracts to latest (#157)

* Update compile smart contracts checked into source
* Hide Notes section of PR template by default
* Update e2e tests to also be run on MacOS
* Add commented link to YouTube video at the top of release notes
* Limit rust/clippy linting to only the era_test_node package/crate
* Re-enable e2e test for zks_estimateFee
* Add more trace level logs for gas estimation

* feat: add eth_getTransactionByBlockHashAndIndex and eth_getTransactionByBlockNumberAndIndex (#159)

* feat: add eth_protocolVersion (#161)

* feat: impl debug_traceCall (#151)

* feat: impl debug_traceCall

* feat: adds test contract dir

* add refresh_test_contracts in Makefile

* fix: rename contacts_for_l2_call -> contracts_for_l2_call

* move not_implemented() to crate::utils, replace usage of macro

---------

Co-authored-by: Nicolas Villanueva <nicolasvillanueva@msn.com>

* feat: Add well-known log selectors to console output (#162)

* add aarch64-unknown-linux-gnu target (#164)

* feat: add rustbook (#163)

* fix: install mdbook for ci (#169)

* feat: impl debug_traceTransaction (#165)

* feat: impl `debug_traceBlockByHash` and `debug_traceBlockByNumber` (#168)

* fix: update zksync-era deps to v16.0.0 (#173)

* chore: remove hub usage in favour of gh for draft releases (#175)

* feat: add hardhat_setCode (#171)

* feat: impl `zks_getTransactionDetails` (#176)

* feat: forbid ".only" from e2e-tests (#179)

* feat: impl zks_getBlockDetails (#182)

* feat: support builtInWithoutSecurity option (#186)

* feat: add zks_getBridgeContracts (#184)

* feat: add zks_getBytecodeByHash (#180)

* feat: refactor logging to use tracing crate and make it dynamic (#187)

* feat: impl zks_getRawBlockTransactions (#185)

* fix: unit-tests fixed on main (#193)

* fix: fix forking for zksync-era@16.0.2 (#194)

* fix: Release drafts now attach files correctly (#196)

* contracts_for_l2_call was missed during merge

* Fix compilation errors

* Fix tests

---------

Co-authored-by: Dustin Brickwood <dustinbrickwood204@gmail.com>
Co-authored-by: Nicolas Villanueva <nicolasvillanueva@msn.com>
Co-authored-by: Nisheeth Barthwal <nbaztec@gmail.com>
Co-authored-by: George W <140627974+grw-ms@users.noreply.github.com>

* fix: boojum integration nightly rust (#177)

Co-authored-by: MexicanAce <nicolasvillanueva@msn.com>

* Merge main

* latest vm

* Small refactoring

* System contracts 18.4.0

* EcAdd, EcMul, rebuild system contracts

* Small change in system-contracts/VERSION.md

* Update zksync-era dependency

* Fix test

* Prepare to merge into main

* Fix e2e tests

* Restore zksync-era version

* Sync system-contracts/bootloader directory

* Impersonating bootloader small fix

* system-contracts/VERSION.md formatting

* Update DefaultAccount.json bytecode to match source

* Update VERSION.md comments and add supported versions missing

* fix lint

* Fix BuiltInNoSecurity option. Fix unit tests. Fix e2e tests. Add test for hardhat_impersonateAccount

* Refresh bytecode of all contracts from source

* fix lint

* fix lint

---------

Co-authored-by: Dustin Brickwood <dustinbrickwood204@gmail.com>
Co-authored-by: Nicolas Villanueva <nicolasvillanueva@msn.com>
Co-authored-by: Nisheeth Barthwal <nbaztec@gmail.com>
Co-authored-by: George W <140627974+grw-ms@users.noreply.github.com>
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.

eth_api: Implement get_storage method
6 participants