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

Tracing & in-process rust EVM instead of Ganache #4

Closed
gakonst opened this issue Jun 2, 2020 · 4 comments
Closed

Tracing & in-process rust EVM instead of Ganache #4

gakonst opened this issue Jun 2, 2020 · 4 comments
Labels
enhancement New feature or request

Comments

@gakonst
Copy link
Owner

gakonst commented Jun 2, 2020

@pluriholonomic @brockelmore could you dump a few desired features here?

@gakonst gakonst added the enhancement New feature or request label Jun 16, 2020
@prestwich
Copy link
Collaborator

have you looked at the polka evm based on sputnik?

@reem
Copy link

reem commented Dec 28, 2020

From discussions with @pluriholonomic and others:

  • debuggability, could use existing debuggers such as lldb and rr to investigate errors in solidity code
  • performance, cutting out all IO and most serialization overhead should lead to significant performance improvements
  • safety, could use procedural macros to generate fully typed and safe interface to call contracts, could also lead to performance wins with more aggressive design

Extra:

  • forking with block cache, if I fork from the same block and repeat the same actions it should be possible to cache unchanged blocks, leading to possible large increases in performance for testing changes with many steps
  • contract compilation/abi cache, recompiling contracts can take a large % of testing time for large contracts especially with optimization

@gakonst
Copy link
Owner Author

gakonst commented Dec 28, 2020

We already have fully typed interfaces to contracts here, example, codegen sample, codegen example.

Agree with everything else and would love any help on that end, probably we'd move this to a separate repo

@gakonst
Copy link
Owner Author

gakonst commented Nov 24, 2021

@reem the compilation stuff mentioned is now in the ethers-solc package, and an in-process EVM with forking is available in evm-adapters, along with a full CLI for testing etc. Full tracing is going to come later, but I think that's enough to close the issue in this repo. Feel free to continue the discussion over at Foundry's issue

@gakonst gakonst closed this as completed Nov 24, 2021
meetmangukiya pushed a commit to meetmangukiya/ethers-rs that referenced this issue Mar 21, 2022
* feat: support multiple compiler versions

if a version is not detected locally and is in your contracts, it automatically gets downloaded for you

* feat: use solc api to provide specific paths / not globs

* refactor: move compilation to own struct

* fix: use auto-switching of versions inside tests

* chore: clippy lints
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants