Skip to main content
In WaaS 2.0, every transaction involves a source and a destination. The source indicates where the transaction originates, while the destination represents where the transaction is going, such as a wallet address, a signature, a contract, and more. Each transaction type corresponds to a specific set of source and destination types. For example, in a withdrawal transaction, the source will be a wallet created on Cobo Portal, and the destination will be either a wallet address or an Exchange Wallet.

Source and destination for each transaction type

Refer to the following table for the source and destination types corresponding to each transaction type. Detailed definitions for each source type and destination type can be found below the table.
If you transfer tokens between two wallets created on Cobo Portal, two transactions will be recorded: a deposit into the destination wallet and a withdrawal from the source wallet.
Transaction typeSource TypeDestination Type
Deposit - Cobo Loop transfersDepositFromLoopDepositToAddress
Deposit - Transfers between Exchange WalletsDepositFromWalletDepositToWallet
Deposit - Other deposit transactionsDepositFromAddressDepositToAddress
Withdrawal - Transfers between Custodial Wallets (Asset Wallets)AssetCustodialWallet
Withdrawal - Transfers between Exchange WalletsMain
Sub
ExchangeWallet
Withdrawal - Other withdrawal transactionsAsset
Web3
Org-Controlled
User-Controlled
Safe{Wallet}
Main
Sub
Address
ContractCallOrg-Controlled
User-Controlled
Safe{Wallet}
Web3
EVM_Contract
SOL_Contract
STELLAR_Contract
MessageSignOrg-Controlled
User-Controlled
Web3
EVM_EIP_191_Signature
EVM_EIP_712_Signature
BTC_BIP_137_Signature
BTC_EIP_191_Signature
BTC_BIP_322_Signature
COSMOS_ADR_36_Signature
Raw_Message_Signature
ExternalSafeTxSafe{Wallet}EVM_Contract
StakeOrg-ControlledAddress
UnstakeOrg-ControlledAddress

Transaction source types

The transaction source types are as follows:
  • Asset: A Custodial Wallet (Asset Wallet).
  • Web3: A Custodial Wallet (Web3 Wallet).
  • Org-Controlled: An MPC Wallet (Organization-Controlled Wallet).
  • User-Controlled: An MPC Wallet (User-Controlled Wallet).
  • Safe{Wallet}: A Smart Contract Wallet (Safe{Wallet}).
  • Main: An Exchange Wallet (Main Account).
  • Sub: An Exchange Wallet (Sub Account).
  • DepositFromAddress: A wallet address.
  • DepositFromWallet: An Exchange Wallet.
  • DepositFromLoop: A transfer sent through the Cobo Loop transfer network.

address and included_utxos usage

This section explains, when the source_type is Web3, Org-Controlled, or User-Controlled, which source properties (address and included_utxos) need to be specified for different chains and transaction types, and how the system processes them.

UTXO-based chains

  • Regular transactions
    • If only included_utxos is specified: The transaction will use only these specified UTXOs.
    • If only address is specified: The system will select UTXOs only from this address.
    • If both address and included_utxos are specified: The system will verify that the UTXOs belong to the specified address, and only these UTXOs will be used.
    • If neither address nor included_utxos is specified: The system will automatically select UTXOs from all addresses under the wallet associated with wallet_id.
  • RBF transactions
    address or included_utxos in an RBF transaction can be different from those in the original transaction.
    • If only included_utxos is specified: The transaction will use only these specified UTXOs.
    • If only address is specified: The system will select UTXOs only from this address.
    • If both address and included_utxos are specified: The system will verify that the UTXOs belong to the specified address, and only these UTXOs will be used.
    • If neither address nor included_utxos is specified:
      • If the original transaction specified included_utxos: The transaction will use the UTXOs specified in the original transaction.
      • If the original transaction did not specify included_utxos: The system will automatically select UTXOs from all addresses under the wallet associated with wallet_id in the original transaction.

Account-based chains

  • The transaction must specify address, otherwise the token transfer will fail.
  • When estimating transfer fees, providing only wallet_id is sufficient; address is not required.

Transaction destination types

The transaction destination types are as follows:
  • Address: A wallet address.
  • ExchangeWallet: An Exchange Wallet.
  • EVM_Contract: An Ethereum Virtual Machine (EVM) smart contract.
  • SOL_Contract: A Solana smart contract (program).
  • Stellar_Contract: A Stellar smart contract.
  • EVM_EIP_191_Signature: An EVM EIP-191 signature. For more details, see Signed Data Standard.
  • EVM_EIP_712_Signature: An EVM EIP-712 signature. For more details, see Typed structured data hashing and signing.
  • BTC_BIP_137_Signature: A BTC BIP-137 signature. For more details, see BIP-137.
  • BTC_EIP_191_Signature: A BTC EIP-191 signature.
  • BTC_BIP_322_Signature: A BTC BIP-322 signature. For more details, see BIP-322.
  • COSMOS_ADR_36_Signature: A COSMOS ADR-36 signature. For more details, see ADR-36.
  • Raw_Message_Signature: A raw message signature.
  • DepositToAddress: A wallet address.
  • DepositToWallet: An Exchange Wallet.
Feel free to share your feedback to improve our documentation!