Token Transfers
Last updated
Was this helpful?
Last updated
Was this helpful?
crosschain.assets.transfers
contains fungible token transfer data for chains indexed by Allium.
This includes
native tokens and erc20 equivalent tokens (bep20, trc20) transfers across EVM chains
SOL & SPL token transfers on Solana
coin and fungible_asset transfers on Aptos
fungible asset transfers on Sui
A short primer on understanding Allium's transfer schema.
Blockchain transactions are the fundamental building blocks of blockchain networks.
They involve the transfer of digital assets or information from one party to another.
When a transaction is performed and confirmed, the details of the transactions are appended to the blockchain, with a unique transaction hash accompanying the transaction.
By indexing the blockchain, we can identify all transactions and asset transfers.
This guide aims to help users map Allium's transfer schema to the transaction data that they typically observe on blockchain explorers, such as Etherscan.
chain
Blockchain where the token transfer event occurred. Currently includes: arbitrum, avalanche, base, blast, bsc, celo, ethereum, imx_zkevm, oasys, optimism, polygon, polygon_zkevm, ronin, scroll, solana, tron, zksync, zora
token_type
Type of token transferred. Includes erc20 (for all evm), tr20 (tron). Native tokens include eth, matic, avax & bnb.
For solana, spl and system (sol) tokens.
from_address
Address where the token is being transferred from.
to_address
Address where the token is being transferred to.
token_acc_from
(Solana-only) The token account that the asset is being transferred from.
token_acc_to
(Solana-only) The token account that the asset is being transferred to.
token_address
Address (or Token Mint on Solana) of the token that is being transferred.
token_name
Name of the asset transferred.
token_symbol
Token symbol of the asset transferred.
raw_amount
Amount of tokens moved (unnormalized).
amount
Amount of token moved, normalized.
usd_amount
The value of tokens moved, in USD. Not all tokens will have accompanying USD value attached.
transaction_from_address
The address of the sending party of this transaction.
(For Solana, this maps to the transaction signer)
transaction_to_address
The address of the receiving party of this transaction (could be a contract address).
This field is null for Solana.
transaction_hash
Transaction hash of the transfers.
block_timestamp
Block timestamp of the transfers.
block_number
Block number of the transfers.
block_hash
Block hash of the transfers.
unique_id
Unique id generated to each transfer.
For (BEP-20, TRC-20) compatible tokens, transfers will emit a corresponding Transfer
event log in their receipts.
Allium's coverage status: These transfers can be found with the filter transfer_type = 'token_account_transfer'
Alium's coverage status: when a token account is closed, both the rent return + remaining WSOL balance is summed and indicated in the amount
transferred. Such records can be found with transfer_type='account_closure_sol_balance_transfer'
.
It is possible for an account to send SOL (i.e. is the from
party of a SOL transfer) without actually holding any balance. In this , the account B51Nfh3X6Dqu4BzsafwzeknU7n2CraNneLsdAfs3zaSU
shows total outgoing transfers of 0.115 SOL, but based on the SOL Balance Change tab, the account starts with 0 SOL balance. In addition, the account did not have rent deposited, and no funding activity prior to the outgoing transfers.
Allium's coverage status: The transfers themselves are indexed. However, when closing such accounts (as explained in #4), it would then seem as though it has a negative balance to return. In our data, we set amount=0
for the such cases. In the current dataset this applies to 29/1.7b rows.
It is possible to move SOL without calling the system transfer
and transferChecked
method. In this , there are no visible transfer instructions for the sale of the NFT (~0.27 SOL), but looking at the SOL Balance Change tab, the buyer and seller of the NFT indeed have their SOL balance changed.
Allium's coverage status: We currently use pre_balances
and post_balances
of the raw transaction data to infer amounts transferred, but only in the context of tensorswap sells (specifically the SellNftTokenPool
method) to get NFT trades. We do not index such invisible SOL transfers in other contexts.
In the TokenExtension program, in the fee extension, spl tokens can be collected by a fee authority using withdrawWithheldTokensFromAccounts
and harvestWithheldTokensToMint
. However, these 2 instructions do not generate transfer instructions, and the amount collected is not indicated. More info and .
Allium's coverage status: Transfers of spl tokens as a result of calling fee collection methods withdrawWithheldTokensFromAccounts
and harvestWithheldTokensToMint
are not indexed yet, we estimate that this results in <0.01% transfers being missing.