The JavaScript
SDK
for Web3

Build Web3 applications faster than ever.

npm i @tatumio/tatum

Why Developers Build With Tatum

binance.us
"Tatum helps us build robust product solutions in a fraction of the time."
zac barron

Zac Barron
Product Lead at Binance

"Building a product in the crypto space is hard. Making it work reliably across chains - even harder. Tatum helped us meet our deadline."
david spiltzer

David Spitzer-Dulagan
CTO at Limewire

"Tatum accelerates our web3 development."
hitoshi harada

Hitoshi Harada
Co-founder & CPO at Alpaca

Code Once,
Deploy Anywhere

Tatum SDK is a unified developer tooling for building applications using 90+ blockchains. It's the go-to open source SDK for Web3.

npm i @tatumio/tatum

Deliver Faster With Lean Code

With the Tatum SDK you'll reduce the length of your code by at least 90% helping you launch your dApp faster.

Without Tatum

// Fetch NFT balance.

const Web3 = require('web3');
const web3 = new Web3('https://rpc.provider/Your_Access_key'); 

const walletAddress = 'YOUR_WALLET_ADDRESS';
const abiDecoder = require('abi-decoder');

async function getNFTsForWallet() {
  try {
    const latestBlockNumber = await web3.eth.getBlockNumber();

    for (let i = 0; i <= latestBlockNumber; i++) {
      const block = await web3.eth.getBlock(i, true);

      if (block && block.transactions) {
        for (const tx of block.transactions) {
          const receipt = await web3.eth.getTransactionReceipt(tx.hash);

          if (receipt && receipt.logs) {
            abiDecoder.addABI(yourNFTContractABI); // Replace with the ABI of the NFT contract

            for (const log of receipt.logs) {
              const decodedLogs = abiDecoder.decodeLogs([log]);

              for (const decodedLog of decodedLogs) {
                if (decodedLog && decodedLog.name === 'Transfer') {
                  const from = decodedLog.events[1].value;
                  const to = decodedLog.events[2].value;

                  if (to.toLowerCase() === walletAddress.toLowerCase()) {
                    console.log('Received NFT:', decodedLog);
                  }
                }
              }
            }
          }
        }
      }
    }
  } catch (error) {
    console.error('Error:', error);
  }
}

getNFTsForWallet();

Using Tatum

// Fetch NFT balance using Tatum SDK.

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

const tatum = await TatumSDK.init({ network: Network.ETHEREUM });

const balance = await tatum.nft.getBalance({addresses: [‘your address’]});

100+ Supported Blockchains

Building Something Big? Let's Talk.
Not into forms? Let's talk on Telegram