Skip to content

Conversation

QYuQianchen
Copy link
Contributor

Remove deprecated ethers-rs and migrate to alloy-rs
Closes #6722

Copy link
Contributor

coderabbitai bot commented Apr 22, 2025

📝 Walkthrough

Walkthrough

This change migrates the codebase from the deprecated ethers-rs crate to the alloy-rs crate for all Ethereum-related operations. The migration affects contract bindings, transaction construction, RPC client architecture, event decoding, ABI encoding, error handling, and test utilities across multiple workspace crates. All public interfaces, contract bindings, and transaction flows are updated to use alloy types and abstractions, with legacy ethers dependencies and code removed.

Changes

Files / Groups Change Summary
.gitignore, ethereum/.gitignore Narrowed nix-generated ignore pattern and removed ignore for bindings/src/codegen/.
.cargo/audit.toml Updated advisory ignore entries to reflect dependency changes from ethers to alloy.
Cargo.toml, chain/actions/Cargo.toml, chain/api/Cargo.toml, chain/indexer/Cargo.toml, chain/rpc/Cargo.toml, chain/types/Cargo.toml, common/primitive-types/Cargo.toml, ethereum/bindings/Cargo.toml Replaced ethers dependencies with alloy and updated features; added or removed related dependencies as needed.
Makefile, README.md Removed smoke-tests make target and updated documentation to use just run-smoke-test integration.
chain/actions/src/payload.rs Refactored payload generation to use alloy transaction types and primitives instead of ethers.
chain/api/src/executors.rs, chain/api/src/lib.rs Updated transaction executor and RPC client setup to use alloy types and builder patterns.
chain/indexer/src/block.rs, chain/indexer/src/constants.rs, chain/indexer/src/errors.rs, chain/indexer/src/handlers.rs, chain/indexer/src/traits.rs Migrated event/topic handling, error types, and log decoding from ethers to alloy, including updates to event signature constants and test code.
chain/rpc/src/client.rs, chain/rpc/src/errors.rs, chain/rpc/src/indexer.rs, chain/rpc/src/lib.rs, chain/rpc/src/rpc.rs, chain/rpc/src/transport.rs Replaced the entire RPC client and middleware stack from ethers to alloy, including new retry, metrics, snapshot, and gas oracle layers; refactored error handling and transaction methods.
chain/rpc/src/helper.rs, chain/rpc/src/middleware.rs Removed legacy helper and middleware code for ethers JSON-RPC and gas oracle.
chain/types/src/constants.rs, chain/types/src/errors.rs, chain/types/src/lib.rs, chain/types/src/utils.rs Added new constants and error modules; refactored contract deployment, transaction, and utility functions to use alloy types and contract instances.
common/internal-types/src/tickets.rs, common/primitive-types/src/bounded.rs, common/primitive-types/src/primitives.rs Added conversion between local and alloy address types; minor test and constant refactoring.
crypto/sphinx/src/routing.rs Minor update to key identifier length check for clarity.
ethereum/bindings/build.rs Removed build script for code generation.
ethereum/bindings/src/codegen/... Added new contract binding modules generated for alloy, covering all relevant Hopr contracts and events, with type-safe ABI and event handling.

Sequence Diagram(s)

sequenceDiagram
    participant App
    participant ChainTypes
    participant AlloyProvider
    participant AlloyContract
    participant EthereumNode

    App->>ChainTypes: Construct TransactionRequest / Call contract
    ChainTypes->>AlloyProvider: Send TransactionRequest
    AlloyProvider->>EthereumNode: JSON-RPC call (sendTransaction, call, etc.)
    EthereumNode-->>AlloyProvider: JSON-RPC response (tx hash, receipt, data)
    AlloyProvider-->>ChainTypes: Result (tx hash, contract call result)
    ChainTypes-->>App: Result (tx hash, contract call result)
Loading
sequenceDiagram
    participant Indexer
    participant AlloyProvider
    participant AlloyContract
    participant EthereumNode

    Indexer->>AlloyProvider: stream_logs(Filter)
    AlloyProvider->>EthereumNode: JSON-RPC call (eth_getLogs)
    EthereumNode-->>AlloyProvider: Logs
    AlloyProvider-->>Indexer: Logs
    Indexer->>AlloyContract: Decode logs using SolEventInterface
    AlloyContract-->>Indexer: Typed Events
Loading

Assessment against linked issues

Objective (Issue #) Addressed Explanation
Migrate all crates from ethers-rs to alloy-rs (#6722)

Possibly related PRs

Suggested labels

crate:chain-actions, crate:chain-api, crate:chain-indexer, crate:chain-rpc, crate:chain-types, crate:hopr-crypto-packet, crate:hopr-crypto-types, crate:hoprd-api, crate:hoprd-keypair, crate:hoprd-inbox, crate:hopr-path

Suggested reviewers

  • Teebor-Choka

Note

⚡️ AI Code Reviews for VS Code, Cursor, Windsurf

CodeRabbit now has a plugin for VS Code, Cursor and Windsurf. This brings AI code reviews directly in the code editor. Each commit is reviewed immediately, finding bugs before the PR is raised. Seamless context handoff to your AI code agent ensures that you can easily incorporate review feedback.
Learn more here.


Note

⚡️ Faster reviews with caching

CodeRabbit now supports caching for code and dependencies, helping speed up reviews. This means quicker feedback, reduced wait times, and a smoother review experience overall. Cached data is encrypted and stored securely. This feature will be automatically enabled for all accounts on May 16th. To opt out, configure Review - Disable Cache at either the organization or repository level. If you prefer to disable all data retention across your organization, simply turn off the Data Retention setting under your Organization Settings.
Enjoy the performance boost—your workflow just got faster.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@QYuQianchen QYuQianchen marked this pull request as draft April 22, 2025 05:44
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
.github/workflows/check-bindings.yaml (1)

49-52: Optimize the bindings generation step.
Currently nix develop -c loads the full development shell, which rebuilds most of the workspace and prolongs CI. You can:

  • Add -L to lock the flake and avoid unnecessary rebuilds:
    - nix develop -c forge bind ...
    + nix develop -L -c forge bind ...
  • Or install Foundry via a dedicated action (e.g., foundry-rs/foundry-action) and invoke forge bind directly, bypassing the heavy Nix environment.

Either approach will significantly reduce CI time.

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cfcb005 and d5149ab.

📒 Files selected for processing (1)
  • .github/workflows/check-bindings.yaml (1 hunks)
🧰 Additional context used
🪛 actionlint (1.7.7)
.github/workflows/check-bindings.yaml

14-14: label "self-hosted-hoprnet-big" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

🔇 Additional comments (2)
.github/workflows/check-bindings.yaml (2)

4-11: Validate workflow triggers coverage.
The workflow fires on both merge_group (with checks_requested) and pull_request (synchronize, ready_for_review). Please confirm that your organization’s merge queue feature emits merge_group events as expected and that these triggers cover all desired scenarios (e.g., PR updates, merge groups, main‐branch merges).


58-61: Bindings diff check correctly implemented.
The use of git diff --exit-code (instead of --cached) now properly detects unstaged changes in generated bindings. This fulfills the prior recommendation.

@QYuQianchen QYuQianchen added this pull request to the merge queue May 19, 2025
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks May 19, 2025
@QYuQianchen QYuQianchen added this pull request to the merge queue May 19, 2025
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks May 19, 2025
@NumberFour8 NumberFour8 enabled auto-merge May 19, 2025 11:57
@NumberFour8 NumberFour8 added this pull request to the merge queue May 19, 2025
@QYuQianchen QYuQianchen removed this pull request from the merge queue due to a manual request May 19, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (1)
.github/workflows/check-bindings.yaml (1)

13-14: Actionlint runner label configuration
Using the single custom label self-hosted-hoprnet-big may trigger actionlint validation errors because it’s not in the default label set. You can either whitelist it in your actionlint config or split it into standard labels, for example:

runs-on: [self-hosted, hoprnet-big]
🧰 Tools
🪛 actionlint (1.7.7)

14-14: label "self-hosted-hoprnet-big" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

🧹 Nitpick comments (2)
.github/workflows/check-bindings.yaml (2)

23-24: Address egress policy TODO
You’ve set egress-policy: audit for now, with a TODO to switch to block later. To ensure this doesn’t slip off the radar, consider opening an issue or adding a reminder in your backlog to revisit and update this policy once sufficient audit data has been collected.

Would you like me to create an issue to track changing the egress policy to block?


45-53: Optimize Nix environment for faster CI
The nix develop -c invocation will load your full development environment, which can be heavier than needed for just running forge bind. This may be why the "check smart contract" job takes a long time. Consider defining a minimal devshell or flake that only includes the Forge binary (and its dependencies), or use nix run if available, to significantly cut down CI startup and runtime.

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0e2847d and 0db6d7c.

📒 Files selected for processing (1)
  • .github/workflows/check-bindings.yaml (1 hunks)
🧰 Additional context used
🪛 actionlint (1.7.7)
.github/workflows/check-bindings.yaml

14-14: label "self-hosted-hoprnet-big" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

⏰ Context from checks skipped due to timeout of 90000ms (8)
  • GitHub Check: hoprd / docker
  • GitHub Check: hopli / docker
  • GitHub Check: Docs / Rust docs
  • GitHub Check: tests-smoke-hopli
  • GitHub Check: tests-unit-nightly
  • GitHub Check: Linter
  • GitHub Check: zizmor
  • GitHub Check: tests-unit
🔇 Additional comments (2)
.github/workflows/check-bindings.yaml (2)

4-11: Verify merge_group trigger support
The workflow is configured to run on the merge_group event with checks_requested, which is typically emitted by Mergify’s merge queues rather than GitHub Actions natively. Please confirm that your repository is set up to receive this event (e.g., via the Mergify GitHub App) and that the workflow is actually invoked when a merge group is updated.


54-63: Diff check correctly identifies outdated bindings
You’ve correctly replaced git diff --cached --exit-code with git diff --exit-code, ensuring unstaged changes after binding generation are caught and the job fails if bindings are stale.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (6)
.github/workflows/check-bindings.yaml (6)

4-11: Include pull_request opened trigger
The workflow currently runs on synchronize and ready_for_review events, but not on initial PR creation or reopens. Without opened/reopened, binding checks won’t run when a PR is first submitted or reopened from draft. Update to:

on:
  pull_request:
    types: [opened, reopened, synchronize, ready_for_review]

49-51: Optimize Nix shell invocation for performance
Using nix develop -c can load or rebuild the full flake environment each run. Adding the -L flag reuses existing development shells and speeds up CI:

- nix develop -c \
+ nix develop -L -c \

24-24: Remove or resolve the TODO
The TODO notes switching egress-policy to block after a trial. If it's time to enforce stricter egress controls, update it now; otherwise, consider tracking this work as an issue to avoid stale comments.


45-54: Externalize the --select regex for maintainability
The long inline regex for forge bind --select is hard to read and update. You could move the contract list into an environment variable or file:

env:
  SELECT_MODULES: |
    HoprAnnouncements|HoprAnnouncementsEvents|HoprCapabilityPermissions|...
...
forge bind --select "^(${SELECT_MODULES})$"

This makes it easier to add/remove modules.


2-3: Use a more descriptive workflow name
Renaming name: Check to something like Check Smart Contract Bindings improves clarity when viewing workflows in GitHub Actions.


55-63: Fail early on binding generation errors
Currently, a failing forge bind won’t stop the job until the diff check. Consider adding set -o pipefail or explicit error handling to report binding generation failures immediately:

+ set -o pipefail
  rm -rf ./ethereum/bindings/src/codegen && cd ./ethereum/contracts && \
-   nix develop -c forge bind ...
+   nix develop -c forge bind ... || {
+     echo "::error::Binding generation failed."
+     exit 1
+   }
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0db6d7c and 82b6024.

📒 Files selected for processing (1)
  • .github/workflows/check-bindings.yaml (1 hunks)
🧰 Additional context used
🪛 actionlint (1.7.7)
.github/workflows/check-bindings.yaml

14-14: label "self-hosted-hoprnet-big" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

⏰ Context from checks skipped due to timeout of 90000ms (6)
  • GitHub Check: hoprd / docker
  • GitHub Check: tests-smoke-hopli
  • GitHub Check: tests-unit-nightly
  • GitHub Check: tests-unit
  • GitHub Check: Linter
  • GitHub Check: zizmor
🔇 Additional comments (1)
.github/workflows/check-bindings.yaml (1)

20-24: Verify Nix installation works with sudo disabled
You disable sudo in the "Harden Runner" step (disable-sudo: true). The subsequent cachix/install-nix-action might require privilege escalation. Please confirm that Nix installs successfully under these restrictions or adjust the hardening order.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (1)
.github/workflows/check-bindings.yaml (1)

14-14: Split custom runner label into standard labels
The runner label self-hosted-hoprnet-big is not recognized by actionlint and may trigger validation errors. Please split it into an array of standard labels, for example:

runs-on: [self-hosted, hoprnet-big]

Alternatively, whitelist self-hosted-hoprnet-big in your actionlint configuration.

🧰 Tools
🪛 actionlint (1.7.7)

14-14: label "self-hosted-hoprnet-big" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

🧹 Nitpick comments (2)
.github/workflows/check-bindings.yaml (2)

23-24: Track the pending egress-policy change
The comment notes switching egress-policy to block after a trial period. Consider opening an issue or scheduling a reminder to revisit this TODO so the runner is fully locked down when ready.


49-54: Reduce maintenance overhead of the --select pattern
The hard-coded regex list of modules in --select is lengthy and error-prone. To avoid manual updates whenever contracts change, consider:

  • Dynamically generating the list from the contracts directory.
  • Using a broader pattern (e.g., ^Hopr.*) if safe.
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 82b6024 and afcc533.

📒 Files selected for processing (1)
  • .github/workflows/check-bindings.yaml (1 hunks)
🧰 Additional context used
🪛 actionlint (1.7.7)
.github/workflows/check-bindings.yaml

14-14: label "self-hosted-hoprnet-big" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-2019", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "ubuntu-20.04", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file

(runner-label)

⏰ Context from checks skipped due to timeout of 90000ms (7)
  • GitHub Check: tests-unit-nightly
  • GitHub Check: tests-unit
  • GitHub Check: tests-smoke-hopli
  • GitHub Check: zizmor
  • GitHub Check: Linter
  • GitHub Check: smart-contract-bindings
  • GitHub Check: Cargo Audit
🔇 Additional comments (3)
.github/workflows/check-bindings.yaml (3)

4-11: Confirm support for the merge_group event
This workflow is configured to trigger on the merge_group event, which is still in beta/alpha on GitHub. Verify that your organization has enabled this event type, and consider adding a fallback trigger (e.g., push to the default branch) to avoid missed binding checks.


50-51: Verify Nix develop invocation flags
The nix develop -c invocation builds the developer environment. If you need lockfile reproducibility or to avoid unexpected rebuilds, confirm whether flags like -L (for legacy lockfile behavior) or --impure are required, or if the current setup suffices.


59-62: Approve updated diff check for generated bindings
Switching from git diff --cached --exit-code to git diff --exit-code correctly detects any unstaged changes in the working tree and ensures outdated bindings fail the check.

@QYuQianchen QYuQianchen enabled auto-merge May 19, 2025 15:06
@QYuQianchen QYuQianchen added this pull request to the merge queue May 19, 2025
Merged via the queue into master with commit 3117a1b May 19, 2025
29 of 31 checks passed
@QYuQianchen QYuQianchen deleted the q/migrate-to-alloy-rs branch May 19, 2025 15:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

CI: cannot find file when building contract bindings Migrate from ether-rs to alloy-rs
4 participants