作者:0xB10C;编译:松雪,金色财经
我的项目,miningpool-observer,旨在检测比特币矿池何时没有进行它们本来可以进行的交易。 过去几周,它检测到来自 OFAC 批准地址的六笔缺失交易支出。 这篇文章探讨了这些交易是否因为从 OFAC 批准的地址支出而被故意过滤,或者是否有其他可能的解释导致这些交易从区块中丢失。 我的结论是,其中的四笔交易可能被过滤了。
2023 年 9 月和 10 月,我的挖矿池观察者实例的 RSS 提要报告了 6 个区块缺少 OFAC 批准的交易。 其中一个区块由 ViaBTC 矿池开采,另一个由 Foundry USA 矿池开采,另外四个由 F2Pool 矿池开采。 OFAC 批准的交易是指从美国财政部外国资产控制办公室批准的地址进行支出或付款的交易。 我维护一个工具,用于从 OFAC 发布的特别指定国民 (SDN) 列表中提取 OFAC 认可的地址列表。
有几个原因可以解释为什么区块中可能缺少交易。 一般来说,交易不会在网络中均匀传播,并且没有全局内存池可供选择交易。 每个节点都有自己的一组有效交易。 矿池还可能会优先考虑收到带外付款的交易。 然而,它也可能会降低交易的优先级或过滤交易。
这里的目标是确定矿池是否过滤了这六项 OFAC 批准的交易中的任何一项,或者是否有其他可能的解释导致它们没有出现在区块中。 请注意,矿池可以自由选择包含哪些交易以及排除哪些交易。 然而,要分析比特币的抗审查特性,了解哪些矿池以及有多少矿池在过滤交易至关重要。
我的结论是,miningpool-observer 的报告表明 ViaBTC 和 Foundry 的区块中缺失的受制裁交易很可能是误报,而不是过滤的结果。 然而,F2Pool 区块中缺失的交易可能已被过滤。
ViaBTC 区块 808660
区块 808660 ..866c79c52 由 ViaBTC 于 2023 年 9 月 21 日开采,不包含交易 262025e7..。 该交易将 100 个输入合并为一个输出。 这些输入之一的输出支付给 1ECeZBxCVJ8Wm2JSN3Cyc6rge2gnvD3W5K。 该地址已于 2021 年 9 月 21 日添加到 OFAC 的 SDN 列表中。
该交易的大小为 14.7 kvB,支付的费用为 25.18 sat/vByte。 受制裁地址花费的输出为 0.0002 BTC (20k sat),并且是在前一天创建的。 当 ViaBTC 开采区块 808660 时,该交易已在我节点的内存池中保存了大约 75 分钟。 它对内存池内交易没有任何依赖。
模板和区块中的费率分布
区块的费率分配和区块 808660 的模板。来自 Miningpool.observer 的屏幕截图。
检查 Miningpool.observer 上区块 808660 的费率分布,发现 ViaBTC 占用了约 1 MWU 的区块空间(总共 4 MWU),并且具有优先交易。 这些可能源于 ViaBTC 比特币交易加速器。 优先考虑某些交易意味着费用较低的交易(例如来自此处受制裁地址的交易支出)不会进入区块。 对于这个 ViaBTC 区块,我的挖矿池观察者实例在模板末尾列出了 24 个未进入该区块的大型合并交易。
区块 808660 中缺失的大型合并交易列表
由此得出的结论是,ViaBTC 没有过滤这笔交易。 它被其他优先交易取代。 三天后,ViaBTC 挖掘了一笔交易 ,该交易花费了区块 809181 中同一受制裁地址的输出,这一事实证明了这一点。
Foundry USA 的区块 813231
区块 813231 ..0a8528b6 由 Foundry USA 于 2023 年 10 月 21 日开采,不包含交易 c9b57191..。 该交易将 150 个输入合并为一个输出。 其中一项输入的输出支付给 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML。 该地址已于 2023 年 4 月 14 日添加到 OFAC 的 SDN 列表中。
由于 150 个输入中的大多数都是 2-of-3 多重签名 P2SH 脚本,因此缺失的交易很大,达到 43842 vByte。 它支付 5.09 sat/vByte 的费用,并且不依赖内存池内交易。 在我的比特币核心节点构建的模板中,这个费率足以将其排在 2215 笔交易中的第 161 位。 然而,当我了解到 Foundry USA 的区块 812331 时,这笔交易以及其他 18 笔交易在我的内存池中只存在了大约 30 秒。 这使得 Foundry 很可能没有机会将该交易包含在他们的区块中,因为他们还不知道这一点。
交易传播可能需要几秒钟的时间。 此外,大多数矿池每 30 秒才会向矿工推送新的区块模板,然后需要一段时间才能切换到新作业。 此外,miningpool-observer 工具每隔几秒请求新的块模板,并根据丢失和额外交易的最小差异进行尽力匹配(请参阅常见问题解答中的方法)。 这使得新交易可能出现长达 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 多重签名输入合并为一个输出。 对于每笔交易,其中一个输入将支付给 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML 的输出。 这与上一节中讨论的整合模式和地址相同。 丢失的交易均不依赖于内存池内的交易。
区块 810727
在区块 810727 中,F2Pool 不包含交易 c6a66836..,该交易花费了认可的输出。 由于有 150 个 2-of-3 多重签名输入,交易相当大,达到 44017 vBytes。 当F2Pool挖出区块810727时,它支付了446260 sat的费用,并在我的节点内存池中呆了近4小时。F2Pool选择包含交易907e1f45..,而不是c6a66836..。 该交易也是一项合并交易,有 150 个输入和一个输出,但不从认可的输出中支出。 它支付与 446260 sat 相同的费用,但恰好比 44020 vByte 大 3 vByte。 这意味着缺失的交易 c6a66836.. 的费率略高于 907e1f45... 当按费率严格排序时,缺失的交易应该已包含在内。 然而,实际上,3 vByte 的额外区块空间不太可能对区块中的总费用产生影响。
F2Pool 区块 810727 中缺失的认可交易与包含的额外交易的比较。 额外的交易增加了 3 vBytes。
区块 811791
F2Pools 区块 811791 中缺少已批准的交易 aa001ce6..。与之前的合并交易类似,该交易的大小为 42459 vBytes (169836 WU)。 如果费用为 446260 sat,则支付的费用为 10.5 sat/vByte。 当区块 811791 到达矿池观察者节点时,该交易已在其内存池中保存了四分钟。
在此区块中,值得注意的是,缺少 5 个具有 OP_RETURN Stacks 区块承诺的交易。 然而,F2Pool 已经插入了自己的 Stacks 区块承诺。 这种情况经常发生,并且之前已有报道。 此外,F2Pool 在其区块中包含两笔大型零费用交易。 一个是整合之前的 F2Pool coinbase 输出,另一个是向矿工支付的交易。 这是 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.. 将适合该区块。 由于该交易在我的节点内存池中仅存在了近两分钟,因此当他们构建区块模板时,该交易可能尚未传播到 F2Pool。 该交易在 mempool.space 上也显示为“最近广播”。 通常,矿池会尝试与比特币网络建立良好的连接。 如果该交易位于mempool.space和miningpool.observer的mempool中,那么该交易很可能位于F2Pool的mempool中。
区块 811920 中按交易包分配的费率包括缺失交易的费率和权重标记。
区块 813357
在 F2Pool 的区块 813357 中,花费认可输出的交易 e49cdb60..9 缺失。 此合并事务的大小为 43053 vBytes (172209 WU)。 如果费用为 178504 sat,则支付的费用为 4.15 sat/vByte。 当区块 813357 到达矿池观察者节点时,该交易已在该节点的内存池中保存了超过 25 分钟。
在区块 813357 中,有 684 kWU 的交易支付低于 4.15 sat/vByte。172 kWU 交易 e49cdb60.. 将适合该区块。 由于该交易在我的节点内存池中停留了超过 25 分钟,因此该交易不太可能尚未传播到 F2Pools 节点之一。 该交易也包含在 mempool-space 区块 813357 的模板中。
区块 813357 中按交易包进行的费率分配,包括丢失交易的费率和权重标记。
F2Pools区块结论
区块 810727 中缺失的已批准交易的费率略高,因为它比包含的交易小 3 vByte。 虽然在这种情况下,这 3 vBytes 的额外区块空间不会对总费用产生影响,但比特币核心区块模板算法会选择费用较高的交易。 区块 811791 中包含的大量额外交易不会对区块 811791 中缺失的已批准交易产生影响。它可能已从区块中过滤掉。 mempool.space 上的区块审计也同意这一点。 F2Pool 有可能还不知道第 811920 块中丢失的认可交易。但是,对于大型矿池来说,2 分钟应该足以接收交易。 特别是因为 mempool.space 和 Miningpool.observer 知道这笔交易。 这笔被批准的交易很可能因为 F2Pool 的过滤而丢失了。 与区块 811791 缺失交易类似,区块 813357 缺失交易很可能已被 F2Pool 过滤。
这四笔缺失的受制裁交易得出鱼池目前正在过滤交易的结论。 由于我们只看到来自 OFAC 认可的单个地址 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML 的交易支出缺失,因此我们无法判断 F2Pool 是否正在过滤该单个地址或所有 OFAC 认可的地址。
结论
这篇文章讨论了来自 OFAC 批准地址的 6 笔比特币交易支出,矿池观察者工具检测到这些地址在区块中缺失。 ViaBTC 和 Foundry USA 矿池区块中缺失的两笔交易是误报且未被过滤。 F2Pool 区块中缺失的四笔 OFAC 批准的交易可能已被过滤。 这就提出了一个问题,为什么起源于亚洲的鱼池 F2Pool 是第一个根据美国 OFAC 制裁过滤交易的矿池。
然而,比特币网络继续正常运行。 单一池过滤交易不会影响整个比特币网络的审查阻力。 进一步监控矿池的交易选择可以识别更多矿池何时开始根据 OFAC 制裁等因素过滤交易。 它还允许矿工将他们的算力指向这些矿池,如果他们不同意矿池的(未宣布的)过滤政策,他们可以做出切换到不同矿池的明智决定。
由于所有丢失交易的区块都没有接近 80.000 的 sigop 限制,因此这里不讨论这些。
ViaBTC区块808660:000000000000000000017c18a76632d9e39e8c388ee1e4028ec75e50866c79c5
区块 808660 中缺少交易:262025e73812fc68b6514ea366abf463147176c7867e5853f117aded58c30e0e
ViaBTC 在区块 809181 中挖掘的交易 cb9f2592.. 是一项 Omnilayer 交易,于 2020 年 9 月将 1528 USDT 存入该地址。该交易的受制裁地址 1ECeZBxCVJ8Wm2JSN3Cyc6rge2gnvD3W5K 的输出类似于交易 262025e7.. 在区块 80866 中缺失。
我检查了其中一些地址,它们都包含 OmniLayer 上的 USDT 余额,这些余额在这些交易中被清空。 虽然这是一个猜测,但似乎有人想清除一堆地址上剩余的 USDT,向每个地址发送 20k sat,并通过在 262025e7 中再次合并新创建的输出来搞砸扫描......然后他们重试了 d11019a2..并用cb9f2592成功扫了它...
如果是这种情况,那么 OFAC 可能会丢失其列表中同一实体的一堆地址。
Foundry 开采的区块 813231 具有标头哈希:00000000000000000001740d5fbb8bbc0b93d4bf46ca2011f642e92a0a8528b6
区块 813231 中缺失的已批准交易的 txid 为:c9b5719131bfeac6378749243731c5e70f1ce56deabb7006a2b6539710866420
根据 OXT.me 数据,该地址属于 OKEX 钱包。 合并交易c9b57191..是OKEX合并存款。 根据 OXT.me 的说法,合并的输出是 Hydra 暗网市场的支出。 可以在此处找到更多信息。
区块哈希
810727: 0000000000000000000350ae5ee08a4415146612af59a20021efeaf2ccda1498
811791: 00000000000000000001631243b00b6c1019c0d833b6738e0c591dacaf4453d6
811920: 00000000000000000002efd0fc8801b149f505b125308a35c584ed2600badf62
813357: 00000000000000000000519c33dcdf5ca386524b2cbacb561f767e9663ac1669
9.缺失的、经批准的交易:
810727: c6a668364f19df0f2977f8ad7d0a3a73c5e32b55b6a7c650cafa37a5ab4b19f2
811791: aa001ce6e262b8b9042645ecdec9c84e9e2ad06f56dff6dd5ae42005fdea8da9
811920: 1cb3d6bcc650c2891b68e7b205d601bcf5158e30e1926d0fd0c8385cb456b37b
813357: e49cdb6075c49b8fc37b3e922038e2a3205d75a9a1fb4b69f3568707594c2d3e
10.F2Pool 为区块 810727 选择的交易规模稍大,因此费率较低:
可能是因为签名中的低 r 随机数较少,这使得签名更大。