原文作者:B10C 原文编译:GaryMa 吴说区块链 注:原文对于每个地址以及交易都附带对应的超链接,更易于读者进行链上验证。 我的项目,miningpool-observer,旨在检测比特币矿池是否审查交易。在过去几周,它检测到六笔从 OFAC 制裁地址支出的交易失踪。这篇文章探讨了这些交易是否被故意过滤,因为它们来自 OFAC 制裁的地址,或者是否有其他可能的解释导致这些交易未出现在区块中。我得出结论,其中有四笔交易可能被过滤。 在 2023 年 9 月和 10 月,我的 miningpool-observer 实例的 RSS 订阅报告了六个区块中缺少 OFAC 制裁交易。其中一个区块由 ViaBTC 矿池出块,另一个由 Foundry USA 矿池出块,还有四个由 F 2 Pool 出块。OFAC 制裁交易是指一笔从或支付给美国财政部外国资产控制办公室(OFAC)制裁的地址的交易。我维护一个工具,从 OFAC 发布的特别指定国民(SDN)名单中提取 OFAC 制裁地址的列表。 交易未出现在区块中可能有几种原因。一般来说,交易在网络中传播不均匀,没有全局内存池来选择交易。每个节点都有自己一组有效的交易。矿池也可能优先处理通过其他方式支付的交易。然而,它们也可能对某些交易进行降级或过滤。 这里的目标是确定矿池是否过滤了这六笔 OFAC 制裁交易,或者这些交易未出现在区块中是否有其他可能的解释。请注意,矿池可以自由选择包含哪些交易,排除哪些交易。然而,为了分析比特币的抗审查性质,了解有多少矿池以及它们如何过滤交易至关重要。 我得出结论,miningpool-observer 报告的 ViaBTC 和 Foundry 缺少的受制裁交易可能是误报,而不是过滤的结果。然而,F2Pool 区块中缺少的交易很可能已被过滤。 ViaBTC 于 2023 年 9 月 21 日出块的 808660 区块未包含交易 262025 e 7..。这笔交易将 100 个输入合并为一个输出。 其中一个输入支出了付款给地址1ECeZBxCVJ8Wm2JSN3Cyc6rge2gnvD3W5K 的输出。该地址于 2021 年 9 月 21 日被添加到 OFAC 的 SDN 名单中。 该交易的大小为 14.7 kvB,支付费率为 25.18 sat/vByte。从受制裁地址支出的输出为 0.0002 BTC(20 k sat),并且是在出块区块 808660 之前的大约 75 分钟内被创建的。当 ViaBTC 出块区块 808660 时,该交易已经在我的节点内存池中存在了约 75 分钟。它对内存池中的其他交易没有依赖关系。 区块 808660 以及模板的费用分布 在 miningpool.observer 上检查 808660 区块的费率分布,发现 ViaBTC 占用了大约 4 MWU 中的 1 MWU 的块空间,其中包括优先处理的交易。这些交易可能来自 ViaBTC 比特币交易加速器。优先处理一些交易意味着较低费率的交易,例如从受制裁地址支出的交易,在该区块中无法包含。对于这个 ViaBTC 区块,我的 miningpool-observer 实例列出了 24 个未包含在该区块中的大型合并交易。 区块 808660 中丢失的大型合并交易列表 由此推出结论,ViaBTC 没有过滤这笔交易。它被其他优先处理的交易替代。这得到了支持,因为三天后,ViaBTC 在区块 809181 中出块了一笔从相同受制裁地址支出的交易。 Foundry USA 于 2023 年 10 月 21 日出块的 813231 区块未包含交易 c 9 b 57191..。该交易将 150 个输入合并为一个输出。其中一个输入支出了付款给地址 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML7 的输出。该地址于 2023 年 4 月 14 日被添加到 OFAC 的 SDN 名单中。 由于这 150 个输入大多是 2/3 多重签名 P 2 SH 脚本,因此缺失的交易非常大,为 43842 vByte。它支付的费率为 5.09 sat/vByte,且不依赖于内存池中的交易。这个费率足以使其在我 Bitcoin Core 节点构建的模板中的 2215 个交易中排名第 161 位。然而,与之前的情况一样,当我了解到 Foundry USA 出块区块 812331 时,包括这笔交易在内的其他 18 笔交易仅在我的内存池中存在了大约 30 秒。这使得 Foundry 没有机会在他们的区块中包含这笔交易,因为他们还不知道这笔交易。 交易传播可能需要几秒钟的时间。此外,大多数矿池每 30 秒只向矿工推送新的区块模板,然后需要一段时间来切换到新的工作。此外, miningpool-observer 工具每隔几秒请求新的区块模板,并根据缺少和额外交易的最小差异进行最佳匹配(请参阅 FAQ 中的方法论)。这使得年轻交易的误报成为可能,可能高达 60 秒左右。 mempool.space 区块浏览器还跟踪矿工广播的区块模板与最终区块之间的差异。它们显示 c 9 b 57191..在他们的模板中被包含,但在实际区块中缺失。交易被他们标记为“最近广播”。 Foundry 认为区块 813231 中丢失的交易被 mempool.space 视为“最近广播” 此结论表明 Foundry USA 没有过滤此交易。该交易广播太晚,无法包含在发现区块 813231 的出块工作中。此外,Foundry USA 还在高度 813232 出块了下一个区块,并在其中包含了这笔受制裁交易。 F 2 Pool 在 2023 年 10 月 5 日出块了区块 810727 ,标识为..ccda 1498 ;在 10 月 12 日出块了区块 811791 ,标识为..af 445 3d 6 和区块 811920 ,标识为..00 badf 62 ;以及在 10 月 22 日出块了区块 813357 ,标识为..6 3ac 1669 。每个区块都缺少一笔受制裁交易。这些交易中,每笔都将 150 个 2/3 多重签名输入合并为一个输出。对于每个交易,其中一个输入花费了支付给地址 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML 的输出。这与前一部分讨论的合并模式和地址相同。所有缺失的交易都不依赖于内存池中的交易。 区块 810727 在区块 810727 中,F 2 Pool 没有包含交易 c 6 a 66836..9 ,该交易花费了一个受制裁的输出。由于有 150 个 2/3 多重签名输入,该交易相当大,占据了 44017 vBytes。它支付了 446260 sat 的费用,在 F 2 Pool 出块区块 810727 时,在我的节点内存池中已经存在了将近 4 小时。与 c 6 a 66836.. 相比,F 2 Pool 选择包含交易 907 e 1 f 45..10 。这笔交易也是一个合并交易,有 150 个输入和一个输出,但不花费受制裁的输出。它支付相同的费用, 446260 sat,但实际上较大,增加了 3 vByte,达到 44020 vByte。这意味着缺失的交易 c 6 a 66836.. 的费率略高于 907 e 1 f 45..。从费率严格排序的角度来看,应该包含缺失的交易。然而,在实践中, 3 vByte 的额外块空间不太可能在整体费用上产生影响。 对比 F 2 Pool 区块 810727 中缺失的受制裁交易与额外包含的交易。额外的交易较大,增加了 3 vBytes。 区块 811791 在 F 2 Pool 区块 811791 中,缺少了交易 aa 001 ce 6..9 。与之前的合并交易类似,该交易的大小为 42459 vBytes(169836 WU)。以 446260 sat 的费用,它支付了 10.5 sat/vByte 的费率。当区块 811791 到达矿池观察节点时,该交易在其内存池中已经存在了四分钟。 在这个区块中,值得注意的是缺少了五个包含 OP_RETURN 的块承诺的交易。然而,F 2 Pool 却插入了自己的块承诺。这种情况经常发生,并且之前已经报告过。此外,F 2 Pool 在其区块中包含了两笔较大的零费用交易。其中一笔合并了先前的 F 2 Pool coinbase 输出,另一笔是支付给矿工的交易。这是 F 2 Pool 的常见出块行为。 尽管这些额外的交易占用了超过 400 kWU 的区块空间,但仍然足够包含交易 aa 001 ce 6...。该区块包括低于 aa 001 ce 6..费率(10.5 sat/vByte)的 2.86 MWU 交易。这笔约 170 kWU 的交易本应能够容纳在该区块中。在 mempool.space 上,此交易被标记为“已移除”,这对其区块健康度指标产生了负面影响。 在区块 811791 中,包含了缺失交易的费率和权重的交易包的费率分布。 区块 811920 在区块 811920 中,F 2 Pool 没有包含交易 1 cb 3d 6 bc..9 ,该交易花费了一个受制裁的输出。这笔交易同样是一笔较大的合并交易。它的大小为 43630 vBytes(169836 WU),并且以 44660 sat 的费用支付了 10.23 sat/vByte 的费率。当区块 811920 到达矿池观察节点时,该交易在节点的内存池中已经存在了近 2 分钟。 在区块 811920 中,有 1.44 MWU 的交易支付的费率低于 10.23 sat/vByte。交易 1 cb 3d 6 bc.. 的 170 kWU 应该能够容纳在该区块中。由于该交易在我的节点内存池中仅存在了将近两分钟,有可能在 F 2 Pool 构建其区块模板时还没有传播到 F 2 Pool。在 mempool.space 上,该交易也被标记为“最近广播”。通常,矿池努力确保与比特币网络的良好连接。如果该交易在 mempool.space 和 miningpool.observer 的内存池中,有很高的可能性该交易已经在 F 2 Pool 的内存池中。在 F 2 Pool 构建其区块模板时,该交易已经存在。 在区块 811920 中,包含了缺失交易的费率和权重的交易包的费率分布。 区块 813357 在 F 2 Pool 的区块 813357 中,缺少了交易 e 49 cdb 60..9 ,该交易花费了一个受制裁的输出。这笔合并交易的大小为 43053 vBytes(172209 WU)。以 178504 sat 的费用,它支付了 4.15 sat/vByte 的费率。当区块 813357 到达矿池观察节点时,该交易在节点的内存池中已经存在了超过 25 分钟。 在区块 813357 中,有 684 kWU 的交易支付的费率低于 4.15 sat/vByte。交易 e 49 cdb 60.. 的 172 kWU 应该能够容纳在该区块中。由于该交易在我的节点内存池中已经存在了超过 25 分钟,该交易很可能已经传播到 F 2 Pool 的一个节点。该交易也包含在 mempool-space 对于区块 813357 的模板中。 在区块 813357 中,包含了缺失交易的费率和权重的交易包的费率分布。 对 F 2 Pool 区块的总结 从区块 810727 中缺失的受制裁交易来看,它的费率略高,因为它比包含的交易小 3 vByte。然而,在这种情况下,这 3 vByte 的额外块空间不会在总费用上产生影响,比特币核心区块模板算法将选择具有更高费率的交易。在区块 811791 中额外包含的大型交易不会对缺失的区块 811791 中的受制裁交易产生影响。该交易很可能已经被从区块中过滤掉。在 mempool.space 上的区块审核与此相符。有可能 F 2 Pool 尚未了解到区块 811920 中缺失的受制裁交易。然而,对于一个大型矿池来说, 2 分钟足以接收一笔交易。特别是由于 mempool.space 和 miningpool.observer 已经了解了这笔交易。F 2 Pool 之所以没有包含该受制裁交易,很可能是因为它被过滤掉了。与区块 811791 中的缺失交易类似,区块 813357 中的缺失交易很可能被 F 2 Pool 过滤掉。 这四个缺失的受制裁交易可推出一个结论,即 F 2 Pool 目前正在过滤交易。由于我们只看到与单个 OFAC 受制裁地址 3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML 相关的交易缺失,我们无法确定 F 2 Pool 是否仅仅过滤了这个单一地址,还是所有 OFAC 受制裁的地址。 本文讨论了六笔比特币交易,这些交易的花费来自受 OFAC 制裁的地址,被矿池观察工具检测为缺失于区块中。缺失于 ViaBTC 和 Foundry USA 矿池区块的两笔交易是误报,未被过滤。F 2 Pool 区块中缺失的四笔 OFAC 受制裁交易很可能已被过滤。这引发了一个问题,为什么 F 2 Pool,一个起源于亚洲的矿池,是第一个基于美国 OFAC 制裁过滤交易的矿池。 然而,比特币网络仍然正常运作。一个矿池过滤交易不会影响比特币网络整体的审查抵抗性。对矿池交易选择的进一步监控可以帮助识别更多的矿池何时开始基于例如 OFAC 制裁过滤交易。它还允许将算力指向这些矿池的矿工在他们不同意矿池(未宣布的)过滤政策时,做出明智的切换决策。 原文链接ViaBTC 出块的高度 #808660 区块
Foundry USA 出块的 813231 区块
区块 810727、 811791、 811920 和 813357 由 F 2 Pool 出块
总结