Transaction Lifecycle
Status Flow​
MOUNTAIN Transactions follows a strict status progression:
created
- Transaction record created, pending executionprocessing
- Transaction is currently being processed (broadcast in progress)broadcasted
- Transaction submitted to blockchain network, awaiting confirmationsucceeded
- Transaction confirmed successful on blockchainbroadcast-failed
- Transaction broadcast failed (network error, gas estimation, etc.)monitor-failed
- Transaction monitoring failed (RPC error, network timeout, etc.)reverted
- Transaction was broadcasted but reverted/failed on blockchain
Processing Flow​
Automatic Processing​
- Broadcast Job: Automatically processes
created
transactions, updates toprocessing
, 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;
};
}