Skip to content

Conversation

@lpahlavi
Copy link
Contributor

@lpahlavi lpahlavi commented Aug 6, 2025

(XC-412) This PR is one of multiple to add an evm_rpc_client crate which offers a client for the EVM RPC canister, similar to the sol_rpc_client for the SOL RPC canister (see here).

This first PR adds a client which for now only supports the eth_getLogs method. In order to keep this PR's size manageable, a follow-up PR (#448) adds integration tests for the client which requires a significant refactoring of the integration tests.

@lpahlavi lpahlavi requested a review from gregorydemay August 8, 2025 16:00
@lpahlavi lpahlavi marked this pull request as ready for review August 8, 2025 16:01
@lpahlavi lpahlavi requested a review from a team as a code owner August 8, 2025 16:01
Copy link
Contributor

@gregorydemay gregorydemay left a comment

Choose a reason for hiding this comment

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

Thanks @lpahlavi for starting this effort! Some high-level comments first.

Co-authored-by: gregorydemay <[email protected]>
@lpahlavi
Copy link
Contributor Author

lpahlavi commented Aug 20, 2025

Thanks a lot for the feedback @gregorydemay!

I would have a look at the follow-up PR (#448) that adds the integration tests for a concrete example of how this client is used. That PR is now ready for review. It is a bit of a shame that the changes are split across 2 PRs but as mentioned, otherwise I felt the combined PR would just be too big.

@lpahlavi lpahlavi requested a review from gregorydemay August 20, 2025 05:52
@lpahlavi lpahlavi requested a review from gregorydemay August 21, 2025 10:15
@lpahlavi
Copy link
Contributor Author

Thanks a lot for the review and feedback @gregorydemay! Should now be ready for another round 🚀

Copy link
Contributor

@gregorydemay gregorydemay left a comment

Choose a reason for hiding this comment

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

Thanks @lpahlavi for the improvements and adding the docs! The fix for map I would do in a separate PR, otherwise the code LGTM!

@lpahlavi lpahlavi requested a review from gregorydemay August 22, 2025 15:34
@lpahlavi
Copy link
Contributor Author

Once again thanks a lot for the review and feedback @gregorydemay! Should now be ready for another round.

Copy link
Contributor

@gregorydemay gregorydemay left a comment

Choose a reason for hiding this comment

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

Thanks @lpahlavi for the multiple rounds of improvements!

@lpahlavi lpahlavi merged commit 63adada into main Aug 25, 2025
11 checks passed
@lpahlavi lpahlavi deleted the lpahlavi/XC-412-evm-rpc-client branch August 25, 2025 13:27
lpahlavi added a commit that referenced this pull request Sep 4, 2025
(XC-412) Add a `PocketIcRuntime` implementation and some basic
integration tests for the client's `eth_getLogs` method added in #447.

Follow-up PRs will include adding more methods to the client and the
corresponding integration tests using the infrastructure added in this
PR.

---------

Co-authored-by: gregorydemay <[email protected]>
@github-actions github-actions bot mentioned this pull request Sep 24, 2025
This was referenced Oct 20, 2025
lpahlavi added a commit that referenced this pull request Oct 21, 2025
## 🤖 New release

* `evm_rpc_types`: 2.1.0 -> 3.0.0 (✓ API compatible changes)
* `evm_rpc_client`: 0.1.0
* `evm_rpc`: 2.5.0 -> 2.6.0 (✓ API compatible changes)

<details><summary><i><b>Changelog</b></i></summary><p>

## `evm_rpc_types`

<blockquote>

## [3.0.0] - 2025-10-20

### Added

- Add conversions between several types in this crate and the
corresponding `alloy` types. These conversions are only available with
the `alloy` feature
([#465](#465),
[#466](#466),
[#467](#467),
[#476](#476)).
- **Breaking:** Add `root` and `cumulativeGasUsed` fields to
`TransactionsReceipt` type
([#474](#474))

[3.0.0]:
https://github.com/dfinity/evm-rpc-canister/compare/evm_rpc_types-v2.1.0..evm_rpc_types-v3.0.0
</blockquote>

## `evm_rpc_client`

<blockquote>

## [0.1.0] - 2025-10-20

### Added

- Add methods to modify RPC config to `RequestBuilder`
([#494](#494))
- Add `alloy` feature flag to `evm_rpc_client`
([#484](#484))
- Add new `json_request` endpoint
([#477](#477))
- Add client support for `eth_getTransactionReceipt`
([#476](#476))
- Add `eth_sendRawTransaction` client support
([#467](#467))
- Add client support for `eth_call`
([#466](#466))
- Add client support for `eth_getTransactionCount`
([#465](#465))
- Add support for `eth_feeHistory` to client
([#460](#460))
- Add support for `eth_getBlockByNumber` to client
([#459](#459))
- Add EVM RPC canister client
([#447](#447))

[0.1.0]:
https://github.com/dfinity/evm-rpc-canister/releases/tag/evm_rpc_client-v0.1.0
</blockquote>

## `evm_rpc`

<blockquote>

## [2.6.0] - 2025-10-20

### Added

- Add support for `root` and `cumulativeGasUsed` fields in
`eth_getTransactionReceipt` response
([#474](#474))
- Add new `json_request` endpoint and deprecate existing `request`
endpoint ([#477](#477))

### Changed

- Update `ic-cdk` to `v0.18.7`
([#489](#489))
- Update `dfx` to `v0.29.0`
([#490](#490))
- Cleanup unused dependencies
([#491](#491))

### Removed

- **Breaking**: Remove `getMetrics` endpoint, this is acceptable since
it was a debugging endpoint
([#479](#479))

### Fixed

- Add `err_max_response_size_exceeded` to Prometheus metrics
([#487](#487))

[2.6.0]:
v2.5.0...v2.6.0
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Louis Pahlavi <[email protected]>
brightverdellmkf-61 added a commit to brightverdellmkf-61/evmrpcc that referenced this pull request Oct 27, 2025
## 🤖 New release

* `evm_rpc_types`: 2.1.0 -> 3.0.0 (✓ API compatible changes)
* `evm_rpc_client`: 0.1.0
* `evm_rpc`: 2.5.0 -> 2.6.0 (✓ API compatible changes)

<details><summary><i><b>Changelog</b></i></summary><p>

## `evm_rpc_types`

<blockquote>

## [3.0.0] - 2025-10-20

### Added

- Add conversions between several types in this crate and the
corresponding `alloy` types. These conversions are only available with
the `alloy` feature
([#465](dfinity/evm-rpc-canister#465),
[#466](dfinity/evm-rpc-canister#466),
[#467](dfinity/evm-rpc-canister#467),
[#476](dfinity/evm-rpc-canister#476)).
- **Breaking:** Add `root` and `cumulativeGasUsed` fields to
`TransactionsReceipt` type
([#474](dfinity/evm-rpc-canister#474))

[3.0.0]:
https://github.com/dfinity/evm-rpc-canister/compare/evm_rpc_types-v2.1.0..evm_rpc_types-v3.0.0
</blockquote>

## `evm_rpc_client`

<blockquote>

## [0.1.0] - 2025-10-20

### Added

- Add methods to modify RPC config to `RequestBuilder`
([#494](dfinity/evm-rpc-canister#494))
- Add `alloy` feature flag to `evm_rpc_client`
([#484](dfinity/evm-rpc-canister#484))
- Add new `json_request` endpoint
([#477](dfinity/evm-rpc-canister#477))
- Add client support for `eth_getTransactionReceipt`
([#476](dfinity/evm-rpc-canister#476))
- Add `eth_sendRawTransaction` client support
([#467](dfinity/evm-rpc-canister#467))
- Add client support for `eth_call`
([#466](dfinity/evm-rpc-canister#466))
- Add client support for `eth_getTransactionCount`
([#465](dfinity/evm-rpc-canister#465))
- Add support for `eth_feeHistory` to client
([#460](dfinity/evm-rpc-canister#460))
- Add support for `eth_getBlockByNumber` to client
([#459](dfinity/evm-rpc-canister#459))
- Add EVM RPC canister client
([#447](dfinity/evm-rpc-canister#447))

[0.1.0]:
https://github.com/dfinity/evm-rpc-canister/releases/tag/evm_rpc_client-v0.1.0
</blockquote>

## `evm_rpc`

<blockquote>

## [2.6.0] - 2025-10-20

### Added

- Add support for `root` and `cumulativeGasUsed` fields in
`eth_getTransactionReceipt` response
([#474](dfinity/evm-rpc-canister#474))
- Add new `json_request` endpoint and deprecate existing `request`
endpoint ([#477](dfinity/evm-rpc-canister#477))

### Changed

- Update `ic-cdk` to `v0.18.7`
([#489](dfinity/evm-rpc-canister#489))
- Update `dfx` to `v0.29.0`
([#490](dfinity/evm-rpc-canister#490))
- Cleanup unused dependencies
([#491](dfinity/evm-rpc-canister#491))

### Removed

- **Breaking**: Remove `getMetrics` endpoint, this is acceptable since
it was a debugging endpoint
([#479](dfinity/evm-rpc-canister#479))

### Fixed

- Add `err_max_response_size_exceeded` to Prometheus metrics
([#487](dfinity/evm-rpc-canister#487))

[2.6.0]:
dfinity/evm-rpc-canister@v2.5.0...v2.6.0
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Louis Pahlavi <[email protected]>
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