> ## Documentation Index
> Fetch the complete documentation index at: https://cobo.com/developers/llms.txt
> Use this file to discover all available pages before exploring further.

# Transaction sources and destinations

> Overview of transaction sources and destinations in WaaS 2.0.

<Tip>
  Try [Cobo WaaS Skill](/v2/guides/overview/cobo-waas-skill) in your AI coding assistant (Claude Code, Cursor, etc.). Describe your needs in natural language to auto-generate production-ready SDK code and debug faster 🚀
</Tip>

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.

<Note>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.</Note>

| Transaction type                                                                                | Source Type                                                                                    | Destination Type                                                                                                                                                                                              |
| ----------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Deposit - [Cobo Loop](https://manuals.cobo.com/en/portal/custodial-wallets/cobo-loop) transfers | DepositFromLoop                                                                                | DepositToAddress                                                                                                                                                                                              |
| Deposit - Transfers between Exchange Wallets                                                    | DepositFromWallet                                                                              | DepositToWallet                                                                                                                                                                                               |
| Deposit - Other deposit transactions                                                            | DepositFromAddress                                                                             | DepositToAddress                                                                                                                                                                                              |
| Withdrawal - Transfers between Exchange Wallets                                                 | Main<br />Sub                                                                                  | ExchangeWallet                                                                                                                                                                                                |
| Withdrawal - Other withdrawal transactions                                                      | Asset<br />Web3<br />Org-Controlled<br />User-Controlled<br />Safe\{Wallet}<br />Main<br />Sub | Address                                                                                                                                                                                                       |
| ContractCall                                                                                    | Org-Controlled<br />User-Controlled<br />Safe\{Wallet}<br />Web3                               | EVM\_Contract<br />SOL\_Contract<br />STELLAR\_Contract<br />TRON\_Contract                                                                                                                                   |
| MessageSign                                                                                     | Org-Controlled<br />User-Controlled<br />Web3                                                  | EVM\_EIP\_191\_Signature<br />EVM\_EIP\_712\_Signature<br />BTC\_BIP\_137\_Signature<br />BTC\_EIP\_191\_Signature<br />BTC\_BIP\_322\_Signature<br />COSMOS\_ADR\_36\_Signature<br />Raw\_Message\_Signature |
| ExternalSafeTx                                                                                  | Safe\{Wallet}                                                                                  | EVM\_Contract                                                                                                                                                                                                 |
| Stake                                                                                           | Org-Controlled                                                                                 | Address                                                                                                                                                                                                       |
| Unstake                                                                                         | Org-Controlled                                                                                 | Address                                                                                                                                                                                                       |

## 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](https://manuals.cobo.com/en/portal/custodial-wallets/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**
  <br />`address` or `included_utxos` in an RBF transaction can be different from those in the original transaction.<br />
  * 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.
* `TRON_Contract`: A TRON smart contract.
* `EVM_EIP_191_Signature`: An EVM EIP-191 signature. For more details, see [Signed Data Standard](https://eips.ethereum.org/EIPS/eip-191).
* `EVM_EIP_712_Signature`: An EVM EIP-712 signature. For more details, see [Typed structured data hashing and signing](https://eips.ethereum.org/EIPS/eip-712).
* `BTC_BIP_137_Signature`: A BTC BIP-137 signature. For more details, see [BIP-137](https://github.com/bitcoin/bips/blob/master/bip-0137.mediawiki).
* `BTC_EIP_191_Signature`: A BTC EIP-191 signature.
* `BTC_BIP_322_Signature`: A BTC BIP-322 signature. For more details, see [BIP-322](https://github.com/bitcoin/bips/blob/master/bip-0322.mediawiki).
* `COSMOS_ADR_36_Signature`: A COSMOS ADR-36 signature. For more details, see [ADR-36](https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-036-arbitrary-signature.md).
* `Raw_Message_Signature`: A raw message signature.
* `DepositToAddress`: A wallet address.
* `DepositToWallet`: An Exchange Wallet.
