All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
2.8.0 - 2025-11-17
2.7.1 - 2025-11-17
- Add metrics label identifying requests made with supported providers (#521)
- Separate consensus errors from other HTTP outcall errors in metrics (#520)
2.7.0 - 2025-11-03
- For each
eth_*endpoint, add a new correspondingeth_*CyclesCostquery endpoint with the same Candid arguments, that allows computing the cycles cost of calling the correspondingeth_*update endpoint (#508, #509)
- Use constant-size request IDs in JSON-RPC requests to allow for consistent request cycles costs (#514)
2.6.0 - 2025-10-20
- Add new
json_requestendpoint and deprecate existingrequestendpoint (#477)
- Add support for
rootandcumulativeGasUsedfields ineth_getTransactionReceiptresponse (#474) - Update
ic-cdktov0.18.7(#489) - Update
dfxtov0.29.0(#490) - Cleanup unused dependencies (#491)
- Breaking: Remove
getMetricsendpoint, this is acceptable since it was a debugging endpoint (#479)
- Add
err_max_response_size_exceededto Prometheus metrics (#487)
2.5.0 - 2025-09-12
- Dynamically select supported providers based on successful responses rate in the last 20min (#434, #435, #436)
- Update URLs of BlockPi public endpoints (#440)
2.4.0 - 2025-06-04
- Customize maximum block range for
eth_getLogs(#424) - Library
canhttpthat contains the handling of HTTPs outcalls (#364, #370, #374, #375, #378 and #391)
- Improve validation of JSON-RPC requests and responses to adhere to the JSON-RPC specification (#386 and #387)
- Re-order default Sepolia providers (#410)
- Remove
http_typesmodule and use externalic-http-typescrate (#400) - Update dependencies:
- Update Rust and libs (#418)
- Bump tokio from 1.44.0 to 1.44.1 (#389)
- Bump http from 1.2.0 to 1.3.1 (#388)
- Bump ic-stable-structures from 0.6.7 to 0.6.8 (#390)
- Bump pocket-ic from 6.0.0 to 7.0.0 (#376)
- Bump pin-project from 1.1.9 to 1.1.10 (#382)
- Bump thiserror from 2.0.11 to 2.0.12 (#381)
- Bump tokio from 1.43.0 to 1.44.0 (#384)
- Bump serde_json from 1.0.139 to 1.0.140 (#385)
- Bump serde_bytes from 0.11.15 to 0.11.17 (#380)
- Bump serde from 1.0.218 to 1.0.219 (#383)
- Bump ring from 0.17.8 to 0.17.13 (#379)
- Bump serde_json from 1.0.138 to 1.0.139 (#371)
- Bump serde from 1.0.217 to 1.0.218 (#372)
- Missing TraceHttp logs (#421)
- Reject calls to HTTP endpoint in replicated mode (#373)
- Double
max_response_byteswhen response too big (#368)
2.3.1 - 2025-05-19
- Re-order default Sepolia providers (#413)
- Replace Cloudflare with Ankr (#414)
2.3.0 - 2025-02-11
- Make the number of nodes in a subnet configurable by specifying it in the installation arguments (new field
nodes_in_subnetinInstallArgs). - Allow to override provider URL upon installation for testing purposes (new field
override_providerinInstallArgs).
rpc.sepolia.orgreplaced by Ankr as one of the default providers for Ethereum Sepolia.
- Improve cycles cost calculation for HTTPs outcalls to avoid overcharging.
2.2.0 - 2024-10-17
- v2.2.0 feat: Support for
eth_callmethod
- fix: ensure Candid API is the same as the interface exposed by the canister
- fix: always deserialize
Block::totalDifficultytoNoneto avoid inconsistencies between providers - fix: Switch order of Ethereum mainnet providers
AlchemyandLlamaNodesto reduce the chance of automatically selectingAlchemywhen no providers are specified by the caller due to its low rate limit.
2.1.0 - 2024-10-14
- v2.1.0 chore: changelog file
- v2.1.0 refactor: Remove Ankr as a default provider
2.0.0 - 2024-10-08
SHA-256 hash: 5c49768f03f075ffd87f0f20d849897e03db58d05fb0d12f1a340b2a5f1e4f65
This release brings the following main changes (see details below)
- RPC providers are immutable (#244). The following post explains in more detail the motivation behind this change.
- Caller can now choose between equality or a threshold consensus strategy to aggregate responses from multiple providers (#284).
- Optional canister logs (#201).
- All (productive) dependencies on the IC repository were removed (mainly #243).
- build: set up reproducible builds via Docker by @rvanasa in #206
- feat!: add collateral cycles by @rvanasa in #213
- candid: L2 chains (Arbitrum, Base, Optimism) by @rvanasa in #212
- feat: ability to update chain IDs via
manageProvidermethod by @rvanasa in #215 - dfx: add default canister init args by @rvanasa in #220
- Add Llama RPC providers by @rvanasa in #222
- feat:
evm_rpc_typescrate andNat256by @gregorydemay in #257 - feat!: NNS-managed RPC providers by @rvanasa in #252
- feat: Choose a consensus strategy by @gregorydemay in #286
- feat: implement threshold strategy by @gregorydemay in #287
- feat: optional console log message filter by @rvanasa in #241
- feat: implement
Errortrait for error types by @gregorydemay in #298
- Update README.md by @letmejustputthishere in #203
- chore: update readme by @rvanasa in #216
- Update README.md by @letmejustputthishere in #219
- ci: mitigate rate limits / inconsistent responses by @rvanasa in #227
- ci: bump
setup-protocaction to v3 by @rvanasa in #226 - auth: allow any principal to call
getAuthorizedby @rvanasa in #225 - ci: skip flaky test by @rvanasa in #230
- docs: minimal change to readme by @rvanasa in #239
- chore: misc. by @rvanasa in #247
- Minor typo in the README.md by @ChitranshVashney in #260
- test: RPC provider API key modifications by @rvanasa in #269
- Update README.md by @letmejustputthishere in #280
- chore: bump dfx version by @rvanasa in #221
- candid: clarify
topicsineth_getLogsargs by @rvanasa in #197 - test: add example Candid-RPC method to Rust E2E test by @rvanasa in #198
- rpc: update default Public Node JSON-RPC URLs by @rvanasa in #199
- refactor: move
GetLogsArgsandLogEntryto theevm_rpc_typescrate by @gregorydemay in #261 - refactor: move
TransactionReceipttoevm_rpc_typesby @gregorydemay in #263 - refactor: move
Blocktoevm_rpc_typesby @gregorydemay in #268 - refactor: move
GetTransactionCountArgsandSendRawTransactionStatustoevm_rpc_typesby @gregorydemay in #270 - refactor: move types related to providers to
evm-rpc-typescrate by @gregorydemay in #271 - refactor: move types related to result to
evm-rpc-typesby @gregorydemay in #274 - refactor: Remove dependency on
ic-cketh-minterby @gregorydemay in #275 - refactor: re-enable logs by @gregorydemay in #276
- refactor: remove
cketh_eth_rpc_call_retry_countmetrics by @gregorydemay in #277 - refactor: simplify
EthRpcClientby @gregorydemay in #278 - refactor: consolidate JSON requests and responses by @gregorydemay in #279
- refactor: simplify
CheckedAmountOfby @gregorydemay in #283 - refactor: move types by @gregorydemay in #285
- candid: rename
InitArgstoInstallArgsby @rvanasa in #272 - refactor: Use strongly typed fields in JSON requests and responses by @gregorydemay in #291
- chore: Remove dependencies on the IC repository by @gregorydemay in #293
- chore: upgrade all dependencies by @gregorydemay in #294
- refactor: use
evm_rpc_typesin Rust E2E canister by @rvanasa in #295 - refactor: Move
InstallArgsandProviderto theevm_rpc_typescrate by @gregorydemay in #299 - build(deps): bump serde_json from 1.0.114 to 1.0.115 by @dependabot in #188
- build(deps): bump serde from 1.0.198 to 1.0.202 by @dependabot in #211
- build(deps): bump serde_json from 1.0.116 to 1.0.117 by @dependabot in #209
- build(deps): bump num-traits from 0.2.18 to 0.2.19 by @dependabot in #207
- build(deps): bump num from 0.4.2 to 0.4.3 by @dependabot in #210
- build(deps): bump serde from 1.0.202 to 1.0.203 by @dependabot in #217
- build(deps): bump url from 2.5.0 to 2.5.1 by @dependabot in #223
- build(deps): bump url from 2.5.1 to 2.5.2 by @dependabot in #228
- build(deps): bump serde_bytes from 0.11.14 to 0.11.15 by @dependabot in #232
- build(deps): bump serde_json from 1.0.117 to 1.0.118 by @dependabot in #231
- build(deps): bump serde_json from 1.0.118 to 1.0.120 by @dependabot in #236
- build(deps): bump serde from 1.0.203 to 1.0.204 by @dependabot in #238
- build(deps): bump serde_json from 1.0.120 to 1.0.121 by @dependabot in #245
- build(deps): bump serde_json from 1.0.121 to 1.0.122 by @dependabot in #246
- build(deps): bump async-trait from 0.1.80 to 0.1.81 by @dependabot in #237
- build(deps): bump serde_json from 1.0.122 to 1.0.124 by @dependabot in #250
- build(deps): bump serde from 1.0.204 to 1.0.206 by @dependabot in #249
- build(deps): bump serde from 1.0.206 to 1.0.207 by @dependabot in #251
- build(deps): bump ic-cdk from 0.10.0 to 0.10.1 by @dependabot in #256
- build(deps): bump serde_json from 1.0.124 to 1.0.127 by @dependabot in #259
- build(deps): bump serde from 1.0.207 to 1.0.209 by @dependabot in #258
- build(deps): bump serde from 1.0.209 to 1.0.210 by @dependabot in #267
- build(deps): bump serde_json from 1.0.127 to 1.0.128 by @dependabot in #266
- build(deps): bump async-trait from 0.1.81 to 0.1.82 by @dependabot in #265
- fix: dfx version in CI by @rvanasa in #194
- fix: add
dfx pullmetadata to Docker build by @rvanasa in #214 - fix: optional fields in
Blockby @gregorydemay in #235 - fix!: simplify
eth_feeHistoryresult type by @rvanasa in #242 - fix!: change number of subnet nodes from 28 to 31 by @rvanasa in #281
- fix!: change number of subnet nodes from 31 to 34 by @rvanasa in #282
- fix:
TransactionReceiptfieldsstatusandtoshould be optional by @gregorydemay in #290 - fix: maximum value for
max_response_bytesby @gregorydemay in #297 - fix:
repositorylink inevm_rpc_types/Cargo.tomlby @gregorydemay in #301
- candid: remove hostname from
UpdateProviderArgsby @rvanasa in #229 - candid!: remove
RpcService::Chain()variant by @rvanasa in #273
- @letmejustputthishere made their first contribution in #203
- @gregorydemay made their first contribution in #235
- @ChitranshVashney made their first contribution in #260
Full Changelog: https://github.com/internet-computer-protocol/evm-rpc-canister/compare/release-2024-03-26...v2.0.0