Whale transactions: why large transfers get lost without monitoring
A large transfer leaves the wallet in seconds, but the team learns about it hours later — from a news item or a message in a general chat. By that time, liquidity has already been repositioned, and the decision window has closed.
The data is open: whale transactions are visible in the public ledger, the only question is who notices them and how quickly.
Manual review of block explorers is a bottleneck by nature. An analyst opens tab after tab, checks addresses against a list of significant ones, filters out small transfers — and in this flow misses the right one.
Across multiple networks, the picture falls apart: some movement is visible in one chain, some — in a transfer via a cross-chain bridge, some — in internal exchange operations that are not reflected as a separate entry.
The second source of losses is delay. Even a careful analyst reacts in minutes and only during their shift.
At night and on weekends, monitoring large transfers is effectively not performed, although it is precisely during these windows that movements requiring a response most often occur — and a missed transaction goes unnoticed until morning.
The cost of a missed event is not limited to a lost trade. A transfer to an exchange before a large sale, withdrawal of funds from a smart contract, the first movement of a new wallet — these are signals that make up the risk picture.
When they arrive late or get lost in the noise, decisions are made based on outdated data. Next, we break down how this is covered by a system that monitors the flow continuously.
What continuous monitoring provides: response speed and data completeness
Continuous monitoring turns network observation into a stream of events with measurable characteristics. Alert speed: from the appearance of a transfer in the Ethereum mempool to a message to the on-call engineer, seconds pass instead of minutes of manual search.
Event coverage completeness rests on the fact that all transfers above the threshold are monitored, not a list of addresses — including internal contract calls that are not visible in a block explorer.
| How we collect events | When it fits | Limitations |
|---|---|---|
| Periodic requests to a node's public interface | One-time audit, archive analysis | Delay grows with the polling interval; during peak hours transfers are missed |
| Subscription to an event stream from your own node | Continuous control, delay in seconds | Requires your own node, a stable channel, continuation from the last block |
| Stream from a third-party indexer | Quick start, many networks at once | Dependence on external infrastructure, delay is not controlled, some calls are not provided |
The resilience of the data stream does not rely on a single channel: a second source runs in parallel, and a discrepancy between them is an independent signal of failure, not a reason to stay silent.
Reconnection continues from the last processed block, the missed range is backfilled, duplicates are suppressed by transfer hash — the on-call engineer sees each event exactly once.
The on-call engineer's reaction time is reduced by the context inside the alert itself: amount, sender, recipient with a known exchange label, address history. Small transfers go out as a digest, large ones break through to the on-call engineer immediately. This removes an entire class of failures — a missed transfer and manual block scanning.
Approaches to tracking whale transactions: comparison of options
Tracking large transfers is built on one of three circuits: subscription to new blocks, scheduled polling, or a combination of both. The choice of circuit determines alert delay, resilience to connection breaks, and the amount of rework as the flow grows.
Streaming provides minimal delay, polling — independence from channel state and easy debugging. For whale transaction alerts, in practice a hybrid is used: streaming as the main channel, periodic reconciliation by block height as insurance against gaps.
| Option | When it fits | Limitations |
|---|---|---|
| Streaming block processing | Reaction in the first seconds after a block is included in the chain | Maintains a persistent connection to the node; on a break, a window of missed events appears, requiring catch-up synchronization and lag control |
| Periodic sampling | Analytics, reports, history analysis — where a delay of minutes is not critical | Rate limits and quotas of public sources like Etherscan; a transfer between two polling windows is easy to miss, and overlapping intervals produce duplicates |
| Hybrid tracking scheme | Production alerts where a miss is more expensive than an extra request | More complex to implement: requires deduplication, re-processing without side effects, and storage of checkpoints |
The scheme is chosen based on three parameters: required signal delay, acceptable miss rate, and the team's readiness to maintain its own node.
How we build the system: from flow audit to handover
Monitoring large transfers breaks not at the alert sending stage, but at the input: sources provide data with different delays, some events arrive repeatedly during chain reorganization, and a trigger threshold without calibration produces either silence or a stream of noise that the on-call engineer stops reading.
Therefore, we begin the monitoring implementation stages with a flow audit, not with notification setup — we fix event selection rules only after the real picture is clear.
- Data source audit. We inventory nodes, public interfaces, and internal services: what provides addresses, what provides amounts, where the delay is, where the gaps are. The output is a network coverage map and a list of places where an event physically cannot arrive from.
- Flow diagram and storage. We determine how an event passes from ingestion to the database: normalization of addresses and amounts, deduplication, binding to a block, retention. The diagram is needed so that incident investigation takes minutes, not a re-export.
- Event selection rules. Thresholds by amount, lists of addresses and pools, signs of movement to an exchange or from cold storage, grouping of related transfers. We version the rules — each change can be explained and rolled back.
- Alert setup. We separate severity levels, define routing by on-call engineers and silence windows so that repeated triggers are not duplicated. The on-call engineer receives context: address, amount, path of funds, and a link to the event.
- Validation on historical data. We run the rules on past periods and compare with what is known to have happened: how many triggers, what proportion are false, what was missed. We calibrate thresholds before launch, not on a live stream.
- Handover and on-call training. We provide documentation, a breakdown of typical triggers, and an escalation procedure, and conduct training on educational cases.
After launch, for the first few weeks we provide support and adjust sensitivity based on actual statistics — this way the system remains operational when the market changes activity.
Delivery package: event selection rules, flow diagrams, procedures
We deliver not only a working service, but also everything that manages it: whale transaction selection rules, flow diagrams, access credentials, and procedures remain in your repository.
An on-call engineer changes the amount threshold or adds an exchange address without our involvement — the edit goes through review and is rolled out like a regular release.
- Selection rules configuration. A separate file with thresholds by amount, number of confirmations, and asset type, whitelists of exchange and custodial addresses, per-network rules. Versioned together with the code — you can see who changed the threshold and when.
- Data flow diagram. The path from the source (node or third-party provider) to the alert queue: failure points, delivery delay, behavior on connection loss, redelivery, and deduplication.
- Access policies. Roles for viewing and editing rules, keys to data sources and notification channels — in a secrets store, with rotation and an access log.
- On-call procedure. Where and how a trigger arrives, who escalates, silence windows, the procedure for disabling a noisy rule and analyzing false events.
- Incident instructions. Loss of connection to the source, missed window and its backfill, a spike in false triggers, rolling back a rule to the previous version.
- Historical data checks. A set of tests on past events: a rule that floods the queue with noise is visible even before going live.
Each item is a working unit, not a description. The package is accepted according to a checklist, and after acceptance the system remains manageable by your team, without contacting us for every threshold change.
Case study: reduced detection time for large transfers
Before
Large whale transactions were tracked by an analyst: every few hours they manually checked addresses from a table against public explorers like Etherscan.
Detection depended on the on-call schedule, some events were lost between checks, and the share of covered events remained around 55–60%.
What we changed
We removed manual review and built a monitoring service with stream processing: it subscribes to new blocks, filters transfers by address list and amount threshold, deduplicates by hash, and puts confirmed events into a queue.
The alert goes to a messenger along with a link to the transaction, amount, and counterparty address — verification takes seconds.
We separately addressed connection breaks: retries, a log of missed blocks, and backfill after reconnection. The address list and thresholds are described by configuration — we add a new "address — threshold" pair without code changes.
Results
- Detection time — 15–40 seconds from the appearance of a block in the network instead of several hours.
- Share of covered events — 99%: gaps are possible only during short chain reorganizations, and they are backfilled automatically.
- False triggers decreased: the amount threshold cuts off small transfers, and confirmations cut off not yet finalized ones.
- The list of tracked addresses grew several times over with the same on-call staff.
The analyst's workload shifted from searching for events to analysis: disputed triggers arrive with ready context, and the delivery log confirms that no alert was lost.
How stream processing differs from periodic block sampling
Stream processing is a continuous subscription to node events: the service receives a notification about a new block and about whale transactions in the pending pool, parses them, and immediately puts an alert in the queue.
Alert delay is measured in seconds — from a transaction entering a block to a message to the consumer.
Periodic sampling works differently: a job every N seconds requests the latest blocks and compares them with a cursor, so there is always a polling window between the event and the alert.
The load on nodes is distributed differently.
Polling hits the node at the schedule frequency and is almost unrelated to network activity: during quiet hours it consumes the same resources as during peak hours, and a frequent interval runs into provider limits and the request queue.
Subscription distributes load proportionally to real activity — a quiet network gives a quiet channel, a spike in whale transactions increases the message flow, but requires a persistent connection and checks for gaps after a break.
Completeness of history also differs. With polling, it is easy to skip events: if the interval is longer than the block time, part of the data is lost between iterations and is recovered by brute force.
Stream processing sees every event, but is vulnerable to chain reorganizations — a block for which an alert has already been sent may be canceled, so confirmations are counted by depth, not by the fact of arrival.
Practical choice: streaming provides alert delay in seconds, polling is easier to maintain and is suitable where a delay of minutes is acceptable. In practice, the schemes are often combined — streaming for signals, polling for reconciliation and backfilling history.
Technical concerns: data completeness, delays, false triggers
These concerns are natural: the stream of whale transactions runs continuously, it has no "end of day", and a break is discovered after the fact — when funds have already left. Below is a breakdown of frequent questions and the engineering mechanics behind each answer.
How to exclude data gaps in the stream?
The source is read with a marker of the last processed block, not "in real time blindly". After a failure, the block height window is re-read, repeated events are suppressed by hash: a data gap is visible as a numbering break and is closed automatically.
What happens when a node restarts?
The handler does not keep state in memory: the position is written to reliable storage on each block. After a node restart, it reads it and catches up on the tail, so a gap is excluded — at most, redelivery occurs, which deduplication removes.
How strong is the noise from false triggers?
The threshold is calculated not by a single amount, but by a combination: transfer size, pair liquidity, address type, and time window. The rules are calibrated on historical data before launch, so false triggers remain isolated and do not turn the channel into noise.
How much work is it to add a new blockchain?
The transaction is brought to a common schema by a source adapter — the rules, delivery, and reports upstream do not change. Adding a new blockchain comes down to an adapter and a run over a historical interval to verify completeness.
Let's discuss your task: we'll build a monitoring scheme for your flows
So that the monitoring scheme fits your flows, and not the other way around, we start with the inputs about your flows.
A list of addresses and an understanding of which fund movements are significant for you is enough — we select data sources, thresholds, and delivery channels to match.
The inputs determine how many sources we connect, how we set up deduplication, and where we set the threshold so that signals remain readable. In the first session, we fix:
- List of networks and addresses: project wallets, treasury, cold storage, counterparty addresses.
- Significance threshold: from what amount or share of balance a transaction is considered a whale transaction.
- Event types: incoming and outgoing transfers, top-ups of exchange addresses, large swaps.
- Channels and speed: messenger, email, call to your server, acceptable signal delay.
- Priorities and noise protection: what we escalate immediately, what we collect into a summary, and who receives it.
- Access: public data or connection of your nodes and keys to providers.
- History: depth of event storage and export format for reporting.
Based on the results of the session, we return with an estimate of work and an implementation plan: stages, timelines, and areas of responsibility of the parties. Describe your task — we'll discuss it and build a scheme for your flows.







