smartcontractscryptocurrencybinance-smart-chaintron

Can we have an account with multiple receiving addresses(public address) in BSC or Tron?


Can we have an account with multiple receiving addresses (public key) in the Binance Smart Chain or Tron? How are exchange wallets defined for users in these two networks (I think they don't have a custodial wallet for each user)?


Solution

  • On EVM networks, each account has precisely one address.

    Exchanges usually generate one or more deposit addresses per each user and keep the private keys, so that the exchange is able to later withdraw the funds from the deposit addresses to a hot wallet address.

    Since on EVM networks you cannot send a transaction from multiple addresses, they loop through the deposit addresses and make a transfer from the deposit address to the hot wallet one by one.

    If there's no native token to cover the transaction fees from the deposit wallet, it depends on their internal processes. I'm only assuming that addresses without native tokens have lower priority, and the exchange might usually send native token to the address (to cover for the transaction fees) and withdraw ERC-20 tokens from this address only if necessary.


    I've also seen a different approach in minority of cases. The deposit wallet is a smart contract that can accept both native and ERC-20 tokens, and can be withdrawn from only by an authorized owner.

    Since it's a contract, it doesn't have a known private key, but you can interact with it using a multicall. Example:

    1. Owner address (known private key) interacts with a multicall contract:
    2. Payload: "transfer 1 ETH from deposit contract 1, and 10 USDC from deposit contract 2"
    3. The multicall contract loops through the payload, and sends internal transaction to each of the deposit contracts.
    4. Each of the deposit contracts validates that the request is authorized, and then performs the transfer.

    All of these actions cost transaction fees - all paid by the owner address - and can be wrapped in one transaction (from the owner to the multicall contract).

    Plus you're effectively able to withdraw from the deposit contract even though it doesn't hold any native tokens.