# Quasar
Quasar is a lightweight Solana RPC client built on Hyper.
The subset of the JSON-RPC spec that Quasar implements is extremely limited. Any / All PRs will be reviewed promptly.
Usage:
```rust
let endpoint = String::from("https://api.mainnet-beta.solana.com");
let commitment = solana_commitment_config::CommitmentConfig::processed();
let rpc = quasar_rpc::Rpc::new_with_commitment(endpoint, commitment).await;
let config = solana_client::rpc_config::RpcAccountInfoConfig {
encoding: Some(solana_account_decoder_client_types::UiAccountEncoding::Base64),
commitment: None,
data_slice: None,
min_context_slot: None,
};
let get_account_result = rpc.get_account(&solana_pubkey::Pubkey::default(), Some(config)).await;
```
Benchmarks were run on a dedicated Helius RPC node in SF, requests sent from Chicago.
Results:
`get_account.rs`:
```
Method Avg (KB) Min (KB) Max (KB) StdDev Net (KB) Time (ms)
───────────────────────── ──────────── ──────────── ──────────── ──────────── ──────────── ────────────
hyper_request_http_2 10.0 9.9 18.4 1.0 0.1 153.5
quasar_base64 10.4 10.2 19.1 1.0 0.1 116.4
quasar_default 10.4 10.2 18.8 1.0 0.1 128.7
quasar_base58 10.4 10.2 18.7 1.2 0.1 123.0
hyper_request_http_1 16.9 16.8 25.3 0.8 0.1 152.9
reqwest 76.7 76.6 85.3 1.2 0.1 117.4
solana_raw 82.0 81.7 90.5 1.6 0.1 124.8
solana_base64 82.2 82.1 90.8 1.2 0.1 160.1
solana_base58 82.4 82.1 90.8 1.6 0.1 143.8
quasar_base64_zstd 138.4 138.2 146.8 1.0 0.1 118.3
solana_default 210.4 210.2 219.0 1.4 0.1 122.3
solana_base64_zstd 210.5 210.1 218.9 1.6 0.1 126.4
```
`get_multiple_accounts.rs`:
```
Method Avg (KB) Min (KB) Max (KB) StdDev Net (KB) Time (ms)
─────────────────────────── ──────────── ──────────── ──────────── ──────────── ──────────── ────────────
hyper_multiple_http_2 19.2 19.0 27.6 1.0 0.1 126.5
quasar_multiple_base64 20.6 20.5 29.0 1.0 0.1 120.2
quasar_multiple_base58 20.7 20.5 29.0 1.0 0.1 127.5
quasar_multiple_base64_zstd 20.7 20.5 29.1 1.0 0.1 127.1
quasar_multiple_default 20.7 20.5 29.0 1.0 0.1 122.4
hyper_multiple_http_1 26.4 25.9 35.5 2.0 0.1 123.9
reqwest_multiple 85.9 85.7 94.5 1.2 0.1 122.2
solana_multiple_raw 98.6 98.4 107.2 1.4 0.1 150.6
solana_multiple_base64 102.6 102.5 111.3 0.9 0.1 118.2
solana_multiple_base58 102.7 102.5 111.3 1.2 0.1 121.8
solana_multiple_default 1255.2 1255.1 1263.8 1.2 0.1 128.1
solana_multiple_base64_zstd 1255.4 1255.1 1263.8 1.6 0.1 121.0
```
`get_program_accounts.rs`:
```
Method Avg (KB) Min (KB) Max (KB) StdDev Net (KB) Time (ms)
────────────────────────── ──────────── ──────────── ──────────── ──────────── ──────────── ────────────
quasar_program_base64_zstd 277612.0 277458.6 277723.0 112.1 1.6 4110.3
reqwest_program 560246.3 559893.6 560766.9 375.8 0.0 2381.7
hyper_program_http_2 581414.1 581386.1 581465.8 36.6 15.4 8602.7
quasar_program_default 582137.7 582047.8 582263.5 91.6 0.3 4472.0
quasar_program_base64 582266.9 582019.4 582439.6 179.5 -2.3 4068.7
solana_program_raw 710406.7 709917.3 710696.4 348.0 -0.1 2394.0
hyper_program_http_1 714507.7 714136.2 714732.2 264.6 0.0 3714.3
solana_program_base64 1084415.5 1084024.9 1085020.1 433.6 -0.1 2600.0
solana_program_base64_zstd 14350734.3 14350290.8 14350972.1 313.9 -0.1 5201.3
solana_program_default 14350977.7 14350519.3 14351372.0 351.1 -0.1 4595.0
```
`connection_pool_size.rs`:
```
Method Avg (KB) Min (KB) Max (KB) StdDev Net (KB) Time (ms)
───────────────────────── ──────────── ──────────── ──────────── ──────────── ──────────── ────────────
quasar_2_connections 10.4 10.2 18.8 1.0 0.1 123.2
quasar_3_connections 10.4 10.2 18.8 1.0 0.1 127.0
quasar_1_connection 10.5 10.2 18.8 1.2 0.1 150.9
```