Skip to content

refactor: remove default/non-default providers#122

Merged
gregorydemay merged 5 commits intomainfrom
gdemay/XC-265-remove-default-providers
May 23, 2025
Merged

refactor: remove default/non-default providers#122
gregorydemay merged 5 commits intomainfrom
gdemay/XC-265-remove-default-providers

Conversation

@gregorydemay
Copy link
Contributor

@gregorydemay gregorydemay commented May 23, 2025

The notion of default/non-default providers was only useful when Equality was chosen as consensus strategy and no providers was explicitly specified, in which case the "default" providers would be selected. This PR removes the notion of default/non-default providers by replacing with an ordered list of providers for a given Solana cluster. The previous notion of "default" providers simpy correspond to the first three providers in that list.

@gregorydemay gregorydemay marked this pull request as ready for review May 23, 2025 08:32
@gregorydemay gregorydemay requested a review from a team as a code owner May 23, 2025 08:32
Copy link
Contributor

@lpahlavi lpahlavi left a comment

Choose a reason for hiding this comment

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

Thanks for the PR @gregorydemay, nice optimization!

@gregorydemay gregorydemay merged commit bf4ed8f into main May 23, 2025
11 of 12 checks passed
@gregorydemay gregorydemay deleted the gdemay/XC-265-remove-default-providers branch May 23, 2025 15:28
@github-actions github-actions bot mentioned this pull request May 27, 2025
gregorydemay added a commit that referenced this pull request May 27, 2025
## 🤖 New release

* `sol_rpc_canister`: 0.2.0

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

<blockquote>

## [0.2.0] - 2025-05-27

### Added

- Add client method to sign a transaction
([#113](#113))
- Add Chainstack RPC provider
([#118](#118))
- Add support for `getSignaturesForAddress`
([#106](#106))
- Add support for `getSignatureStatuses` RPC method
([#96](#96))
- Add support for `getTokenAccountBalance` RPC method
([#90](#90))
- Add support for `getTransaction` RPC method
([#68](#68))
- Add `getBlock` RPC method
([#53](#53))
- Add `sendTransaction` RPC method
([#59](#59))
- Add NOTICE to Apache license
([#60](#60))
- Add `getAccountInfo` RPC method
([#49](#49))
- Add metrics
([#41](#41))
- Add logging crate
([#13](#13))
- Add support for override providers
([#12](#12))

### Changed

- Bump version to 0.2
- Candid NonZeroU8
([#108](#108))
- Add `RoundingError` to `sol_rpc_types`
([#105](#105))
- Use secure primitive types for `Pubkey`, `Signature` and `Hash`
([#98](#98))
- Add support for `getRecentPrioritizationFees`
([#92](#92))
- Simplify API keys provisioning script
([#89](#89))
- Release v0.1.0
([#88](#88))
- Use `canlog_derive` and `canlog` from crates.io
([#84](#84))
- Release pipeline
([#4](#4))
- Clean-up TODOs
([#81](#81))
- Support method `getBalance`
([#74](#74))
- Remove http_types module and use external ic-http-types crate
([#73](#73))
- Rename some enum variants to camel case when serializing
([#72](#72))
- Use constant size JSON-RPC request ID
([#62](#62))
- Use method from JSON-RPC request for metric
([#61](#61))
- Cycles cost
([#52](#52))
- Client builder
([#54](#54))
- Round result from `getSlot` RPC method
([#48](#48))
- Use `canhttp` `multi` feature
([#46](#46))
- Implement a method for making generic RPC request
([#39](#39))
- Implement getSlot RPC method
([#33](#33))
- Add some tested RPC providers for Solana Mainnet and Devnet
([#15](#15))
- Streamline providers
([#32](#32))
- Update rust toolchain to 1.85
([#21](#21))
- Remove unnecessary Storable implementations
([#14](#14))
- Add support for API keys
([#10](#10))
- Hard-code SOL RPC providers
([#9](#9))
- Reproducible build
([#3](#3))
- Initial cargo workspace and build pipeline
([#2](#2))

### Fixed

- Missing `TraceHttp` logs
([#129](#129))
- End-to-end tests for `sendTransaction`
([#104](#104))
- Unit test for `getRecentPrioritizationFees` parameters serialization
([#107](#107))
- Integration test for `verifyApiKey`
([#82](#82))
- Set `maxSupportedTransactionVersion` to zero for end-to-end tests
([#85](#85))
- API keys ([#58](#58))
- End-to-end tests
([#45](#45))
- Correct Solana cluster for dRPC and Helius providers
([#47](#47))
- E2e test with Solana test validator
([#20](#20))
- Create test canister on ICP mainnet
([#8](#8))

### Removed

- Remove default/non-default providers
([#122](#122))
</blockquote>


</p></details>

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

---------

Co-authored-by: gregorydemay <gregory.demay@dfinity.org>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@github-actions github-actions bot mentioned this pull request Jun 12, 2025
gregorydemay added a commit that referenced this pull request Jun 12, 2025
## 🤖 New release

* `sol_rpc_canister`: 1.0.0

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

<blockquote>

## [1.0.0] - 2025-06-12

### Added

- Add support for `transactionDetails=accounts`
([#139](#139))
- Add support for `rewards` parameter for `getBlock`
([#135](#135))
- Add helper methods for request builders
([#136](#136))
- Add client method to sign a transaction
([#113](#113))
- Add Chainstack RPC provider
([#118](#118))
- Add support for `getSignaturesForAddress`
([#106](#106))
- Add support for `getSignatureStatuses` RPC method
([#96](#96))
- Add support for `getTokenAccountBalance` RPC method
([#90](#90))
- Add support for `getTransaction` RPC method
([#68](#68))
- Add `getBlock` RPC method
([#53](#53))
- Add `sendTransaction` RPC method
([#59](#59))
- Add NOTICE to Apache license
([#60](#60))
- Add `getAccountInfo` RPC method
([#49](#49))
- Add metrics
([#41](#41))
- Add logging crate
([#13](#13))
- Add support for override providers
([#12](#12))

### Changed

- Bump to 1.0.0
- Inline request parameters `is_default_config` methods
([#138](#138))
- Release v0.2.0
([#131](#131))
- Bump version and use a release notes template
([#130](#130))
- Candid NonZeroU8
([#108](#108))
- Add `RoundingError` to `sol_rpc_types`
([#105](#105))
- Use secure primitive types for `Pubkey`, `Signature` and `Hash`
([#98](#98))
- Add support for `getRecentPrioritizationFees`
([#92](#92))
- Simplify API keys provisioning script
([#89](#89))
- Release v0.1.0
([#88](#88))
- Use `canlog_derive` and `canlog` from crates.io
([#84](#84))
- Release pipeline
([#4](#4))
- Clean-up TODOs
([#81](#81))
- Support method `getBalance`
([#74](#74))
- Remove http_types module and use external ic-http-types crate
([#73](#73))
- Rename some enum variants to camel case when serializing
([#72](#72))
- Use constant size JSON-RPC request ID
([#62](#62))
- Use method from JSON-RPC request for metric
([#61](#61))
- Cycles cost
([#52](#52))
- Client builder
([#54](#54))
- Round result from `getSlot` RPC method
([#48](#48))
- Use `canhttp` `multi` feature
([#46](#46))
- Implement a method for making generic RPC request
([#39](#39))
- Implement getSlot RPC method
([#33](#33))
- Add some tested RPC providers for Solana Mainnet and Devnet
([#15](#15))
- Streamline providers
([#32](#32))
- Update rust toolchain to 1.85
([#21](#21))
- Remove unnecessary Storable implementations
([#14](#14))
- Add support for API keys
([#10](#10))
- Hard-code SOL RPC providers
([#9](#9))
- Reproducible build
([#3](#3))
- Initial cargo workspace and build pipeline
([#2](#2))

### Fixed

- Missing `TraceHttp` logs
([#129](#129))
- End-to-end tests for `sendTransaction`
([#104](#104))
- Unit test for `getRecentPrioritizationFees` parameters serialization
([#107](#107))
- Integration test for `verifyApiKey`
([#82](#82))
- Set `maxSupportedTransactionVersion` to zero for end-to-end tests
([#85](#85))
- API keys ([#58](#58))
- End-to-end tests
([#45](#45))
- Correct Solana cluster for dRPC and Helius providers
([#47](#47))
- E2e test with Solana test validator
([#20](#20))
- Create test canister on ICP mainnet
([#8](#8))

### Removed

- Remove default/non-default providers
([#122](#122))
</blockquote>


</p></details>

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

---------

Co-authored-by: gregorydemay <gregory.demay@dfinity.org>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: gregorydemay <112856886+gregorydemay@users.noreply.github.com>
gregorydemay added a commit to dfinity/evm-rpc-canister that referenced this pull request Jun 23, 2025
The notion of default/non-default providers was only useful when
Equality was chosen as consensus strategy and no providers was
explicitly specified, in which case the "default" providers would be
selected. This PR removes the notion of default/non-default providers by
replacing with an ordered list of providers for a given EVM chain,
corresponding to the supported providers. The previous notion of
"default" providers simply correspond to the first three providers in
that list.

This is similar to the refactoring done in dfinity/sol-rpc-canister#122.

Differentiating between supported and custom providers is the first step
towards dynamically ranking supported providers according to the number
of their successful responses, which is done in the following 3 PRs:

1. #436 (this one)
2. #434 
3. #435
rileyHoward92 added a commit to rileyHoward92/evm-rpc-canister that referenced this pull request Sep 25, 2025
The notion of default/non-default providers was only useful when
Equality was chosen as consensus strategy and no providers was
explicitly specified, in which case the "default" providers would be
selected. This PR removes the notion of default/non-default providers by
replacing with an ordered list of providers for a given EVM chain,
corresponding to the supported providers. The previous notion of
"default" providers simply correspond to the first three providers in
that list.

This is similar to the refactoring done in dfinity/sol-rpc-canister#122.

Differentiating between supported and custom providers is the first step
towards dynamically ranking supported providers according to the number
of their successful responses, which is done in the following 3 PRs:

1. #436 (this one)
2. #434 
3. #435
node-mancer556 added a commit to node-mancer556/evm-rpc-canister that referenced this pull request Sep 27, 2025
The notion of default/non-default providers was only useful when
Equality was chosen as consensus strategy and no providers was
explicitly specified, in which case the "default" providers would be
selected. This PR removes the notion of default/non-default providers by
replacing with an ordered list of providers for a given EVM chain,
corresponding to the supported providers. The previous notion of
"default" providers simply correspond to the first three providers in
that list.

This is similar to the refactoring done in dfinity/sol-rpc-canister#122.

Differentiating between supported and custom providers is the first step
towards dynamically ranking supported providers according to the number
of their successful responses, which is done in the following 3 PRs:

1. #436 (this one)
2. #434 
3. #435
AngieD101 added a commit to AngieD101/evm-rpc-canister that referenced this pull request Oct 12, 2025
The notion of default/non-default providers was only useful when
Equality was chosen as consensus strategy and no providers was
explicitly specified, in which case the "default" providers would be
selected. This PR removes the notion of default/non-default providers by
replacing with an ordered list of providers for a given EVM chain,
corresponding to the supported providers. The previous notion of
"default" providers simply correspond to the first three providers in
that list.

This is similar to the refactoring done in dfinity/sol-rpc-canister#122.

Differentiating between supported and custom providers is the first step
towards dynamically ranking supported providers according to the number
of their successful responses, which is done in the following 3 PRs:

1. #436 (this one)
2. #434 
3. #435
brightverdellmkf-61 added a commit to brightverdellmkf-61/evmrpcc that referenced this pull request Oct 27, 2025
The notion of default/non-default providers was only useful when
Equality was chosen as consensus strategy and no providers was
explicitly specified, in which case the "default" providers would be
selected. This PR removes the notion of default/non-default providers by
replacing with an ordered list of providers for a given EVM chain,
corresponding to the supported providers. The previous notion of
"default" providers simply correspond to the first three providers in
that list.

This is similar to the refactoring done in dfinity/sol-rpc-canister#122.

Differentiating between supported and custom providers is the first step
towards dynamically ranking supported providers according to the number
of their successful responses, which is done in the following 3 PRs:

1. #436 (this one)
2. #434 
3. #435
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