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(levm): implement Cache and refactor Db #991

Merged
merged 50 commits into from
Oct 31, 2024
Merged

Conversation

JereSalo
Copy link
Contributor

@JereSalo JereSalo commented Oct 26, 2024

Motivation

We currently have an in-memory database that should soon be replaced by the node's in-disk database. For that purpose we want to allow us to switch between both kinds of databases. The need to implement this PR's features and refactor the Db arose while working on #904.

Description

This PR includes:

  • Adding a Cache to store warm accounts. This removes the need of having accessed_accounts and accessed_storage_slots sets in Substate because we know that if they are cached then they are warm.
  • Making our Db implement the Database trait and interact with it only using methods and not it's attributes, so in the future we can implement that trait for the actual node's database.
  • Fix call opcodes and remove delegate attribute from CallFrame.

Part of #814.

@JereSalo JereSalo changed the title feat-refactor(levm): implement access list, cache and refactor DB feat(levm): implement access list, cache and refactor DB Oct 26, 2024
@juanimedone juanimedone added the levm Lambda EVM implementation label Oct 28, 2024
@JereSalo JereSalo marked this pull request as ready for review October 29, 2024 16:18
@JereSalo JereSalo requested a review from a team as a code owner October 29, 2024 16:18
@juanimedone juanimedone changed the title feat(levm): implement access list, cache and refactor DB feat(levm): implement Cache and refactor Db Oct 29, 2024
@JereSalo JereSalo marked this pull request as draft October 29, 2024 21:36
@jrchatruc jrchatruc marked this pull request as ready for review October 31, 2024 17:49
@jrchatruc jrchatruc added this pull request to the merge queue Oct 31, 2024
Merged via the queue into main with commit 9c85075 Oct 31, 2024
16 checks passed
@jrchatruc jrchatruc deleted the levm/refactor/db branch October 31, 2024 17:54
h3lio5 pushed a commit to h3lio5/lambda_ethereum_rust that referenced this pull request Oct 31, 2024
**Motivation**

<!-- Why does this pull request exist? What are its goals? -->
We currently have an in-memory database that should soon be replaced by
the node's in-disk database. For that purpose we want to allow us to
switch between both kinds of databases. The need to implement this PR's
features and refactor the `Db` arose while working on lambdaclass#904.

**Description**

<!-- A clear and concise general description of the changes this PR
introduces -->
This PR includes:
- Adding a `Cache` to store warm accounts. This removes the need of
having `accessed_accounts` and `accessed_storage_slots` sets in
`Substate` because we know that if they are cached then they are warm.
- Making our `Db` implement the `Database` trait and interact with it
only using methods and not it's attributes, so in the future we can
implement that trait for the actual node's database.
- Fix call opcodes and remove delegate attribute from `CallFrame`.

<!-- Link to issues: Resolves lambdaclass#111, Resolves lambdaclass#222 -->

Part of lambdaclass#814.

---------

Co-authored-by: Juani Medone <juan.medone@lambdaclass.com>
Co-authored-by: maximopalopoli <mpalopoli@fi.uba.ar>
Co-authored-by: Javier Chatruc <jrchatruc@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
levm Lambda EVM implementation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants