# Transaction Lifecycle

As transactions progress from creation through completion, they can follow
several workflows, during which they take on various statuses.

## Transaction statuses

The table below lists possible Fordefi transaction statuses and their meanings.

| **Status** | **API Request Response** | **Meaning** |
|  --- | --- | --- |
| **CANNOT CREATE TRANSACTION** | `cannot_create_transaction` | The transaction cannot be created due to a policy violation or because the recipient is a sanctioned address. |
| **PENDING APPROVAL** | `waiting_for_approval` | The transaction is pending approval by the designated approvers (as determined by relevant policy rules). |
| **PENDING SIGNATURE** | `approved` | The transaction was approved and is waiting for the relevant signer (initiator / API signer / end user) to sign it. |
| **WAITING TO BE PUSHED** | `signed` | The transaction was signed by Fordefi and is waiting to be sent to the blockchain. |
| **WAITING TO BE MINED** | `pushed_to_blockchain` | The transaction was pushed to the mempool and is waiting to be mined. **Note:** Transactions are mined in the order they were submitted to the mempool, per vault and chain. |
| **QUEUED** | `queued` | On Ethereum-based chains, transactions are mined in nonce order. If there is already a transaction in **WAITING TO BE MINED** or **STUCK**, any new transaction will be **QUEUED**. |
| **MINED** | `mined` | The transaction was mined (added to the blockchain). Not enough blocks have passed for it to be considered **COMPLETED**. |
| **COMPLETED** | `completed` | The transaction completed successfully. |
| **STUCK** | `stuck` | The transaction has been in the mempool for over 10 minutes, usually due to low fees. See **Release a Transaction** (`release-transaction`). |
| **ACCELERATING** | `accelerating` | The transaction is being replaced by another transaction with the same parameters but a higher fee. |
| **CANCELING** | `canceling` | The transaction is being canceled by submitting a new “effectless” transaction. |
| **ACCELERATED** | `accelerated` | The replacement (accelerating) transaction was mined, successfully accelerating the original transaction. See **Accelerate a Transaction** (`release-transaction`). |
| **CANCELED** | `canceled` | The replacement (canceling) transaction was mined, successfully canceling the original transaction. See **Release a Transaction** (`release-transaction`). |
| **ABORTED** | `aborted` | The user aborted the transaction. This is only possible while the transaction is **PENDING APPROVAL** or **PENDING SIGNATURE**. After it’s pushed to the blockchain, aborting is no longer possible. |
| **DROPPED** | `dropped` | On chains with a predetermined transaction expiration time, a transaction is **DROPPED** if it isn’t mined before it expires. |
| **ERROR PUSHING TO CHAIN** | `error_pushing_to_blockchain` | An error occurred and the transaction was not pushed to the blockchain. |
| **MINED REVERTED** | `mined_reverted` | The transaction was mined but reverted, often due to a contract error or transaction-generation issue. |
| **COMPLETED REVERTED** | `completed_reverted` | The transaction ultimately reverted, usually due to a contract error or how the transaction was generated. |
| **WAITING FOR SIGNING TRIGGER** | `waiting_for_signing_trigger` | A transaction that was created with sign mode **TRIGGERED** is waiting to be triggered. |
| **PENDING EXCHANGE** | `pending_exchange` | A withdrawal from an exchange was submitted to the exchange and is pending processing. |
| **SENT TO PROVIDER** | `sent_to_provider` | A swap transaction was sent to a provider for fulfillment. |
| **ERROR SIGNING** | `error_signing` | An error occurred while signing the transaction. |
| **INSUFFICIENT FUNDS** | `insufficient_funds` | A UTXO transaction does not have enough inputs to sign the transaction. |
| **ERROR SUBMITTING TO EXCHANGE** | `error_submitting_to_exchange` | An error occurred while submitting a withdrawal request to an exchange. |
| **ERROR SUBMITTING TO PROVIDER** | `error_submitting_to_provider` | An error occurred while sending a transaction fulfillment request to a provider. |


## Mined delay

When transactions are sent to the mempool, they wait to be picked up by a miner
and included in a block. However, due to possible forks (where two or more
blocks were produced at the same time and one of them will eventually be dropped
and not included in the chain), Fordefi keeps a buffer and finds the right
balance between showing the most updated status of the transaction, while being
as safe as possible from forks.

To provide more information about the current state of the block, Fordefi
assigns one of two statuses:

- **MINED**: Indicates that the transaction has been included in the chain after
the specified number of blocks has been mined.
- **COMPLETED**: Indicates that the transaction has been included in the chain
after the specified number of blocks has been mined and now the chances of a
fork are practically at zero.


For EVM chains, the expected time to pass until the transaction is mined is
about 12 seconds and 60 seconds for completion.

| Functionality | Network | Type | Number of blocks until MINED | Number of blocks until COMPLETED | Seconds between blocks |
|  --- | --- | --- | --- | --- | --- |
| Mainnet | Arbitrum One | EVM | 10 | 50 | 0-1 |
|  | Avalanche | EVM | 5 | 25 | 2 |
|  | Base | EVM | 6 | 30 | 2 |
|  | Berachain | EVM | 6 | 30 | 2 |
|  | BNB Chain | EVM | 4 | 20 | 3 |
|  | Blast | EVM | 3 | 30 | 2 |
|  | Canto | EVM | 2 | 10 | 6 |
|  | Clink | EVM | 1 | 1 | < 1 |
|  | Conflux | EVM | 5 | 50 | 1 |
|  | Dymension | EVM | 2 | 10 | 6 |
|  | Ethereum | EVM | 1 | 5 | 12 |
|  | Fantom | EVM | 10 | 50 | 1 |
|  | Flare | EVM | 18 | 92 | < 1 sec |
|  | Gnosis | EVM | 20 | 100 | 10 |
|  | HyperEvm | EVM | 120 | 120 | 1 |
|  | Ink | EVM | 12 | 60 | 1 |
|  | Katana | EVM | 12 | 60 | 1 |
|  | Kava | EVM | 2 | 10 | 6 |
|  | Linea | EVM | 1 | 5 | 12 |
|  | Manta Pacific | EVM | 1 | 6 | 10 |
|  | Mantle | EVM | 40 | 200 | < 1 |
|  | Merlin | EVM | 7 | 36 | 1.67 |
|  | Monad | EVM | 30 | 150 | < 1 sec |
|  | Optimism | EVM | 5 | 25 | 1-2 |
|  | Plasma | EVM | 12 | 60 | 1 |
|  | Polygon | EVM | 0 | 25 | 2 |
|  | Polygon zkEvm | EVM | 25 | 25 | ~120 (batches) |
|  | Reya | EVM | 6 | 30 | 2 |
|  | Rootstock | EVM | 1 | 2 | 30 |
|  | Scroll | EVM | 2 | 10 | 6 |
|  | Sei v2 | EVM | 27 | 136 | 0.4 |
|  | Sonic | EVM | 0 | 7 | 2 |
|  | Unichain | EVM | 12 | 60 | 1 |
|  | Xai | EVM | 8 | 42 | 1-2 |
|  | zkLink Nova | EVM | 6 | 25 | 4 |
|  | zkSync Era | EVM | 6 | 30 | 2 |
|  | ZetaChain | EVM | 2 | 10 | 6 |
|  | 0g | EVM | 7 | 32 | 2 |
|  | Akash | Cosmos | - | 1 | 6 |
|  | Archway | Cosmos | - | 1 | 6 |
|  | Axelar | Cosmos | - | 1 | 6 |
|  | Celestia | Cosmos | - | 1 | 12 |
|  | Cosmos Hub | Cosmos | - | 1 | 6 |
|  | dYdX | Cosmos | - | 1 | 1 |
|  | Dymension | Cosmos | - | 1 | 6 |
|  | Noble | Cosmos | - | 1 | 6 |
|  | Osmosis | Cosmos | - | 1 | 7 |
|  | Sei | Cosmos | - | 1 | 0.5 |
|  | Stride | Cosmos | - | 1 | 6 |
|  | Bitcoin | UTXO | 0 | 2 | 600 |
|  | Bitcoin Cash | UTXO | 0 | 2 | 600 |
|  | Doge | UTXO | 0 | 2 | 60 |
|  | Pearl | UTXO | 0 | 2 | 180 |
|  | Starknet | Starknet | 0 | 0 | 30 |
|  | Tron | Tron | 0 | 0 | 3 |
|  | Solana | Solana | 1 | 30 | 0.4 |
|  | Sui | Sui | - | 1 | 1 |
|  | Aptos | Aptos | - | 1 | 0.25 |
|  | TON | TON | 10 | 0 | 4 |
|  | Stacks | STX | 0 | 0 | ~20 |
| Testnet | Arbitrum Sepolia | EVM | 10 | 50 | 0-1 |
|  | Clink | EVM | 1 | 1 | < 1 |
|  | Flare | EVM | 6 | 46 | 1-2 |
|  | Sepolia | EVM | 1 | 5 | 15 |
|  | Solana devnet | Solana | - | 10 | 0.4 |
|  | Bitcoin Testnet | Bitcoin | 1 | 10 | 600 |
|  | Pearl Testnet | UTXO | 0 | 2 | 180 |
|  | Sui Testnet | Sui | - | 1 | 1 |
|  | Aptos Testnet | Aptos | - | 1 | 0.15 |
|  | Tron Shasta | Tron | 0 | 0 | 3 |


## Transaction workflow

The schematic below describes the transaction workflow and possible outcomes.

alt