Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@tatumio/tatum

tatumio11.7kMIT4.2.53TypeScript support: included

Tatum JS SDK

Tatum, SDK, Blockchain

readme

Tatum Website

🚀 Tatum SDK – Your Gateway to Blockchain

The Tatum SDK is a comprehensive TypeScript/JavaScript library designed to simplify blockchain application development. Whether you're monitoring blockchain addresses, making RPC calls, managing NFTs, or querying wallet balances and transactions, Tatum SDK streamlines the process with its robust features:

  • 🕵️‍♂️ Blockchain Monitoring: Easily track activities on any blockchain address.
  • 📞 RPC Calls Simplified: Interact with various blockchains through simplified RPC calls.
  • 🖼️ NFT Insights: Access detailed information on NFT balances, transactions, and ownership.
  • 💰 Wallet Intelligence: Get precise data on wallet balances and transaction history.

GitHub Downloads NPM Version GitHub License Build


🔑 Don't have an API key? Unlock all networks, features, and monitor error logs & usage with ease. Create API Key for FREE - Start building on Tatum with full access to our powerful suite of features.

Tailored for Developers

Engineered with a developer-first approach, Tatum SDK accelerates your blockchain application development, regardless of your experience level. Explore our Documentation and Getting Started Guide to jumpstart your projects:

  • Super fast development: Start building blockchain applications in no time.
  • No previous blockchain experience required: Perfect for beginners and experts alike.
  • One line of code: Perform complex tasks with minimal effort.

Need help or want to contribute? Report Bugs, join our community, or collaborate on improvements.

Join us on Discord Follow on X (formerly Twitter) Subscribe on YouTube

🔌 Perform Native RPC Calls

Interact seamlessly with various blockchains through native RPC calls. Say goodbye to the hassle of juggling separate RPC clients for each blockchain.

Documentation
EVM Blockchains
Ethereum RPC
Polygon RPC
Flare RPC
Haqq RPC
Optimism RPC
Horizen EON RPC
Arbitrum One RPC
Chiliz RPC
Ethereum Classic RPC
Klaytn RPC
Avalanche RPC
Celo RPC
XinFin RPC
Fantom RPC
Base RPC
UTXO Blockchains
Bitcoin RPC
Litecoin RPC
Dogecoin RPC
ZCash RPC
Bitcoin Cash RPC
Other Blockchains
Solana RPC
XPR RPC
Tron RPC
Eos RPC
Tezos RPC
Agorand RPC
Cardano RPC
Stellar RPC
Iota RPC
Kadena RPC
Rostrum RPC
Cronos RPC

🔔 Create Notifications

Effortlessly monitor wallet activities. Set up real-time notifications for events like:

Documentation
Start monitoring of the address
Stop monitoring of the address
Get all sent notifications
Get all existing monitoring subscriptions

👛 Access Wallet Information

Through a single interface, obtain crucial wallet details such as balances, transaction history, and other pertinent information.

Documentation
Get all assets the wallet holds
Get all transactions on the wallet

🖼️ NFT Actions

Dive into a comprehensive suite of actions related to non-fungible tokens (NFTs).

Documentation
Get all NFTs the wallet holds
Get all NFTs in the NFT collection
Trace the history of a specific NFT
Show the NFT history of a wallet
Create NFT Collection
Create MultiToken NFT Collection
Retrieve the owner of the NFT
Check if the wallet owns a specific NFT
Get the metadata of a specific NFT

🪙 Fungible Tokens

Explore the world of fungible tokens, manage their properties, and track your assets seamlessly.

Documentation
Get all fungible tokens the wallet holds
Show fungible token history of a wallet
Get metadata of a fungible token
Create a fungible token

📁 IPFS

Enables you as a developer to use IPFS to store and retrieve your media.

Documentation
Upload file to IPFS

⛽ Fee Estimation

Stay updated with real-time fee insights and ensure smooth transactions without overpaying.

Documentation
Fetch real-time fee data

💻 Wallet Provider

Integrate, transact, and manage assets using a secure and user-friendly wallet provider interface.

Documentation
Connect a wallet
Transfer native assets
Transfer your NFT
Create your NFT Collection
Create your Fungible Token
Create your NFT (ERC-1155 MultiToken) Collection
Transfer fungible tokens like USDT
Approve the transfer of a fungible token like USDT
Build your own custom transaction

💲 Exchange Rates

Access the latest crypto exchange rates and supported currency information to stay ahead in the market.

Documentation
Get current exchange rate of the crypto asset
Get current rates for multiple crypto assets at once
Supported Crypto Currencies
Supported Fiats

📘 Getting Started with TatumSDK

This guide will lead you step by step, from basic setup and installation to harnessing the immense capabilities of our library. For a detailed walkthrough, check out the Getting Started page.

📊 TatumSDK Dashboard

Experience powerful insights into your application's usage with the Tatum Dashboard. It provides real-time analytics, user engagement metrics, and an intuitive interface, seamlessly integrating with TatumSDK for optimal app monitoring.

🌱 Always Evolving

Our library is on a continuous journey of growth. We regularly add new features and extend support for more blockchains. It's the go-to choice for developers aiming to craft robust, scalable, and efficient blockchain apps without the overwhelming intricacies of diverse blockchain protocols.

Prerequisites

Before diving into TatumSDK, ensure that you have the following prerequisites installed:

  • Node.js: Ensure you have the latest LTS version installed.
  • npm: npm is bundled with Node.js, so installing Node.js should automatically install npm.

Installation

To install TatumSDK, simply run the following command in your terminal or command prompt:

Install using npm

npm install @tatumio/tatum

Install using yarn

yarn add @tatumio/tatum

Install using pnpm

pnpm install @tatumio/tatum

Getting started

Basic Usage

Here's a brief overview of how to utilize TatumSDK for RPC calls and subscribing to notifications.

Initialization

Start by importing the TatumSDK library and initializing Ethereum client as follows:

import { TatumSDK, Network, Ethereum } from '@tatumio/tatum'

const tatum = await TatumSDK.init<Ethereum>({ network: Network.ETHEREUM })

// Destroy Tatum SDK - needed for stopping background jobs
await tatum.destroy()

For more details, check out the Get started documentation.

RPC Calls

To make RPC calls, use the available methods to interact with Ethereum blockchain. For example, to fetch the balance of a specific Ethereum address:

import { TatumSDK, Network, Ethereum } from '@tatumio/tatum'

const tatum = await TatumSDK.init<Ethereum>({ network: Network.ETHEREUM })

const { result } = await tatum.rpc.getBalance('0x742d35Cc6634C0532925a3b844Bc454e4438f44e')
console.log(`Balance: ${result}`)

// Destroy Tatum SDK - needed for stopping background jobs
await tatum.destroy()

For more details, check out the RPC documentation.

Subscribing to Notifications

To subscribe to notifications for events related to a specified Ethereum address, choose a type of event you want to be notified about. We are going to use addressEvent as an example, which sends you notification about any transfer on the address - native ones, ERC20 tokens or NFTs. To subscribe to this event, use the following code:

import { TatumSDK, Network, Ethereum } from '@tatumio/tatum'

const tatum = await TatumSDK.init<Ethereum>({ network: Network.ETHEREUM })

const response = await tatum.notification.subscribe.addressEvent({
  url: 'https://<YOUR_WEBHOOK_URL>',
  address: '0x690B9A9E9aa1C9dB991C7721a92d351Db4FaC990',
})

console.log(response)
// 🎉  Now your address is subscribed for any events!

// Destroy Tatum SDK - needed for stopping background jobs
await tatum.destroy()

For more details, check out the Notifications documentation.

Get NFT balance of a wallet

Using TatumSDK, obtain the NFT balance of an address by calling the getNFTBalance method within the NFT submodule and passing the target address as an argument. This streamlined process efficiently retrieves the total number of NFTs owned by the specified address. To achieve this, use the following code:

import { TatumSDK, Network, Ethereum, NftAddressBalance } from '@tatumio/tatum'

const tatum = await TatumSDK.init<Ethereum>({ network: Network.ETHEREUM })

const balances: NftAddressBalance[] = await tatum.nft.getBalance({
  addresses: ['0x53e8577c4347c365e4e0da5b57a589cb6f2ab849'],
})

console.log(balances)

// Destroy Tatum SDK - needed for stopping background jobs
await tatum.destroy()

For more details, check out the NFTs documentation.

Connect to MetaMask and send transaction

Using TatumSDK, it's possible to connect your browser application to MetaMask and perform transactions using it. To achieve this, use the following code:

import { TatumSDK, Network, Ethereum, MetaMask } from '@tatumio/tatum'

const tatum = await TatumSDK.init<Ethereum>({ network: Network.ETHEREUM })

const account: string = await tatum.walletProvider.use(MetaMask).getWallet()
const txId: string = await tatum.walletProvider
  .use(MetaMask)
  .transferNative('0x53e8577C4347C365E4e0DA5B57A589cB6f2AB848', '1')

console.log(txId)

// Destroy Tatum SDK - needed for stopping background jobs
await tatum.destroy()

For more details, check out the Wallet Provider documentation.

Get exchange rates

Using TatumSDK, obtain current fiat/crypto exchange rates To achieve this, use the following code:

import { TatumSDK, Network, Ethereum } from '@tatumio/tatum'

const tatum = await TatumSDK.init<Ethereum>({ network: Network.ETHEREUM })

const res = await tatum.rates.getCurrentRate('BTC', 'EUR')

console.log(res.data)

// Destroy Tatum SDK - needed for stopping background jobs
await tatum.destroy()

For more details, check out the Exchange Rates documentation.

Get current fees

Using TatumSDK, you can obtain recommended fee/gas price for a blockchain.

import { TatumSDK, Network, Ethereum } from '@tatumio/tatum'

const tatum = await TatumSDK.init<Ethereum>({
  network: Network.ETHEREUM_SEPOLIA,
  verbose: true,
  retryDelay: 1000,
  retryCount: 2,
  version: ApiVersion.V3,
})

const result = await tatum.fee.getCurrentFee()

console.log(result.data)

// Destroy Tatum SDK - needed for stopping background jobs
await tatum.destroy()

For more details, check out the Fee Estimation documentation.

Get token balance

Using TatumSDK, obtain all fungible token balances of an address by calling the getBalance method within the token submodule and passing the target address as an argument. This streamlined process efficiently retrieves all balances for fungible tokens that specified address holds. To achieve this, use the following code:

import { TatumSDK, Network, Ethereum } from '@tatumio/tatum'

const tatum = await TatumSDK.init<Ethereum>({ network: Network.ETHEREUM_SEPOLIA })

const { data: balances } = await tatum.token.getBalance({
  addresses: ['0x2cbaf358c0af93096bd820ce57c26f0b7c6ec7ab'],
})

console.log(balances)

// Destroy Tatum SDK - needed for stopping background jobs
await tatum.destroy()

For more details, check out the Fungible Tokens documentation.

Get all transactions on the wallet

Using TatumSDK, you can obtain transaction history of the wallet.

import { TatumSDK, Network, Ethereum } from '@tatumio/tatum'

const tatum = await TatumSDK.init<Ethereum>({ network: Network.ETHEREUM_SEPOLIA })

const { data: txs } = await tatum.address.getTransactions({
  address: '0x514d547c8ac8ccbec29b5144810454bd7d3625ca',
})

console.log(txs)

// Destroy Tatum SDK - needed for stopping background jobs
await tatum.destroy()

For more details, check out the Wallet address operations documentation.

RPC calls

All RPC calls are implemented in the tatum.rpc.* submodule.

See the RPC API Reference for more about supported chains and methods.

Distinguishing Between Archive and Full Nodes

When interacting with the blockchain, it's essential to know whether a JSON RPC call requires an archive node or can be serviced by a full node. The distinction hinges on the type of data requested and the historical depth of that data. Here's a breakdown of the conditions under which a call is classified for an archive or a full node:

Archive Node Calls

Archive nodes store the entire history of the blockchain, including the state of all accounts at every block. Calls that require an archive node typically involve querying historical states. Conditions include:

  1. Calls to Methods getCode or call: Always require an archive node because they may query the state at any block height.

  2. Calls Including debug or trace Methods: These methods require historical data not available on full nodes.

  3. Parameters Indicating a Specific Block Number: For following methods, if the call specifies a block number, it requires an archive node. This includes:

  4. getStorageAt with a specific block number.

  5. getBalance with a specific block number.
  6. getBlockByNumber when a block number is specified.
  7. getLogs calls where fromBlock or toBlock specify a block number other than the latest.

Full Node Calls

Any other calls not meeting the conditions for archive node calls can be serviced by a full node. These calls typically involve querying the current state of the blockchain.

Status Pages

This section provides a list of various blockchain network status pages, powered by Tatum. These links direct you to real-time status updates for each network.

Status Pages
bitcoin-mainnet.status.tatum.io
bitcoin-testnet.status.tatum.io
bitcoin-testnet4.status.tatum.io
dogecoin-mainnet.status.tatum.io
dogecoin-testnet.status.tatum.io
eos-mainnet-archive.status.tatum.io
ethereum-mainnet-archive.status.tatum.io
ethereum-mainnet.status.tatum.io
ethereum-sepolia-archive.status.tatum.io
ethereum-holesky-archive.status.tatum.io
ethereum-hoodi-archive.status.tatum.io
ethereum-mainnet.status.tatum.io
flare-coston-archive.status.tatum.io
flare-coston2-archive.status.tatum.io
flare-songbird-archive.status.tatum.io
flare-mainnet-archive.status.tatum.io
haqq-mainnet-archive.status.tatum.io
haqq-mainnet.status.tatum.io
haqq-testnet.status.tatum.io
chiliz-mainnet.status.tatum.io
chiliz-mainnet-archive.status.tatum.io
litecoin-mainnet.status.tatum.io
litecoin-testnet.status.tatum.io
optimism-mainnet-archive.status.tatum.io
polygon-mainnet-archive.status.tatum.io
polygon-mainnet.status.tatum.io
horizen-eon-mainnet-archive.status.tatum.io
horizen-eon-gobi.status.tatum.io
bsc-mainnet-archive.status.tatum.io
polygon-amoy-archive.status.tatum.io
polygon-amoy.status.tatum.io
tron-mainnet-archive.status.tatum.io
arbitrum-one-mainnet-archive.status.tatum.io
ethereum-classic-mainnet-archive.status.tatum.io
zcash-mainnet.status.tatum.io
ripple-mainnet.status.tatum.io
ripple-testnet.status.tatum.io
bitcoin-cash-mainnet.status.tatum.io
klaytn-mainnet.status.tatum.io
klaytn-mainnet-archive.status.tatum.io
klaytn-baobab.status.tatum.io
klaytn-baobab-archive.status.tatum.io
avalanche-c-mainnet-archive.status.tatum.io
solana-mainnet.status.tatum.io
solana-devnet.status.tatum.io
celo-mainnet-archive.status.tatum.io
celo-testnet-archive.status.tatum.io
tezos-testnet.status.tatum.io
tezos-mainnet.status.tatum.io
algorand-mainnet-algod.status.tatum.io
algorand-testnet-algod.status.tatum.io
algorand-mainnet-indexer.status.tatum.io
algorand-testnet-indexer.status.tatum.io
cardano-mainnet.status.tatum.io
cardano-preprod.status.tatum.io
xinfin-mainnet-archive.status.tatum.io
stellar-mainnet-archive.status.tatum.io
base-mainnet-archive.status.tatum.io
kadena-mainnet.status.tatum.io
kadena-testnet.status.tatum.io
rostrum-mainnet.status.tatum.io
cronos-mainnet-archive.status.tatum.io
fantom-mainnet-archive.status.tatum.io
iota-mainnet.status.tatum.io

Load Balancer

Load balancer is used managing RPC calls to nodes in a blockchain network. It maintains a list of available nodes and their status, and it automatically selects the most responsive node for subsequent RPC calls.

For use of the Load Balancer, you don't need to know how it is working!. Load Balancer works automatically in the background and selects the most responsive node for subsequent RPC calls. You can use the SDK without any knowledge of the Load Balancer.

Load Balancer implementation is available in LoadBalancerRpc.ts

Using a load balancer to distribute traffic across multiple nodes, as opposed to routing all traffic to a single node, has several advantages:

  • Improved Performance and Responsiveness: Load balancers can distribute network or application traffic across several servers, which can help prevent any single server from becoming a bottleneck. As a result, users often experience faster response times.

  • Scalability: Load balancers enable you to handle larger amounts of traffic by simply adding more servers to the pool. This makes it easier to scale your infrastructure as your needs grow.

  • Redundancy and High Availability: If a server goes down, a load balancer can automatically reroute traffic to the remaining online servers. This ensures that your service remains available even in the face of hardware failures or other issues.

  • Prevents Overloading of Nodes: Load balancers can prevent any single server from being overloaded with too many requests, which can degrade the performance of the server and impact user experience.

  • Efficient Use of Resources: By distributing the load, you can make sure that all your servers are being used efficiently, rather than having some servers idle while others are overloaded.

  • Flexibility and Maintenance: With a load balancer, you can take servers offline for maintenance without disrupting service. The load balancer will simply stop sending traffic to the offline server.

  • Better User Experience: Ultimately, all of these benefits can lead to a better user experience, with faster response times and higher availability of services.

Initialization

At start the Load Balancer is initialized with a list of nodes. List of nodes are dynamically fetched from the remote server. There is also option to pass your custom list of nodes instead of the dynamic list. From the list of the nodes is randomly selected one node as a primary node, which is kept as a primary node until first load balancing is performed. The Load Balancer maintain lists of two types of nodes, normal and archive nodes.

Load Balancing

The load balancing process is running in the background and every minute it checks the status of all nodes in the list. The status of each node is determined by making a request to the node's URL and checking the response. The fastest responding node in each category is then selected as the active node for that normal and archive category. The selected nodes are then used for subsequent RPC calls.

Error Handling

If a RPC call fails, failure is logged, and the current active node is marked as failed, and load balancer selects a new active node.

Destroy

When you need to stop load balancer, you should can call destroy method. This method stops the load balancing process on the background.

List of nodes

The list of nodes is dynamically fetched from the remote server and it is defined for every blockchain.

Here are the list of nodes for each blockchain:

Nodes List
rpc.tatum.io/bitcoin-mainnet/list.json
rpc.tatum.io/bitcoin-testnet/list.json
rpc.tatum.io/dogecoin-mainnet/list.json
rpc.tatum.io/dogecoin-testnet/list.json
rpc.tatum.io/eos-mainnet-archive/list.json
rpc.tatum.io/ethereum-mainnet-archive/list.json
rpc.tatum.io/ethereum-mainnet/list.json
rpc.tatum.io/ethereum-hoodi-archive/list.json
rpc.tatum.io/ethereum-sepolia-archive/list.json
rpc.tatum.io/ethereum-holesky-archive/list.json
rpc.tatum.io/ethereum-sepolia/list.json
rpc.tatum.io/flare-coston-archive/list.json
rpc.tatum.io/flare-coston2-archive/list.json
rpc.tatum.io/flare-mainnet-archive/list.json
rpc.tatum.io/flare-songbird-archive/list.json
rpc.tatum.io/haqq-mainnet-archive/list.json
rpc.tatum.io/haqq-mainnet/list.json
rpc.tatum.io/haqq-testnet/list.json
rpc.tatum.io/chiliz-mainnet/list.json
rpc.tatum.io/chiliz-mainnet-archive/list.json
rpc.tatum.io/litecoin-mainnet/list.json
rpc.tatum.io/litecoin-testnet/list.json
rpc.tatum.io/optimism-mainnet-archive/list.json
rpc.tatum.io/polygon-mainnet-archive/list.json
rpc.tatum.io/polygon-mainnet/list.json
rpc.tatum.io/horizen-eon-mainnet-archive/list.json
rpc.tatum.io/horizen-eon-gobi/list.json
rpc.tatum.io/bsc-mainnet-archive/list.json
rpc.tatum.io/polygon-amoy-archive/list.json
rpc.tatum.io/polygon-amoy/list.json
rpc.tatum.io/tron-mainnet-archive/list.json
rpc.tatum.io/arbitrum-one-mainnet-archive/list.json
rpc.tatum.io/ethereum-classic-mainnet-archive/list.json
rpc.tatum.io/zcash-mainnet/list.json
rpc.tatum.io/ripple-mainnet/list.json
rpc.tatum.io/ripple-testnet/list.json
rpc.tatum.io/klaytn-mainnet/list.json
rpc.tatum.io/klaytn-mainnet-archive/list.json
rpc.tatum.io/klaytn-baobab/list.json
rpc.tatum.io/klaytn-baobab-archive/list.json
rpc.tatum.io/bitcoin-cash-mainnet/list.json
rpc.tatum.io/avalanche-c-mainnet-archive/list.json
rpc.tatum.io/solana-mainnet/list.json
rpc.tatum.io/solana-devnet/list.json
rpc.tatum.io/celo-mainnet-archive/list.json
rpc.tatum.io/celo-testnet-archive/list.json
rpc.tatum.io/tezos-testnet/list.json
rpc.tatum.io/tezos-mainnet/list.json
rpc.tatum.io/algorand-mainnet-algod/list.json
rpc.tatum.io/algorand-testnet-algod/list.json
rpc.tatum.io/algorand-mainnet-indexer/list.json
rpc.tatum.io/algorand-testnet-indexer/list.json
rpc.tatum.io/cardano-mainnet/list.json
rpc.tatum.io/cardano-preprod/list.json
rpc.tatum.io/xinfin-mainnet-archive/list.json
rpc.tatum.io/stellar-mainnet-archive/list.json
rpc.tatum.io/base-mainnet-archive/list.json
rpc.tatum.io/kadena-mainnet/list.json
rpc.tatum.io/kadena-testnet/list.json
rpc.tatum.io/rostrum-mainnet/list.json
rpc.tatum.io/cronos-mainnet-archive/list.json
rpc.tatum.io/fantom-mainnet-archive/list.json
rpc.tatum.io/iota-mainnet/list.json

Following pattern defines the URL for fetching the list of nodes:

https://rpc.tatum.io/${network}/list.json

Networks enum is available in the Network.ts

For instance if we will need Bitcoin mainnet nodes, we will use this URL:

curl https://rpc.tatum.io/bitcoin-mainnet/list.json

The response is a list of nodes with their url, type (0 - normal, 1 - archive) and location.

[
  {
    "location": "Sydney",
    "type": 0,
    "url": "https://02-sydney-007-01.rpc.tatum.io/"
  },
  {
    "location": "Tokyo",
    "type": 0,
    "url": "https://02-tokyo-007-02.rpc.tatum.io/"
  },
  {
    "location": "Dallas",
    "type": 0,
    "url": "https://02-dallas-007-03.rpc.tatum.io/"
  },
  {
    "location": "Sao Paulo",
    "type": 0,
    "url": "https://02-saopaulo-007-04.rpc.tatum.io/"
  },
  {
    "location": "Warsaw",
    "type": 0,
    "url": "https://01-warsaw-007-05.rpc.tatum.io/"
  }
]

Load Balancer selects from this list the most responsive node.

Usage

Default config

const tatum = await TatumSDK.init<Ethereum>({ network: Network.ETHEREUM })
const info = await tatum.rpc.chainId()
tatum.rpc.destroy()

Custom RPC node list

const tatum = await TatumSDK.init<Ethereum>({
  network: Network.ETHEREUM,
  rpc: {
    nodes: [
      {
        url: 'https://api.tatum.io/v3/blockchain/node/ethereum-mainnet',
        type: RpcNodeType.NORMAL,
      },
    ],
    allowedBlocksBehind: 20,
    oneTimeLoadBalancing: false,
  },
})
const info = await tatum.rpc.chainId()
tatum.rpc.destroy()

Documentation

Examples

Explore various applications that utilize the Tatum SDK. These examples help illustrate the SDK's functionality and offer a starting point for developers looking to integrate similar features into their applications.

Metamask notifications

🌐 Extension Ecosystem

Quickstart

Import any Tatum SDK extension to your project and start using it right away.

import { TatumSDK, Ethereum, Network, ApiVersion } from '@tatumio/tatum'
import { HelloWorldExtension } from '@tatumio/hello-world'

const tatumSdk = await TatumSDK.init<Ethereum>({
  network: Network.ETHEREUM_SEPOLIA,
  configureExtensions: [HelloWorldExtension],
})

After that you can use the extension in your code with full intellisense.

await tatumSdk.extension(HelloWorldExtension).sayHello()

Wallet Providers

Tatum SDK supports wallet provider extensions for various wallets. You can use them to integrate your application with the wallet of your choice.

import { TatumSDK, Ethereum, Network, ApiVersion } from '@tatumio/tatum'
import { EvmWalletProvider } from '@tatumio/evm-wallet-provider'

const tatumSdk = await TatumSDK.init<Ethereum>({
  network: Network.ETHEREUM_SEPOLIA,
  configureWalletProviders: [EvmWalletProvider],
})

Usage for wallet providers is similar to the extensions.

await tatumSdk.walletProvider.use(EvmWalletProvider).getWallet()

🔍 Check out our built-in MetaMask wallet provider

📚 Learn more about Tatum SDK Extension ecosystem here - Tatum SDK Extensions

Legacy versions

Older versions of the Tatum SDK has been moved to long living branches Tatum SDK V1 and Tatum SDK V2.

🤝 Contributing

We appreciate your interest in contributing to the Tatum SDK. Here's a guide to help you make meaningful contributions:

Local Testing

Before making a pull request, ensure you've thoroughly tested your changes with a local client.

Unit Tests

Include unit test coverage for any new code you're adding. This helps in maintaining the quality and reliability of our SDK.

Update the Changelog

For every contribution, it's essential to document your changes in the changelog. The changelog keeps track of all the changes, updates, and fixes we make to our SDK. Use the provided format:

## [Version Number] - YYYY.MM.DD

### Added/Updated/Fixed/Changed

- Description of the change

For instance:

## [3.0.10] - 2023.08.11

### Added

- New feature XYZ

Update package.json

Before creating a pull request or releasing a new version, ensure the version in package.json is updated to reflect the new release number.

Release Consideration

Your changes will be released after merging the pull request.

How to add support for new RPC chain

  • Add new chain to the Network.ts enum (Check also LOAD_BALANCER_NETWORKS constants)
  • Add new class to the tatum.ts file
  • Add new chain getClient method in the Utils.ts file
  • Add new chain CURRENCY_NAMES and DECIMALS constants in the constants.ts file
  • Update README.md with new chain for status page and list.json
  • Add E2E test

🙌 Thank you for helping make Tatum SDK better! Your contributions play a crucial role in its continuous improvement and growth.

Bugs and feature requests

Have a bug or a feature request? Please first read the issue guidelines and search for existing and closed issues. If your problem or idea is not addressed yet, please open a new issue.

changelog

[4.2.53] - 2025.6.27

Updated

  • Updated SDK to call new version of data-api endpoints

[4.2.52] - 2025.5.20

Added

  • Added support for Ethereum Hoodi

[4.2.51] - 2025.3.17

Added

  • Added support for berachain mainnet subscriptions

[4.2.50] - 2025.2.27

Added

  • Added berachain

[4.2.49] - 2025.2.20

Fix

  • Update version to release

[4.2.48] - 2025.2.20

Fix

  • Fixed tests failing

[4.2.47] - 2025.2.19

Added

  • Added sonic & kaia

[4.2.46] - 2025.2.5

Removed

  • Removed BNB support

[4.2.45] - 2024.12.20

Fixed

  • Fixed Tatum Connector retry logic causing generic error

[4.2.44] - 2024.12.5

Added

  • Support for Bitcoin Testnet 4

[4.2.43] - 2024.10.11

Fixed

  • Fixed Tatum Connector issue with process is undefined on the pure browser
  • Fixed and refactored some tests

[4.2.42] - 2024.9.4

Fixed

  • Replaced Ton method getTokenMetadata with working getTokenData

[4.2.41] - 2024.8.30

Fixed

  • EOS prefix slash missing

[4.2.40] - 2024.8.25

Fixed

  • Relax SSRF checks and allow tatum gateway nodes

[4.2.39] - 2024.8.14

Updated

  • Rename delegation methods

[4.2.38] - 2024.7.23

Added

  • Support for Ton basic api

[4.2.37] - 2024.7.23

Added

  • Support for zkSync mainnet & testnet

[4.2.36] - 2024.7.18

Added

  • Support for Ton mainnet & testnet

[4.2.35] - 2024.6.18

Updated

  • Disable auto-discovery of RPC nodes when there is only one node.
  • Disable Cardano Rosetta testnet tests

[4.2.34] - 2024.6.18

Added

  • Support for Casper mainnet

[4.2.33] - 2024.6.17

Added

  • Support for Electrs & Rostrum testnet

[4.2.32] - 2024.6.5

Added

  • Support for cosmos additional api

[4.2.31] - 2024.6.3

Fixed

  • Fix Kadena rpc double slash

[4.2.30] - 2024.5.31

Added

  • Support for Electrs calls and Iota testnet, renamed bch rostrum

[4.2.29] - 2024.5.27

Added

  • Support for Data API on Polygon Amoy

[4.2.28] - 2024.5.20

Added

  • Support for Avalanche Notifications

[4.2.27] - 2024.5.6

Added

  • Support for Polygon Amoy

Removed

  • Polygon Mumbai

[4.2.26] - 2024.5.6

Added

  • Rostrum server.banner method

[4.2.24] - 2024.4.11

Added

  • Added support for Iota API calls

[4.2.23] - 2024.4.10

Updated

  • Improved getBalance method in address module by introducing tokenTypes filter along with native option.

[4.2.22] - 2024.4.10

Fixed

  • Fixed types for getTransactions method in address module.
  • Updated undici dependency.

[4.2.21] - 2024.4.4

Added

  • Added support for Cosmos API calls

[4.2.20] - 2024.2.4

Added

  • Added support for Rostrum RPC calls

[4.2.19] - 2024.3.27

Added

  • Added support for Kadena RPC calls

[4.2.18] - 2024.3.22

Added

  • Added support for Base and Base Sepolia testnet subscriptions.

[4.2.17] - 2024.3.19

Fixed

  • Fixed Solana RPC call for getFeeForMessage method. The result is now properly parsed and returns context information with value.

[4.2.16] - 2024.2.15

Added

  • Added support for Cronos and Cronos testnet subscriptions.

[4.2.15] - 2024.3.11

Added

  • Added RPC support for the BASE network. Users can now make Base RPC calls using the Network.BASE network.

[4.2.14] - 2024.3.11

Changed

  • Added support for simplified way of configuring api key without specifying version.
  • Marked old way of configuring api key through object specifying version as deprecated.
  • Fixed some tests, namely those related to arb-testnet eth_chainId RPC EVM method.

[4.2.13] - 2024.2.29

Removed

  • Removed support for the Goerli network.

[4.2.12] - 2024.2.28

Added

  • Added support for Cronos and Fantom rpc loadbalancer.

[4.2.11] - 2024.2.22

Fixed

  • Fixed the getBlock method for Doge, addressing an issue with the second boolean parameter.

[4.2.10] - 2024.2.22

Fixed

  • Fixed tests. Temporarily disabled data-api related tests and eos tests.

[4.2.9] - 2024.2.15

Added

  • Added support for Flare, Flare Coston, Flare Coston 2 and Flare Songbird subscriptions.

[4.2.8] - 2024.2.15

Updated

  • Updated address module for EVM chains. Users can add parameter tokenAddress to getTransactions method to filter transactions by token address.

[4.2.7] - 2024.2.12

Updated

  • Updated archive condition for evm rpc calls

[4.2.6] - 2024.2.12

Added

  • Added support for Solana load balancer based on the method name.

[4.2.5] - 2024.1.31

Added

  • Added support for Holesky Ethereum testnet for subscriptions.

[4.2.4] - 2024.1.25

Fixed

  • Fix import of LoadBalancer to keep it working in browser

[4.2.3] - 2024.1.23

Updated

  • Drop support for faucet claims via SDK

[4.2.2] - 2024.1.12

Added

  • Added RPC support for the STELLAR_TESTNET network. Users can now make Stellar RPC calls using the Network.STELLAR_TESTNET network.

[4.2.1] - 2024.1.9

Updated

  • Assert development environment if NODE_ENV is not set

Fixed

  • Use globalThis instead of process.env for setting TatumDevelopmentLogger's isWelcomeDisabled flag

[4.2.0] - 2024.1.8

Added

  • Added logging support

Updated

  • Updated dependencies

[4.1.37] - 2024.1.5

Fixed

  • Fix get strict methods params for STELLAR network.

[4.1.36] - 2024.1.3

Fixed

  • Fix optional params for STELLAR network.

[4.1.35] - 2024.1.3

Added

  • Added RPC support for the STELLAR network. Users can now make Stellar RPC calls using the Network.STELLAR network.

[4.1.34] - 2023.12.14

Fixed

  • Fix potential memory issues with LoadBalancer.

[4.1.33] - 2023.12.1

Added

  • Added RPC support for the XINFIN network. Users can now make RPC calls to these network using the Network.XINFIN network.

[4.1.32] - 2023.11.29

Fixed

  • Fixed logic of IPFS upload, now upload passes request using client's version

[4.1.31] - 2023.11.22

Changed

  • Adjust logic redirecting for getBlockByNumber to call normal nodes for latest block

[4.1.30] - 2023.11.17

Changed

  • Improved LoadBalancer stability

[4.1.29] - 2023.11.15

Added

  • Added RPC support for the CARDANO_ROSETTA network. Users can now make RPC calls to these network using the Network.CARDANO_ROSETTA network.

[4.1.28] - 2023.11.13

Fixed

  • Fixed lb archive fallback

[4.1.27] - 2023.11.13

Fixed

  • Fixed Algorand ApplicationSearchParams to camelCase.

[4.1.26] - 2023.11.12

Fixed

  • Fixed LoadBalancer throwing from setTimeout, it should now throw from actual method calls.

[4.1.25] - 2023.11.10

Added

  • Added RPC support for the ALGORAND network. Users can now make RPC calls to these network using the Network.ALGORAND_ALGOD, Network.ALGORAND_ALGOD_TESTNET, Network.ALGORAND_INDEXER, Network.ALGORAND_INDEXER_TESTNET network.

[4.1.24] - 2023.11.9

Added

  • Tezos methods to support local signing and injection of operations.

[4.1.23] - 2023.11.6

Changed

  • Tezos address balances fixes. Call to address.getBalance returns balances of all tokens for a given address. This call accepts only one address as a parameter, not an array of addresses.

[4.1.22] - 2023.11.2

Updated

  • Naming of the Tezos RPC methods

[4.1.21] - 2023.11.2

Added

  • Added RPC support for the TEZOS network. Users can now make RPC calls to these network using the Network.TEZOS network.

[4.1.20] - 2023.10.31

Fixed

  • Fixed usage of fromBlock and toBlock params for UTXO-based blockchains in Address.getTransactions

[4.1.19] - 2023.10.31

Fixed

  • Configurable extension usage typing

[4.1.18] - 2023.10.30

Fixed

  • Fixed LoadBalancer class import which cause to fail import in the browser/codepen

[4.1.17] - 2023.10.26

Added

  • Added RPC support for the BNB network. Users can now make RPC calls to these network using the Network.BNB network.

[4.1.16] - 2023.10.24

Added

  • Added Beacon chain v1 support for the Ethereum

[4.1.15] - 2023.10.24

Added

  • Added estimatefee rpc method to the Bitcoin Cash network

[4.1.14] - 2023.10.23

Added

  • Added IPFS get file data method

[4.1.13] - 2023.10.20

Changed

  • Fixed CONTRACT_ADDRESS_LOG_EVENT data in getAll() Notification method

[4.1.12] - 2023.10.19

Added

  • Fixed response parsing for calls where the body is not defined e.g. DELETE endpoints

[4.1.11] - 2023.10.19

Added

  • Added RPC support for the CELO network. Users can now make RPC calls to these network using the Network.CELO network.

[4.1.10] - 2023.10.18

Changed

  • Chiliz notification access

[4.1.9] - 2023.10.18

Added

  • Chiliz notification support

[4.1.8] - 2023.10.18

Changed

  • Make Blockchain Classes type safe

[4.1.7] - 2023.10.15

Changed

  • TatumUtils chainId <-> Network mappings always return usable value or throw error for ease of use.

[4.1.6] - 2023.10.15

Added

  • TatumUtils added with access to chainId <-> Network mapping

[4.1.5] - 2023.10.13

Changed

  • Loosen types for extension usage to better support optional configs.

[4.1.4] - 2023.10.13

Added

  • Addition of getRpc<T>(): T to ITatumSdkContainer for best RPC support in extensions.

[4.1.3] - 2023.10.12

Added

  • Added IPFS upload and NFT mint in one action. Metadata will be prepared and uploaded automatically

[4.1.2] - 2023.10.12

Added

  • Added walletProvider to TatumSdkChain class so any chain can support wallet extensions.

[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.

[4.0.19] - 2023.10.11

Added

  • Updated loadbalancer logging with detailed logs

[4.0.18] - 2023.10.11

Fixed

  • Update debug storage range parameters. The debugStorageRangeAt function in the EvmRpc now takes a number instead of a string for the maxResults parameter.

[4.0.17] - 2023.10.11

Added

  • Added RPC support for the AVALANCHE_C network. Users can now make RPC calls to these network using the Network.AVALANCHE_C network.

[4.0.16] - 2023.10.10

Changed

  • Fixed tatumSdk.walletProvider.use() method to return properly typed extension instance is case of custom typed configurations.

[4.0.15] - 2023.10.10

Changed

  • Loosen types for extension registration purposes to better support optional config.

[4.0.14] - 2023.10.10

Added

  • Nft express minting over created collection for EVM chains.

[4.0.13] - 2023.10.09

Added

  • Added RPC support for the BITCOIN_CASH network. Users can now make RPC calls to these network using the Network.BITCOIN_CASH network.

[4.0.12] - 2023.10.09

Added

  • Added RPC support for the KLAYTN network. Users can now make RPC calls to these network using the Network.KLAYTN network.

[4.0.11] - 2023.10.07

Added

  • Added RPC support for the Holesky network. Users can now make RPC calls to these network using the Network.ETHEREUM_HOLESKY network.

[4.0.10] - 2023.10.06

Added

  • Added RPC support for the XRP network. Users can now make RPC calls to these network using the Network.XRP network.

[4.0.9] - 2023.10.05

Added

  • Added RPC support for the ZCash network. Users can now make RPC calls to these network using the Network.ZCASH network.

[4.0.8] - 2023.10.05

Added

  • Added RPC support for the Ethereum Classic network. Users can now make RPC calls to these network using the Network.ETHEREUM_CLASSIC network.

[4.0.7] - 2023.10.04

Changed

  • Fixed signed raw transaction body conversion for Tron.

[4.0.6] - 2023.10.04

Changed

  • Exposed tatum connector types from the root of the package.

[4.0.5] - 2023.10.04

Changed

  • Wallet provider use() method now returns properly typed extension instance.
  • Exposed wallet provider types from the root of the package.

[4.0.4] - 2023.09.28

Added

  • Extension now has to implement list of supported Network.

Changed

  • [BREAKING CHANGE] TatumSdkExtension now contains abstract supportedNetworks: Network[].

[4.0.3] - 2023.09.27

Added

  • Added RPC support for the Eos network. Users can now make RPC calls to these network using the Network.EOS network.

[4.0.2] - 2023.09.26

Added

  • Added RPC support for the Horizen Eon Gobi and Chiliz networks. Users can now make RPC calls to these networks using the Network.HORIZEN_EON_GOBI and Network.CHILIZ network.

[4.0.1] - 2023.09.27

Added

  • Extension lifetime management methods made optional to implement.
  • Extension lifetime management method destroy() made async and awaited.

Changed

  • [BREAKING CHANGE] tatumSdk.destroy(): void was replaced with tatumSdk.destroy(): Promise<void>.

[4.0.0] - 2023.09.25

Added

  • Leveraging Extension Ecosystem a specialised Wallet Provider type of extensions was added.
  • tatumSdk.walletProvider.use(type: TatumSdkWalletProvider) method was added.

Changed

  • [BREAKING CHANGE] tatumSdk.walletProvider.metaMask was replaced with tatumSdk.walletProvider.use(MetaMask).
  • [BREAKING CHANGE] tatumSdk.walletProvider.metaMask.connect() was replaced with tatumSdk.walletProvider.use(MetaMask).getWallet().
  • [BREAKING CHANGE] tatumSdk.walletProvider.metaMask.customPayload() was replaced with tatumSdk.walletProvider.use(MetaMask).signAndBroadcast().

[3.1.8] - 2023.09.22

Added

  • Capability to initialize TatumSDK with various extensions from Extension Ecosystem using the init() method and TatumConfig.configureExtensions.
  • Encapsulation of typedi functionalities within TatumSdkContainer, ensuring that there are no enforced dependencies on the extensions.
  • TatumSdkExtension abstract class that allows extension creators to utilize services or other extensions from withing the TatumSdkContainer.
  • async init() method call for each registered extension
  • destroy() method call for each registered extension

[3.1.7] - 2023.09.22

Fixed

  • Fixed 'tokenType' field to 'type' in Non-Fungible Token (NFT) Data Transfer Object (DTO) to match the API response.

[3.1.6] - 2023.09.22

Fixed

  • Fix eth_getLogs method when no fromBlock or toBlock was provided

[3.1.5] - 2023.09.21

Added

[3.1.4] - 2023.09.20

Added

  • Expose active RPC node url in the Rpc module

[3.1.3] - 2023.09.18

Fixed

  • Update horizen class

[3.1.2] - 2023.09.15

Fixed

  • Horizen EON notifications
  • Typos

[3.1.1] - 2023.09.15

Updated

  • Updated links to the status and list.json pages for new and changed chains

[3.1.0] - 2023.09.14

Updated

  • Updated correctly V1 -> V3 and V2 -> V4 config options
  • Integrated Tron, BSC Arbitrum One to new infra

[3.0.23] - 2023.09.14

Update

  • Minor version update to fix npm package issue

[3.0.22] - 2023.09.13

Fixed

  • Fix loadbalancer logic to work without api key

[3.0.21] - 2023.09.11

Fixed

  • The 'estimateSmartFee' method in AbstractUtxoRpc.ts has been updated to include the 'estimateMode' parameter as optional. Previously, if estimate mode was not provided, it would default to 'CONSERVATIVE'.

[3.0.20] - 2023.09.08

Fixed

  • fix batched raw RPC call return type to also include method level error

[3.0.19] - 2023.09.07

Added

  • Users can access data from the Horizen EON chain by using the address submodule. - address.getTransactions({...}), address.getBalance({...})

[3.0.18] - 2023.09.06

Fixed

  • improve URL parsing for SSRF check

[3.0.17] - 2023.09.06

Added

  • Add functions to EVM rpc interface: getTokenTotalSupply, getTokenCap, supportsInterfaceERC1155

[3.0.16] - 2023.09.05

Updated

  • Extend allowed list of urls for SSRF check

[3.0.15] - 2023.08.30

Updated

  • This commit introduces a Server Side Request Forgery (SSRF) check to the initRemoteHosts method within LoadBalancerRpc.ts. This check ensures that URLs end with 'rpc.tatum.io' before loading them to avoid potential SSRF attacks. To accommodate this change, initRemoteHosts has also been refactored to accept an InitRemoteHostsParams object. In addition, an optional parameter noSSRFCheck has been added to bypass the SSRF check when necessary.

[3.0.14] - 2023.08.24

Updated

  • Update Tatum API URL to v4 from v1

[3.0.12] - 2023.08.22

Fixed

  • Fixed Load Balancer issue with process is undefined on the pure browser

[3.0.12] - 2023.08.21

Fixed

  • Removed undici dependency as it was causing issues

[3.0.11] - 2023.08.18

Added

  • Added support for Eon - RPC calls

[3.0.10] - 2023.08.16

Added

  • Add support for Tezos - Address and Notification modules

Changed

  • Refactored Tron Address module. getBalance now accepts only one string parameter address as it wasn't working with multiple addresses

[3.0.9] - 2023.08.10

Updated

  • Add better logging message
  • Updated contributing guide
  • Removed old example folder

[3.0.7] - 2023.08.10

Fixed

  • Fix retry requests
  • Do not pass retry number in header

[3.0.6] - 2023.08.08

Changed

  • Forced EVM debug_traceBlock and eth_getBlockReceipts methods to work with archive nodes
  • Updated readme.md to look better

[3.0.5] - 2023.08.07

Changed

  • In all error responses expects for RPC, error object returns also dashboardLog which points to the dashboard error log

[3.0.4] - 2023.08.07

Changed

  • Added EVM debug_traceBlock and eth_getBlockReceipts methods
  • Pass Api key to the archive load balancer liveness check
  • Fix createrawtransaction method

[3.0.3] - 2023.08.02

Changed

  • Changed error message for RPC calls from 'No active server found for ${nodeType} node.' to 'No active server found for node type ${NODE_TYPE_LABEL[nodeType]}.'

[3.0.2] - 2023.08.01

Changed

  • Added destroy method to the global Tatum SDK instance

[3.0.1] - 2023.08.01

Changed

  • Renamed RPC list domain from com to io
  • Added Optimism and Polygon RPC calls archice -

[3.0.0] - 2023.07.19

Changed

  • Updated npm package name from @tatumcom/js to @tatumio/tatum.
  • Updated npm token to ensure correct package retrieval.
  • Made changes to the readme page for improved documentation.

[1.5.11] - 2023.07.13

Changed

  • Fix rpc calls without api key & Added haqq archive/non-archive calls

[1.5.10] - 2023.07.10

Changed

  • Selected Archive/Non-Archive node for Ethereum RPC calls based on method

[1.5.9] - 2023.07.12

Changed

  • Several Tron RPC calls fixed

[1.5.8] - 2023.07.10

Changed

  • Update all RPC calls to return unmodified data

[1.5.7] - 2023.07.10

Changed

  • Extended JSON stringify to see error message in case of error to Loadbalancer

[1.5.6] - 2023.07.10

Changed

  • Added JSON stringify to see error message in case of error to Loadbalancer

[1.5.5] - 2023.07.05

Changed

  • Fixed not working Solana RPC calls

[1.5.4] - 2023.07.05

Changed

  • Change Tron RPC calls error handling (to accommodate Tron RPC returning 200 status code even on error)

[1.5.3] - 2023.07.05

Changed

  • Fixed not working Tron RPC calls

[1.5.2] - 2023.07.04

Changed

  • All RPC methods are returning ResponseDto object with fields: data, error, status.

[1.5.1] - 2023.06.28

Updated

  • Fixed custom nodes configuration
  • renamed index.md to readme.md

[1.5.0] - 2023.06.19

Added

  • Load balancer feature for Btc, Ltc, Doge, Eth, Flare, Haqq.
  • Load balancer is used managing RPC calls to nodes in a blockchain network. It maintains a list of available nodes and their status, and it automatically selects the most responsive node for subsequent RPC calls.

[1.4.25] - 2023.06.19

Added

  • Added new module for getting current fee for Evm and Utxo chains.

Changed

  • Refactoring TatumSdk class to return specific blockchain class on init instead of one generic class.

[1.4.24] - 2023.06.12

Added

  • Added new module for fungible tokens with methods getBalance, createNewFungibleToken, getTokenMetadata and getAllFungibleTransactions.

[1.4.23] - 2023.06.01

Added

  • Added rates submodule including getCurrentRate and getCurrentRateBatch methods for obtaining current fiat/crypto exchange rates.

[1.4.22] - 2023.05.25

Added

  • Changed internal api calls for creation of NFT (nft.createNftCollection) / MultiToken (nft.createMultiTokenNftCollection) collections inside nft submodule and MetaMask integration in walletProvider submodule.

[1.4.21] - 2023.05.23

Changed

  • Fixed TRON RPC params
  • Added docs to TRON RPC

[1.4.20] - 2023.05.22

Changed

  • getAllNftTransactionsByAddress required params number reduced

[1.4.19] - 2023.05.22

Added

  • Added support for creation of NFT (nft.createNftCollection) / MultiToken (nft.createMultiTokenNftCollection) collections on EVM chains like Ethereum, Polygon, Celo and Binance Smart Chain inside nft submodule.

[1.4.18] - 2023.05.22

Added

  • Added docs for Solana and XRP RPC

[1.4.17] - 2023.05.22

Changed

  • Changed the underlying REST API call for metaMask deploy* contracts function

[1.4.16] - 2023.05.18

Changed

  • XRP naming convention on the SDK side

[1.4.15] - 2023.05.17

Changed

  • Expanded type exports

[1.4.14] - 2023.05.15

Changed

  • Added support for native public RPC calls to TRON blockchain

[1.4.13] - 2023.05.15

Changed

  • Change params of createFungibleToken, createErc1155NftCollection and createNftCollection methods

[1.4.12] - 2023.05.13

Fixed

  • Fixed createFungibleToken method - wrong initial supply calculation

[1.4.11] - 2023.05.12

Fixed

  • Fixed createErc1155NftCollection and createFungibleToken methods - wrong API endpoint was used

[1.4.10] - 2023.05.12

Added

  • Added support for reading deployed smart contract address via EVM-based helper function getContractAddress(txHash: string): Promise<string | null>

Added

  • Added support for Deploying contracts using MetaMask. It's possible to deploy NFT Collections (ERC-721/1155) or Fungible Tokens (ERC-20) directly from the browser.

[1.4.8] - 2023.05.11

Added

  • Add comments to input parameters for Solana RPC

[1.4.7] - 2023.05.11

Added

  • Added support for native public RPC calls to Solana blockchain

[1.4.6] - 2023.05.10

Added

  • Added support for native public RPC calls to XRP blockchain

[1.4.5] - 2023.05.10

Added

  • Support for Contract Address Log Event notification type
  • TRON chain notifications
  • SOLANA chain notifications

[1.4.4] - 2023.04.28

Fixed

  • Fixed wrong decimals in WalletProvider MetaMask signing

[1.4.3] - 2023.04.27

Fixed

  • Fixed wrong BigNumber import

[1.4.2] - 2023.04.26

Added

  • Added missing getchainstats method to UTXO RPC calls

[1.4.1] - 2023.04.26

Fixed

  • Fixed optional to parameter in custom transaction payload for MetaMask signing

[1.4.0] - 2023.04.26

Added

  • Added support for transferNft using MetaMask WalletProvider.
  • Added support for multiple API Keys in the configuration (V1 and V2).

[1.3.4] - 2023.04.25

Added

  • Added support for WalletProvider submodule. This submodule enables seamless interaction with external wallets like Metamask or Phantom within the browser. The Wallet Provider submodule allows the SDK to communicate with various wallet providers, streamlining the process of signing transactions, querying account balances, and interacting with smart contracts directly through popular browser wallets.

[1.3.3] - 2023.04.24

Added

  • Added possibility to use custom RPC provider for any of the blockchain. Configuration parameter for this option is rpcUrl. If this parameter is set, then the SDK will use this URL for all RPC calls. If this parameter is not set, then the SDK will RPC provisioned by Tatum. List of supported blockchains is available here.

[1.3.2] - 2023.04.21

Changed

  • Fixed parameter names of nft.getNFTsInCollection

[1.3.1] - 2023.04.21

Added

  • Added parameter address to address.getBalance response to precisely identify the address for which the balance is returned.

[1.3.0] - 2023.04.21

Added

  • Added support for Address submodule. This submodule simplifies wallet management across multiple blockchains by allowing you to fetch wallet balances and retrieve transactions for a given address. With the Address submodule, you can easily manage your wallets and monitor transactions, making your blockchain application development more efficient and user-friendly.

[1.2.6] - 2023.04.19

Changed

  • Minor changes in the code - documentation, types moving between files etc.

[1.2.5] - 2023.04.18

Added

  • Added missing ETH RPC calls eth_getProof

Fixed

  • Fixed RPC call trace_callMany - wrong order of arguments were passed
  • Fixed all RPC calls trace_* - wrong naming of the method was used

[1.2.4] - 2023.04.17

Added

  • Added missing ETH RPC calls maxPriorityFeePerGas and add txPoolStatus include parameter

[1.2.3] - 2023.04.17

Added

  • Added support for NFT submodule. This submodule offers a comprehensive suite of tools for working with Non-Fungible Tokens (NFTs). With the NFT submodule, you can query the balance of NFTs on an address, retrieve NFT transactions associated with a specific address, explore NFTs within a collection or identify the owners of a particular NFT.

[1.2.2] - 2023.04.16

Changed

  • Fixed exports

[1.2.1] - 2023.04.16

Changed

  • Fixed exports

[1.2.0] - 2023.04.16

Added

  • Added support for native RPC calls to UTXO and EVM based blockchains

Changed

  • Changed the way how the SDK is initialized. Now it is required to choose the blockchain and then initialize the SDK with the blockchain specific configuration.

Removed

  • Removed support for Open Network

[1.1.3] - 2023.04.06

Added

  • Added get fastest URL method for a specific blockchain from Open Network

[1.1.2] - 2023.04.05

Added

  • Added graceful shutdown of the SDK

[1.1.1] - 2023.04.04

Added

  • Added support for block difference to Open Network
  • Added support for multiple static URLs with load balancing to Open Network

[1.1.0] - 2023.04.03

Added

Removed

  • Removed dependency on Axios - replaced with Fetch API
  • Due to above, minimum Node version is now >= 18

Changed

  • debug config field was renamed to verbose
  • renamed TatumSdk to TatumSDK as a main entry point

[1.0.1] - 2023.03.16

Added

  • 13 new notification types to subscribe to

[1.0.0] - 2023.03.06

Added

  • Added basic notification functionality like subscribe to address event, subscribe and unsubscribe to address event, list all subscriptions and webhooks.