Skip to main content

Transaction Lifecycle

Status Flow​

MOUNTAIN Transactions follows a strict status progression:

  1. created - Transaction record created, pending execution
  2. processing - Transaction is currently being processed (broadcast in progress)
  3. broadcasted - Transaction submitted to blockchain network, awaiting confirmation
  4. succeeded - Transaction confirmed successful on blockchain
  5. broadcast-failed - Transaction broadcast failed (network error, gas estimation, etc.)
  6. monitor-failed - Transaction monitoring failed (RPC error, network timeout, etc.)
  7. reverted - Transaction was broadcasted but reverted/failed on blockchain

Processing Flow​

Automatic Processing​

  • Broadcast Job: Automatically processes created transactions, updates to processing, then submits to blockchain
  • Monitor Job: Continuously monitors broadcasted transactions for confirmation, revert, or failure
  • Nonce Management: Ensures proper transaction ordering and handles nonce conflicts
  • Error Isolation: Distinguishes between broadcast failures and monitoring failures for better debugging

Transaction Structure​

Transaction Information​

Each transaction contains the following information:

Note: Transaction IDs are UUIDs (Universally Unique Identifiers) for security and scalability reasons. This prevents ID enumeration attacks and ensures uniqueness across distributed systems.

interface Transaction {
/** Transaction ID */
id: string;

/** Project ID */
projectId: number;

/** Contract activated function ID */
contractActivatedFunctionId: number;

/** System wallet ID used for signing */
mSystemWalletId: number;

/** Network ID where transaction was executed */
networkId: number;

/** Function arguments provided */
functionArgs: unknown[];

/** Current transaction status */
status:
| 'created'
| 'processing'
| 'broadcasted'
| 'succeeded'
| 'broadcast-failed'
| 'monitor-failed'
| 'reverted';

/** Blockchain transaction hash (available after broadcast) */
transactionHash?: string;

/** Transaction nonce */
nonce?: number;

/** Gas price used (in wei) */
gasPrice?: string;

/** Gas limit set for transaction */
gasLimit?: string;

/** Actual gas used (available after confirmation) */
gasUsed?: string;

/** Block number (available after confirmation) */
blockNumber?: number;

/** Error message (if transaction failed) */
errorMessage?: string;

/** Idempotency key for duplicate prevention */
idempotencyKey: string;

/** Transaction creation timestamp */
createdAt: string;

/** Transaction last update timestamp */
updatedAt: string;
}

Error Classification​

MOUNTAIN Transactions provides detailed error classification through specific status codes:

Broadcast Failures (broadcast-failed)​

  • Network connectivity issues during transaction submission
  • Gas estimation failures
  • Insufficient funds for gas fees
  • Invalid transaction parameters
  • System wallet access issues

Monitor Failures (monitor-failed)​

  • RPC provider connectivity issues
  • Network timeouts during status checking
  • Blockchain node synchronization problems
  • Transaction not found after maximum retry attempts (15 retries over ~24 hours)
  • Extended pending state beyond retry threshold

Contract Execution Failures (reverted)​

  • Smart contract function reverts execution
  • Insufficient gas limit for contract execution
  • Contract-specific business logic failures
  • Invalid function parameters causing revert

Error Response Format​

interface TransactionError {
code: string;
message: string;
details?: {
transactionHash?: string;
blockNumber?: number;
gasUsed?: string;
revertReason?: string;
};
}

Next Steps​