著者: 0xB10C コンパイラ: Songxue、Golden Finance

私のプロジェクト miningpool-observer は、ビットコイン マイニング プールが実行できるはずのトランザクションを実行していないことを検出することを目的としています。過去数週間で、OFAC が承認したアドレスからの 6 件のトランザクション支出が失われていることが検出されました。この記事では、これらのトランザクションが OFAC 承認のアドレスから使用されたために意図的にフィルタリングされたのか、またはこれらのトランザクションがブロックから欠落した理由について他の考えられる説明があるのか​​どうかを検討します。私の結論は、トランザクションのうち 4 つがフィルタリングされた可能性があるということです。

2023 年 9 月と 10 月に、マイニング プール オブザーバー インスタンスの RSS フィードで、OFAC 承認のトランザクションが 6 ブロック欠落していると報告されました。ブロックの 1 つは ViaBTC マイニング プールによってマイニングされ、もう 1 つは Foundry USA マイニング プールによってマイニングされ、残りの 4 つは F2Pool マイニング プールによってマイニングされました。 OFAC 承認の取引とは、米国財務省外国資産管理局によって承認された住所から出金または支払いが行われる取引です。私は、OFAC が発行する特別指定国民 (SDN) リストから OFAC が認識する住所のリストを抽出するツールを管理しています。

トランザクションがブロックから欠落する理由はいくつかあります。 一般に、トランザクションはネットワーク全体に均等に分散されておらず、トランザクションを選択できるグローバル メモリプールはありません。 各ノードには独自の有効なトランザクションのセットがあります。 マイニングプールは、帯域外の支払いを受け取るトランザクションを優先することもあります。 ただし、トランザクションの優先順位が下がったり、フィルタリングされたりする場合もあります。

ここでの目的は、マイニング プールがこれら 6 つの OFAC 承認トランザクションのいずれかをフィルタリングしたかどうか、またはブロックに表示されない他の考えられる説明があるかどうかを判断することです。 マイニングプールは、どのトランザクションを含めるか、どのトランザクションを除外するかを自由に選択できることに注意してください。 ただし、ビットコインの検閲耐性を分析するには、どのマイニング プールがどれだけの量でトランザクションをフィルタリングしているかを理解することが重要です。

私は、ViaBTC と Foundry のブロックから欠落している認可済みトランザクションはフィルタリングの結果ではなく誤検知である可能性が高いことを示す miningpool-observer からのレポートであると結論付けます。 ただし、F2Pool ブロッ​​クにないトランザクションはフィルタリングされている可能性があります。

BTC ブロック 808660 経由

ブロック 808660..866c79c52 は、2023 年 9 月 21 日に ViaBTC によってマイニングされ、トランザクション 262025e7.. は含まれていません。 このトランザクションは、100 個の入力を 1 つの出力に結合します。 これらの入力の 1 つの出力は 1ECeZBxCVJ8Wm2JSN3Cyc6rge2gnvD3W5K に支払われます。 このアドレスは、2021 年 9 月 21 日に OFAC の SDN リストに追加されました。

トランザクションのサイズは 14.7 kvB で、支払われる料金は 25.18 sat/vByte です。 認可されたアドレスによって費やされる出力は 0.0002 BTC (20k sat) で、前日に作成されました。 ViaBTC がブロック 808660 をマイニングしたとき、トランザクションはノードのメモリプールに約 75 分間留まっていた。 mempool トランザクションには依存しません。

テンプレートとブロックでのレート分布

ブロックのレート割り当てとブロック 808660 のテンプレート。 Miningpool.observer のスクリーンショット。

Miningpool.observer 上のブロック 808660 のレート分布を確認すると、ViaBTC がブロック スペースの約 1 MWU (合計 4 MWU) を占有し、優先トランザクションを持っていることがわかります。 これらは、ViaBTC ビットコイン取引アクセラレーターから発信される可能性があります。 特定のトランザクションを優先するということは、手数料が低いトランザクション (ここでは認可されたアドレスからのトランザクション支出など) がブロックに入らないことを意味します。 この ViaBTC ブロックの場合、私のマイニング プール オブザーバー インスタンスは、ブロックに入れられなかった 24 個の大規模なマージされたトランザクションをテンプレートの最後にリストします。

ブロック 808660 に大規模なマージされたトランザクションのリストがありません

これから得られる結論は、ViaBTC がこのトランザクションをフィルタリングしなかったということです。 それは他の優先取引によって置き換えられます。 これは、3日後、ViaBTCがブロック809181の同じ認可されたアドレスから出力を消費するトランザクションをマイニングしたという事実によって証明されました。

Foundry USA のブロック 813231

ブロック 813231..0a8528b6 は、2023 年 10 月 21 日に Foundry USA によってマイニングされ、トランザクション c9b57191.. は含まれていません。 このトランザクションは、150 の入力を 1 つの出力に結合します。 入力の 1 つの出力は 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML に支払われます。 このアドレスは、2023 年 4 月 14 日に OFAC の SDN リストに追加されました。

150 の入力のほとんどは 2-of-3 マルチシグネチャ P2SH スクリプトであるため、欠落しているトランザクションは大きく、43842 vByte に達します。 5.09 sat/vByte を支払い、メモリプール内のトランザクションに依存しません。 私の Bitcoin Core ノードによって構築されたテンプレートでは、このレートは 2215 トランザクション中 161 位にランクされるのに十分です。 しかし、Foundry USA のブロック 812331 について知ったとき、そのトランザクションは他の 18 件とともに私のメモリプールに 30 秒ほどしか存在していませんでした。 このため、Foundry はまだこのトランザクションについて知らないため、このトランザクションをブロックに含める可能性はありません。

トランザクションの伝播には数秒かかる場合があります。 さらに、ほとんどのマイニング プールは、新しいブロック テンプレートを 30 秒ごとにマイナーにプッシュするだけで、その後、新しいジョブに切り替えるまでに時間がかかります。 さらに、miningpool-observer ツールは、数秒ごとに新しいブロック テンプレートを要求し、失われたトランザクションと余分なトランザクションの最小限の違いに基づいてベストエフォートの一致を実行します (FAQ の方法を参照)。 これにより、新しいトランザクションで最大 60 秒ほど誤検知が発生する可能性があります。

mempool.space ブロック エクスプローラーは、ブロック テンプレートとマイナーによる最終ブロック ブロードキャスト間の差異も追跡します。 c9b57191.. がテンプレートには含まれているものの、実際のブロックには含まれていないことがわかります。 このトランザクションは、彼らによって「最近ブロードキャストされた」ともマークされました。

Foundry のブロック 813231 で失われたトランザクションは、mempool.space によって「最近ブロードキャストされた」と見なされます。

このことから導き出される結論は、Foundry USA がトランザクションをフィルタリングしなかったということです。 トランザクションのブロードキャストが遅すぎて、最終的にブロック 813231 が見つかったマイニング操作に含めることができませんでした。さらに、Foundry USA は高度 813232 で次のブロックを採掘し、そこで承認されたトランザクションを含めました。

F2Pool ブロッ​​ク 810727、811791、811920、813357

F2Pool は、2023 年 10 月 5 日にブロック 810727..ccda1498、10 月 12 日にブロック 811791..af4453d6 と 811920..00badf62、10 月 22 日にブロック 813357..63ac1669 をマイニングしました。各ブロックには認識されたトランザクションがありません。 これらの各トランザクションは、150 の 2-of-3 マルチシグ入力を 1 つの出力に結合します。 トランザクションごとに、入力の 1 つが 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML の出力に支払われます。 これは、前のセクションで説明した統合モードとアドレスと同じです。 失われたトランザクションはいずれもメモリプール内のトランザクションに依存しません。

ブロック 810727

ブロック 810727 では、F2Pool には、承認された出力を使用するトランザクション c6a66836... が含まれていません。 150 の 2-of-3 マルチシグ入力では、トランザクションは 44017 vBytes と非常に大きくなります。 F2Pool がブロック 810727 をマイニングしたとき、446260 sat を支払い、ほぼ 4 時間ノードのメモリ プールに留まりました。 F2Pool の選択には、c6a66836... ではなく、トランザクション 907e1f45... が含まれています。 このトランザクションは、150 の入力と 1 つの出力を含む統合トランザクションでもありますが、認識された出力からは支出されません。 料金は 446260 sat と同じですが、たまたま 44020 vByte よりも 3 vByte 大きくなります。 これは、欠落しているトランザクション c6a66836.. のレートが 907e1f45... よりわずかに高いことを意味します。厳密にレートで並べ替える場合、欠落しているトランザクションは含まれているはずです。 ただし、実際には、3 vByte の追加ブロック スペースがブロック内の合計料金に影響を与える可能性はほとんどありません。

F2Pool ブロッ​​ク 810727 で欠落している承認済みトランザクションと、含まれている追加トランザクションの比較。 追加のトランザクションにより 3 vBytes が追加されます。

ブロック 811791

承認されたトランザクション aa001ce6... が F2Pools ブロック 811791 にありません。前のマージ トランザクションと同様に、このトランザクションのサイズは 42459 vBytes (169836 WU) です。 料金が 446260 sat の場合、支払われる料金は 10.5 sat/vByte です。 ブロック 811791 がプール オブザーバ ノードに到達すると、トランザクションはそのメモリプールに 4 分間保持されます。

このブロックでは、OP_RETURN スタック ブロック コミットメントを持つ 5 つのトランザクションが欠落していることに注意してください。 ただし、F2Pool は独自のスタック ブロック コミットメントを挿入しました。 これは頻繁に発生しており、以前にも報告されています。 さらに、F2Pool のブロックには 2 つの大規模な手数料ゼロのトランザクションが含まれています。 1 つは統合前の F2Pool コインベースの出力で、もう 1 つはマイナーに支払うトランザクションです。 これは、F2Pool によってマイニングされたブロックによくある動作です。

これらの追加トランザクションは 400 kWU を超えるブロック領域を占有しますが、トランザクション aa001ce6... を含めるのに十分な領域がまだあります。ブロックには 2.86 MWU のトランザクションが含まれており、これは aa001ce6... の 10.5 sat/vByte レートよりも低いです。 取引量は約 170 kWU で、このブロックに収まります。 mempool.space では、トランザクションは「削除済み」としてマークされ、ブロックの健全性メトリクスに悪影響を及ぼします。

ブロック 811791 のトランザクション パッケージによって割り当てられたレートには、不足しているトランザクションのレートと重みマーカーが含まれます。

ブロック 811920

ブロック 811920 では、F2Pool には、承認された出力を使用するトランザクション 1cb3d6bc... が含まれていません。 この取引は大規模な合併取引でもあります。 サイズは 43630 vBytes (169836 WU)、料金は 44660 sat、有料料金は 10.23 sat/vByte です。 ブロック 811920 がプール オブザーバー ノードに到達すると、トランザクションはノードのメモリプールに 2 分間近く保持されます。

ブロック 811920 では、1.44 MWU トランザクションの支払額は 10.23 sat/vByte 未満でした。 170 kWU トランザクション 1cb3d6bc.. はこのブロックに収まります。 トランザクションはノードのメモリプールに 2 分近くしか存在しなかったため、ブロック テンプレートが構築されるまでにトランザクションが F2Pool に伝播されなかった可能性があります。 このトランザクションは、mempool.space に「最近のブロードキャスト」としても表示されます。 通常、マイニング プールはビットコイン ネットワークへの良好な接続を確立しようとします。 トランザクションが mempool.space および miningpool.observer のメモリプールにある場合、トランザクションは F2Pool のメモリプールにある可能性があります。

ブロック 811920 のトランザクション パッケージによって割り当てられたレートには、不足しているトランザクションのレートと重みマーカーが含まれます。

ブロック 813357

F2Pool のブロック 813357 で、承認出力を使用するトランザクション e49cdb60..9 が欠落しています。 このマージ トランザクションのサイズは 43053 vBytes (172209 WU) です。 料金が 178504 sat の場合、支払われる料金は 4.15 sat/vByte です。 ブロック 813357 がプール オブザーバー ノードに到達すると、トランザクションはノードのメモリプールに 25 分以上保持されます。

ブロック 813357 では、4.15 sat/vByte 未満の支払いを行う 684 kU のトランザクションがありました。 172 kWU トランザクション e49cdb60.. はこのブロックに収まります。 トランザクションはノードのメモリプールに 25 分以上存在しているため、トランザクションがまだ F2Pools ノードの 1 つに伝播されていない可能性は低いです。 このトランザクションは、mempool-space ブロック 813357 のテンプレートにも含まれています。

ブロック 813357 のトランザクション パッケージ別のレート分布。欠落しているトランザクションのレートおよび重みマーカーが含まれます。

F2Pools ブロックの結論

ブロック 810727 で欠落している承認済みトランザクションは、含まれているトランザクションより 3 vByte 小さいため、レートがわずかに高くなります。 この場合、これら 3 vBytes の追加ブロック スペースは合計手数料には影響しませんが、Bitcoin Core ブロック テンプレート アルゴリズムにより、より高い手数料のトランザクションが選択されます。 ブロック 811791 に含まれる多数の追加トランザクションは、ブロック 811791 で不足している承認済みトランザクションには影響しません。ブロックから除外された可能性があります。 mempool.space のブロック監査もこれに一致しています。 F2Pool がブロック 811920 で不足している承認トランザクションをまだ認識していない可能性があります。ただし、大規模なマイニング プールの場合、トランザクションを受信するには 2 分で十分です。 特にmempool.spaceとMiningpool.observerがこの取引について知っているので。 この承認されたトランザクションは、F2Pool フィルタリングにより失われた可能性があります。 ブロック 811791 の欠落トランザクションと同様に、ブロック 813357 の欠落トランザクションは F2Pool によってフィルターされた可能性があります。

これら 4 つの承認済みトランザクションが欠落していることから、F2Phi が現在トランザクションをフィルタリングしているという結論につながります。 単一の OFAC 認可アドレス 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML からの不足しているトランザクション支出のみが確認されるため、F2Pool がその単一アドレスをフィルタリングしているのか、それともすべての OFAC 認可アドレスをフィルタリングしているのかを知ることはできません。

結論は

この記事では、マイニング プール ウォッチャー ツールがブロックから欠落していることを検出した、OFAC 承認アドレスからの 6 つのビットコイン トランザクションの支出について説明しています。 ViaBTC および Foundry USA マイニング プール ブロックから欠落している 2 つのトランザクションは誤検知であり、フィルターされませんでした。 F2Pool ブロッ​​クにない 4 つの OFAC 承認トランザクションがフィルタリングされた可能性があります。 これは、アジアで生まれた F2Pool が、なぜ米国の OFAC 制裁に基づいて取引をフィルタリングする最初のマイニングプールだったのかという疑問を引き起こします。

ただし、ビットコインネットワークは通常どおり動作し続けます。 単一のプールによるトランザクションのフィルタリングは、ビットコイン ネットワーク全体の検閲耐性には影響しません。 プールのトランザクション選択をさらに監視すると、OFAC 制裁などの要因に基づいて、より多くのプールがトランザクションのフィルタリングを開始する時期を特定できる可能性があります。 また、マイナーは自分のコンピューティング能力をこれらのプールに向けることができ、プールの(予告なしの)フィルタリング ポリシーに同意しない場合は、情報に基づいて別のプールに切り替える決定を下すことができます。

  1. トランザクションが欠落しているブロックはいずれも sigop 制限の 80.000 に近いものではないため、ここでは説明しません。​

  2. BTC ブロック 808660 経由: 000000000000000000017c18a76632d9e39e8c388ee1e4028ec75e50866c79c5

  3. ブロック 808660 にトランザクションがありません: 262025e73812fc68b6514ea366abf463147176c7867e5853f117aded58c30e0e

  4. ブロック 809181 で ViaBTC によってマイニングされたトランザクション cb9f2592.. は、2020 年 9 月にこのアドレスに 1528 USDT を入金した Omnilayer トランザクションでした。トランザクションの認可されたアドレス 1ECeZBxCVJ8Wm2JSN3Cyc6rge2gnvD3W5K には、ブロック 80866 にないトランザクション 262025e7.. と同様の出力があります。

    これらのアドレスのいくつかを確認したところ、これらのアドレスにはすべて、これらのトランザクションで消去された OmniLayer 上の USDT 残高が含まれていました。 これは推測ですが、誰かが多数のアドレスに残っている USDT をクリアし、各アドレスに 20k sat を送信し、新しく作成された出力を 262025e7 で再度マージすることでスキャンを台無しにしようとしたようです...そして彼らはd11019a2 をもう一度試してみました。cb9f2592 で正常にスキャンできました。

    この場合、OFAC はリスト上の同じエンティティの多数のアドレスを失う可能性があります。​

  5. Foundry によってマイニングされたブロック 813231 のヘッダー ハッシュ: 00000000000000000001740d5fbb8bbc0b93d4bf46ca2011f642e92a0a8528b6

  6. ブロック 813231 に欠落している承認済みトランザクションの txid は次のとおりです: c9b5719131bfeac6378749243731c5e70f1ce56deabb7006a2b6539710866420

  7. OXT.me データによると、このアドレスは OKEX ウォレットに属しています。 マージされたトランザクション c9b57191.. は OKEX マージされたデポジットです。 OXT.me によると、合併の成果は Hydra ダークネット市場からの支払いです。 詳細については、こちらをご覧ください。

  8. ブロックハッシュ

  • 810727: 

    0000000000000000000350ae5ee08a4415146612af59a20021efeaf2ccda1498

  • 811791: 

    00000000000000000001631243b00b6c1019c0d833b6738e0c591dacaf4453d6

  • 811920: 

    00000000000000000002efd0fc8801b149f505b125308a35c584ed2600badf62

  • 813357: 

    00000000000000000000519c33dcdf5ca386524b2cbacb561f767e9663ac1669

9. 承認されていないトランザクション:

  • 810727: 

    c6a668364f19df0f2977f8ad7d0a3a73c5e32b55b6a7c650cafa37a5ab4b19f2

  • 811791: 

    aa001ce6e262b8b9042645ecdec9c84e9e2ad06f56dff6dd5ae42005fdea8da9

  • 811920: 

    1cb3d6bcc650c2891b68e7b205d601bcf5158e30e1926d0fd0c8385cb456b37b

  • 813357: 

    e49cdb6075c49b8fc37b3e922038e2a3205d75a9a1fb4b69f3568707594c2d3e

10. F2Pool によってブロック 810727 に対して選択されたトランザクション サイズはわずかに大きいため、手数料は低くなります。

  • 907e1f45334652dd344cf846639f3f9a2ee11b5489e2ffc2660ea543881b1bce

おそらく、署名内の low-r nonce が少なくなり、署名が大きくなるためと考えられます。​