GateTrace: funds tracing from public data
Observed transfers 1–3 hops around one transaction, from public RPC and Blockscout only, with no attribution.
Start free sandboxTalk to us50 screenings a month free, no card.
On this page
GateTrace in simple terms
Pick one transaction and GateTrace shows where the money came from and where it went next, one to three steps away, using public blockchain data only.
Every step has a link to a public explorer, so a reviewer can click and check it. It does not claim to know who owns each wallet.
IN EVERYDAY TERMSThink of a parcel's tracking history followed back a few stops. You see every stop, but nobody pretends to know who packed the box.
What it does
GateTrace shows the observed transfers around one transaction, one to three hops backward, forward or both, using public RPC and Blockscout only. The result is a small graph: nodes, edges with explorer links, amount-weighted paths, and the reason each path stopped: a label, the hop limit, the budget, or dust.
Your own registered wallets appear as labels. On chains with a public Blockscout, nodes you did not label may also carry the explorer's own public tag, contract name, token name or ENS name. These are marked "public", with the source (blockscout:<host>) and fetch time on the node. KYTGate does not verify them, and they are never part of a decision or of the trace's expansion. Every result carries caveats, which are meant to be shown to the reviewer.
Why a broker needs it
A reviewer looking at a REVIEW case wants to see where the funds came from before deciding. Commercial tracing tools answer with attribution the broker cannot verify. A trace built from public data shows facts the reviewer can click through to an explorer. It claims less, but every step can be checked and put in the file.
How it works
GET /api/v1/trace?chain=ethereum&txHash=0x…&hops=1..3&direction=backward|forward|both. Transfers are read from the chain and from Blockscout's transfer index, followed hop by hop within a fixed budget, and de-duplicated into nodes and edges. Paths stop at a labelled wallet, at the hop limit, when the budget is spent, or when the amount falls below the dust threshold; each stop reason is returned.
What it does not do
KYTGate does no exchange, mixer or entity attribution, because public data cannot support it. A public label is the explorer's claim, shown with its source, not ours. GateTrace does not follow funds across chains or through bridges, does not score the graph, and does not run on every screening. It is called on demand for the transaction a reviewer is looking at.
API
GET /api/v1/trace?chain=ethereum&txHash=0x…&hops=2&direction=backward
{
"root": { "txHash": "0x…", "from": "0x…", "to": "0x…", "token": "…", "amount": "…", "amountUsd": … },
"nodes": [ { "id": "0x…", "kind": "address", "label": "…", "labelKind": "public", "labelSource": "blockscout:eth.blockscout.com", "labelFetchedAt": "…", "expanded": true, "truncated": false }, … ],
"edges": [ { "from": "0x…", "to": "0x…", "txHash": "0x…", "symbol": "USDT", "amount": "…", "hop": 1, "explorerUrl": "https://…" }, … ],
"paths": [ { "addresses": ["0x…", "0x…"], "hops": 2, "endsAt": "label" | "hopLimit" | "budget" | "dust" } ],
"stats": { "rpcCalls": 41, "budgetExceeded": false, "dustDropped": 3, "fanOutTruncated": 0, "durationMs": … },
"caveats": [ "…" ]
}Full reference: /docs#trace · OpenAPI 3.1