Depositing and withdrawing on-chain

Depositing to an on-chain account

To send funds to a L1 vault, use the corresponding function, as follows:

Include the following parameters:

  • assetId (ETH, ERC-20, ERC-1155)

  • vaultId (ETH, ERC-20, ERC-1155)

  • quantizedAmount to deposit (ERC-20, ERC-1155)

Unlike off-chain accounts, which can contain NFTs (ERC-721 tokens), on-chain accounts can only contain ETH, ERC-20 tokens, or ERC-1155 tokens.

As part of the deposit flow, the funds are automatically locked for the period defined by defaultVaultWithdrawalLock. Funds cannot be withdrawn from a locked vault. See Trade for the full explanation of why locks are needed.

Withdrawing from an on-chain account

To withdraw funds from a L1 vault, use the corresponding function, as follows:

Include the following parameters:

  • assetId (ETH, ERC-20, ERC-1155)

  • vaultId (ETH, ERC-20, ERC-1155)

  • quantizedAmount to deposit (ETH, ERC-20, ERC-1155)

The function verifies the following conditions are true:

  • The vault specified under msg.sender contains at least the specified amount of the specified asset.

  • The funds are not locked.

If both conditions are true, the account owner receives their funds, and the amount is deducted from the on-chain account balance.