Cross-chain, DeFi e smart contract · Lezione 3 di 6
Chain-hopping e tracciamento cross-chain
14 min di lettura
I fondi rubati e di origine criminale attraversano oggi diverse blockchain nel giro di poche ore, e ogni passaggio sposta le prove su un registro diverso, spesso presso un diverso detentore dei dati in un altro Paese. Due registri non condividono alcun arco transazionale: il tracciamento cross-chain consiste quindi nel ricollegare i rispettivi dati e nel dichiarare con trasparenza quanto sia solido ciascun collegamento. È anche una corsa contro il tempo: ogni passaggio aggiunge un problema di abbinamento, dati da preservare e un collegamento di cui occorre dichiarare la solidità. Gli swap e gli exchange istantanei sono trattati nella Lezione 5.2; i bridge, i rollup e altre architetture di blockchain nella Lezione 5.4. Questa lezione tratta lo schema operativo, la classificazione dei collegamenti cross-chain, l'abbinamento in assenza di un identificatore e le modalità per documentare e gestire un caso multichain.
Perché gli autori di reato effettuano passaggi tra blockchain
Il chain-hopping è lo spostamento di valore tra blockchain o tipi di asset, tramite bridge, swap o servizi di exchange, con l'effetto (e spesso lo scopo) di rendere più difficile seguire il percorso dei fondi. Gli autori di reato effettuano questi passaggi per diverse ragioni, solitamente contemporanee:
- Interrompere il grafo. Ogni passaggio obbliga l'investigatore a stabilire un collegamento che uno strumento dedicato a una sola blockchain non traccerà automaticamente; inoltre, alcuni strumenti coprono solo determinate blockchain e determinati bridge.
- Abbandonare asset congelabili. Gli emittenti di stablecoin possono congelare i token presso un indirizzo (Lezione 10.1), quindi i ladri che detengono stablecoin spesso le scambiano con un asset nativo nel giro di pochi minuti. Avviene anche il contrario: i fondi vengono convertiti in stablecoin su una blockchain a basse commissioni subito prima della monetizzazione, perché è lì che si trovano intermediari e acquirenti.
- Raggiungere liquidità e canali di uscita. Gli importi elevati richiedono mercati profondi, e i canali di monetizzazione (intermediari OTC, venditori peer-to-peer, exchange con controlli deboli) privilegiano determinate blockchain e determinati asset.
- Frammentare la giurisdizione. Un percorso che coinvolge il front-end di un bridge in un Paese, un servizio di exchange istantaneo in un secondo e un exchange in un terzo richiede tre serie di richieste legali, ciascuna con i propri tempi di attesa (Lezione 1.3).
- Raggiungere sistemi di tutela della riservatezza. Alcuni passaggi terminano in una privacy coin o in un mixer (Modulo 6).
Il chain-hopping non costituisce di per sé prova di reato: gli utenti comuni utilizzano i bridge per risparmiare sulle commissioni o cercare rendimenti. Il rapporto FATF Indicatori di allarme relativi agli asset virtuali per il riciclaggio di denaro e il finanziamento del terrorismo (settembre 2020) considera indicatori di allarme le transazioni che utilizzano più di un tipo di asset virtuale nonostante le commissioni aggiuntive e le conversioni di importi elevati tra tipi di asset prive di una spiegazione commerciale logica. L'indicatore è dato dalla combinazione di velocità, costo, assenza di finalità economica e origine criminale.
Sequenze tipiche
Dopo il furto al bridge Ronin del marzo 2022, un'analisi pubblica di una società di sicurezza ha descritto il passaggio degli ETH rubati attraverso un mixer basato su smart contract, il loro scambio su DEX con un token ancorato a bitcoin, il trasferimento tramite bridge alla rete Bitcoin e la riconversione in BTC, prima che una parte transitasse attraverso mixer di bitcoin con custodia. Dopo il furto di circa 1,5 miliardi di dollari all'exchange Bybit nel febbraio 2025, una stima pubblicata il 27 febbraio 2025 dalla ricercatrice di sicurezza Taylor Monahan ha conteggiato almeno 161.490 ETH trasferiti attraverso il protocollo di swap cross-chain THORChain in 3.934 transazioni nell'arco di circa cinque giorni; l'aggiornamento del 4 marzo 2025 pubblicato dalla stessa vittima ha riferito che circa il 72% degli ether rubati (361.255 ETH) era transitato attraverso THORChain e circa l'83% (417.348 ETH) era stato convertito in bitcoin.
Una sequenza generica di riciclaggio per un furto o una truffa:
| Fase | Operazione tipica | Scopo per l'autore del reato |
|---|---|---|
| 1 | Scambio di un token congelabile con un asset nativo su un DEX | Evitare i congelamenti da parte dell'emittente |
| 2 | Trasferimento dell'asset nativo tramite bridge verso un rollup o un'altra blockchain | Interrompere il grafo, ridurre le commissioni |
| 3 | Swap o trasferimento tramite bridge verso una diversa famiglia di asset (ad esempio, da ETH a BTC) | Cambiare registro e strumenti di analisi |
| 4 | Servizio di exchange istantaneo o mixer | Inserire un'interruzione dovuta alla custodia o alla commistione dei fondi |
| 5 | Conversione in una stablecoin su una blockchain a basse commissioni | Raggiungere intermediari e acquirenti |
| 6 | Deposito presso un exchange, un desk OTC o un venditore peer-to-peer | Convertire in valuta fiat |
Cambiamenti di forma su una sola blockchain
Prima di lasciare una blockchain, i fondi cambiano spesso forma e ogni cambiamento deve essere documentato con il relativo tasso. Uno swap su DEX è un collegamento deterministico all'interno di una sola transazione, ma il tracciamento deve passare a un altro asset (Lezione 5.2). Gli asset wrapped rappresentano un asset in un'altra forma. WETH rappresenta ETH in forma wrapped sulla stessa Ethereum: il contratto WETH emette un evento Deposit quando gli ETH entrano e un evento Withdrawal quando escono, con un rapporto di uno a uno. I token bitcoin wrapped su Ethereum vengono emessi e distrutti da un custode o da un bridge, quindi il collegamento con i bitcoin effettivi passa attraverso i dati di quell'emittente, non attraverso una delle due blockchain. Versioni dello stesso token trasferite tramite bridge possono coesistere su una rete con indirizzi di contratto diversi: occorre quindi identificare sempre un token mediante il suo indirizzo di contratto, mai mediante il simbolo.
Classificazione dei collegamenti cross-chain
All'interno di una blockchain, un output speso o un evento di trasferimento è un fatto certo. Tra blockchain non esiste un arco condiviso, quindi ogni collegamento poggia su uno dei tre fondamenti seguenti:
| Fondamento | Cosa collega i due lati | Esempio | Grado (scala della Lezione 3.2) |
|---|---|---|---|
| Deterministico | Il protocollo scrive un identificatore condiviso, o la destinazione, su entrambi i lati | ID del deposito sul bridge o sequenza del messaggio negli eventi di origine e destinazione; un memo di swap che indica il destinatario, a cui corrisponde un memo in uscita che indica l'hash in entrata | A, una volta verificato su entrambe le blockchain |
| Documentato dal protocollo | I dati del servizio, pubblici o forniti, associano entrata e uscita | API di un protocollo di swap che elenca ogni hash in entrata con il relativo hash in uscita; registrazioni di esecuzione di un operatore | B, una volta verificato rispetto a entrambe le blockchain |
| Probabilistico | Dedotto da importo, tempo e comportamento | Un deposito presso un servizio di exchange istantaneo e un pagamento di valore simile pochi minuti dopo su un'altra blockchain | D finché i dati non lo confermano |
Un percorso è solido solo quanto il suo collegamento più debole. Applicando questo principio ai tipi di passaggio più comuni:
| Tipo di passaggio | Fondamento del collegamento | Chi può detenere i dati |
|---|---|---|
| Swap su DEX su una sola blockchain | Deterministico | Solitamente nessuno; gli operatori del front-end o dell'aggregatore possono detenere log |
| Bridge con un identificatore del messaggio | Deterministico | Operatore del bridge, relayer, front-end |
| Protocollo di swap cross-chain con memo | Documentato dal protocollo; deterministico quando entrambi i memo sono verificati on-chain | Dati pubblici del protocollo; operatori delle interfacce |
| Bridge di liquidità o esecuzione rapida | Deterministico se l'ID del deposito viene riportato nell'esecuzione; altrimenti probabilistico | Operatore del bridge, relayer |
| Servizio di exchange istantaneo | Probabilistico fino alla ricezione dei dati | Il servizio (ordine, pagamento, dati IP) |
| Exchange o desk OTC | Probabilistico on-chain; documentale sulla base dei dati | L'exchange o il desk (KYC, registro del conto) |
Ne derivano tre conseguenze pratiche. In primo luogo, quando l'indirizzo di destinazione è scritto nella transazione di origine (un campo destinatario del bridge, un memo di swap), il collegamento non dipende affatto dall'abbinamento: occorre leggere l'evento di origine, individuare i campi relativi all'identificatore e alla destinazione e cercare lo stesso identificatore sulla blockchain di destinazione prima di effettuare una ricerca per importo (la Lezione 5.4 illustra i passaggi per l'abbinamento nei bridge). In secondo luogo, un passaggio attraverso un servizio con custodia conclude il percorso on-chain sul lato del deposito (Lezione 3.4); ciò che esce costituisce un nuovo percorso che deve essere collegato mediante dati o un'inferenza esplicita. In terzo luogo, occorre documentare il cambiamento di asset a ogni passaggio, con il tasso e la fonte del prezzo, perché gli importi cambiano forma oltre che registro.
Abbinamento per importo e tempo
Quando nessun identificatore collega i due lati, occorre cercare candidati sulla blockchain di destinazione e la finestra di ricerca deve dipendere dal meccanismo, non dall'abitudine.
Finestre temporali. Gli intervalli tra i blocchi variano da molto meno di un secondo a circa dieci minuti, e i ritardi differiscono in base al meccanismo: da pochi secondi a qualche minuto per un'esecuzione da parte di un relayer, alcuni minuti per un bridge che attende la finalità della blockchain di origine, circa una settimana per un prelievo canonico da un rollup ottimistico e da alcuni minuti a ore per un servizio di exchange istantaneo, a seconda della sua politica di conferma e della coda. Occorre convertire ogni timestamp in UTC, registrare le altezze dei blocchi su entrambe le blockchain e tenere conto delle differenze tra gli orologi nei dati interni dei servizi.
Intervalli di importo. L'importo in uscita atteso è pari all'importo in entrata moltiplicato per il tasso di cambio, meno la commissione del servizio e le commissioni di rete su entrambi i lati. Occorre calcolare un intervallo, non un valore puntuale: il tasso al momento del deposito e quello al momento del pagamento possono differire, e alcuni servizi quotano un tasso fisso per un breve periodo. Occorre registrare la fonte del prezzo e l'ora di ogni quotazione.
Un esempio svolto
Un wallet oggetto di indagine invia 2,00000000 BTC a un indirizzo di deposito di un exchange istantaneo alle 14:02 UTC. In quel momento, 1 BTC = 60.000 USD e 1 ETH = 2.400 USD, quindi 2 BTC valgono 50 ETH. Considerando una commissione del servizio compresa tra lo 0,5% e l'1%, oltre ai costi di rete, il pagamento atteso è compreso approssimativamente tra 49,4 e 49,75 ETH. La query elenca i pagamenti in ETH del servizio nell'ora successiva, all'interno di una fascia del 5% al di sotto di 50 ETH:
-- service_outflows_eth: tabella del caso con i pagamenti in ETH del servizio, ricavata da
-- transazioni e tracce, con il valore convertito da wei a ETH
SELECT o.transaction_hash, o.to_address, o.block_timestamp, o.amount_eth,
ABS(o.amount_eth - 49.6) / 49.6 AS rel_gap -- scostamento dal valore atteso
FROM service_outflows_eth o
WHERE o.block_timestamp >= TIMESTAMP '2026-05-11 14:02:00'
AND o.block_timestamp < TIMESTAMP '2026-05-11 15:02:00'
AND o.amount_eth BETWEEN 47.5 AND 50.0 -- fascia del 5% al di sotto di 50 ETH
ORDER BY rel_gap;
Restituisce quattro pagamenti: 49,61 ETH alle 14:19, 49,58 ETH alle 14:51, 49,20 ETH alle 14:33 e 48,95 ETH alle 14:48. I primi due rientrano nell'intervallo atteso; gli ultimi due no. L'abbinamento ha ridotto i candidati da quattro a due, ma non ha prodotto un collegamento. Ulteriori elementi probatori possono distinguerli: uno dei destinatari invia successivamente fondi a un indirizzo di deposito di un exchange già utilizzato dal soggetto? Condivide fonti di finanziamento del gas o abitudini temporali con i wallet noti del soggetto? Ogni fatto indipendente rafforza o indebolisce un candidato.
Quantificare e difendere l'abbinamento
I collegamenti probabilistici richiedono numeri, non soltanto aggettivi:
- Dimensione dell'insieme dei candidati: quanti pagamenti rientrano nella finestra e nella fascia. Un candidato su quattro è molto diverso da uno su quaranta.
- Tasso di corrispondenza casuale: applicare la stessa regola a un campione di depositi non correlati presso lo stesso servizio in momenti casuali. Se anche il 60% dei depositi casuali trova una "corrispondenza", una corrispondenza costituisce un elemento probatorio debole; se la trova il 2%, è forte.
- Sensibilità: ampliare e restringere la finestra e la fascia. Un collegamento che emerge solo con un'impostazione ristretta specifica è fragile.
- Riscontro: contare i segnali indipendenti (importo, tempistica, comportamento della destinazione, successiva convergenza con wallet noti) e annotare quelli che contraddicono il collegamento.
Occorre annotare la finestra e la fascia, e le relative motivazioni, prima di eseguire la ricerca: una corrispondenza trovata solo dopo aver adattato la finestra per farla coincidere ha scarso valore in tribunale. Occorre poi esprimere il risultato con un linguaggio calibrato (Lezione 9.2), mantenere visivamente distinti nei diagrammi i collegamenti deterministici e probabilistici (archi continui e tratteggiati, Lezione 9.3) ed elencare identificatori e query in un'appendice, affinché il percorso possa essere ricostruito su entrambe le blockchain.
Documentare ogni passaggio
Ogni passaggio merita una registrazione strutturata nel fascicolo del caso, conservata con le note di lavoro e sottoposta a hashing insieme agli altri reperti (Lezione 8.3). Un esempio fittizio:
{
"hop_id": "H-04",
"type": "bridge_liquidity_fill",
"source": {"chain_id": 1, "txid": "0x5e2a…c71d", "log_index": 212,
"block": 25466930, "block_hash": "0x8b41…e02f",
"time_utc": "2026-06-16T02:58:11Z", "asset": "ETH",
"amount_wei": "600000000000000000000"},
"destination": {"chain_id": 42161, "txid": "0x91bf…04ae", "log_index": 7,
"block": 483120877, "block_hash": "0x2d7c…91a4",
"time_utc": "2026-06-16T02:58:47Z", "asset": "ETH",
"amount_wei": "599640000000000000000"},
"link_key": {"origin_chain_id": 1, "deposit_id": "1840221"},
"grades": {"flow": "A", "basis": "chiave condivisa verificata su entrambe le blockchain"},
"fee_explained": "commissione del relayer di 0,36 ETH indicata nell'evento di deposito",
"sources": ["nodo archivio proprio (ETH)", "RPC del fornitore (ARB), verificato su explorer"],
"records_to_request": ["front-end del bridge: log API e IP, indirizzo del depositante"],
"examiner": "EX-07", "recorded_utc": "2026-06-16T09:40:00Z"
}
La registrazione identifica entrambi i lati mediante ID della blockchain, hash della transazione, indice del log, altezza e hash del blocco, ora UTC, asset e importo in unità di base intere; la chiave che li collega; il grado e il relativo fondamento; una spiegazione della differenza di importo (600 − 599,64 = 0,36 ETH); la provenienza dei dati; e quali dati potrebbero confermare o estendere il passaggio. Una differenza di importo non spiegata o una fonte dei dati mancante è una debolezza che la difesa individuerà: la registrazione obbliga quindi ad affrontare entrambi gli aspetti sul momento. Per un passaggio probabilistico, la stessa registrazione contiene la finestra, la fascia, il numero di candidati e il tasso di corrispondenza casuale al posto della chiave di collegamento.
Lavorare contro il tempo
Gli autori di reato si muovono nell'arco di ore e le procedure legali richiedono giorni, quindi il piano per un caso multichain procede in parallelo:
- Mappare i passaggi già visibili e stabilire per ciascuno chi potrebbe detenere i dati: operatori e front-end dei bridge, relayer, operatori delle interfacce indicati nei campi di affiliazione degli swap, servizi di exchange istantaneo, exchange.
- Inviare richieste di conservazione a tutti contemporaneamente, non una dopo l'altra (Lezione 1.4).
- Monitorare i saldi non movimentati. Un indirizzo inattivo su una blockchain potrebbe essere il prossimo passaggio di domani, e un prelievo che richiederà giorni per essere completato offre il tempo di avvisare il servizio ricevente (Lezione 5.4).
- Separare i passaggi dimostrati da quelli dedotti in ogni relazione provvisoria, perché le prime relazioni sono spesso ciò che viene successivamente divulgato.
Focus sull'esame: perché gli autori di reato effettuano passaggi tra blockchain (interrompere il grafo, abbandonare asset congelabili, raggiungere liquidità, frammentare la giurisdizione, raggiungere sistemi di tutela della riservatezza) e perché un passaggio, da solo, non costituisce prova di reato; gli indicatori di allarme FATF del 2020 relativi all'utilizzo di più tipi di asset e alle conversioni prive di finalità commerciale; sequenze tipiche e schemi Ronin e Bybit; Deposit e Withdrawal di WETH, token wrapped emessi da custodi e identificazione dei token mediante indirizzo di contratto; collegamenti deterministici, documentati dal protocollo e probabilistici, relativi gradi e regola del collegamento più debole; lettura dell'evento di origine prima dell'abbinamento per importo; passaggi con custodia che concludono il percorso on-chain; definizione di finestre temporali e intervalli di importo in base al meccanismo e alle commissioni; esempio svolto di importo e tempo; dimensione dell'insieme dei candidati, tasso di corrispondenza casuale, sensibilità e riscontro; contenuto di una registrazione di passaggio; richieste di conservazione in parallelo.