Skip to content

Conversation

Wollac
Copy link
Contributor

@Wollac Wollac commented Apr 14, 2025

This PR updates the primary alloy-* dependencies across the workspace from v0.12/v0.8 versions to v0.14/v1.0.

This significant dependency upgrade necessitated substantial refactoring throughout the risc0-steel codebase to adapt to the new Alloy APIs and patterns. Key consequences include:

  • Adjusting to breaking changes in Alloy contract interaction (call return types), ABI decoding (abi_decode), and type definitions.
  • Introducing an EvmFactory abstraction (EthEvmFactory, OpEvmFactory) to handle different EVM environments (Ethereum, Optimism) in a way compatible with the updated dependencies.
  • Refactoring EvmEnv, Contract, and significantly changing the CallBuilder API.
  • Adds chain specification definitions for the upcoming Ethereum Prague fork (Mainnet, Sepolia, Holešky) and Optimism forks (Holocene, Isthmus).
  • Updating related dependencies like revm (to v22.0) for compatibility.

Breaking Changes:

  • The CallBuilder API has changed: configuration now requires direct modification of the public tx field (e.g., builder.tx.caller = ...) instead of using fluent methods.
  • Numerous type signatures across the library have changed due to the refactoring required by the Alloy update (incorporating EvmFactory, adapting to new Alloy types).
  • Please review the [Unreleased] changelog section for a detailed list of breaking changes introduced as part of this Alloy version bump.

Examples and documentation have been extensively updated to align with Alloy v0.14/v1.0 and the resulting API adjustments.

@Wollac Wollac requested a review from a team as a code owner April 14, 2025 13:02
@Wollac Wollac marked this pull request as draft April 14, 2025 13:02
@github-actions github-actions bot changed the title Update Alloy to v0.14 WEB3-418: Update Alloy to v0.14 Apr 14, 2025
@nategraf nategraf marked this pull request as ready for review April 24, 2025 23:38
@nategraf nategraf marked this pull request as draft April 25, 2025 00:21
@nategraf
Copy link
Contributor

e2e test is failing with an interesting error

   == SERVICE 'cl-1-teku-geth' LOGS ===================================
  2025-04-25 18:36:19.520 WARN  - Ignoring unknown items in network configuration: WHISK_EPOCHS_PER_SHUFFLING_PHASE,WHISK_PROPOSER_SELECTION_GAP,EIP7732_FORK_EPOCH,MAX_REQUEST_PAYLOADS,EIP7805_FORK_EPOCH,GOSSIP_MAX_SIZE,TARGET_BLOBS_PER_BLOCK_ELECTRA,EIP7732_FORK_VERSION,EIP7805_FORK_VERSION
  2025-04-25 18:36:19.529 FATAL - The specified network configuration had missing or invalid values for constants VALIDATOR_CUSTODY_REQUIREMENT, BALANCE_PER_ADDITIONAL_CUSTODY_GROUP
  tech.pegasys.teku.infrastructure.exceptions.InvalidConfigurationException: The specified network configuration had missing or invalid values for constants VALIDATOR_CUSTODY_REQUIREMENT, BALANCE_PER_ADDITIONAL_CUSTODY_GROUP

https://github.com/risc0/risc0-ethereum/actions/runs/14671053586/job/41177454463

@Wollac Wollac requested a review from nategraf May 1, 2025 06:39
@Wollac
Copy link
Contributor Author

Wollac commented May 1, 2025

e2e test is failing with an interesting error

Apparently there was a new version of Teku that required a different configuration. So I've pinned the clients used in E2E to fixed versions to avoid similar problems in the future.

@nategraf nategraf merged commit fd7e39b into main May 5, 2025
11 checks passed
@nategraf nategraf deleted the alloy-v0.14 branch May 5, 2025 16:37
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.

2 participants