Autor: 0xB10C; Compilador: Songxue, Golden Finance

Meu projeto, miningpool-observer, visa detectar quando os pools de mineração de Bitcoin não estão fazendo transações que poderiam ter feito. Nas últimas semanas, detectou seis despesas de transação perdidas em endereços aprovados pela OFAC. Esta postagem explora se essas transações foram filtradas intencionalmente porque foram gastas em endereços aprovados pelo OFAC ou se há outras explicações possíveis para o motivo pelo qual essas transações não foram incluídas no bloco. Minha conclusão é que quatro das transações podem ter sido filtradas.

Em setembro e outubro de 2023, o feed RSS da minha instância de observador do pool de mineração relatou 6 blocos faltando transações aprovadas pelo OFAC. Um dos blocos foi minerado pelo pool de mineração ViaBTC, outro pelo pool de mineração Foundry USA e os outros quatro pelo pool de mineração F2Pool. Uma transação aprovada pelo OFAC é uma transação em que um desembolso ou pagamento é feito a partir de um endereço aprovado pelo Escritório de Controle de Ativos Estrangeiros do Departamento do Tesouro dos EUA. Eu mantenho uma ferramenta que extrai uma lista de endereços reconhecidos pelo OFAC da lista de Nacionais Especialmente Designados (SDN) publicada pelo OFAC.

Existem vários motivos pelos quais as transações podem estar faltando em um bloco. De modo geral, as transações não são distribuídas uniformemente pela rede e não existe um mempool global a partir do qual as transações possam ser selecionadas. Cada nó possui seu próprio conjunto de transações válidas. Os pools de mineração também podem priorizar transações que recebem pagamentos fora da banda. No entanto, também pode despriorizar ou filtrar transações.

O objetivo aqui é determinar se o pool de mineração filtrou alguma dessas seis transações aprovadas pela OFAC, ou se há outras explicações possíveis para elas não aparecerem no bloco. Observe que os pools de mineração são livres para escolher quais transações incluir e quais excluir. No entanto, para analisar as propriedades de resistência à censura do Bitcoin, é crucial compreender quais e quantos pools de mineração estão filtrando as transações.

Concluo que os relatórios do miningpool-observer indicando que as transações sancionadas ausentes nos blocos da ViaBTC e da Foundry são provavelmente falsos positivos e não o resultado da filtragem. No entanto, as transações ausentes no bloco F2Pool podem ter sido filtradas.

Bloco ViaBTC 808660

O bloco 808660..866c79c52 foi minerado pela ViaBTC em 21 de setembro de 2023 e não contém a transação 262025e7.. Esta transação combina 100 entradas em uma saída. A saída de uma dessas entradas é paga a 1ECeZBxCVJ8Wm2JSN3Cyc6rge2gnvD3W5K. O endereço foi adicionado à lista SDN do OFAC em 21 de setembro de 2021.

O tamanho da transação é de 14,7 kvB e a taxa paga é de 25,18 sat/vByte. A saída gasta pelo endereço sancionado é de 0,0002 BTC (20k sat) e foi criada no dia anterior. Quando o ViaBTC extraiu o bloco 808660, a transação estava parada no mempool do meu nó há cerca de 75 minutos. Não tem dependências de transações mempool.

Distribuição de taxas em modelos e blocos

Alocação de taxa para blocos e modelo para bloco 808660. Captura de tela de Miningpool.observer.

Verificando a distribuição de taxas para o bloco 808660 em Miningpool.observer, verifica-se que o ViaBTC ocupa cerca de 1 MWU de espaço de bloco (4 MWU no total) e tem transações prioritárias. Eles podem ter origem no acelerador de negociação ViaBTC Bitcoin. Priorizar certas transações significa que transações com taxas mais baixas (como despesas de transações de endereços sancionados aqui) não entram no bloco. Para este bloco ViaBTC, minha instância de observação do pool de mineração lista 24 grandes transações mescladas no final do modelo que não foram incluídas no bloco.

Lista ausente de grandes transações mescladas no bloco 808660

A conclusão tirada disso é que a ViaBTC não filtrou esta transação. Ele é substituído por outros negócios prioritários. Isso foi comprovado pelo fato de que três dias depois, a ViaBTC explorou uma transação que gastou saídas do mesmo endereço sancionado no bloco 809181.

Bloco 813231 da Foundry USA

O bloco 813231..0a8528b6 foi extraído pela Foundry USA em 21 de outubro de 2023 e não contém a transação c9b57191.. Esta transação combina 150 entradas em uma saída. A saída de uma das entradas é paga para 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML. O endereço foi adicionado à lista SDN do OFAC em 14 de abril de 2023.

Como a maioria das 150 entradas são scripts P2SH com múltiplas assinaturas 2 de 3, as transações ausentes são grandes, atingindo 43.842 vByte. Ele paga 5,09 sat/vByte e não depende de transações no mempool. No modelo construído pelo meu nó Bitcoin Core, essa taxa é suficiente para classificá-lo em 161º lugar entre 2.215 transações. No entanto, quando descobri sobre o bloco 812331 da Foundry USA, essa transação, junto com outras 18, estava no meu mempool há apenas cerca de 30 segundos. Isso torna provável que o Foundry não tenha chance de incluir essa transação em seu bloco porque ainda não sabe disso.

A propagação da transação pode levar vários segundos. Além disso, a maioria dos pools de mineração apenas envia novos modelos de bloco aos mineradores a cada 30 segundos e depois demora um pouco para mudar para novos trabalhos. Além disso, a ferramenta miningpool-observer solicita novos modelos de bloco a cada poucos segundos e executa uma correspondência de melhor esforço com base em diferenças mínimas em transações perdidas e extras (consulte o método no FAQ). Isso possibilita que novas transações apresentem falsos positivos por até 60 segundos ou mais.

O explorador de blocos mempool.space também rastreia as diferenças entre o modelo de bloco e o bloco final transmitido pelos mineradores. Eles mostram que c9b57191.. está incluído em seu modelo, mas ausente no bloco real. A transação também foi rotulada como “Transmitida recentemente” por eles.

A transação ausente no bloco 813231 do Foundry é considerada "transmitida recentemente" por mempool.space.

A conclusão a retirar disto é que a Foundry USA não filtrou a operação. A transação foi transmitida tarde demais para ser incluída na operação de mineração que acabou encontrando o bloco 813231. Além disso, a Foundry USA extraiu o próximo bloco na altitude 813232 e incluiu lá as transações aprovadas.

Blocos F2Pool 810727, 811791, 811920, 813357

F2Pool extraiu o bloco 810727..ccda1498 em 5 de outubro de 2023, os blocos 811791..af4453d6 e 811920..00badf62 em 12 de outubro e o bloco 813357..63ac1669 em 22 de outubro. Cada bloco está faltando uma transação reconhecida. Cada uma dessas transações combina 150 entradas multisig 2 de 3 em uma única saída. Para cada transação, uma das entradas é paga à saída de 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML. Este é o mesmo modo de integração e endereço discutido na seção anterior. Nenhuma das transações perdidas depende de transações no mempool.

Bloco 810727

No bloco 810727, F2Pool não contém a transação c6a66836.., que gasta saídas aprovadas. Com 150 entradas multisig 2 de 3, a transação é bastante grande, com 44.017 vBytes. Quando o F2Pool extraiu o bloco 810727, ele pagou 446.260 sats e permaneceu no pool de memória do meu nó por quase 4 horas. A seleção F2Pool contém a transação 907e1f45.., não c6a66836... A transação também é uma transação consolidada com 150 entradas e uma saída, mas não gasta da produção reconhecida. Ele paga o mesmo que 446260 sat, mas é 3 vBytes maior que 44020 vByte. Isso significa que a transação ausente c6a66836.. tem uma taxa ligeiramente superior a 907e1f45... Ao classificar estritamente por taxa, a transação ausente deveria ter sido incluída. No entanto, na realidade, é improvável que os 3 vBytes de espaço de bloco adicional tenham impacto nas taxas totais de um bloco.

Comparação de transações aprovadas ausentes no bloco F2Pool 810727 com transações extras incluídas. Transações adicionais adicionam 3 vBytes.

Bloco 811791

A transação aprovada aa001ce6... está faltando no bloco F2Pools 811791. Semelhante à transação de mesclagem anterior, o tamanho desta transação é 42.459 vBytes (169.836 WU). Se a taxa for 446260 sat, a taxa paga será de 10,5 sat/vByte. Quando o bloco 811791 atinge o nó observador do pool, a transação foi mantida em seu mempool por quatro minutos.

Neste bloco, vale ressaltar que faltam 5 transações com compromissos do bloco OP_RETURN Stacks. No entanto, F2Pool inseriu seus próprios compromissos de bloco Stacks. Isso acontece com frequência e já foi relatado antes. Além disso, o F2Pool inclui duas grandes transações sem taxa em seu bloco. Uma é a saída da base de moedas F2Pool antes da integração e a outra é a transação que paga os mineradores. Este é um comportamento comum para blocos minerados pelo F2Pool.

Embora essas transações adicionais ocupem mais de 400 kWU de espaço de bloco, ainda há espaço suficiente para incluir a transação aa001ce6... O bloco contém 2,86 MWU de transações, o que é inferior à taxa de 10,5 sat/vByte de aa001ce6.... A transação é de cerca de 170 kWU, que cabe no bloco. Em mempool.space, a transação é marcada como “excluída”, o que afeta negativamente as métricas de integridade do bloco.

As taxas alocadas por pacote de transações no bloco 811791 incluem as taxas e marcadores de peso para transações faltantes.

Bloco 811920

No bloco 811920, F2Pool não contém a transação 1cb3d6bc.., que gasta saídas aprovadas. Esta transação também é uma grande transação de fusão. Ele tem um tamanho de 43.630 vBytes (169.836 WU), uma taxa de 44.660 sat e uma taxa paga de 10,23 sat/vByte. Quando o bloco 811920 atinge o nó observador do pool, a transação foi mantida no mempool do nó por quase 2 minutos.

No bloco 811920, uma transação de 1,44 MWU pagou menos de 10,23 sat/vByte. A transação de 170 kWU 1cb3d6bc.. caberá neste bloco. Como a transação está no mempool do meu nó há quase dois minutos, é possível que a transação não tenha sido propagada para F2Pool no momento em que eles constroem o modelo de bloco. A transação também aparece como “Transmissão recente” em mempool.space. Normalmente, os pools de mineração tentam estabelecer uma boa conexão com a rede Bitcoin. Se a transação estiver no mempool de mempool.space e miningpool.observer, então a transação provavelmente estará no mempool de F2Pool.

As taxas alocadas por pacote de transações no bloco 811920 incluem taxas e marcadores de peso para transações faltantes.

Bloco 813357

No bloco 813357 do F2Pool, falta a transação e49cdb60..9 que gasta a saída de aprovação. O tamanho desta transação de mesclagem é 43.053 vBytes (172.209 WU). Se a taxa for 178504 sat, a taxa paga será de 4,15 sat/vByte. Quando o bloco 813357 atinge o nó observador do pool, a transação foi mantida no mempool do nó por mais de 25 minutos.

No bloco 813357, foram realizadas 684 transações kWU pagando menos de 4,15 sat/vByte. A transação de 172 kWU e49cdb60.. caberá neste bloco. Como a transação está no mempool do meu nó há mais de 25 minutos, é improvável que a transação ainda não tenha sido propagada para um dos nós F2Pools. Esta transação também está incluída no modelo do bloco mempool-space 813357.

Distribuição de taxas por pacote de transações no bloco 813357, incluindo marcadores de taxas e pesos para transações faltantes.

Conclusão do bloco F2Pools

A transação aprovada ausente no bloco 810727 tem uma taxa um pouco mais alta porque é 3 vByte menor que a transação incluída. Embora neste caso esses 3 vBytes de espaço de bloco adicional não tenham impacto na taxa total, o algoritmo do modelo de bloco Bitcoin Core selecionará transações com taxas mais altas. O grande número de transações adicionais incluídas no bloco 811791 não terá impacto nas transações aprovadas em falta no bloco 811791. Pode ter sido filtrado do bloco. A auditoria de bloco em mempool.space concorda com isso. É possível que a F2Pool ainda não tenha conhecimento da transação de endosso ausente no bloco 811920. No entanto, para grandes pools de mineração, 2 minutos devem ser suficientes para receber as transações. Especialmente porque mempool.space e Miningpool.observer sabem deste acordo. Esta transação aprovada provavelmente foi perdida devido à filtragem do F2Pool. Semelhante à transação ausente no bloco 811791, é provável que a transação ausente no bloco 813357 tenha sido filtrada pelo F2Pool.

Essas quatro transações sancionadas ausentes levam à conclusão de que a F2Phi está atualmente filtrando as transações. Como vemos apenas gastos de transações ausentes de um único endereço sancionado pelo OFAC, 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML, não podemos dizer se o F2Pool está filtrando esse único endereço ou todos os endereços sancionados pelo OFAC.

para concluir

O artigo discute seis transações de Bitcoin gastas de endereços aprovados pela OFAC que a ferramenta Mining Pool Watcher detectou que estavam faltando nos blocos. As duas transações ausentes nos blocos de pool de mineração ViaBTC e Foundry USA eram falsos positivos e não foram filtradas. Quatro transações aprovadas pelo OFAC ausentes no bloco F2Pool podem ter sido filtradas. Isto levanta a questão de por que o F2Pool, que se originou na Ásia, foi o primeiro pool de mineração a filtrar transações com base nas sanções do OFAC dos EUA.

No entanto, a rede Bitcoin continua operando normalmente. A filtragem de transações por um único pool não afeta a resistência à censura em toda a rede Bitcoin. Um monitoramento adicional da seleção de transações de um pool poderia identificar quando mais pools começariam a filtrar as transações com base em fatores como as sanções do OFAC. Também permite que os mineradores direcionem seu poder de computação para esses pools e, se discordarem da política de filtragem (não anunciada) do pool, podem tomar uma decisão informada de mudar para um pool diferente.

  1. Como nenhum dos blocos com transações faltantes está próximo do limite sigop de 80.000, estes não são discutidos aqui.​

  2. Bloco ViaBTC 808660: 000000000000000000017c18a76632d9e39e8c388ee1e4028ec75e50866c79c5

  3. Transação ausente no bloco 808660: 262025e73812fc68b6514ea366abf463147176c7867e5853f117aded58c30e0e

  4. A transação cb9f2592.. extraída pela ViaBTC no bloco 809181 foi uma transação Omnilayer que depositou 1528 USDT neste endereço em setembro de 2020. A saída da transação para o endereço sancionado 1ECeZBxCVJ8Wm2JSN3Cyc6rge2gnvD3W5K é semelhante à transação 262025e7.. ausente no bloco 80866.

    Verifiquei alguns desses endereços e todos continham saldos de USDT no OmniLayer que foram eliminados nessas transações. Embora isso seja um palpite, parece que alguém queria limpar o USDT restante em vários endereços, enviar 20k sat para cada endereço e estragar a verificação mesclando a saída recém-criada novamente em 262025e7... e então eles Tentei d11019a2 novamente..e digitalizei com sucesso com cb9f2592...

    Se for esse o caso, o OFAC poderá perder vários endereços da mesma entidade em sua lista.​

  5. O bloco 813231 extraído pelo Foundry tem hash de cabeçalho: 0000000000000000001740d5fbb8bbc0b93d4bf46ca2011f642e92a0a8528b6

  6. O txid da transação aprovada ausente no bloco 813231 é: c9b5719131bfeac6378749243731c5e70f1ce56deabb7006a2b6539710866420

  7. Segundo dados do OXT.me, o endereço pertence à carteira OKEX. A transação mesclada c9b57191.. é um depósito mesclado OKEX. De acordo com OXT.me, o resultado da fusão são os pagamentos do mercado darknet Hydra. Mais informações podem ser encontradas aqui.

  8. bloquear hash

  • 810727: 

    00000000000000000350ae5ee08a4415146612af59a20021efeaf2ccda1498

  • 811791: 

    000000000000000001631243b00b6c1019c0d833b6738e0c591dacaf4453d6

  • 811920: 

    0000000000000000002efd0fc8801b149f505b125308a35c584ed2600badf62

  • 813357: 

    000000000000000000519c33dcdf5ca386524b2cbacb561f767e9663ac1669

9. Transações ausentes e aprovadas:

  • 810727: 

    c6a668364f19df0f2977f8ad7d0a3a73c5e32b55b6a7c650cafa37a5ab4b19f2

  • 811791: 

    aa001ce6e262b8b9042645ecdec9c84e9e2ad06f56dff6dd5ae42005fdea8da9

  • 811920: 

    1cb3d6bcc650c2891b68e7b205d601bcf5158e30e1926d0fd0c8385cb456b37b

  • 813357: 

    e49cdb6075c49b8fc37b3e922038e2a3205d75a9a1fb4b69f3568707594c2d3e

10. O tamanho da transação selecionado pelo F2Pool para o bloco 810727 é um pouco maior, portanto a taxa é menor:

  • 907e1f45334652dd344cf846639f3f9a2ee11b5489e2ffc2660ea543881b1bce

Provavelmente porque há menos nonces de baixo r na assinatura, o que torna a assinatura maior.​