Development of Blockchain Transaction Monitoring Mobile App
Transaction monitoring needed differently by different people: OTC trader tracks incoming transfers to wallet, analyst watches whale activity, DevOps of web3 project monitors smart contract transactions. Common — need notification on on-chain event, not manually check block explorer.
Architecture: How to Track On-Chain Events
Option 1: Polling through RPC. Every N seconds request eth_getBlockByNumber or eth_getLogs. Simple but inefficient, creates load on RPC node. Works only monitoring one-two addresses with 30+ second intervals.
Option 2: WebSocket RPC. Ethereum nodes support eth_subscribe via WebSocket. newHeads subscription delivers each new block; logs with address filter — contract events. Alchemy and Infura support wss://. Near real-time, 1–3 second latency after block confirmation.
Option 3: Webhooks through specialized service. Alchemy Notify, Moralis Streams, QuickNode Streams — you set address/contract, service calls your webhook on event. Backend receives POST, sends push to mobile app. Most reliable for production.
Option 4: Blockchain indexer. The Graph Protocol, Goldsky — index contracts, provide GraphQL API. Good for complex historical data analytics.
For mobile app with push notifications: Alchemy Notify (or similar) → backend webhook → FCM/APNs → phone. Direct WebSocket from mobile to node sufficient only for foreground monitoring.
What App Tracks
Typical monitoring entities set:
Wallets. Incoming/outgoing native tokens (ETH, BNB, SOL) and ERC-20/SPL tokens. On address add — subscribe to its activity. Threshold filters: notify only on > $1,000 amount.
Smart contracts. Specific events: Transfer(address,address,uint256), Swap, Deposit, Withdraw. Decode ABI — via ethers.js on backend or Alchemy Decoded API.
Pending transactions. Transactions in mempool before block inclusion. Alchemy supports alchemy_pendingTransactions with filter. Useful monitoring own transactions.
// iOS — transaction event model
struct TransactionEvent: Codable, Identifiable {
let id: String // tx hash
let chain: Chain // .ethereum, .polygon, .bsc
let type: EventType // .transfer, .swap, .contractCall
let from: String
let to: String
let value: Decimal // in native currency
let valueUsd: Decimal?
let token: TokenInfo? // nil for native
let blockNumber: Int64
let confirmedAt: Date
let status: TxStatus // .pending, .confirmed, .failed
}
Multichain
Different chains — different RPC, different address formats, different token standards. Ethereum and EVM-compatible (Polygon, BSC, Arbitrum, Base) — one adapter with different RPC URL and chain ID. Solana — separate SDK, base58 addresses, tokens via SPL.
Per-chain adapter:
interface ChainMonitor {
val chainId: Int
suspend fun subscribeToAddress(address: String, listener: TxEventListener)
suspend fun unsubscribe(address: String)
suspend fun getRecentTransactions(address: String, limit: Int): List<Transaction>
}
class EthereumMonitor(private val alchemyWsUrl: String) : ChainMonitor {
override val chainId = 1
// ...
}
class SolanaMonitor(private val heliusApiKey: String) : ChainMonitor {
override val chainId = 101 // Solana mainnet
// ...
}
Push Notifications and Quiet Hours
Notification per transaction — too much for active addresses (whale wallets hundreds daily). Need filters:
- Minimum amount (e.g., notify only > $500)
- Event type (incoming only, or only DEX swap)
- Quiet hours: 11pm–8am — batch notifications, show summary push morning
On iOS customize via UNNotificationContent with UNNotificationServiceExtension — enrich push before display. On Android — NotificationCompat.Builder with InboxStyle for batching.
Event Feed
Main screen — chronological feed of all tracked events. Filters: by chain, by address, by event type. Search by tx hash. Tap — detailed card with block explorer link.
Data loads from own backend, which stores event history (because blockchain doesn't offer convenient "give me events for this address for a month" without archive node). Cursor-based pagination.
What's Included
- Multichain architecture (EVM + Solana optional)
- Management of tracked addresses and contracts list
- Event feed with filters and search
- Push notifications with amount and type filters, quiet hours
- Detailed transaction card with block explorer link
- Offline mode with recent events cache
Timeline
7–12 working days depending on supported chains count and integration depth. Cost calculated individually after requirements analysis.







