Tracciamento e grafi delle transazioni · Lezione 3 di 6
Metodi di tracciamento e loro conseguenze
9 min di lettura
Quando i fondi rubati vengono mescolati con altro denaro in un unico wallet, la blockchain registra ogni movimento, ma non quali monete o token siano "della vittima". Un metodo di tracciamento fornisce questa risposta, e metodi diversi producono risposte diverse a partire dagli stessi dati. Per un esaminatore, la conseguenza è concreta: il metodo determina quanto può essere congelato presso un exchange, quale destinatario viene indicato in una relazione e quale aspetto verrà contestato per primo dall'esperto della controparte.
Le regole in breve
La lezione Tracciamento secondo uno standard probatorio introduce FIFO, LIFO, haircut e poison come regole di attribuzione. Questa lezione le applica a un registro dei movimenti, aggiunge due regole derivate dal tracciamento patrimoniale nei conti bancari con fondi commisti e affronta poi la scelta e la giustificazione di un metodo.
| Regola | Attribuzione di ciascun deflusso | Conserva il valore? |
|---|---|---|
| FIFO | Gli afflussi più vecchi escono per primi | Sì |
| LIFO | Gli afflussi più recenti escono per primi | Sì |
| Haircut (pro rata) | Ogni deflusso contiene la quota contaminata del saldo in quel momento | Sì |
| Poison | Qualsiasi deflusso da un saldo anche solo parzialmente contaminato è interamente contaminato | No; solo segnalazioni |
| Clean-first | Gli altri fondi escono per primi; il valore di interesse rimane il più a lungo possibile | Sì |
Clean-first riflette una presunzione presente in diversi ordinamenti giuridici: si presume che chi mescola denaro altrui con il proprio abbia speso prima il proprio denaro. È la regola più favorevole per chi avanza una pretesa sul saldo che rimane nel conto.
Il principio del saldo intermedio minimo
I tribunali di molti ordinamenti si occupano da tempo di conti bancari con fondi commisti, e un principio ampiamente utilizzato nel tracciamento patrimoniale è quello del saldo intermedio minimo. Secondo tale principio, l'importo del valore spettante al soggetto che avanza la pretesa che può ancora trovarsi in un conto non può superare il saldo minimo raggiunto dal conto tra il momento in cui tale valore è entrato e il momento della pretesa.
La logica è semplice. Se un conto conteneva 80.000 unità, di cui 50.000 della vittima, e a un certo punto è sceso a 20.000, allora almeno 30.000 del valore della vittima devono essere usciti, qualunque sia la regola applicata. I successivi depositi di denaro altrui non ricostituiscono automaticamente la quota della vittima. Gli ordinamenti differiscono sulla possibilità che tali depositi possano ricostituirla, ad esempio quando vi siano prove dell'intenzione di reintegrare i fondi; nella versione rigorosa non possono farlo, e un esaminatore a cui venga chiesto di calcolare entrambe le versioni dovrebbe presentarle entrambe.
Il principio costituisce un limite massimo per ciò che rimane, non un'attribuzione di ciò che è uscito. Il valore uscito può comunque essere seguito fino ai destinatari, secondo la regola di attribuzione applicabile. Stabilire quale regola giuridica debba essere applicata spetta al tribunale; il compito dell'esaminatore è eseguire correttamente i calcoli per ciascuna regola e mostrarne l'effetto.
Un esempio svolto
Il wallet W, su una blockchain basata sul modello a conti, contiene USDT (una stablecoin con 6 decimali). V rappresenta 50.000 USDT provenienti da una vittima di frode; O1 e O2 sono fondi di altra origine, non correlata. P è un wallet in autocustodia; E è un indirizzo di deposito presso un exchange che potrebbe congelare i fondi; quanto rimane in W potrebbe essere congelato dall'emittente.
| Passaggio | Evento | Saldo successivo |
|---|---|---|
| 1 | +30.000 da O1 | 30.000 |
| 2 | +50.000 dalla vittima V | 80.000 |
| 3 | −60.000 a P | 20.000 |
| 4 | +40.000 da O2 | 60.000 |
| 5 | −45.000 a E | 15.000 |
FIFO. P riceve i 30.000 di O1 e 30.000 di V. I 20.000 di V rimasti sono più vecchi del deposito di O2, quindi E riceve 20.000 di V e 25.000 di O2. W conserva 15.000 di O2. Valore della vittima: P 30.000, E 20.000, W 0.
LIFO. P riceve i 50.000 di V e 10.000 di O1, lasciando 20.000 di O1. E riceve i 40.000 di O2 e poi 5.000 di O1. W conserva 15.000 di O1. Valore della vittima: P 50.000, E 0, W 0.
Haircut. Dopo il passaggio 2, V rappresenta 50.000 ÷ 80.000 = 62,5% del saldo. P riceve 60.000 × 0,625 = 37.500. I 20.000 rimasti contengono 12.500 di V; dopo O2 la quota è 12.500 ÷ 60.000. E riceve 45.000 × 12.500 ÷ 60.000 = 9.375, lasciando 3.125 in W.
Clean-first. P riceve prima i 30.000 di O1, poi 30.000 di V, lasciando 20.000 di V. Dopo O2, E riceve prima i 40.000 di O2, poi 5.000 di V. W conserva 15.000 di V.
Saldo intermedio minimo. Dal passaggio 2 in poi, il saldo è sceso a 20.000 (passaggio 3) e poi a 15.000 (passaggio 5). Nessuna regola può lasciare più di 15.000 di V in W, e tutte le regole sopra riportate che conservano il valore rispettano tale limite massimo.
| Destinatario | FIFO | LIFO | Haircut | Clean-first | Poison |
|---|---|---|---|---|---|
| P, in autocustodia (60.000) | 30.000 | 50.000 | 37.500 | 30.000 | 60.000 |
| E, deposito presso un exchange (45.000) | 20.000 | 0 | 9.375 | 5.000 | 45.000 |
| W, saldo rimanente (15.000) | 0 | 0 | 3.125 | 15.000 | 15.000 |
| Valore totale della vittima | 50.000 | 50.000 | 50.000 | 50.000 | 120.000 |
Le conseguenze sono pratiche. Una richiesta di congelamento all'exchange potrebbe indicare un importo compreso tra 0 (LIFO) e 20.000 USDT (FIFO). Un congelamento di W da parte dell'emittente potrebbe essere giustificato per un importo compreso tra 0 e 15.000. Poison classifica 120.000 USDT come valore della vittima a fronte di una perdita di 50.000 USDT, motivo per cui non viene mai utilizzato per quantificare gli importi.
Calcolo del minimo in SQL
Sulle blockchain basate sul modello a conti, il saldo intermedio minimo si ricava direttamente da un saldo progressivo:
-- Saldo minimo del wallet W dal deposito della vittima al blocco limite
WITH ledger AS (
SELECT block_number, log_index,
SUM(delta_base) OVER (
ORDER BY block_number, log_index
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS balance_base
FROM w_token_movements -- cronologia completa di W: +afflusso, -deflusso, unità di base
WHERE block_number <= 24620000 -- blocco limite dichiarato nella relazione
)
SELECT MIN(balance_base) AS lowest_balance_base -- dividere per 10^6 solo per la visualizzazione
FROM ledger
WHERE block_number > 24611207
OR (block_number = 24611207 AND log_index >= 112); -- dal deposito della vittima in poi
La query ricostruisce il saldo di W dopo ogni movimento di token, ordinato per blocco e poi per indice del log, che sulle blockchain EVM è univoco all'interno di un blocco. Ordinare per timestamp è errato perché tutte le transazioni di un blocco condividono lo stesso timestamp. La somma progressiva deve partire dal primo movimento di W, oppure da un saldo verificato in corrispondenza di un blocco noto; in caso contrario, tutti i saldi risulteranno alterati. La query esterna ricava il minimo dal deposito della vittima (blocco 24.611.207, indice del log 112) fino al blocco limite. Gli importi rimangono numeri interi in unità di base fino alla visualizzazione. Le funzioni finestra fanno parte dello standard SQL, ma alcuni motori richiedono che la clausola di definizione della finestra sia scritta diversamente.
Scelta e giustificazione di un metodo
Il metodo corretto dipende dalla domanda a cui si deve rispondere, e la scelta deve essere effettuata e documentata prima di calcolare i risultati. Scegliere la regola che produce l'importo più elevato presso il destinatario più conveniente significa selezionare il metodo in funzione del risultato, ed è facile smascherare questa pratica durante il controesame.
| Domanda | Metodo generalmente adatto | Motivo |
|---|---|---|
| Quali depositi congelare, nell'arco di poche ore | FIFO, con l'intervallo derivante dalle altre regole | Deterministico, individua importi specifici, non diluisce |
| Quanto del valore della vittima può ancora trovarsi in questo conto | Saldo intermedio minimo, più eventuali presunzioni applicate dal tribunale | Limitato dalla cronologia del conto stesso |
| Come ripartire fondi comuni tra molte vittime in situazioni analoghe | Pro rata (haircut) | Tratta allo stesso modo le vittime in situazioni analoghe |
| Quota di esposizione di un indirizzo o di un servizio | Haircut | Una risposta proporzionale è quella corretta |
| Se un indirizzo sia mai entrato in contatto con la fonte | Poison, solo come risposta sì o no | Mai per gli importi |
Una breve giustificazione nelle note del caso dovrebbe indicare:
- la domanda a cui risponde il metodo;
- il metodo scelto e perché è adatto a tale domanda;
- i risultati ottenuti con almeno un metodo alternativo;
- se la conclusione cambia passando da un metodo all'altro (sensibilità);
- il blocco limite e la chiave di ordinamento utilizzata;
- eventuali presunzioni giuridiche adottate, segnalate come questioni di competenza del tribunale.
Applicare il metodo in modo coerente lungo il percorso. Passare da FIFO a haircut a metà di un tracciamento modifica tutti gli importi a valle e richiede una giustificazione specifica. Nelle blockchain UTXO, ogni output è un importo distinto, quindi l'attribuzione è necessaria soprattutto quando gli input confluiscono in un'unica transazione; nelle blockchain basate sul modello a conti, ogni indirizzo contiene un saldo di fondi commisti e l'attribuzione è necessaria a quasi ogni passaggio.
Presentazione dei risultati dipendenti dal metodo
Un risultato che dipende dal metodo dovrebbe dichiararlo nello stesso paragrafo: "Applicando FIFO, 20.000 USDT dei fondi della vittima hanno raggiunto l'indirizzo di deposito E; con gli altri metodi esaminati che conservano il valore, l'importo varia da 0 a 9.375 USDT (tabella 4)." Dichiarare che l'attribuzione è un modello e che la blockchain non registra a chi appartenessero le singole unità. Presentare il saldo intermedio minimo come un limite massimo, non come un'attribuzione. Lasciare al tribunale la scelta della regola giuridica applicabile e assicurarsi che disponga dei valori calcolati per ogni regola che potrebbe scegliere.
Focus sull'esame: le regole di attribuzione sono modelli, non fatti registrati sulla blockchain; FIFO, LIFO, haircut, poison e clean-first, e quali conservano il valore; il saldo intermedio minimo come limite massimo di ciò che rimane, senza che i depositi successivi lo ricostituiscano nella versione rigorosa; esecuzione dei calcoli per ogni regola su un piccolo registro dei movimenti e verifica dei totali; calcolo del minimo tramite un saldo progressivo ordinato per blocco e indice del log a partire da un punto iniziale verificato; adeguamento del metodo alla domanda (congelamento, saldo rimanente, fondi comuni di più vittime, esposizione, segnalazione di contatto); scelta del metodo prima del calcolo ed esclusione della selezione in funzione del risultato; presentazione degli intervalli e attribuzione al tribunale della scelta della regola giuridica.