📚 Virtual Accounts

Offchain Asset Management - Blockchains like Bitcoin and Ethereum are not exactly scalable. Bitcoin can send around 7 transactions per second, and Ethereum can do about 15 transactions per second globally. But what if you need to scale past the blockchain's limitations? That's where virtual accounts come in.

Virtual accounts allow you to perform instant, feeless transactions separately from the blockchain, and periodically synchronize with it. It ensures minimal transaction fees and limitless scalability, even on older blockchains. Virtual Accounts also work with FIAT and virtual currencies and have a comprehensive suite of advanced developer tools built-in and ready. Furthermore, if your end-users want to send their crypto outside of your application, they can withdraw it from their Virtual Accounts to a blockchain deposit address of their choice.

In summary, Virtual Accounts allow you to build an off-chain crypto Exchange type of ledger parallel to the blockchain and bypass the slow and often congested transaction mechanism of the blockchain itself.

Virtual Accounts Benefits

1. No blockchain fees for off-chain transfers

Because transactions between virtual accounts do not happen on the blockchain, they do not incur blockchain transaction fees and happen instantly. This provides huge benefits for working with blockchains like Ethereum and Bitcoin, both of which have high transaction fees and slow transaction times.

2. Grouping multiple Virtual Accounts

Multiple virtual accounts of different currencies can be grouped using a "customer ID". In this way, your customers can easily view the balances of all the currencies they hold with one API call, allowing you to build multi-currency wallets and various fintech applications.

3. Deposit addresses and automatic balance updates

A Virtual Account has at least one real blockchain address associated with it. This blockchain address is called a “Deposit Address”.

You can either connect an existing blockchain address (or addresses) to the Virtual Account or generate a new blockchain address and associate it with the account. In either case, the blockchain address becomes a deposit address for this virtual account.

Virtual Accounts automatically scan associated deposit addresses for incoming transactions and update their own balances to reflect the assets received. Whenever any blockchain address connected to a Virtual Account receives an incoming transaction, the virtual account's balance will be updated to reflect the newly received funds.

Virtual Account and deposit addresses

Virtual Account and deposit addresses

If you transfer assets from one Virtual Account to the other one, the total balance of all Virtual Accounts does not change.

Virtual Account off-chain transfers do not affect on-chain assets

Virtual Account off-chain transfers do not affect on-chain assets

4. Single currency per Virtual Account

  • Each Virtual Account is in a single currency. This can be either a cryptocurrency or a virtual fiat currency.
  • Virtual Accounts can be connected to blockchain addresses or represent virtual currencies that can be pegged to a fiat currency.
    • Virtual accounts can be in Bitcoin or Ethereum, Euro or U.S. dollar.
    • Using Virtual Currencies (VC), you can use FIAT and cryptocurrencies in the same way with the same API calls.

📘

Virtual Accounts can only perform transactions with other Virtual Accounts of the same currency.

5. Running in the background

When a customer transfers assets from their virtual account to a real blockchain address, they do not know where the assets are withdrawn from in the background.

Imagine that you have three customers with their custodial accounts: A, B, and C, and each of them has a virtual account connected to the customer’s blockchain address.

The following scenario takes place:

  1. Customer_A received 1 ETH.
  2. Customer_A transfers this 1 ETH to Customer_B.
  3. Customer_B receives 1 ETH and transfers it to Customer_C.
  4. Customer_C receives 1 ETH and uses it to pay for something (in other words, transfers it to a blockchain address that is outside of your custodial application).

When Customer_C transfers 1 ETH to a blockchain address that is outside of your custodial application:

  • On the Virtual Account level, the amount is deducted from Customer_C's virtual account. -> This is what the customer sees.
  • On the Blockchain level, the amount is deducted from Customer_A's blockchain address because Customer_A is the one who owned that 1 ETH in the beginning. -> This is what you see as the owner of the custodial application.

📘

Tatum Virtual Accounts back-end take care of calculating the balance and tracking the assets.

Disclaimer

Implementing Tatum's Virtual Accounts requires a strong foundational understanding of blockchain technology.

Users are expected to have a solid grasp of on-chain transactions, UTXO (Unspent Transaction Output) and account-based transaction models, gas fees, and other essential blockchain concepts. Proceeding with Virtual Accounts implementation without this knowledge can lead to mistakes, incorrect setups, and potentially irrecoverable issues.