Skip to content

Commit 8a094d8

Browse files
committed
Merge branch 'master' into feature/alloy_evm_traits_anvil_txtypes
2 parents ca97d36 + 3d2afe0 commit 8a094d8

File tree

22 files changed

+273
-61
lines changed

22 files changed

+273
-61
lines changed

Cargo.lock

Lines changed: 83 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ alloy-signer-gcp = { version = "1.1.0", default-features = false }
256256
alloy-signer-ledger = { version = "1.1.0", default-features = false }
257257
alloy-signer-local = { version = "1.1.0", default-features = false }
258258
alloy-signer-trezor = { version = "1.1.0", default-features = false }
259+
alloy-signer-turnkey = { version = "1.1.0", default-features = false }
259260
alloy-transport = { version = "1.1.0", default-features = false }
260261
alloy-transport-http = { version = "1.1.0", default-features = false }
261262
alloy-transport-ipc = { version = "1.1.0", default-features = false }

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ COPY . .
1919
RUN git update-index --force-write-index
2020

2121
RUN --mount=type=cache,target=/root/.cargo/registry --mount=type=cache,target=/root/.cargo/git --mount=type=cache,target=/opt/foundry/target \
22-
source $HOME/.profile && cargo build --release --features anvil/js-tracer,cast/aws-kms,cast/gcp-kms,forge/aws-kms,forge/gcp-kms \
22+
source $HOME/.profile && cargo build --release --features anvil/js-tracer,cast/aws-kms,cast/gcp-kms,cast/turnkey,forge/aws-kms,forge/gcp-kms,forge/turnkey \
2323
&& mkdir out \
2424
&& mv target/release/forge out/forge \
2525
&& mv target/release/cast out/cast \

Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ CARGO_TARGET_DIR ?= target
1515
# List of features to use when building. Can be overridden via the environment.
1616
# No jemalloc on Windows
1717
ifeq ($(OS),Windows_NT)
18-
FEATURES ?= aws-kms gcp-kms cli asm-keccak
18+
FEATURES ?= aws-kms gcp-kms turnkey cli asm-keccak
1919
else
20-
FEATURES ?= jemalloc aws-kms gcp-kms cli asm-keccak
20+
FEATURES ?= jemalloc aws-kms gcp-kms turnkey cli asm-keccak
2121
endif
2222

2323
##@ Help
@@ -47,15 +47,15 @@ build-%:
4747
.PHONY: docker-build-push
4848
docker-build-push: docker-build-prepare ## Build and push a cross-arch Docker image tagged with DOCKER_IMAGE_NAME.
4949
# Build x86_64-unknown-linux-gnu.
50-
cargo build --target x86_64-unknown-linux-gnu --features "jemalloc aws-kms gcp-kms cli asm-keccak js-tracer" --profile "$(PROFILE)"
50+
cargo build --target x86_64-unknown-linux-gnu --features "jemalloc aws-kms gcp-kms turnkey cli asm-keccak js-tracer" --profile "$(PROFILE)"
5151
mkdir -p $(BIN_DIR)/amd64
5252
for bin in anvil cast chisel forge; do \
5353
cp $(CARGO_TARGET_DIR)/x86_64-unknown-linux-gnu/$(PROFILE)/$$bin $(BIN_DIR)/amd64/; \
5454
done
5555

5656
# Build aarch64-unknown-linux-gnu.
5757
rustup target add aarch64-unknown-linux-gnu
58-
RUSTFLAGS="-C linker=aarch64-linux-gnu-gcc" cargo build --target aarch64-unknown-linux-gnu --features "aws-kms gcp-kms cli asm-keccak js-tracer" --profile "$(PROFILE)"
58+
RUSTFLAGS="-C linker=aarch64-linux-gnu-gcc" cargo build --target aarch64-unknown-linux-gnu --features "aws-kms gcp-kms turnkey cli asm-keccak js-tracer" --profile "$(PROFILE)"
5959
mkdir -p $(BIN_DIR)/arm64
6060
for bin in anvil cast chisel forge; do \
6161
cp $(CARGO_TARGET_DIR)/aarch64-unknown-linux-gnu/$(PROFILE)/$$bin $(BIN_DIR)/arm64/; \

crates/anvil/src/eth/backend/executor.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ use crate::{
1111
error::InvalidTransactionError,
1212
pool::transactions::PoolTransaction,
1313
},
14-
inject_custom_precompiles,
1514
mem::inspector::AnvilInspector,
1615
};
1716
use alloy_consensus::{
@@ -364,7 +363,7 @@ impl<DB: Db + ?Sized, V: TransactionValidator> Iterator for &mut TransactionExec
364363
self.networks.inject_precompiles(evm.precompiles_mut());
365364

366365
if let Some(factory) = &self.precompile_factory {
367-
inject_custom_precompiles(&mut evm, factory.precompiles());
366+
evm.precompiles_mut().extend_precompiles(factory.precompiles());
368367
}
369368

370369
let cheats = Arc::new(self.cheats.clone());

crates/anvil/src/eth/backend/mem/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ use crate::{
2727
pool::transactions::PoolTransaction,
2828
sign::build_typed_transaction,
2929
},
30-
inject_custom_precompiles,
3130
mem::{
3231
inspector::AnvilInspector,
3332
storage::{BlockchainStorage, InMemoryBlockStates, MinedBlockOutcome},
@@ -1180,7 +1179,7 @@ impl Backend {
11801179
self.env.read().networks.inject_precompiles(evm.precompiles_mut());
11811180

11821181
if let Some(factory) = &self.precompile_factory {
1183-
inject_custom_precompiles(&mut evm, factory.precompiles());
1182+
evm.precompiles_mut().extend_precompiles(factory.precompiles());
11841183
}
11851184

11861185
let cheats = Arc::new(self.cheats.clone());

crates/anvil/src/evm.rs

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
1-
use alloy_evm::{
2-
Database, Evm,
3-
eth::EthEvmContext,
4-
precompiles::{DynPrecompile, PrecompilesMap},
5-
};
1+
use alloy_evm::precompiles::DynPrecompile;
62
use alloy_primitives::Address;
7-
use foundry_evm::core::either_evm::EitherEvm;
8-
use op_revm::OpContext;
9-
use revm::Inspector;
103
use std::fmt::Debug;
114

125
/// Object-safe trait that enables injecting extra precompiles when using
@@ -16,24 +9,11 @@ pub trait PrecompileFactory: Send + Sync + Unpin + Debug {
169
fn precompiles(&self) -> Vec<(Address, DynPrecompile)>;
1710
}
1811

19-
/// Inject custom precompiles into the EVM dynamically.
20-
pub fn inject_custom_precompiles<DB, I>(
21-
evm: &mut EitherEvm<DB, I, PrecompilesMap>,
22-
precompiles: Vec<(Address, DynPrecompile)>,
23-
) where
24-
DB: Database,
25-
I: Inspector<EthEvmContext<DB>> + Inspector<OpContext<DB>>,
26-
{
27-
for (addr, precompile) in precompiles {
28-
evm.precompiles_mut().apply_precompile(&addr, move |_| Some(precompile));
29-
}
30-
}
31-
3212
#[cfg(test)]
3313
mod tests {
3414
use std::convert::Infallible;
3515

36-
use crate::{PrecompileFactory, inject_custom_precompiles};
16+
use crate::PrecompileFactory;
3717
use alloy_evm::{
3818
EthEvm, Evm, EvmEnv,
3919
eth::EthEvmContext,
@@ -194,7 +174,7 @@ mod tests {
194174

195175
assert!(!evm.precompiles().addresses().contains(&PRECOMPILE_ADDR));
196176

197-
inject_custom_precompiles(&mut evm, CustomPrecompileFactory.precompiles());
177+
evm.precompiles_mut().extend_precompiles(CustomPrecompileFactory.precompiles());
198178

199179
assert!(evm.precompiles().addresses().contains(&PRECOMPILE_ADDR));
200180

@@ -216,7 +196,7 @@ mod tests {
216196

217197
assert!(!evm.precompiles().addresses().contains(&PRECOMPILE_ADDR));
218198

219-
inject_custom_precompiles(&mut evm, CustomPrecompileFactory.precompiles());
199+
evm.precompiles_mut().extend_precompiles(CustomPrecompileFactory.precompiles());
220200

221201
assert!(evm.precompiles().addresses().contains(&PRECOMPILE_ADDR));
222202

@@ -241,7 +221,7 @@ mod tests {
241221

242222
assert!(!evm.precompiles().addresses().contains(&PRECOMPILE_ADDR));
243223

244-
inject_custom_precompiles(&mut evm, CustomPrecompileFactory.precompiles());
224+
evm.precompiles_mut().extend_precompiles(CustomPrecompileFactory.precompiles());
245225

246226
assert!(evm.precompiles().addresses().contains(&PRECOMPILE_ADDR));
247227

@@ -266,7 +246,7 @@ mod tests {
266246

267247
assert!(!evm.precompiles().addresses().contains(&PRECOMPILE_ADDR));
268248

269-
inject_custom_precompiles(&mut evm, CustomPrecompileFactory.precompiles());
249+
evm.precompiles_mut().extend_precompiles(CustomPrecompileFactory.precompiles());
270250

271251
assert!(evm.precompiles().addresses().contains(&PRECOMPILE_ADDR));
272252

crates/anvil/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ pub use alloy_hardforks::EthereumHardfork;
5555
pub mod eth;
5656
/// Evm related abstractions
5757
mod evm;
58-
pub use evm::{PrecompileFactory, inject_custom_precompiles};
58+
pub use evm::PrecompileFactory;
5959

6060
/// support for polling filters
6161
pub mod filter;

crates/cast/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,4 +101,5 @@ mimalloc = ["foundry-cli/mimalloc"]
101101
tracy-allocator = ["foundry-cli/tracy-allocator"]
102102
aws-kms = ["foundry-wallets/aws-kms"]
103103
gcp-kms = ["foundry-wallets/gcp-kms"]
104+
turnkey = ["foundry-wallets/turnkey"]
104105
isolate-by-default = ["foundry-config/isolate-by-default"]

crates/doc/src/builder.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ impl DocBuilder {
124124
.collect::<Vec<_>>();
125125

126126
let out_dir = self.out_dir()?;
127+
let out_target_dir = out_dir.clone();
127128
let documents = compiler.enter_mut(|compiler| -> eyre::Result<Vec<Vec<Document>>> {
128129
let gcx = compiler.gcx();
129130
let documents = combined_sources
@@ -197,7 +198,7 @@ impl DocBuilder {
197198
path.clone(),
198199
target_path,
199200
from_library,
200-
self.config.out.clone(),
201+
out_target_dir.clone(),
201202
)
202203
.with_content(DocumentContent::Single(item), ident))
203204
})
@@ -231,7 +232,7 @@ impl DocBuilder {
231232
path.clone(),
232233
target_path,
233234
from_library,
234-
self.config.out.clone(),
235+
out_target_dir.clone(),
235236
)
236237
.with_content(DocumentContent::Constants(consts), identity),
237238
)
@@ -250,7 +251,7 @@ impl DocBuilder {
250251
path.clone(),
251252
target_path,
252253
from_library,
253-
self.config.out.clone(),
254+
out_target_dir.clone(),
254255
)
255256
.with_content(
256257
DocumentContent::OverloadedFunctions(funcs),

0 commit comments

Comments
 (0)