Auteur : 0xB10C ; Compilateur : Songxue, Golden Finance
Mon projet, miningpool-observer, vise à détecter quand les pools miniers Bitcoin n'effectuent pas les transactions qu'ils pourraient avoir. Au cours des dernières semaines, il a détecté six dépenses de transaction manquantes à partir d'adresses approuvées par l'OFAC. Cet article explore si ces transactions ont été intentionnellement filtrées parce qu'elles ont été dépensées à partir d'adresses approuvées par l'OFAC, ou s'il existe d'autres explications possibles pour expliquer pourquoi ces transactions ont été absentes du bloc. Ma conclusion est que quatre des transactions peuvent avoir été filtrées.
En septembre et octobre 2023, le flux RSS de mon instance d'observateur de pool minier a signalé qu'il manquait 6 blocs de transactions approuvées par l'OFAC. L'un des blocs a été extrait par le pool minier ViaBTC, un autre par le pool minier Foundry USA et les quatre autres par le pool minier F2Pool. Une transaction approuvée par l’OFAC est une transaction dans laquelle un décaissement ou un paiement est effectué à partir d’une adresse approuvée par l’Office of Foreign Assets Control du Département du Trésor des États-Unis. Je maintiens un outil qui extrait une liste d'adresses reconnues par l'OFAC à partir de la liste des ressortissants spécialement désignés (SDN) publiée par l'OFAC.
Il existe plusieurs raisons pour lesquelles des transactions peuvent manquer dans un bloc. D'une manière générale, les transactions ne sont pas réparties uniformément sur le réseau et il n'existe pas de pool de mémoire global à partir duquel les transactions peuvent être sélectionnées. Chaque nœud possède son propre ensemble de transactions valides. Les pools miniers peuvent également donner la priorité aux transactions qui reçoivent des paiements hors bande. Cependant, il peut également déprioriser ou filtrer les transactions.
L’objectif ici est de déterminer si le pool minier a filtré l’une de ces six transactions approuvées par l’OFAC, ou s’il existe d’autres explications possibles à leur non-apparition dans le bloc. Notez que les pools miniers sont libres de choisir les transactions à inclure et celles à exclure. Cependant, pour analyser les propriétés de résistance à la censure du Bitcoin, il est crucial de comprendre lesquels et combien de pools miniers filtrent les transactions.
Je conclus que les rapports de miningpool-observer indiquant que les transactions sanctionnées manquantes dans les blocs de ViaBTC et Foundry sont très probablement de faux positifs et non le résultat d'un filtrage. Cependant, les transactions manquantes dans le bloc F2Pool peuvent avoir été filtrées.
ViaBTC bloc 808660
Le bloc 808660..866c79c52 a été extrait par ViaBTC le 21 septembre 2023 et ne contient pas la transaction 262025e7. Cette transaction combine 100 entrées en une seule sortie. La sortie de l'une de ces entrées est versée à 1ECeZBxCVJ8Wm2JSN3Cyc6rge2gnvD3W5K. L'adresse a été ajoutée à la liste SDN de l'OFAC le 21 septembre 2021.
La taille de la transaction est de 14,7 kvB et les frais payés sont de 25,18 sat/vByte. Le résultat dépensé par l'adresse sanctionnée est de 0,0002 BTC (20 000 sat) et a été créé la veille. Lorsque ViaBTC a extrait le bloc 808660, la transaction restait dans le pool de mémoire de mon nœud depuis environ 75 minutes. Il n'a aucune dépendance sur les transactions mempool.
Répartition des tarifs dans les modèles et les blocs

Allocation de taux pour les blocs et modèle pour le bloc 808660. Capture d'écran de Miningpool.observer.
En vérifiant la répartition des tarifs pour le bloc 808660 sur Miningpool.observer, il s'avère que ViaBTC occupe environ 1 MWU d'espace de bloc (4 MWU au total) et a des transactions prioritaires. Ceux-ci peuvent provenir de l’accélérateur de trading ViaBTC Bitcoin. Donner la priorité à certaines transactions signifie que les transactions avec des frais inférieurs (telles que les dépenses de transaction provenant d'adresses sanctionnées ici) n'entrent pas dans le bloc. Pour ce bloc ViaBTC, mon instance d'observateur de pool minier répertorie 24 grandes transactions fusionnées à la fin du modèle qui n'ont pas été intégrées au bloc.
Liste manquante des transactions fusionnées importantes dans le bloc 808660
La conclusion qui en est tirée est que ViaBTC n’a pas filtré cette transaction. Il est remplacé par d'autres accords prioritaires. Cela a été prouvé par le fait que trois jours plus tard, ViaBTC a extrait une transaction qui a généré des résultats à partir de la même adresse sanctionnée dans le bloc 809181.
Bloc 813231 de Foundry USA
Le bloc 813231..0a8528b6 a été extrait par Foundry USA le 21 octobre 2023 et ne contient pas la transaction c9b57191. Cette transaction combine 150 entrées en une seule sortie. La sortie de l'une des entrées est versée à 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML. L'adresse a été ajoutée à la liste SDN de l'OFAC le 14 avril 2023.
Étant donné que la plupart des 150 entrées sont des scripts P2SH multi-signatures 2 sur 3, les transactions manquantes sont volumineuses, atteignant 43 842 vBytes. Il paie 5,09 sat/vByte et ne repose pas sur les transactions en mémoire. Dans le modèle construit par mon nœud Bitcoin Core, ce taux est suffisant pour le classer au 161ème rang sur 2215 transactions. Cependant, lorsque j’ai entendu parler du bloc 812331 de Foundry USA, cette transaction, ainsi que 18 autres, n’était dans ma mémoire que depuis environ 30 secondes. Il est donc probable que Foundry n’ait aucune chance d’inclure cette transaction dans son bloc car ils ne le savent pas encore.
La propagation des transactions peut prendre plusieurs secondes. De plus, la plupart des pools miniers ne transmettent de nouveaux modèles de blocs aux mineurs que toutes les 30 secondes, puis mettent un certain temps à passer à de nouvelles tâches. De plus, l'outil miningpool-observer demande de nouveaux modèles de bloc toutes les quelques secondes et effectue une correspondance au mieux basée sur des différences minimes dans les transactions perdues et supplémentaires (voir la méthode dans la FAQ). Cela permet aux nouvelles transactions de rencontrer des faux positifs pendant environ 60 secondes.
L'explorateur de blocs mempool.space suit également les différences entre le modèle de bloc et le bloc final diffusé par les mineurs. Ils montrent que c9b57191.. est inclus dans leur modèle mais absent du bloc réel. La transaction a également été qualifiée de « récemment diffusée » par eux.

La transaction manquante dans le bloc 813231 de Foundry est considérée comme « récemment diffusée » par mempool.space.
La conclusion à en tirer est que Foundry USA n'a pas filtré la transaction. La transaction a été diffusée trop tard pour être incluse dans l’opération minière qui a finalement permis de retrouver le bloc 813231. De plus, Foundry USA a extrait le bloc suivant à l'altitude 813232 et y a inclus les transactions approuvées.
Blocs F2Pool 810727, 811791, 811920, 813357
F2Pool a extrait le bloc 810727..ccda1498 le 5 octobre 2023, les blocs 811791..af4453d6 et 811920..00badf62 le 12 octobre et le bloc 813357..63ac1669 le 22 octobre. Il manque une transaction reconnue à chaque bloc. Chacune de ces transactions combine 150 entrées multisig 2 sur 3 en une seule sortie. Pour chaque transaction, une des entrées est versée à la sortie de 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML. Il s’agit du même mode d’intégration et de la même adresse évoqués dans la section précédente. Aucune des transactions perdues ne dépend des transactions dans le pool de mémoire.
Bloquer 810727
Dans le bloc 810727, F2Pool ne contient pas la transaction c6a66836.., qui dépense les sorties approuvées. Avec 150 entrées multisig 2 sur 3, la transaction est assez volumineuse avec 44 017 vBytes. Lorsque F2Pool a extrait le bloc 810727, il a payé 446 260 sats et est resté dans le pool de mémoire de mon nœud pendant près de 4 heures. La sélection F2Pool contient la transaction 907e1f45.., et non c6a66836... La transaction est également une transaction consolidée avec 150 entrées et une sortie, mais ne dépense pas à partir de la sortie reconnue. Il paie le même prix que 446260 sat, mais il se trouve qu'il est 3 vBytes de plus que 44020 vByte. Cela signifie que la transaction manquante c6a66836.. a un taux légèrement supérieur à 907e1f45... Lors du tri strictement par taux, la transaction manquante aurait dû être incluse. Cependant, en réalité, il est peu probable que les 3 voctets d'espace de bloc supplémentaire aient un impact sur les frais totaux d'un bloc.

Comparaison des transactions approuvées manquantes dans le bloc F2Pool 810727 avec les transactions supplémentaires incluses. Les transactions supplémentaires ajoutent 3 vBytes.
Bloc 811791
La transaction approuvée aa001ce6... est absente du bloc F2Pools 811791. Semblable à la transaction de fusion précédente, la taille de cette transaction est de 42 459 vBytes (169 836 WU). Si les frais sont de 446 260 sat, les frais payés sont de 10,5 sat/vByte. Lorsque le bloc 811791 atteint le nœud d'observateur du pool, la transaction est conservée dans son pool de mémoire depuis quatre minutes.
Dans ce bloc, il convient de noter qu'il manque 5 transactions avec des engagements de bloc OP_RETURN Stacks. Cependant, F2Pool a inséré ses propres engagements de bloc Stacks. Cela arrive fréquemment et a déjà été signalé. De plus, F2Pool inclut deux grandes transactions sans frais dans son bloc. L’un est la sortie de la coinbase F2Pool avant l’intégration et l’autre est la transaction rémunérant les mineurs. Il s'agit d'un comportement courant pour les blocs extraits par F2Pool.
Bien que ces transactions supplémentaires occupent plus de 400 kWU d'espace de bloc, il reste encore suffisamment d'espace pour inclure la transaction aa001ce6... Le bloc contient 2,86 MWU de transactions, ce qui est inférieur au taux de 10,5 sat/vByte de aa001ce6.... La transaction porte sur environ 170 kWU, ce qui rentre dans le bloc. Sur mempool.space, la transaction est marquée comme « supprimée », ce qui affecte négativement les métriques de santé du bloc.
Les tarifs attribués par package de transactions dans le bloc 811791 incluent les tarifs et les marqueurs de poids pour les transactions manquantes.
Bloc 811920
Dans le bloc 811920, F2Pool ne contient pas la transaction 1cb3d6bc..., qui dépense les sorties approuvées. Cette transaction est également une opération de fusion importante. Il a une taille de 43 630 vBytes (169 836 WU), des frais de 44 660 sat et des frais payants de 10,23 sat/vByte. Lorsque le bloc 811920 atteint le nœud d'observateur du pool, la transaction est conservée dans le pool de mémoire du nœud depuis près de 2 minutes.
Dans le bloc 811920, une transaction de 1,44 MWU rapportait moins de 10,23 sat/vByte. La transaction 1cb3d6bc.. de 170 kWU entrera dans ce bloc. Étant donné que la transaction n'a existé dans le pool de mémoire de mon nœud que pendant près de deux minutes, il est possible que la transaction n'ait pas été propagée à F2Pool au moment où ils ont construit le modèle de bloc. La transaction apparaît également comme « Diffusion récente » sur mempool.space. En règle générale, les pools miniers tentent d’établir une bonne connexion au réseau Bitcoin. Si la transaction se trouve dans le pool de mémoire mempool.space et miningpool.observer, alors la transaction est susceptible d'être dans le pool de mémoire de F2Pool.

Les tarifs attribués par paquet de transactions dans le bloc 811920 incluent les tarifs et les marqueurs de poids pour les transactions manquantes.
Bloquer 813357
Dans le bloc 813357 de F2Pool, la transaction e49cdb60..9 qui dépense la sortie d'approbation est manquante. La taille de cette transaction de fusion est de 43 053 vBytes (172 209 WU). Si les frais sont de 178 504 sat, les frais payés sont de 4,15 sat/vByte. Lorsque le bloc 813357 atteint le nœud observateur du pool, la transaction est conservée dans le pool de mémoire du nœud depuis plus de 25 minutes.
Dans le bloc 813357, il y a eu 684 transactions kWU payant moins de 4,15 sat/vByte. La transaction e49cdb60.. de 172 kWU entrera dans ce bloc. Étant donné que la transaction est restée dans le pool de mémoire de mon nœud pendant plus de 25 minutes, il est peu probable qu'elle ne se soit pas encore propagée à l'un des nœuds F2Pools. Cette transaction est également incluse dans le modèle du bloc mempool-space 813357.
Répartition des taux par package de transactions dans le bloc 813357, y compris les marqueurs de taux et de poids pour les transactions manquantes.
Conclusion du bloc F2Pools
La transaction approuvée manquante dans le bloc 810727 a un taux légèrement plus élevé car elle est inférieure de 3 vBytes à la transaction incluse. Alors que dans ce cas, ces 3 vBytes d'espace de bloc supplémentaire n'auront aucun impact sur les frais totaux, l'algorithme du modèle de bloc Bitcoin Core sélectionnera les transactions avec des frais plus élevés. Le grand nombre de transactions supplémentaires incluses dans le bloc 811791 n'aura aucun impact sur les transactions approuvées manquantes dans le bloc 811791. Il a peut-être été filtré hors du bloc. L'audit de bloc sur mempool.space est d'accord avec cela. Il est possible que F2Pool ne soit pas encore au courant de la transaction d'approbation manquante dans le bloc 811920. Cependant, pour les grands pools de minage, 2 minutes devraient suffire pour recevoir des transactions. D'autant plus que mempool.space et Miningpool.observer sont au courant de cet accord. Cette transaction approuvée a probablement été perdue en raison du filtrage F2Pool. Semblable à la transaction manquante dans le bloc 811791, la transaction manquante dans le bloc 813357 a probablement été filtrée par F2Pool.
Ces quatre transactions sanctionnées manquantes conduisent à la conclusion que F2Phi filtre actuellement les transactions. Étant donné que nous ne voyons que les dépenses de transaction manquantes provenant d'une seule adresse sanctionnée par l'OFAC, 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML, nous ne pouvons pas savoir si F2Pool filtre cette adresse unique ou toutes les adresses sanctionnées par l'OFAC.
en conclusion
L'article traite de six dépenses de transactions Bitcoin provenant d'adresses approuvées par l'OFAC et que l'outil Mining Pool Watcher a détecté comme manquantes dans les blocs. Les deux transactions manquantes dans les blocs du pool minier ViaBTC et Foundry USA étaient des faux positifs et n'ont pas été filtrées. Quatre transactions approuvées par l'OFAC et manquantes dans le bloc F2Pool peuvent avoir été filtrées. Cela soulève la question de savoir pourquoi F2Pool, originaire d'Asie, a été le premier pool minier à filtrer les transactions sur la base des sanctions américaines de l'OFAC.
Cependant, le réseau Bitcoin continue de fonctionner normalement. Le filtrage des transactions par un seul pool n’a pas d’impact sur la résistance à la censure sur l’ensemble du réseau Bitcoin. Une surveillance plus approfondie de la sélection des transactions d'un pool pourrait identifier le moment où davantage de pools commencent à filtrer les transactions en fonction de facteurs tels que les sanctions de l'OFAC. Cela permet également aux mineurs d’orienter leur puissance de calcul vers ces pools, et s’ils ne sont pas d’accord avec la politique de filtrage (inopinée) du pool, ils peuvent prendre une décision éclairée de passer à un autre pool.
Puisqu'aucun des blocs avec des transactions manquantes n'est proche de la limite sigop de 80 000, ceux-ci ne seront pas abordés ici.
ViaBTC bloc 808660 : 0000000000000000000017c18a76632d9e39e8c388ee1e4028ec75e50866c79c5
Transaction manquante dans le bloc 808660 : 262025e73812fc68b6514ea366abf463147176c7867e5853f117aded58c30e0e
La transaction cb9f2592.. extraite par ViaBTC dans le bloc 809181 était une transaction Omnilayer qui a déposé 1528 USDT à cette adresse en septembre 2020. L'adresse sanctionnée de la transaction 1ECeZBxCVJ8Wm2JSN3Cyc6rge2gnvD3W5K a une sortie similaire à la transaction 262025e7... manquante dans le bloc 80866.
J'ai vérifié certaines de ces adresses et elles contenaient toutes des soldes USDT sur OmniLayer qui ont été effacés lors de ces transactions. Bien qu'il s'agisse d'une supposition, il semble que quelqu'un ait voulu effacer l'USDT restant sur un groupe d'adresses, envoyer 20 000 sat à chaque adresse et gâcher l'analyse en fusionnant à nouveau la sortie nouvellement créée dans 262025e7... et puis ils J'ai réessayé le d11019a2... et je l'ai scanné avec succès avec cb9f2592...
Si tel est le cas, l'OFAC risque de perdre un certain nombre d'adresses pour la même entité sur sa liste.
Le bloc 813231 extrait par Foundry a un hachage d'en-tête : 00000000000000000001740d5fbb8bbc0b93d4bf46ca2011f642e92a0a8528b6
Le txid de la transaction approuvée manquant dans le bloc 813231 est : c9b5719131bfeac6378749243731c5e70f1ce56deabb7006a2b6539710866420
Selon les données OXT.me, l'adresse appartient au portefeuille OKEX. La transaction fusionnée c9b57191.. est un dépôt fusionné OKEX. Selon OXT.me, le résultat de la fusion consiste en des paiements provenant du marché du darknet d'Hydra. Plus d'informations peuvent être trouvées ici.
bloquer le hachage
810727 :
0000000000000000000350ae5ee08a4415146612af59a20021efeaf2ccda1498
811791 :
00000000000000000001631243b00b6c1019c0d833b6738e0c591dacaf4453d6
811920 :
00000000000000000002efd0fc8801b149f505b125308a35c584ed2600badf62
813357 :
00000000000000000000519c33dcdf5ca386524b2cbacb561f767e9663ac1669
9. Transactions manquantes et approuvées :
810727 :
c6a668364f19df0f2977f8ad7d0a3a73c5e32b55b6a7c650cafa37a5ab4b19f2
811791 :
aa001ce6e262b8b9042645ecdec9c84e9e2ad06f56dff6dd5ae42005fdea8da9
811920 :
1cb3d6bcc650c2891b68e7b205d601bcf5158e30e1926d0fd0c8385cb456b37b
813357 :
e49cdb6075c49b8fc37b3e922038e2a3205d75a9a1fb4b69f3568707594c2d3e
10. La taille de la transaction sélectionnée par F2Pool pour le bloc 810727 est légèrement plus grande, les frais sont donc inférieurs :
907e1f45334652dd344cf846639f3f9a2ee11b5489e2ffc2660ea543881b1bce
Il se peut qu'il y ait moins de noms occasionnels à r faible dans la signature, ce qui rend la signature plus grande.
