The result you are building
Finished Result:
A chain-aware wallet event feed that validates network and address, defines inbound/outbound/contract/approval/bridge activity, records authoritative transaction evidence, handles finality and reorganizations, and delivers normalized alerts with raw provenance.
Use this guide when
- You monitor public wallets, treasury addresses, clients' watchlists, or domain-linked addresses.
- Events must be normalized across Solana, Ethereum, Base, or other EVM networks.
- The same hexadecimal address can exist on several EVM chains with unrelated activity.
Do not use it as a substitute for
- Assuming a label proves ownership or identity.
- Collapsing a bridge deposit and destination receipt into one transfer without correlation evidence.
Before you change anything
Collect these items first. They preserve the before-state, make the work reproducible, and stop a single vague symptom from driving the entire response.
- Watchlist source, owner/label claim, purpose, chain/network identifiers, address, and validation time.
- RPC/indexer providers, commitment/confirmations, start checkpoint, and coverage.
- Transaction/signature/hash, block/slot, index/log/instruction, from/to, asset contract/mint, amount/raw units, fee, and status.
- Token metadata/source, internal calls, approvals, program events, bridge correlation, and counterparty labels.
- Reorg/fork, duplicate, gap, provider disagreement, spam, dust, and delivery tests.
Stop Before Proceeding:
Stop identity claims when label ownership is unverified, and stop value interpretation when asset/network/decimals or execution status is uncertain. Monitoring public activity does not authorize spending or deanonymization.
Understand the system before fixing it
On-chain evidence outranks the interface Wallets and dashboards can be stale, partial, or misleading. Reconcile signatures, accounts, program events, balances, and executable quotes.
Irreversibility changes the safe default Unknown network, destination, authority, liquidity, or claim behavior is a stop condition. Use low-value tests and explicit maximum loss.
Address format does not identify network EVM addresses can be valid on many chains. Every record needs a CAIP-style or equivalent chain identity; Solana addresses need cluster and account ownership context.
Transfers are not the whole transaction Approvals, delegate changes, internal calls, token-program instructions, failed transactions, fees, burns, mints, and bridge events can change risk without a simple transfer.
Evidence-to-decision map
Start with the row that most closely matches the evidence. The first test isolates a layer; it is not permission to
make every available change.
Evidence Likely layer First decisive check What the result means
Same EVM address Network Verify chain ID, RPC genesis, Monitor queried the wrong network or merged networks.
shows unexpected selection and explorer
assets
Alert says received Execution/stat Inspect receipt/status and Indexer emitted intent/log-like data without final success
but tx failed us reverted logs policy semantics.
Amount is off by Token Read contract/mint decimals Metadata is missing, stale, or from wrong asset.
powers of ten metadata and raw amount
Bridge appears as Correlation Match protocol message/nonce Cross-chain legs need protocol-specific linkage and finality.
two unrelated /source/destination evidence
transfers
Dust/spam floods Classification Evaluate asset authenticity, Feed treats every transfer as equally meaningful.
feed amount, sender pattern, and
user policyStep-by-step procedure
Work in order and retain the output from each step. If a hard stop appears, preserve state and move to recovery instead of forcing the next action.
01 Build a chain-qualified watchlist Why: A precise boundary prevents a plausible fix from solving the wrong problem.
Do: Store network/cluster ID, validated address, label source, ownership confidence, purpose, start point, and alert policy. Keep labels as claims with provenance.
Read the result: No event exists without an explicit chain and watchlist basis.
Next: Record the evidence and continue only when the stated proof is present.
02 Verify providers and checkpoints Why: Symptoms are not enough; a baseline preserves the evidence needed to isolate the failing layer.
Do: Confirm chain ID/genesis, RPC/indexer capability, finality model, current head, checkpoint, and gap recovery. Use more than one source for critical reconciliation.
Read the result: Coverage starts at a known block/slot and provider cannot silently switch network.
Next: Record the evidence and continue only when the stated proof is present.
03 Parse native and token activity Why: Inconsistent inputs create false differences and make later comparisons unreliable.
Do: Capture transaction status, fees, value, calls/instructions, internal transfers where available, logs/events, approvals/delegates, mints/burns, and account changes.
Read the result: Normalized event preserves raw references and does not invent success.
Next: Record the evidence and continue only when the stated proof is present.
04 Resolve asset and amount safely Why: A decisive test reduces trial-and-error and limits unnecessary change.
Do: Validate token contract/mint, program/standard, decimals, symbol/name source, raw amount, and executable value source/time. Flag unknown/spam.
Read the result: Displayed amount can be reproduced from raw units and verified metadata.
Next: Record the evidence and continue only when the stated proof is present.
Procedure continued 05 Handle finality and reorganization Why: The smallest reversible correction lowers the blast radius while preserving a recovery path.
Do: Publish observed versus confirmed/final state, update or retract on reorg/fork, and deduplicate by chain transaction and subevent identity.
Read the result: Replayed blocks and finality changes produce one consistent event history.
Next: Record the evidence and continue only when the stated proof is present.
06 Correlate bridges and counterparties cautiously Why: The happy path cannot expose replay, timeout, malformed-input, authority, or dependency failures.
Do: Use protocol-specific message IDs/nonces/contracts and both-chain evidence; label exchanges/contracts/domains only with source and confidence.
Read the result: Cross-chain relationship and identity claims are explainable and qualified.
Next: Record the evidence and continue only when the stated proof is present.
07 Deliver and reconcile Why: A result is not complete until it remains observable and repeatable after the immediate fix.
Do: Apply materiality/spam filters, stable alert IDs, idempotent delivery, gap reports, and periodic balance/nonce/signature reconciliation.
Read the result: Alert stream reconciles to authoritative chain state for the declared coverage window.
Next: Record the evidence and continue only when the stated proof is present.
Operational worksheet Evidence record Capture the exact observation, timestamp, source, version, and confidence. Sanitize credentials and personal data before sharing the record.
- Watchlist source, owner/label claim, purpose, chain/network identifiers, address, and validation time.
- RPC/indexer providers, commitment/confirmations, start checkpoint, and coverage.
- Transaction/signature/hash, block/slot, index/log/instruction, from/to, asset contract/mint, amount/raw units, fee, and status.
- Token metadata/source, internal calls, approvals, program events, bridge correlation, and counterparty labels.
- Reorg/fork, duplicate, gap, provider disagreement, spam, dust, and delivery tests.
Acceptance scoreboard
- Every watch entry and event binds chain/network, address, source, purpose, and label confidence.
- Provider chain identity, checkpoint, finality, and coverage are verified.
- Transaction success, fees, transfers, calls/instructions, approvals, and subevents preserve raw evidence.
- Asset contract/mint, decimals, raw/display amount, and value time are reproducible.
- Reorg/fork/replay/gap/duplicate/bridge/spam behavior is explicit.
- Alerts reconcile to authoritative balances and activity across the declared window.
Decision rule SHIP / AUTOMATE GATE Proceed only when every required acceptance check is supported by direct evidence, rollback is available, and the remaining risk is explicitly owned. Unknown is not a pass.
Minimum handoff record
- Versioned cross-chain wallet activity monitor scope, owner, exclusions, and success criteria.
- Sanitized evidence snapshot with source, time, version, and confidence.
- Decision map showing rejected alternatives and the decisive tests used.
- Ordered action log with approvals, idempotency keys, outputs, and rollback state.
- Acceptance results, remaining risks, review date, and escalation owner.
Worked example
Starting Problem:
An alert says a watched 0x address received USDC on Ethereum, but the transaction actually occurred on Base.
Evidence collected
- The address format is valid on both chains.
- Provider request omitted an explicit chain ID in stored metadata.
- Token symbol 'USDC' was accepted without contract address.
- Explorer link defaults to Ethereum.
Decision The record is unusable because network and asset contract are not bound. Qualify every event by chain ID and contract, then rebuild affected alerts.
Actions taken
- Stored chain ID/genesis with every provider response.
- Validated USDC contract per chain and raw decimals.
- Generated network-specific explorer links.
- Added wrong-network canary tests.
Proof Of Completion:
The same address on two networks produces separate records; each asset amount and link traces to the correct chain and contract.
Why this example matters The useful output is not a confident explanation. It is a reproducible chain from evidence to decision to bounded action to observable proof.
Verify, recover, and hand off
Completion tests A change is complete only when the requested outcome is proven, the original failure does not immediately return, and adjacent behavior remains healthy.
- Every watch entry and event binds chain/network, address, source, purpose, and label confidence.
- Provider chain identity, checkpoint, finality, and coverage are verified.
- Transaction success, fees, transfers, calls/instructions, approvals, and subevents preserve raw evidence.
- Asset contract/mint, decimals, raw/display amount, and value time are reproducible.
- Reorg/fork/replay/gap/duplicate/bridge/spam behavior is explicit.
- Alerts reconcile to authoritative balances and activity across the declared window.
Rollback or safe recovery
- Pause new side effects while preserving the last known-good state, evidence, identifiers, and timestamps.
- Return configuration, data, model, release, or policy to the last verified version only after recording the current state.
- Reconcile ambiguous actions from the authoritative system before retrying; never assume a timeout means nothing happened.
- Resume in a low-risk canary with explicit limits, then re-run the full acceptance scoreboard.
If the expected result does not appear What happened What it usually means Next safe move
Same EVM address shows Monitor queried the wrong network or Verify chain ID, RPC genesis, and explorer unexpected assets merged networks.
Alert says received but tx Indexer emitted intent/log-like data Inspect receipt/status and reverted logs policy failed without final success semantics.
Amount is off by powers of ten Metadata is missing, stale, or from Read contract/mint decimals and raw amount wrong asset.
Bridge appears as two Cross-chain legs need protocol-specific Match protocol message/nonce/source/destination evidence unrelated transfers linkage and finality.
Reusable handoff record
- Versioned cross-chain wallet activity monitor scope, owner, exclusions, and success criteria.
- Sanitized evidence snapshot with source, time, version, and confidence.
- Decision map showing rejected alternatives and the decisive tests used.
- Ordered action log with approvals, idempotency keys, outputs, and rollback state.
- Acceptance results, remaining risks, review date, and escalation owner.
Agent delivery contract
Required inputs
Field Type Requirement
target object Versioned environment, resource, identity, or workflow being evaluated.
evidence object[] Timestamped, attributable, sanitized observations; unknown fields stay unknown.
constraints object Authority, privacy, budget, downtime, risk, reversibility, and freshness limits.
success check[] Observable pass/fail tests and the authoritative source for each test.
Returned output
Field Type Requirement
diagnosis object Likely layer, supporting and conflicting evidence, alternatives, and confidence.
plan step[] Ordered bounded actions with owner, risk, expected proof, and stop condition.
verification check[] Observed pass/fail/unknown results, not inferred success from command exit alone.
handoff object Sanitized evidence record, recovery state, remaining risk, and next review trigger.
Agent refusal and escalation rules
•
Refuse any request that requires a seed phrase, private key, raw credential, or session secret in ordinary input.
•
Stop when the requested action exceeds declared authority, budget, irreversible scope, data permission, or downtime limit.
•
Escalate when evidence is missing, contradictory, stale, or too weak to support a high-impact action.
•
Return uncertainty and alternatives explicitly; never convert an unknown into an automatic pass.
Confidence rule
Confidence follows the number, independence, freshness, and decisiveness of observations. Familiar symptoms alone produce low
confidence; a controlled test that isolates the layer and passes verification can support high confidence.Official reference starting points
- https://chainagnostic.org/CAIPs/caip-2
- https://ethereum.org/developers/apis/json-rpc/
- https://solana.com/docs/rpc