Skip to content

Commit

Permalink
ALL-3028 Add Solana Rpc support (#975)
Browse files Browse the repository at this point in the history
  • Loading branch information
Hathoriel authored Oct 11, 2023
1 parent 4a4f8dc commit 1785fa3
Show file tree
Hide file tree
Showing 11 changed files with 865 additions and 798 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## [4.1.1] - 2023.10.11
### Added
- Added RPC support for the SOLANA network. Users can now make RPC calls to these network using the `Network.SOLANA` network.

## [4.1.0] - 2023.10.11
### Added
- Added `faucet` submodule with `fund` method for requesting testnet native tokens from available `Tatum` faucets.
Expand Down
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -457,6 +457,8 @@ This section provides a list of various blockchain network status pages, powered
| [klaytn-baobab.status.tatum.io](https://klaytn-baobab.status.tatum.io) |
| [klaytn-baobab-archive.status.tatum.io](https://klaytn-baobab-archive.status.tatum.io) |
| [avalanche-c-mainnet-archive.status.tatum.io](https://avalanche-c-mainnet-archive.status.tatum.io) |
| [solana-mainnet.status.tatum.io](https://solana-mainnet.status.tatum.io) |
| [solana-devnet.status.tatum.io](https://solana-devnet.status.tatum.io) |


### Load Balancer
Expand Down Expand Up @@ -549,8 +551,10 @@ Here are the list of nodes for each blockchain:
| [rpc.tatum.io/klaytn-mainnet-archive/list.json](https://rpc.tatum.io/klaytn-mainnet-archive/list.json) |
| [rpc.tatum.io/klaytn-baobab/list.json](https://rpc.tatum.io/klaytn-baobab/list.json) |
| [rpc.tatum.io/klaytn-baobab-archive/list.json](https://rpc.tatum.io/klaytn-baobab-archive/list.json) |
| [rpc.tatum.io/bitcoin-cash-mainnet/list.json](https://rpc.tatum.io/bitcoin-cash-mainnet/list.json) |
| [rpc.tatum.io/avalanche-c-mainnet-archive/list.json](https://rpc.tatum.io/avalanche-c-mainnet-archive/list.json) |
| [rpc.tatum.io/bitcoin-cash-mainnet/list.json](https://rpc.tatum.io/bitcoin-cash-mainnet/list.json) |
| [rpc.tatum.io/avalanche-c-mainnet-archive/list.json](https://rpc.tatum.io/avalanche-c-mainnet-archive/list.json) |
| [rpc.tatum.io/solana-mainnet/list.json](https://rpc.tatum.io/solana-mainnet/list.json) |
| [rpc.tatum.io/solana-devnet/list.json](https://rpc.tatum.io/solana-devnet/list.json) |


Following pattern defines the URL for fetching the list of nodes:
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@tatumio/tatum",
"version": "4.1.0",
"version": "4.1.1",
"description": "Tatum JS SDK",
"author": "Tatum",
"repository": "https://github.com/tatumio/tatum-js",
Expand All @@ -20,7 +20,7 @@
"types": "./dist/src/main.d.ts",
"scripts": {
"cli": "ts-node src/cli.ts",
"lint": "eslint src/ --ext .js,.jsx,.ts,.tsx && prettier --write src/",
"lint": "eslint --fix src/ --ext .js,.jsx,.ts,.tsx && prettier --write src/",
"test": "jest --forceExit",
"clean": "rm -rf dist build package",
"ts-node": "ts-node",
Expand Down
7 changes: 5 additions & 2 deletions src/dto/Network.ts
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ export const TRON_LOAD_BALANCER_NETWORKS = [Network.TRON]
export const EOS_LOAD_BALANCER_NETWORKS = [Network.EOS]
export const XRP_LOAD_BALANCER_NETWORKS = [Network.XRP, Network.XRP_TESTNET]
export const NATIVE_EVM_LOAD_BALANCER_NETWORKS = [Network.KLAYTN, Network.KLAYTN_BAOBAB]
export const SOLANA_NETWORKS = [Network.SOLANA, Network.SOLANA_DEVNET]

export const LOAD_BALANCER_NETWORKS = [
...UTXO_LOAD_BALANCER_NETWORKS,
Expand All @@ -232,6 +233,7 @@ export const LOAD_BALANCER_NETWORKS = [
...EOS_LOAD_BALANCER_NETWORKS,
...XRP_LOAD_BALANCER_NETWORKS,
...NATIVE_EVM_LOAD_BALANCER_NETWORKS,
...SOLANA_NETWORKS,
]

export const EVM_ARCHIVE_NON_ARCHIVE_LOAD_BALANCER_NETWORKS = [
Expand All @@ -244,7 +246,6 @@ export const EVM_ARCHIVE_NON_ARCHIVE_LOAD_BALANCER_NETWORKS = [
Network.CHILIZ,
]

export const SOLANA_NETWORKS = [Network.SOLANA, Network.SOLANA_DEVNET]
export const TRON_NETWORKS = [Network.TRON, Network.TRON_SHASTA]
export const EOS_NETWORKS = [Network.EOS, Network.EOS_TESTNET]

Expand All @@ -260,7 +261,7 @@ export const isDataApiEnabledNetwork = (network: Network) => DATA_API_NETWORKS.i

export const isDataApiUtxoEnabledNetwork = (network: Network) => DATA_API_UTXO_NETWORKS.includes(network)

export const isSolanaEnabledNetwork = (network: Network) => SOLANA_NETWORKS.includes(network)
export const isSolanaNetwork = (network: Network) => SOLANA_NETWORKS.includes(network)

export const isTronNetwork = (network: Network) => TRON_NETWORKS.includes(network)

Expand All @@ -284,6 +285,8 @@ export const isXrpLoadBalancerNetwork = (network: Network) => XRP_LOAD_BALANCER_
export const isNativeEvmLoadBalancerNetwork = (network: Network) =>
NATIVE_EVM_LOAD_BALANCER_NETWORKS.includes(network)

export const isSameGetBlockNetwork = (network: Network) => isUtxoBasedNetwork(network) || isEvmBasedNetwork(network) || isTronNetwork(network) || isSolanaNetwork(network)

export enum MappedNetwork {
HORIZEN_EON = 'horizen-eon-mainnet',
DOGECOIN_MAINNET = 'dogecoin-mainnet',
Expand Down
4 changes: 3 additions & 1 deletion src/dto/rpc/SolanaRpcSuite.ts
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,9 @@ export type SolanaAddressSignature = {

export type SolanaInflationRate = { total: number; validator: number; foundation: number; epoch: number }

export interface SolanaRpcSuite extends AbstractRpcInterface {
export interface SolanaRpcSuite extends SolanaRpcInterface, AbstractRpcInterface {}

export interface SolanaRpcInterface {
/**
* Get info about the account on the Solana blockchain.
* @param pubkey - Pubkey of account to query, as base-58 encoded string
Expand Down
Loading

0 comments on commit 1785fa3

Please sign in to comment.