Skip to content

feat: Select supported providers based on successful responses#183

Merged
gregorydemay merged 13 commits intomainfrom
gdemay/XC-372-dynamic-providers
Jul 9, 2025
Merged

feat: Select supported providers based on successful responses#183
gregorydemay merged 13 commits intomainfrom
gdemay/XC-372-dynamic-providers

Conversation

@gregorydemay
Copy link
Contributor

@gregorydemay gregorydemay commented Jul 8, 2025

Dynamically select supported JSON-RPC providers according to the number of successful JSON-RPC responses in the last 20 minutes, where providers with a higher number will be prioritized over ones with lower numbers.

The reason for this heuristic is similar to dfinity/evm-rpc-canister#435 since JSON-RPC errors are also not part of the Solana RPC API and therefore not standardized.

@gregorydemay gregorydemay marked this pull request as ready for review July 8, 2025 11:08
@gregorydemay gregorydemay requested a review from a team as a code owner July 8, 2025 11:08
@gregorydemay gregorydemay requested review from lpahlavi and ninegua July 8, 2025 11:08
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 a lot for the PR @gregorydemay 🚀 Just some minor comments from my side.

Copy link
Contributor Author

@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 for the review @lpahlavi!

@gregorydemay gregorydemay requested a review from lpahlavi July 9, 2025 07:13
@gregorydemay gregorydemay merged commit 715f278 into main Jul 9, 2025
12 checks passed
@gregorydemay gregorydemay deleted the gdemay/XC-372-dynamic-providers branch July 9, 2025 08:26
@github-actions github-actions bot mentioned this pull request Jul 17, 2025
@github-actions github-actions bot mentioned this pull request Jul 31, 2025
lpahlavi added a commit that referenced this pull request Jul 31, 2025
## 🤖 New release

* `sol_rpc_types`: 1.0.0 -> 2.0.0 (⚠ API breaking changes)
* `sol_rpc_canister`: 1.0.0 -> 1.1.0 (✓ API compatible changes)
* `sol_rpc_client`: 1.0.0 -> 2.0.0 (⚠ API breaking changes)

### ⚠ `sol_rpc_types` breaking changes

```text
--- failure constructible_struct_adds_field: externally-constructible struct adds field ---

Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
        ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.41.0/src/lints/constructible_struct_adds_field.ron

Failed in:
  field TransactionStatusMeta.cost_units in /tmp/.tmpuppblp/sol-rpc-canister/libs/types/src/solana/transaction/mod.rs:286
```

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

## `sol_rpc_types`

<blockquote>

## [2.0.0] - 2025-07-31

### Added

- Add optional `cost_units` to `TransactionStatusMeta`
([#180](#180))
- Add build requirements to READMEs and rustdoc
([#169](#169))
- Add `Cargo.toml` linting to CI pipeline
([#155](#155))

### Changed

- Require HTTP outcall base fee
([#185](#185))
- Select supported providers based on successful responses
([#183](#183))
- Migrate dependencies to `solana-sdk` repository
([#55](#55))
- Improve docs for `InstallArgs`
([#172](#172))

[2.0.0]:
https://github.com/dfinity/sol-rpc-canister/compare/1.0.0..2.0.0
</blockquote>

## `sol_rpc_canister`

<blockquote>

## [1.1.0] - 2025-07-31

### Added

- Add optional `cost_units` to `TransactionStatusMeta` (#180)
- Add more metrics (#144)

### Changed

- Do not record metrics for requests with insufficient cycles (#184)
- Require HTTP outcall base fee (#185)
- Select supported providers based on successful responses (#183)

### Fixed

- Change `nat16` to `nat32` in examples (#151)
</blockquote>

## `sol_rpc_client`

<blockquote>

## [2.0.0] - 2025-07-31

### Added

- Add `try_send` method to SOL RPC client
([#187](#187))
- Add build requirements to READMEs and rustdoc
([#169](#169))
- Add `Cargo.toml` linting to CI pipeline
([#155](#155))

### Changed

- Revert `sol_rpc_client` bump
([#178](#178))
- Migrate dependencies to `solana-sdk` repository
([#55](#55))
- Bump `sol_rpc_client` to `v1.0.1`
([#164](#164))
- Enable `ed25519` feature in docs
([#162](#162))

### Fixed

- Use correct fee for t-sig with local development key
([#160](#160))

[2.0.0]:
https://github.com/dfinity/sol-rpc-canister/compare/1.0.0..2.0.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 <louis.pahlavi@dfinity.org>
@github-actions github-actions bot mentioned this pull request Aug 29, 2025
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