Autore: 0xB10C Compilatore: Songxue, Golden Finance

Il mio progetto, miningpool-observer, mira a rilevare quando i pool minerari Bitcoin non effettuano transazioni che potrebbero avere. Nelle ultime settimane sono state rilevate sei spese di transazione mancanti provenienti da indirizzi approvati dall'OFAC. Questo articolo esplora se queste transazioni sono state filtrate intenzionalmente perché sono state spese da indirizzi approvati dall'OFAC o se esistono altre possibili spiegazioni sul motivo per cui queste transazioni mancavano dal blocco. La mia conclusione è che quattro delle transazioni potrebbero essere state filtrate.

A settembre e ottobre 2023, il feed RSS per l'istanza dell'osservatore del mio pool minerario ha segnalato che mancavano 6 blocchi di transazioni approvate dall'OFAC. Uno dei blocchi è stato estratto dalla mining pool ViaBTC, un altro dalla mining pool Foundry USA e gli altri quattro dalla mining pool F2Pool. Una transazione approvata dall'OFAC è una transazione in cui un esborso o un pagamento viene effettuato da un indirizzo approvato dall'Ufficio di controllo dei beni esteri del Dipartimento del Tesoro degli Stati Uniti. Mantengo uno strumento che estrae un elenco di indirizzi riconosciuti dall'OFAC dall'elenco Specially Designated Nationals (SDN) pubblicato dall'OFAC.

Esistono diversi motivi per cui le transazioni potrebbero mancare in un blocco. In generale, le transazioni non sono distribuite uniformemente sulla rete e non esiste un mempool globale da cui selezionare le transazioni. Ogni nodo ha il proprio insieme di transazioni valide. I pool minerari possono anche dare priorità alle transazioni che ricevono pagamenti fuori banda. Tuttavia, può anche ridurre la priorità o filtrare le transazioni.

L'obiettivo qui è determinare se il pool minerario ha filtrato una di queste sei transazioni approvate dall'OFAC o se ci sono altre possibili spiegazioni per la loro mancata apparizione nel blocco. Tieni presente che i pool minerari sono liberi di scegliere quali transazioni includere e quali escludere. Tuttavia, per analizzare le proprietà di resistenza alla censura di Bitcoin, è fondamentale capire quali e quanti pool minerari filtrano le transazioni.

Concludo che i rapporti di miningpool-observer indicano che le transazioni sanzionate mancanti dai blocchi ViaBTC e Foundry sono molto probabilmente falsi positivi e non il risultato di un filtraggio. Tuttavia, le transazioni mancanti dal blocco F2Pool potrebbero essere state filtrate.

Tramite blocco BTC 808660

Il blocco 808660..866c79c52 è stato estratto da ViaBTC il 21 settembre 2023 e non contiene la transazione 262025e7.. Questa transazione combina 100 input in un output. L'output di uno di questi input viene pagato a 1ECeZBxCVJ8Wm2JSN3Cyc6rge2gnvD3W5K. L'indirizzo è stato aggiunto all'elenco SDN dell'OFAC il 21 settembre 2021.

La dimensione della transazione è di 14,7 kvB e la tariffa pagata è di 25,18 sat/vByte. L'output speso dall'indirizzo sanzionato è di 0,0002 BTC (20k sat) ed è stato creato il giorno prima. Quando ViaBTC ha estratto il blocco 808660, la transazione è rimasta nel mempool del mio nodo per circa 75 minuti. Non ha dipendenze dalle transazioni mempool.

Distribuzione della tariffa in modelli e blocchi

Assegnazione della tariffa per i blocchi e modello per il blocco 808660. Schermata da Miningpool.observer.

Controllando la distribuzione delle tariffe per il blocco 808660 su Miningpool.observer, si scopre che ViaBTC occupa circa 1 MWU di spazio di blocco (4 MWU in totale) e ha transazioni prioritarie. Questi possono provenire dall'acceleratore di trading Bitcoin ViaBTC. Dare la priorità a determinate transazioni significa che le transazioni con commissioni più basse (come le spese di transazione da indirizzi sanzionati qui) non entrano nel blocco. Per questo blocco ViaBTC, l'istanza dell'osservatore del mio pool minerario elenca 24 grandi transazioni unite alla fine del modello che non sono state inserite nel blocco.

Elenco mancante di transazioni unite di grandi dimensioni nel blocco 808660

La conclusione tratta da ciò è che ViaBTC non ha filtrato questa transazione. È sostituito da altri accordi prioritari. Ciò è stato dimostrato dal fatto che tre giorni dopo ViaBTC ha minato una transazione che ha speso output dallo stesso indirizzo sanzionato nel blocco 809181.

Blocco 813231 da Foundry USA

Il blocco 813231..0a8528b6 è stato estratto da Foundry USA il 21 ottobre 2023 e non contiene la transazione c9b57191.. Questa transazione combina 150 input in un output. L'output di uno degli input viene pagato a 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML. L'indirizzo è stato aggiunto all'elenco SDN dell'OFAC il 14 aprile 2023.

Poiché la maggior parte dei 150 input sono script P2SH multifirma 2 su 3, le transazioni mancanti sono grandi e raggiungono 43842 vByte. Paga 5,09 sat/vByte e non si basa su transazioni in-mempool. Nel modello creato dal mio nodo Bitcoin Core, questo tasso è sufficiente per classificarlo al 161esimo posto su 2215 transazioni. Tuttavia, quando ho saputo del blocco 812331 di Foundry USA, quella transazione, insieme ad altre 18, era rimasta nel mio mempool solo da circa 30 secondi. Ciò rende probabile che Foundry non abbia alcuna possibilità di includere questa transazione nel proprio blocco perché non ne è ancora a conoscenza.

La propagazione della transazione potrebbe richiedere diversi secondi. Inoltre, la maggior parte dei pool di mining invia nuovi modelli di blocco ai minatori solo ogni 30 secondi, quindi impiega un po' di tempo per passare a nuovi lavori. Inoltre, lo strumento miningpool-observer richiede nuovi modelli di blocco ogni pochi secondi ed esegue una corrispondenza ottimale basata su differenze minime nelle transazioni perse ed extra (vedere il metodo nelle FAQ). Ciò consente alle nuove transazioni di riscontrare falsi positivi per un massimo di 60 secondi circa.

Il block explorer mempool.space tiene traccia anche delle differenze tra il modello di blocco e il blocco finale trasmesso dai minatori. Mostrano che c9b57191.. è incluso nel loro modello ma manca dal blocco effettivo. La transazione è stata anche etichettata da loro come "Trasmessa di recente".

La transazione mancante nel blocco 813231 di Foundry è considerata "trasmessa di recente" da mempool.space.

La conclusione che se ne può trarre è che Foundry USA non ha filtrato la transazione. La transazione è stata trasmessa troppo tardi per essere inclusa nell'operazione di mining che alla fine ha trovato il blocco 813231. Inoltre, Foundry USA ha estratto il blocco successivo a quota 813232 e vi ha incluso le transazioni approvate.

Blocchi F2Pool 810727, 811791, 811920, 813357

F2Pool ha estratto i blocchi 810727..ccda1498 il 5 ottobre 2023, i blocchi 811791..af4453d6 e 811920..00badf62 il 12 ottobre e i blocchi 813357..63ac1669 il 22 ottobre. In ogni blocco manca una transazione riconosciuta. Ognuna di queste transazioni combina 150 input multisig 2 su 3 in un unico output. Per ogni transazione, uno degli input viene pagato all'output di 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML. Si tratta della stessa modalità di integrazione e indirizzo discussi nella sezione precedente. Nessuna delle transazioni perse dipende dalle transazioni nel mempool.

Blocco 810727

Nel blocco 810727, F2Pool non contiene la transazione c6a66836..., che spende gli output approvati. Con 150 input multisig 2 su 3, la transazione è piuttosto grande con 44017 vByte. Quando F2Pool ha estratto il blocco 810727, ha pagato 446260 sat ed è rimasto nel pool di memoria del mio nodo per quasi 4 ore. La selezione F2Pool contiene la transazione 907e1f45..., non c6a66836... Anche la transazione è una transazione consolidata con 150 input e un output, ma non prevede spese dall'output riconosciuto. Paga come 446260 sat, ma sembra essere 3 vByte più grande di 44020 vByte. Ciò significa che la transazione mancante c6a66836.. ha un tasso leggermente superiore a 907e1f45... Quando si ordina rigorosamente in base al tasso, la transazione mancante avrebbe dovuto essere inclusa. Tuttavia, in realtà, è improbabile che i 3 vByte di spazio aggiuntivo nel blocco abbiano un impatto sulle tariffe totali in un blocco.

Confronto delle transazioni approvate mancanti nel blocco F2Pool 810727 con le transazioni extra incluse. Ulteriori transazioni aggiungono 3 vByte.

Blocco 811791

La transazione approvata aa001ce6... manca dal blocco F2Pools 811791. Similmente alla transazione di unione precedente, la dimensione di questa transazione è 42459 vByte (169836 WU). Se il canone è 446260 sat il canone pagato è di 10,5 sat/vByte. Quando il blocco 811791 raggiunge il nodo osservatore del pool, la transazione è stata trattenuta nel suo mempool per quattro minuti.

In questo blocco, vale la pena notare che mancano 5 transazioni con impegni di blocco OP_RETURN Stacks. Tuttavia, F2Pool ha inserito i propri impegni di blocco Stacks. Ciò accade frequentemente ed è stato segnalato in precedenza. Inoltre, F2Pool include due grandi transazioni a commissione zero nel suo blocco. Uno è l'output della coinbase F2Pool prima dell'integrazione e l'altro è la transazione che paga i minatori. Questo è un comportamento comune per i blocchi estratti da F2Pool.

Sebbene queste transazioni aggiuntive occupino più di 400 kWU di spazio nel blocco, c'è ancora spazio sufficiente per includere la transazione aa001ce6... Il blocco contiene 2,86 MWU di transazioni, che è inferiore alla velocità di 10,5 sat/vByte di aa001ce6.... La transazione ammonta a circa 170 kWU, che rientrano nel blocco. Su mempool.space, la transazione è contrassegnata come "eliminata", il che influisce negativamente sui parametri di integrità del blocco.

Le tariffe assegnate per pacchetto di transazioni nel blocco 811791 includono le tariffe e gli indicatori di peso per le transazioni mancanti.

Blocco 811920

Nel blocco 811920, F2Pool non contiene la transazione 1cb3d6bc.., che spende gli output approvati. Questa transazione è anche una grande operazione di fusione. Ha una dimensione di 43630 vByte (169836 WU), una tariffa di 44660 sat e una tariffa a pagamento di 10,23 sat/vByte. Quando il blocco 811920 raggiunge il nodo osservatore del pool, la transazione è stata trattenuta nel mempool del nodo per quasi 2 minuti.

Nel blocco 811920 una transazione da 1,44 MWU ha pagato meno di 10,23 sat/vByte. La transazione da 170 kWU 1cb3d6bc.. rientrerà in questo blocco. Poiché la transazione è esistita nel mempool del mio nodo solo per quasi due minuti, è possibile che la transazione non sia stata propagata a F2Pool nel momento in cui hanno creato il modello di blocco. La transazione appare anche come "Trasmissione recente" su mempool.space. In genere, i pool minerari cercano di stabilire una buona connessione con la rete Bitcoin. Se la transazione è nel mempool di mempool.space e miningpool.observer, è probabile che la transazione sia nel mempool di F2Pool.

Le tariffe assegnate dal pacchetto di transazioni nel blocco 811920 includono tariffe e indicatori di peso per le transazioni mancanti.

Blocco 813357

Nel blocco 813357 di F2Pool manca la transazione e49cdb60..9 che spende l'output di approvazione. La dimensione di questa transazione di unione è 43053 vByte (172209 WU). Se la tariffa è 178504 sat la tariffa pagata è di 4,15 sat/vByte. Quando il blocco 813357 raggiunge il nodo osservatore del pool, la transazione è stata trattenuta nel mempool del nodo per più di 25 minuti.

Nel blocco 813357 sono state effettuate 684 transazioni kWU pagando meno di 4,15 sat/vByte. La transazione da 172 kWU e49cdb60.. rientrerà in questo blocco. Poiché la transazione è rimasta nel mempool del mio nodo per oltre 25 minuti, è improbabile che la transazione non si sia ancora propagata a uno dei nodi F2Pools. Questa transazione è inclusa anche nel modello per il blocco mempool-space 813357.

Distribuzione dei tassi per pacchetto di transazioni nel blocco 813357, inclusi indicatori di tasso e peso per le transazioni mancanti.

Conclusione del blocco F2Pools

La transazione approvata mancante nel blocco 810727 ha una tariffa leggermente più alta perché è 3 vByte più piccola della transazione inclusa. Mentre in questo caso questi 3 vByte di spazio di blocco aggiuntivo non avranno alcun impatto sulla commissione totale, l’algoritmo del modello di blocco Bitcoin Core selezionerà le transazioni con commissioni più elevate. L'elevato numero di transazioni aggiuntive incluse nel blocco 811791 non avrà alcun impatto sulle transazioni approvate mancanti nel blocco 811791. Potrebbe essere stato filtrato fuori dal blocco. L'audit del blocco su mempool.space concorda con questo. È possibile che F2Pool non sia ancora a conoscenza della mancata transazione di girata nel blocco 811920. Tuttavia, per i pool minerari di grandi dimensioni, 2 minuti dovrebbero essere sufficienti per ricevere transazioni. Soprattutto perché mempool.space e Miningpool.observer sono a conoscenza di questo accordo. Questa transazione approvata è stata molto probabilmente persa a causa del filtraggio F2Pool. Analogamente alla transazione mancante nel blocco 811791, è probabile che la transazione mancante nel blocco 813357 sia stata filtrata da F2Pool.

Queste quattro transazioni sanzionate mancanti portano alla conclusione che F2Phi sta attualmente filtrando le transazioni. Poiché vediamo solo la spesa per transazioni mancante da un singolo indirizzo sanzionato dall'OFAC, 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML, non possiamo dire se F2Pool sta filtrando quel singolo indirizzo o tutti gli indirizzi sanzionati dall'OFAC.

Insomma

L'articolo discute sei transazioni Bitcoin effettuate da indirizzi approvati dall'OFAC che lo strumento Mining Pool Watcher ha rilevato mancanti nei blocchi. Le due transazioni mancanti dai blocchi del pool minerario ViaBTC e Foundry USA erano falsi positivi e non sono state filtrate. Quattro transazioni approvate dall'OFAC mancanti dal blocco F2Pool potrebbero essere state filtrate. Ciò solleva la questione del perché F2Pool, originaria dell’Asia, sia stata la prima mining pool a filtrare le transazioni in base alle sanzioni statunitensi dell’OFAC.

Tuttavia, la rete Bitcoin continua a funzionare normalmente. Il filtraggio delle transazioni in base a un singolo pool non influisce sulla resistenza alla censura sull'intera rete Bitcoin. Un ulteriore monitoraggio della selezione delle transazioni di un pool potrebbe identificare quando più pool iniziano a filtrare le transazioni in base a fattori come le sanzioni dell’OFAC. Consente inoltre ai minatori di indirizzare la propria potenza di calcolo verso questi pool e, se non sono d'accordo con la politica di filtraggio (non annunciata) del pool, possono prendere una decisione informata di passare a un pool diverso.

  1. Poiché nessuno dei blocchi con transazioni mancanti è vicino al limite sigop di 80.000, queste non verranno discusse qui.​

  2. Tramite blocco BTC 808660: 000000000000000000017c18a76632d9e39e8c388ee1e4028ec75e50866c79c5

  3. Transazione mancante nel blocco 808660: 262025e73812fc68b6514ea366abf463147176c7867e5853f117aded58c30e0e

  4. La transazione cb9f2592.. estratta da ViaBTC nel blocco 809181 era una transazione Omnilayer che ha depositato 1528 USDT a questo indirizzo nel settembre 2020. L'indirizzo sanzionato della transazione 1ECeZBxCVJ8Wm2JSN3Cyc6rge2gnvD3W5K ha un output simile alla transazione 262025e7.. mancante nel blocco 80866.

    Ho controllato alcuni di questi indirizzi e contenevano tutti saldi USDT su OmniLayer che sono stati cancellati in queste transazioni. Anche se si tratta di un'ipotesi, sembra che qualcuno volesse eliminare l'USDT rimanente su un gruppo di indirizzi, inviare 20k sat a ciascun indirizzo e rovinare la scansione unendo nuovamente l'output appena creato in 262025e7... e poi Ho provato di nuovo d11019a2...e l'ho scansionato con successo con cb9f2592...

    Se questo è il caso, l’OFAC potrebbe perdere molti indirizzi per la stessa entità nel suo elenco.​

  5. Il blocco 813231 estratto da Foundry ha l'hash dell'intestazione: 00000000000000000001740d5fbb8bbc0b93d4bf46ca2011f642e92a0a8528b6

  6. Il txid della transazione approvata mancante nel blocco 813231 è: c9b5719131bfeac6378749243731c5e70f1ce56deabb7006a2b6539710866420

  7. Secondo i dati OXT.me, l'indirizzo appartiene al portafoglio OKEX. La transazione unita c9b57191.. è il deposito unito OKEX. Secondo OXT.me, il risultato della fusione sono i proventi del mercato della darknet Hydra. Ulteriori informazioni possono essere trovate qui.

  8. bloccare l'hash

  • 810727: 

    0000000000000000000350ae5ee08a4415146612af59a20021efeaf2ccda1498

  • 811791: 

    00000000000000000001631243b00b6c1019c0d833b6738e0c591dacaf4453d6

  • 811920: 

    00000000000000000002efd0fc8801b149f505b125308a35c584ed2600badf62

  • 813357: 

    00000000000000000000519c33dcdf5ca386524b2cbacb561f767e9663ac1669

9. Transazioni mancanti approvate:

  • 810727: 

    c6a668364f19df0f2977f8ad7d0a3a73c5e32b55b6a7c650cafa37a5ab4b19f2

  • 811791: 

    aa001ce6e262b8b9042645ecdec9c84e9e2ad06f56dff6dd5ae42005fdea8da9

  • 811920: 

    1cb3d6bcc650c2891b68e7b205d601bcf5158e30e1926d0fd0c8385cb456b37b

  • 813357: 

    e49cdb6075c49b8fc37b3e922038e2a3205d75a9a1fb4b69f3568707594c2d3e

10. La dimensione della transazione selezionata da F2Pool per il blocco 810727 è leggermente maggiore, quindi la commissione è inferiore:

  • 907e1f45334652dd344cf846639f3f9a2ee11b5489e2ffc2660ea543881b1bce

Probabilmente perché ci sono meno nonce con r basso nella firma, il che rende la firma più grande.​