Skip to content

Conversation

@jmg-duarte
Copy link
Contributor

@jmg-duarte jmg-duarte commented Dec 9, 2025

Description

Large but mostly trivial

Mainly migrates ethereum domain types to alloy, main victims were:

  • eth::Address
  • eth::ContractAddress
  • eth::TokenAddress
  • eth::TxId

To make the refactor a bit more complete, a bunch of boundary types were also migrated:

diff according to claude

  solvers_dto::auction::Auction

  - pub tokens: HashMap<H160, Token>
  + pub tokens: HashMap<Address, Token>

  - pub surplus_capturing_jit_order_owners: Vec<H160>
  + pub surplus_capturing_jit_order_owners: Vec<Address>

  solvers_dto::auction::Order

  - pub sell_token: H160
  - pub buy_token: H160
  - pub receiver: Option<H160>
  - pub owner: H160
  + pub sell_token: Address
  + pub buy_token: Address
  + pub receiver: Option<Address>
  + pub owner: Address

  solvers_dto::auction::InteractionData

  - pub target: H160
  + pub target: Address

  solvers_dto::auction::ConstantProductPool

  - pub address: H160
  - pub router: H160
  - pub tokens: HashMap<H160, ConstantProductReserve>
  + pub address: Address
  + pub router: Address
  + pub tokens: HashMap<Address, ConstantProductReserve>

  solvers_dto::auction::WeightedProductPool

  - pub address: H160
  - pub balancer_pool_id: H256
  - pub tokens: HashMap<H160, WeightedProductReserve>
  + pub address: Address
  + pub balancer_pool_id: B256
  + pub tokens: HashMap<Address, WeightedProductReserve>

  solvers_dto::auction::StablePool

  - pub address: H160
  - pub balancer_pool_id: H256
  - pub tokens: HashMap<H160, StableReserve>
  + pub address: Address
  + pub balancer_pool_id: B256
  + pub tokens: HashMap<Address, StableReserve>

  solvers_dto::auction::ConcentratedLiquidityPool

  - pub address: H160
  - pub router: H160
  - pub tokens: Vec<H160>
  + pub address: Address
  + pub router: Address
  + pub tokens: Vec<Address>

  solvers_dto::auction::ForeignLimitOrder

  - pub address: H160
  - pub maker_token: H160
  - pub taker_token: H160
  + pub address: Address
  + pub maker_token: Address
  + pub taker_token: Address

  solvers_dto::auction::FlashloanHint

  - pub liquidity_provider: H160
  - pub protocol_adapter: H160
  - pub receiver: H160
  - pub token: H160
  + pub liquidity_provider: Address
  + pub protocol_adapter: Address
  + pub receiver: Address
  + pub token: Address

  solvers_dto::auction::WrapperCall

  - pub address: H160
  + pub address: Address

  solvers_dto::solution::Solution

  - pub prices: HashMap<H160, U256>
  + pub prices: HashMap<Address, U256>

  solvers_dto::solution::JitOrder

  - pub sell_token: H160
  - pub buy_token: H160
  - pub receiver: H160
  + pub sell_token: Address
  + pub buy_token: Address
  + pub receiver: Address

  solvers_dto::solution::Call

  - pub target: H160
  + pub target: Address

  solvers_dto::solution::LiquidityInteraction

  - pub input_token: H160
  - pub output_token: H160
  + pub input_token: Address
  + pub output_token: Address

  solvers_dto::solution::CustomInteraction

  - pub target: H160
  + pub target: Address

  solvers_dto::solution::OrderInteraction

  - pub target: H160
  + pub target: Address

  solvers_dto::solution::Asset

  - pub token: H160
  + pub token: Address

  solvers_dto::solution::Allowance

  - pub token: H160
  - pub spender: H160
  + pub token: Address
  + pub spender: Address

  solvers_dto::solution::Flashloan

  - pub liquidity_provider: H160
  - pub protocol_adapter: H160
  - pub receiver: H160
  - pub token: H160
  + pub liquidity_provider: Address
  + pub protocol_adapter: Address
  + pub receiver: Address
  + pub token: Address

  ---
  autopilot crate (Database/Persistence DTOs)

  autopilot::infra::persistence::dto::Order

  - pub sell_token: H160
  - pub buy_token: H160
  - pub receiver: Option<H160>
  - pub owner: H160
  + pub sell_token: Address
  + pub buy_token: Address
  + pub receiver: Option<Address>
  + pub owner: Address

  Auction price mapping

  - prices: HashMap<H160, U256>  // stored in DB
  + prices: HashMap<Address, U256>

  ---
  driver crate (API DTOs)

  driver::infra::api::routes::quote::dto::Quote

  - clearing_prices: HashMap<eth::H160, eth::U256>
  - solver: eth::H160
  - tx_origin: Option<eth::H160>
  + clearing_prices: HashMap<eth::Address, eth::U256>
  + solver: eth::Address
  + tx_origin: Option<eth::Address>

  driver::infra::api::routes::quote::dto::Interaction

  - target: eth::H160
  + target: eth::Address

  driver::infra::api::routes::quote::dto::JitOrder

  - buy_token: eth::H160
  - sell_token: eth::H160
  - receiver: eth::H160
  + buy_token: eth::Address
  + sell_token: eth::Address
  + receiver: eth::Address

  driver::infra::api::routes::quote::dto::Order

  - sell_token: eth::H160
  - buy_token: eth::H160
  + sell_token: eth::Address
  + buy_token: eth::Address

  driver::infra::api::routes::solve::dto::SolveRequest

  - surplus_capturing_jit_order_owners: Vec<eth::H160>
  + surplus_capturing_jit_order_owners: Vec<eth::Address>

  driver::infra::api::routes::solve::dto::Token

  - pub address: eth::H160
  + pub address: eth::Address

  driver::infra::api::routes::solve::dto::Order

  - sell_token: eth::H160
  - buy_token: eth::H160
  - receiver: Option<eth::H160>
  - owner: eth::H160
  + sell_token: eth::Address
  + buy_token: eth::Address
  + receiver: Option<eth::Address>
  + owner: eth::Address

  driver::infra::api::routes::solve::dto::Interaction

  - target: eth::H160
  + target: eth::Address

  driver::infra::api::routes::solve::dto::Quote

  - pub solver: eth::H160
  + pub solver: eth::Address

  driver::infra::api::routes::solve::dto::Solution

  - submission_address: eth::H160
  - clearing_prices: HashMap<eth::H160, eth::U256>
  + submission_address: eth::Address
  + clearing_prices: HashMap<eth::Address, eth::U256>

  driver::infra::api::routes::solve::dto::TradedOrder

  - pub sell_token: eth::H160
  - pub buy_token: eth::H160
  + pub sell_token: eth::Address
  + pub buy_token: eth::Address

Changes

  • eth::X types from ethcontract to alloy
  • DTO types to alloy, check above

How to test

Existing tests

@jmg-duarte jmg-duarte changed the title wip Migrate ethereum domain types and downstream usages Dec 9, 2025
@jmg-duarte jmg-duarte marked this pull request as ready for review December 9, 2025 14:57
@jmg-duarte jmg-duarte requested a review from a team as a code owner December 9, 2025 14:57
Copy link
Contributor

@m-sz m-sz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Went through it all, overall looks good but there are some leftover comments.

@jmg-duarte jmg-duarte requested a review from m-sz December 10, 2025 09:30
@jmg-duarte jmg-duarte enabled auto-merge December 10, 2025 11:32
@jmg-duarte jmg-duarte added this pull request to the merge queue Dec 10, 2025
Merged via the queue into main with commit cb5044b Dec 10, 2025
18 checks passed
@jmg-duarte jmg-duarte deleted the jmgd/mega_commit branch December 10, 2025 11:55
@github-actions github-actions bot locked and limited conversation to collaborators Dec 10, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants