Skip to content

Conversation

@gakonst
Copy link
Member

@gakonst gakonst commented Nov 22, 2021

This fixes the breaking change in evmodin from vorot93/evmodin@767c310. The tests fail still because we don't have a contract-deployment-enabled host.

If we want proper Evmodin support, we'll need to do something like this repo: https://github.com/guanqun/ethers-forked-evm-provider. This however copy-pastes a lot of code from Akula which uses nightly.

So if we don't want to become a nightly-only project, we'd want to:

  1. Refactor Akula's code in non-nightly crates
  2. Import Akula's types and most importantly the opcode eloop

Alternatively, we can maybe just clean up the code from the repo above, package it in a crate and import that as a dependency, instead of evmodin. cc @guanqun for visibility and to gauge if there's any interest in figuring out how to support evmodin/akula vm

@gakonst gakonst merged commit 432e911 into master Nov 22, 2021
@gakonst gakonst deleted the chore/update-evmodin branch November 22, 2021 21:59
odyslam pushed a commit to phylaxsystems/phoundry that referenced this pull request Nov 23, 2021
odyslam pushed a commit to phylaxsystems/phoundry that referenced this pull request Nov 23, 2021
* fix(evm-adapters): initialize forked backend cache with local backend state

* fix: appease linter

* fix(solc): bump version tests for solc release

seth: update optimism genesis blockhashes (foundry-rs#134)

Optimism performed a regenesis which updated the genesis
blockhashes for both mainnet and kovan. For `seth chain` and
any other `seth` commands that rely on `seth chain` to work,
the hardcoded genesis blockhashes need to be updated.

The values were fetched using the following commands:

```
$ seth --rpc-url https://mainnet.optimism.io block 0 hash
0x7ca38a1916c42007829c55e69d3e9a73265554b586a499015373241b8a3fa48b

$ seth --rpc-url https://kovan.optimism.io block 0 hash
0x02adc9b449ff5f2467b8c674ece7ff9b21319d76c4ad62a67a70d552655927e5
```

Tested locally with the commands:

```
$ ./target/debug/seth chain --rpc-url https://mainnet.optimism.io
optimism-mainnet

$ ./target/debug/seth chain --rpc-url https://kovan.optimism.io
optimism-kovan
```

fix provider caching (foundry-rs#135)

Use new Solc compilation pipeline (foundry-rs#130)

* chore: deprecate dapp_solc

* chore: cargo lock

* chore(evm-adapters): use sol 0.6.6 for tests without auto solc detection

* fix(evm-adapters): adjust breaking changes

COMPILED.get -> COMPILED.find
bytecode -> bin

* refactor(dapp): move sol contracts under testdata/

* chore(dapp): remove dapptools artifacts

they will be available via the upstream compilation pipeline

* fix(dapp): adjust breaking changes

COMPILED.get -> COMPILED.find
bytecode -> bin

* feat(multi-runner): use new compilation pipeline

We now provide a pre-configured Project to the builder, it'll proceed to compile it
and use the artifacts accordingly.

The addresses map is now part of the contracts map

* test(multi-runner): adjust tests to match new compilation pipeline

* feat(cli): set Project paths from the BuildOpts

* feat(cli): use Project to compile files

* chore(cli): remove unused funcs

* fix(cli/etherscan): breaking api changes

* chore: cargo fmt

* tests: avoid race conditions during solc install

We do that by using ethers-solc/tests feature which imposes
a mutex on the solc downloading step.

* test(evm-adapters): make LargeContract test more robust

* fix(ethers-solc): update ethers-solc to fixed version bug

chore: remove direct svm dep

feat: allow specifying ETH_RPC_URL in forking mode

fix(rpc): default to Latest block instead of the backend's if none is… (foundry-rs#136)

* fix(rpc): default to Latest block instead of the backend's if none is provided

* feat(cli): exit -1 if error in tests

feat(cli): specify contracts with DAPP_SRC env var

ref: foundry-rs#108

feat: expand env vars (foundry-rs#138)

* feat(cli): add DAPP_TEST_TIMESTAMP and TEST_NUMBER

* feat(dapp): allow specifying sender for all txs

* feat(cli): allow specifying the sender for all calls

* chore: cargo fmt

feat(evm-adapters): make Executor work in already running tokio runtime (foundry-rs#140)

* fix deps

* feat(evm-adapters): make Executor work in already running tokio runtime

fix(cli): wait for git submodule command to finish

fix(cli/multi-runner): return errors before checking cache

This is a footgun and we should have a helper function for it in ethers-solc

chore: actualize seth commands in README.md (foundry-rs#142)

* chore: actualize seth commands in README.md

* update according to seth from dapptools-rs 0.1.0

feat: Update sputnik (foundry-rs#144)

* temp: use patched evm for auto_impl & update lock

rust-ethereum/evm#85

* fix sputnik breaking changes

* fix(dapp): breaking changes

* fix(cli): breaking changes

* cli: default to london

* chore: fmt

fix: enable cheatcodes in the constructor (foundry-rs#145)

* feat: override contract creation method

Before, transact_create would delegate to the internal handler which does not
use cheatcodes. We copy-paste transact_create so that we force it to route
to our cheatcode handler.

* fix(evm): use the externally exposed apis for create_inner

* chore: remove dbg

* test: add constructor cheatcode check

feat(cli): allow specifying FORK_BLOCK via env var

feat(cli): allow skipping automatic solc version detection

feat(seth): improve piped input support (foundry-rs#149)

Co-authored-by: Alexey Shekhirin <a.shekhirin@gmail.com>

feat(seth): storage (foundry-rs#150)

* feat(seth): storage

* pad

* fmt & clippy

Co-authored-by: Alexey Shekhirin <a.shekhirin@gmail.com>

fix(dapptools): explicitly set lib_paths as allowed paths (foundry-rs#139)

* fix(dapptools): set lib_paths to libraries on paths config

* fix(dapptools): add lib_paths as allowed paths rather than as 'libs'

* chore(dapptools): undo unrelated fmt change

* chore(dapptools): appease linter

deal + prank cheat codes (foundry-rs#146)

* deal + spoof cheat codes

fixes

fixes

deal + prank

* fixes

* no change of origin

* fmt

* prank is payable

* accurate readme

* clippy lint fix

chore: fmt

Adds etch (setCode) cheatcode

ref: foundry-rs#151

Rebrand to Foundry (foundry-rs#156)

* wip: rebrand

* update readme

* add demo svg

* more readme

* benches

* cleanup

* add more context in readme

* docs: some cleanup (foundry-rs#153)

* docs: tagline fixes (foundry-rs#154)

* docs: add CLI docs

* chore typos

* docs

* modify forge readme

* modify forge readme

* add cheatcodes readme

* cli readme

* retab

* retab

* add minimal utils readme

* evm adapters docs

* fix: parse block as decimal not hex

* chore: fmt

Co-authored-by: Matt <matt@mattsolomon.dev>
Co-authored-by: t11s <greenfeatherhelp@gmail.com>

more docs (foundry-rs#157)

* update doc

* update doc

* update doc

* fuzz docs

* wrap evm adapters docs

perf(evm-adapters): use existing runtime in SharedBackend if available (foundry-rs#158)

* perf(evm-adapters): use existing runtime in SharedBackend if available

* chore: box runtime to fix enum size lint

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>

perf: clippy is a good servant but a bad master (foundry-rs#159)

fix(cli): set root to curr dir correctly

feat(cli): print counterexample if fuzztest fails

feat(cli): forge init (foundry-rs#161)

* feat(cli): forge init

* chore: address review comments

fix(cli): install with Command vs libgit2 (foundry-rs#162)

evmodin: update and fix breaking changes (foundry-rs#163)
@gakonst gakonst added the fix label Nov 29, 2021
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.

1 participant