Most indexers give you event logs. SQD gives you logs, internal calls, delegate calls, and state diffs together, the full execution footprint of a transaction. The hops a log-only feed cannot see, internal value and storage writes, are exactly the ones an investigation cares about. SQD is the data layer beneath your KYT or screening stack, not the screening itself.
Every internal call, delegate call, and CREATE, not just the top-level transaction. When funds route through four intermediate contracts, all four hops are traces you follow by callTo and callFrom; a transactions-only view sees only the first.
See exactly which storage slots changed and their before and after values. Reconstruct flows that bypass Transfer events entirely, an internal-ledger contract that moves value by writing storage directly, which event-only indexers are blind to.
The same query shape runs on 225+ networks. Following funds onto another chain is a one-line dataset change, not a separate integration per chain, with full history from genesis.
Structured, timestamped, decoded records, every field typed, every timestamp in UTC, streamed into your own store via the Squid or Pipes SDK. Feed them to an AML, KYT, or screening system; attribution and risk scoring stay with those tools.
A log is written only when a contract's code emits one. Native value (ETH) moving emits no Transfer log; value moved by a contract mid-execution (an internal call) emits no log; and a contract can change balances by writing storage directly, with no event at all. Monitoring built on logs alone is blind to all three, which are exactly the paths used to obscure a flow of funds.
The gap is measurable. Filtering transactions by recipient looks like it captures everything that touched an address, but it misses every internal call that reached it through another contract. Over 20 Ethereum blocks (19,000,000 to 19,000,020), the WETH contract was the top-level recipient of 29 transactions but appeared in 2,370 internal-call traces:
The fix is to query traces, not transactions. This filter catches an address whether it received or sent value, at any depth, and joins each hop back to its transaction:
traceAddress places each hop in the call tree; callValue is the value moved; callCallType separates a call from a delegatecall. Traces carry a transactionIndex, not a hash, so the query joins the transaction to tie each hop to one.
The hardest movements to follow leave no value-bearing call at all: a contract that maintains an internal balance ledger and moves funds by writing a storage slot. A state diff records which slots a transaction changed, with the previous and next value, the lowest-level evidence of what a transaction did. One real row that comes back, a USDC balance moving:
Decoded, that is a 500 USDC transfer recorded as a storage write. Follow callValue through the traces and nothing moves here, because a token transfer carries no ETH, so the amount lives only in this diff. State diffs ride on a transactions query, the only filter that joins traces, logs, and diffs together for a transaction's complete footprint. The full walkthrough is in the compliance data guide.
The onchain record: logs, traces, and state diffs for a transaction, decoded and joined under one hash, across 225+ networks from genesis. Streamed into your own store via the Squid or Pipes SDK, ready to feed an AML, KYT, or screening system as structured, timestamped records.
Attribution (linking an address to a real-world entity), risk scoring, sanctions lists, and Travel Rule message exchange. Onchain data shows what an address did, not who controls it. Chainalysis, Elliptic, and TRM Labs add attribution and risk scoring on top of the onchain record, and that screening is only as good as how complete the record is, which is what the traces and state diffs above make complete.
Each of these runs on the same SQD data layer.
A DEX swap settles its token movement in nested internal calls; an event-log-only feed sees the receipt, not the execution.
SQD sits at the extract-and-decode end of the analytics pipeline.
A raw event log is hex-encoded topics and data.
Query any address and get its history: token transfers, native and internal value, NFT movements, and contract calls, across 225+ networks through one query shape.
Onchain, every stablecoin movement is a Transfer event: a mint is a transfer from the zero address, a burn is a transfer to it, a payment is one between two wallets.
A tokenized treasury fund is a regulated security that lives on a public chain.
Bitcoin inputs and outputs are first-class in the same declarative query shape, so you trace UTXO flows from sender to recipient without running a node.
How an agent triages a wallet, follows the trace, and cites block-level evidence at each hop, with an investigation envelope that names the next step.
Transaction traces, state diffs, attribution data, and the chain-of-custody requirements regulated entities work with. What goes into a Travel Rule submission.
Private Portal. Dedicated. Validated. Managed. Tell us what you're building, we'll show you what it looks like on SQD.