Saylor InnovationsSAYLOR INNOVATIONS

Home / Guides / Wallets & Self-Custody

Cross-Chain Wallet Activity Monitor

Wallets & Self-Custody advanced 9 min read Free Updated 2026-08-23

Method for monitoring authorized wallet activity across Solana and EVM networks: normalize events from chain-specific formats into one comparable model, filter for materiality instead of alerting on every transaction, and reconcile activity across chains to a single accurate view of wallet state.

Watching your own wallets across Solana and EVM chains sounds simple until you're drowning in false alerts or missing the one transaction that actually mattered. This tracks authorized wallet activity across chains without either failure mode.
Interactive resolver

What are you seeing?

Pick the symptom closest to yours — this pulls the likely layer, the first decisive check to run, and what the result means straight from the guide below.

Pick a symptom above to see the match.

Track authorized public wallet activity across Solana and EVM networks without confusing chain identity, internal calls, token contracts, bridge steps, confirmations, or address labels.

The result you're building

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

EvidenceLikely layerFirst decisive checkWhat the result means
Same EVM address shows unexpected assetsNetwork selectionVerify chain ID, RPC genesis, and explorerMonitor queried the wrong network or merged networks.
Alert says received but tx failedExecution/statusInspect receipt/status and reverted logs policyIndexer emitted intent/log-like data without final success semantics.
Amount is off by powers of tenToken metadataRead contract/mint decimals and raw amountMetadata is missing, stale, or from wrong asset.
Bridge appears as two unrelated transfersCorrelationMatch protocol message/nonce /source/destination evidenceCross-chain legs need protocol-specific linkage and finality.
Dust/spam floods feedClassificationEvaluate asset authenticity, amount, sender pattern, and user policyFeed treats every transfer as equally meaningful.

Step-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.

Step 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.

Step 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.

Step 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.

Step 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.

Step 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.

Step 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.

Step 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.
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 happenedWhat it usually meansNext safe move
Same EVM address shows unexpected assetsMonitor queried the wrong network or merged networks.Verify chain ID, RPC genesis, and explorer
Alert says received but tx failedIndexer emitted intent/log-like data without final success semantics.Inspect receipt/status and reverted logs policy
Amount is off by powers of tenMetadata is missing, stale, or from wrong asset.Read contract/mint decimals and raw amount
Bridge appears as two unrelated transfersCross-chain legs need protocol-specific linkage and finality.Match protocol message/nonce/source/destination evidence

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

Commercial boundary: Human-readable use remains free. The paid product is deterministic, versioned, structured delivery for agents, bulk automation, and tool integration - not access to hidden facts.

Required inputs

FieldTypeRequirement
targetobjectVersioned environment, resource, identity, or workflow being evaluated.
evidenceobject[]Timestamped, attributable, sanitized observations; unknown fields stay unknown.
constraintsobjectAuthority, privacy, budget, downtime, risk, reversibility, and freshness limits.
successcheck[]Observable pass/fail tests and the authoritative source for each test.

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.

Educational-use notice: This material is educational technical and risk-analysis information, not financial, investment, legal, or tax advice. Blockchain transactions can be irreversible, prices and displayed balances can be stale, and no checklist can guarantee safety or profit.

Official reference starting points