Autor: 0xB10C; Compilador: Songxue, Golden Finance

Mi proyecto, miningpool-observer, tiene como objetivo detectar cuándo los pools de minería de Bitcoin no están realizando las transacciones que podrían realizar. En las últimas semanas, detectó seis gastos de transacciones faltantes en direcciones aprobadas por la OFAC. Este artículo explora si estas transacciones se filtraron intencionalmente porque se gastaron desde direcciones aprobadas por la OFAC, o si existen otras posibles explicaciones de por qué estas transacciones no estaban en el bloque. Mi conclusión es que es posible que se hayan filtrado cuatro de las transacciones.

En septiembre y octubre de 2023, la fuente RSS de mi instancia de observador de grupo de minería informó que a 6 bloques les faltaban transacciones aprobadas por la OFAC. Uno de los bloques fue minado por el grupo minero ViaBTC, otro por el grupo minero Foundry USA y los otros cuatro por el grupo minero F2Pool. Una transacción aprobada por la OFAC es una transacción en la que se realiza un desembolso o pago desde una dirección aprobada por la Oficina de Control de Activos Extranjeros del Departamento del Tesoro de EE. UU. Mantengo una herramienta que extrae una lista de direcciones reconocidas por la OFAC de la lista de Nacionales Especialmente Designados (SDN) publicada por la OFAC.

Hay varias razones por las que pueden faltar transacciones en un bloque. En términos generales, las transacciones no se distribuyen uniformemente en la red y no existe un grupo de memoria global desde el cual se puedan seleccionar las transacciones. Cada nodo tiene su propio conjunto de transacciones válidas. Los pools de minería también pueden priorizar las transacciones que reciben pagos fuera de banda. Sin embargo, también puede quitar prioridad o filtrar transacciones.

El objetivo aquí es determinar si el pool de minería filtró alguna de estas seis transacciones aprobadas por la OFAC, o si existen otras posibles explicaciones para que no aparezcan en el bloque. Tenga en cuenta que los grupos de minería son libres de elegir qué transacciones incluir y cuáles excluir. Sin embargo, para analizar las propiedades resistentes a la censura de Bitcoin, es crucial comprender qué y cuántos pools de minería filtran las transacciones.

Concluyo que los informes de miningpool-observer que indican que las transacciones sancionadas que faltan en los bloques de ViaBTC y Foundry son probablemente falsos positivos y no el resultado de un filtrado. Sin embargo, es posible que se hayan filtrado las transacciones que faltan en el bloque F2Pool.

A través del bloque BTC 808660

El bloque 808660..866c79c52 fue minado por ViaBTC el 21 de septiembre de 2023 y no contiene la transacción 262025e7.. Esta transacción combina 100 entradas en una salida. La salida de una de estas entradas se paga a 1ECeZBxCVJ8Wm2JSN3Cyc6rge2gnvD3W5K. La dirección se agregó a la lista SDN de la OFAC el 21 de septiembre de 2021.

El tamaño de la transacción es de 14,7 kvB y la tarifa pagada es de 25,18 sat/vByte. La salida gastada por la dirección sancionada es 0,0002 BTC (20k sat) y se creó el día anterior. Cuando ViaBTC extrajo el bloque 808660, la transacción había estado almacenada en el mempool de mi nodo durante aproximadamente 75 minutos. No depende de las transacciones de mempool.

Distribución de tarifas en plantillas y bloques.

Asignación de tarifas para bloques y plantilla para el bloque 808660. Captura de pantalla de Miningpool.observer.

Al verificar la distribución de tarifas para el bloque 808660 en Miningpool.observer, se encuentra que ViaBTC ocupa aproximadamente 1 MWU de espacio de bloque (4 MWU en total) y tiene transacciones prioritarias. Estos pueden provenir del acelerador de comercio de Bitcoin ViaBTC. Dar prioridad a ciertas transacciones significa que las transacciones con tarifas más bajas (como los gastos de transacción de direcciones sancionadas aquí) no ingresan al bloque. Para este bloque ViaBTC, la instancia de observador de mi grupo de minería enumera 24 grandes transacciones fusionadas al final de la plantilla que no llegaron al bloque.

Falta una lista de grandes transacciones fusionadas en el bloque 808660

La conclusión que se desprende de esto es que ViaBTC no filtró esta transacción. Se sustituye por otros acuerdos prioritarios. Esto quedó demostrado por el hecho de que tres días después, ViaBTC extrajo una transacción que gastó salidas de la misma dirección sancionada en el bloque 809181.

Bloque 813231 de Foundry USA

El bloque 813231..0a8528b6 fue minado por Foundry USA el 21 de octubre de 2023 y no contiene la transacción c9b57191.. Esta transacción combina 150 entradas en una salida. La salida de una de las entradas se paga a 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML. La dirección se agregó a la lista SDN de la OFAC el 14 de abril de 2023.

Dado que la mayoría de las 150 entradas son 2 de 3 scripts P2SH de firma múltiple, las transacciones que faltan son grandes y alcanzan los 43842 vByte. Paga 5,09 sat/vByte y no depende de transacciones dentro de mempool. En la plantilla creada por mi nodo Bitcoin Core, esta tasa es suficiente para ubicarlo en el puesto 161 entre 2215 transacciones. Sin embargo, cuando me enteré del bloque 812331 de Foundry USA, esa transacción, junto con otras 18, solo había estado en mi mempool durante unos 30 segundos. Esto hace que sea probable que Foundry no tenga ninguna posibilidad de incluir esta transacción en su bloque porque aún no lo saben.

La propagación de la transacción puede tardar varios segundos. Además, la mayoría de los grupos de minería solo envían nuevas plantillas de bloques a los mineros cada 30 segundos y luego tardan un poco en cambiar a nuevos trabajos. Además, la herramienta miningpool-observer solicita nuevas plantillas de bloques cada pocos segundos y realiza una coincidencia de mejor esfuerzo basada en diferencias mínimas en transacciones perdidas y adicionales (consulte el método en las preguntas frecuentes). Esto hace posible que las nuevas transacciones experimenten falsos positivos durante aproximadamente 60 segundos.

El explorador de bloques mempool.space también rastrea las diferencias entre la plantilla de bloque y el bloque final transmitido por los mineros. Muestran que c9b57191... está incluido en su plantilla pero falta en el bloque real. La transacción también fue marcada como "transmitida recientemente" por ellos.

Mempool.space considera que la transacción que falta en el bloque 813231 de Foundry es "transmitida recientemente".

La conclusión que se puede sacar de esto es que Foundry USA no filtró la transacción. La transacción se transmitió demasiado tarde para ser incluida en la operación minera que finalmente encontró el bloque 813231. Además, Foundry USA extrajo el siguiente bloque a una altitud de 813232 e incluyó allí las transacciones aprobadas.

Bloques F2Pool 810727, 811791, 811920, 813357

F2Pool extrajo los bloques 810727..ccda1498 el 5 de octubre de 2023, los bloques 811791..af4453d6 y 811920..00badf62 el 12 de octubre y los bloques 813357..63ac1669 el 22 de octubre. A cada bloque le falta una transacción reconocida. Cada una de estas transacciones combina 150 entradas multifirma 2 de 3 en una única salida. Para cada transacción, una de las entradas se paga a la salida de 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML. Este es el mismo modo de integración y dirección discutidos en la sección anterior. Ninguna de las transacciones perdidas depende de las transacciones en el mempool.

Bloque 810727

En el bloque 810727, F2Pool no contiene la transacción c6a66836..., que gasta salidas aprobadas. Con 150 entradas multifirma 2 de 3, la transacción es bastante grande con 44017 vBytes. Cuando F2Pool extrajo el bloque 810727, pagó 446260 sats y permaneció en el grupo de memoria de mi nodo durante casi 4 horas. La selección de F2Pool contiene la transacción 907e1f45.., no c6a66836... La transacción también es una transacción consolidada con 150 insumos y un producto, pero no gasta del producto reconocido. Paga lo mismo que 446260 sat, pero resulta que es 3 vBytes mayor que 44020 vByte. Esto significa que la transacción faltante c6a66836.. tiene una tasa ligeramente mayor que 907e1f45... Al ordenar estrictamente por tasa, la transacción que falta debería haberse incluido. Sin embargo, en realidad, es poco probable que los 3 vByte de espacio de bloque adicional tengan un impacto en las tarifas totales de un bloque.

Comparación de transacciones aprobadas faltantes en el bloque 810727 de F2Pool con transacciones adicionales incluidas. Las transacciones adicionales agregan 3 vBytes.

Bloque 811791

La transacción aprobada aa001ce6... falta en el bloque 811791 de F2Pools. De manera similar a la transacción de fusión anterior, el tamaño de esta transacción es 42459 vBytes (169836 WU). Si la tarifa es 446260 sat, la tarifa pagada es 10,5 sat/vByte. Cuando el bloque 811791 llega al nodo observador del grupo, la transacción se retuvo en su mempool durante cuatro minutos.

En este bloque, vale la pena señalar que faltan 5 transacciones con compromisos del bloque OP_RETURN Stacks. Sin embargo, F2Pool ha insertado sus propios compromisos de bloque Stacks. Esto sucede con frecuencia y se ha informado antes. Además, F2Pool incluye dos grandes transacciones sin tarifa en su bloque. Una es la salida de la base de monedas de F2Pool antes de la integración y la otra es la transacción que paga a los mineros. Este es un comportamiento común para los bloques extraídos por F2Pool.

Aunque estas transacciones adicionales ocupan más de 400 kWU de espacio de bloque, todavía hay suficiente espacio para incluir la transacción aa001ce6... El bloque contiene 2,86 MWU de transacciones, que es inferior a la tasa de 10,5 sat/vByte de aa001ce6.... La transacción es de unos 170 kWU, que caben en el bloque. En mempool.space, la transacción se marca como "eliminada", lo que afecta negativamente las métricas de salud del bloque.

Las tarifas asignadas por paquete de transacciones en el bloque 811791 incluyen las tarifas y los marcadores de peso para las transacciones faltantes.

Bloque 811920

En el bloque 811920, F2Pool no contiene la transacción 1cb3d6bc..., que gasta salidas aprobadas. Esta transacción también es una gran transacción de fusión. Tiene un tamaño de 43630 vBytes (169836 WU), una tarifa de 44660 sat y una tarifa paga de 10,23 sat/vByte. Cuando el bloque 811920 llega al nodo observador del grupo, la transacción se mantuvo en el mempool del nodo durante casi 2 minutos.

En el bloque 811920, una transacción de 1,44 MWU pagó menos de 10,23 sat/vByte. La transacción de 170 kWU 1cb3d6bc.. encajará en este bloque. Dado que la transacción solo existió en el mempool de mi nodo durante casi dos minutos, es posible que la transacción aún no se haya propagado a F2Pool cuando crearon la plantilla de bloque. La transacción también aparece como "Difusión reciente" en mempool.space. Normalmente, los pools de minería intentan establecer una buena conexión con la red Bitcoin. Si la transacción está en el mempool de mempool.space y miningpool.observer, entonces es probable que la transacción esté en el mempool de F2Pool.

Las tarifas asignadas por paquete de transacciones en el bloque 811920 incluyen tarifas y marcadores de peso para transacciones faltantes.

Bloque 813357

En el bloque 813357 de F2Pool, falta la transacción e49cdb60..9 que gasta el resultado de aprobación. El tamaño de esta transacción de fusión es 43053 vBytes (172209 WU). Si la tarifa es 178504 sat, la tarifa pagada es 4,15 sat/vByte. Cuando el bloque 813357 llega al nodo observador del grupo, la transacción se ha retenido en el mempool del nodo durante más de 25 minutos.

En el bloque 813357, hubo 684 transacciones de kWU que pagaron menos de 4,15 sat/vByte. La transacción de 172 kWU e49cdb60.. encajará en este bloque. Dado que la transacción ha estado en el mempool de mi nodo durante más de 25 minutos, es poco probable que aún no se haya propagado a uno de los nodos de F2Pools. Esta transacción también se incluye en la plantilla para el bloque mempool-space 813357.

Distribución de tarifas por paquete de transacciones en el bloque 813357, incluidos marcadores de tarifas y pesos para transacciones faltantes.

Conclusión del bloque F2Pools

La transacción aprobada que falta en el bloque 810727 tiene una tasa ligeramente más alta porque es 3 vByte más pequeña que la transacción incluida. Si bien en este caso estos 3 vBytes de espacio de bloque adicional no tendrán ningún impacto en la tarifa total, el algoritmo de plantilla de bloque de Bitcoin Core seleccionará transacciones con tarifas más altas. La gran cantidad de transacciones adicionales incluidas en el bloque 811791 no tendrá ningún impacto en las transacciones aprobadas que faltan en el bloque 811791. Es posible que se haya filtrado fuera del bloque. La auditoría de bloques en mempool.space está de acuerdo con esto. Es posible que F2Pool aún no esté al tanto de la transacción de respaldo que falta en el bloque 811920. Sin embargo, para grandes grupos de minería, 2 minutos deberían ser suficientes para recibir transacciones. Especialmente porque mempool.space y Miningpool.observer conocen este acuerdo. Lo más probable es que esta transacción aprobada se haya perdido debido al filtrado de F2Pool. De manera similar a la transacción que falta en el bloque 811791, es probable que F2Pool haya filtrado la transacción que falta en el bloque 813357.

Estas cuatro transacciones sancionadas faltantes llevan a la conclusión de que F2Phi está filtrando transacciones actualmente. Dado que solo vemos gastos de transacciones faltantes de una única dirección sancionada por la OFAC, 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML, no podemos saber si F2Pool está filtrando esa dirección única o todas las direcciones sancionadas por la OFAC.

en conclusión

El artículo analiza seis gastos de transacciones de Bitcoin de direcciones aprobadas por la OFAC que la herramienta Mining Pool Watcher detectó que faltaban en los bloques. Las dos transacciones que faltan en los bloques del pool de minería ViaBTC y Foundry USA fueron falsos positivos y no fueron filtradas. Es posible que se hayan filtrado cuatro transacciones aprobadas por la OFAC que faltan en el bloque F2Pool. Esto plantea la pregunta de por qué F2Pool, que se originó en Asia, fue el primer grupo minero en filtrar transacciones basándose en las sanciones de la OFAC de EE. UU.

Sin embargo, la red Bitcoin sigue funcionando con normalidad. El filtrado de transacciones por un único grupo no afecta la resistencia a la censura en toda la red Bitcoin. Un mayor seguimiento de la selección de transacciones de un grupo podría identificar cuándo más grupos comienzan a filtrar transacciones en función de factores como las sanciones de la OFAC. También permite a los mineros dirigir su potencia informática a estos grupos y, si no están de acuerdo con la política de filtrado (no anunciada) del grupo, pueden tomar una decisión informada para cambiar a un grupo diferente.

  1. Dado que ninguno de los bloques con transacciones faltantes está cerca del límite sigop de 80.000, no se analizan aquí.​

  2. ViaBTC bloque 808660: 0000000000000000000017c18a76632d9e39e8c388ee1e4028ec75e50866c79c5

  3. Transacción faltante en el bloque 808660: 262025e73812fc68b6514ea366abf463147176c7867e5853f117aded58c30e0e

  4. La transacción cb9f2592... extraída por ViaBTC en el bloque 809181 fue una transacción Omnilayer que depositó 1528 USDT en esta dirección en septiembre de 2020. La dirección autorizada de la transacción 1ECeZBxCVJ8Wm2JSN3Cyc6rge2gnvD3W5K tiene un resultado similar a la transacción 262025e7... que falta en el bloque 80866.

    Revisé algunas de estas direcciones y todas contenían saldos de USDT en OmniLayer que fueron eliminados en estas transacciones. Si bien esto es una suposición, parece que alguien quería borrar el USDT restante en un grupo de direcciones, enviar 20k sat a cada dirección y arruinar el escaneo fusionando la salida recién creada nuevamente en 262025e7... y luego Probé d11019a2 nuevamente... y lo escaneé exitosamente con cb9f2592...

    Si este es el caso, entonces la OFAC puede perder varias direcciones de la misma entidad en su lista.​

  5. El bloque 813231 minado por Foundry tiene hash de encabezado: 00000000000000000001740d5fbb8bbc0b93d4bf46ca2011f642e92a0a8528b6

  6. El txid de la transacción aprobada que falta en el bloque 813231 es: c9b5719131bfeac6378749243731c5e70f1ce56deabb7006a2b6539710866420

  7. Según datos de OXT.me, la dirección pertenece a la billetera OKEX. La transacción fusionada c9b57191.. es un depósito fusionado de OKEX. Según OXT.me, el resultado de la fusión son los pagos del mercado de la red oscura de Hydra. Puede encontrar más información aquí.

  8. hash de bloque

  • 810727: 

    0000000000000000000350ae5ee08a4415146612af59a20021efeaf2ccda1498

  • 811791: 

    00000000000000000001631243b00b6c1019c0d833b6738e0c591dacaf4453d6

  • 811920: 

    00000000000000000002efd0fc8801b149f505b125308a35c584ed2600badf62

  • 813357: 

    00000000000000000000519c33dcdf5ca386524b2cbacb561f767e9663ac1669

9. Transacciones faltantes aprobadas:

  • 810727: 

    c6a668364f19df0f2977f8ad7d0a3a73c5e32b55b6a7c650cafa37a5ab4b19f2

  • 811791: 

    aa001ce6e262b8b9042645ecdec9c84e9e2ad06f56dff6dd5ae42005fdea8da9

  • 811920: 

    1cb3d6bcc650c2891b68e7b205d601bcf5158e30e1926d0fd0c8385cb456b37b

  • 813357: 

    e49cdb6075c49b8fc37b3e922038e2a3205d75a9a1fb4b69f3568707594c2d3e

10. El tamaño de la transacción seleccionado por F2Pool para el bloque 810727 es ligeramente mayor, por lo que la tarifa es menor:

  • 907e1f45334652dd344cf846639f3f9a2ee11b5489e2ffc2660ea543881b1bce

Probablemente porque hay menos nonces bajos en la firma, lo que hace que la firma sea más grande.​