Solana Balanced Client
This is a wrapper over the RpcClient
of solana-client crate. It provides the ability to balance the requests between
multiple RPC endpoints taking into account their limits.
Usage
```rust
fn main() {
let defaultrpc = Arc::new(RpcClient::new(
"https://api.mainnet-beta.solana.com".tostring(),
));
let yourrpc = Arc::new(RpcClient::new("".tostring()));
let client = SolanaClient::newwithdefault(yourrpc).addrpc(
SolanaClientRpc::new(quicknoderpc)
// Credits / month limits.
.addlimit(
SolanaClientRateLimit::new(
30 * 24 * 60 * 60 * 1000, /* 30 days /
1_000, / credits per month /
1, / default cost in credits for endpoints /
)
// Ignore those endpoints that should be handled in this limit.
.ignore_endpoint(RpcRequest::GetHealth)
// List of all endpoints whose credits are different than the default value.
.add_endpoint_amount(RpcRequest::GetAccountInfo, 2)
.add_endpoint_amount(RpcRequest::GetMultipleAccounts, 10)
)
// Requests / second limit.
.add_limit(SolanaClientRateLimit::new(
1000, / 1 second /
10, / 10 requests per second /
1, / all requests count the same */
)),
);
// ...
}
```
You can see more examples in the examples
directory.
License
This project is licensed under the MIT License - see the LICENSE file for details.