BTC抗审查性遭遇挑战:F2Pool过滤美国制裁地址交易细节

2023-11-24 141 其它文章

作者:0xB10C,比特币开发者;翻译:金色财经xiaozou

我的项目miningpool-observer(矿池观察者)用于检测比特币矿池里那些本可以包含交易而没有包含的交易。在过去的几周里,miningpool-ovserver发现了6笔来自OFAC(美国财政部海外资产控制办公室)制裁地址的未包含交易。本文将探讨这些交易是否因来自OFAC制裁的地址而被有意过滤掉,还是有其他可能性可以解释这些交易为何未包含在比特币区块内。我得到的结论是,6笔交易中很可能有4笔交易是被有意过滤掉的。

2023年9月和10月,miningpool-observer的RSS feed报告,有六个区块未包含OFAC制裁地址交易。其中一个区块是由ViaBTC矿池挖出的,另一个是由Foundry USA矿池挖出的,还有四个是由F2Pool挖出的。OFAC制裁的交易是指通过美国财政部外国资产控制办公室(Office of Foreign Assets Control)制裁的地址进行收付款的交易。我维护的一款工具可以从OFAC公布的特别指定国民(SDN)名单中提取OFAC制裁地址名单(https://github.com/0xB10C/ofac-sanctioned-digital-currency-addresses)。

一笔交易未包含在区块中有几个原因可以解释。通常,交易不会在网络中公平传输,网络没有全域内存池。每个节点都有自己的一组有效交易。各池还可以优先处理带外(out-of-band)支付交易,但也可以降低交易优先级或过滤掉交易。

我们的目标是要确定矿池是否过滤了这6笔OFAC制裁交易其中的任何一笔,或者是否有其他可能的解释导致了这些交易未被包含。请注意,矿池可以自由选择包含哪些交易,不包含哪些交易。然而,要分析比特币的抗审查特性,知道正在过滤交易的是哪些矿池以及具体数量是至关重要的。

我的结论是,miningpool-observer报告显示,ViaBTC和Foundry区块未包含制裁交易可能是误报,并不属于有意过滤交易。然而,F2Pool区块未包含的交易很有可能是被过滤掉了。

1、由ViaBTC挖出的区块808660

区块808660 ..866c79c5是由ViaBTC在2023年9月21日挖出的,没有包含交易262025e7..。该交易将100个输入交易合并为一个输出交易。其中有一个输入交易是向1ECeZBxCVJ8Wm2JSN3Cyc6rge2gnvD3W5K付款。此地址已于2021年9月21日入列OFAC的制裁名单中。

该交易的大小为14.7 kvB,支付25.18 sat/vByte的手续费。经由该制裁地址的输出为0.0002 BTC (20k sat),并且是刚刚在前一天创建的。当ViaBTC挖出区块808660时,该交易已经在我的节点内存池中停留了大约75分钟。它完全不依赖内存池内交易。

lEDrxB2rTCjYzrPdLuSQgYYIj31DzOrJbfEawX52.png

区块 808660的模板和区块weight费率分配

观察区块808660在miningpool.observer上的费率分布,可以发现ViaBTC的优先交易占用了大约1 MWU的区块空间,总空间为4 MWU。这些交易可能源于ViaBTC比特币交易加速器(Bitcoin Transaction Accelerator)。优先处理某些交易意味着低费率交易(例如来自此处受制裁地址的交易支出)不会进入区块。对于这个ViaBTC区块,我的miningpool-observer在列出了24个没有进入该区块的大型合并交易。

0oiTKCV0iVxLXCijg9fCAzW4mcTueXS0eJXfbkLk.png

这就得出了ViaBTC没有过滤此交易的结论。它被其他优先交易取代了。事实证明,三天后,ViaBTC处理了区块809181中的同一个受制裁地址的一笔交易支出。

2、由Foundry USA挖出的区块813231

区块813231..0a8528b6是由Foundry USA于2023年10月21日挖出的,没有包含交易c9b57191..。该交易将150个交易输入合并为一个交易输出。其中一个输入支付的地址是3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML。此地址是在2023年4月14日被添加到OFAC的制裁名单上的。

150个输入中的大多数是2/3多签P2SH脚本,未包含交易数据很大,为43842 vByte。该交易费率为5.09 sat/vByte,并且不依赖于内存池内交易。这个费率足以将其排在我的比特币核心节点处理的2215笔交易中的第161位。然而,此交易连同其他18个交易只在我的内存池中停留了大约30秒。所以Foundry很可能没有机会将该交易包含在他们的区块中,因为他们还不知道它的存在。

交易传输可能需要几秒钟的时间。并且,大多数矿池每30秒才向矿工推送新的区块模板,然后切换到新的任务还需要一段时间。此外,miningpool-observer工具每隔几秒钟就会提请新的区块模板,并基于尽可能最少丢失交易和额外交易进行最佳匹配。这使得时间还很短的新交易可能出现误报(可能长达60秒左右)。

Mempool.space区块浏览器还跟踪区块模板和矿工广播的最终区块之间的差异,结果显示交易c9b57191…被包含在它们的模板中,但并没有包含在区块中。该交易也被他们标记为了“最新广播交易”(recently broadcasted)。

cc93YzsX8tSmPoDGpvH0T6tltILJptstl8fMQJSB.png

这导致了这样的结论:Foundry USA并没有过滤此交易。该交易广播得太晚,无法被包含在最终找到区块813231的挖矿作业中。此外,Foundry USA还在813232区块高度进行了新区块挖矿,并在新区块包含了该制裁交易。

3、由F2Pool挖出的区块810727811791811920813357

F2Pool于2023年10月5日挖出了区块810727(..ccda1498),于10月12日挖出了区块811791(..af4453d6)和811920(..00badf62),于10月22日挖出了区块813357(..63ac1669)。每个区块都漏掉了一个制裁交易。这些交易里的每个交易都将150个2/3多签输入合并到一个输出中。每个交易中都有一个输入是向3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML的支付输出。这与前一部分讨论的合并模式和地址相同。所有丢失的交易都不依赖于内存池内交易。

(1)区块810727

在区块810727中,F2Pool没有包含交易c6a66836..,它包含一个受制裁的输出。由于是150个2/3多签输入,该交易相当大,为44017 vBytes。它的支付费用为446260 sat,当F2Pool挖出区块810727时,该交易已在我的节点内存池中停留了近4个小时。而F2Pool选择包含交易907e1f45..,而非c6a66836..。此交易也是一个合并交易,将150个输入合并为一个输出,但不包含受制裁的输出。它支付了446260 sat的同等费用,但碰巧大了3 vByte,为44020 vByte。这意味着未包含交易c6a66836..的费率比907e1f45稍高…。当严格按费率排序时,未包含交易是应该被包含的。然而,现实却是,3 vByte的额外区块空间不太可能对区块总费用带来影响。

hPyoj5N6vstqzHla0UkwVd3ef5P29GrhoqUyctlg.png

(2)区块811791

受制裁交易aa001ce6..没有被F2Pools挖出的区块811791包含。与前面所说的合并交易类似,此交易的大小为42459 vBytes (169836 WU),交易手续费为446260 sat,费率为10.5 sat/vByte。当区块811791来到miningpool-observer节点上时,该交易已经在其内存池停留了4分钟。

在这个区块中,值得注意的是,缺少了五个具有OP_RETURN Stacks区块承诺的交易。然而,F2Pool已经插入了自己的Stacks区块承诺。这种情况经常发生,以前也有过此类报告。此外,F2Pool在他们的区块中包含了两个大型的零费用交易。一个交易合并了之前的F2Pool coinbase输出,另一个交易是支付给矿工的交易。这是F2Pool所挖区块的常见操作。

虽然这些额外交易占用了超400 kWU的区块空间,但仍然有足够的空间来包含交易aa001ce6..。该区块包含了2.86 MWU的费率低于aa001ce6..的交易(aa001ce6..的费率为10.5 sat/vByte)。此交易规模约为170 kWU,本应包含在区块里。在mempool.space,此交易被标记为“已删除”(removed),这给他们的区块健康指标带来了负面影响。

UbS92JsowSZGfLyfZABnWPWoLHg0S85Rpsg4yDry.png

(3)区块811920

在区块811920中,F2Pool没有包含交易1cb3d6bc..,该交易包含一个受制裁支出。此交易也是一笔大规模合并交易,达到43630 vBytes (169836 WU),费用为44660 sat,费率为10.23 sat/vByte。当区块811920到达miningpool-observer节点上时,该交易已经在该节点的内存池停留了近2分钟。

在区块811920中,有1.44 MWU的交易费率低于10.23 sat/vByte。170 kWU的交易1cb3d6bc..应该被包含在该区块内。由于该交易在我的节点内存池里只停留了近两分钟,所以有可能当F2Pool构建区块模板时,该交易还没有被发送到F2Pool。该交易在mempool.space上显示为“最新广播交易”。通常,矿池会尽量与比特币网络保持良好的连接。如果该交易出现在mempool.space和miningpool.observer的内存池中,那么就很有可能也出现在F2Pool的内存池中。

qho2UWDjwbIFHkzNsL5lnMxGG6cbbg0piLJIzj8M.png

(4)区块813357

在F2Pool所挖区块813357中,交易e49cdb60..未包含,该交易包含一笔受制裁支出。此合并交易规模为43053 vBytes (172209 WU),费用为178504 sat,费率为4.15 sat/vByte。当区块813357到达miningpool.observer节点时,该交易已经在该节点的内存池中停留超过25分钟。

在区块813357中,有684 kWU的交易费率低于4.15 sat/vByte。该172 kWU交易e49cdb60..应该被包含入块。由于该交易在我的节点内存池中停留了超过25分钟,所以不太可能没有被传输到F2Pools节点。该交易也包含在mempool-space的区块813357模板中。

YHczux7C9X817ZJvvAQycVsKy27e0ILxyXrcgp0Y.png

(5)F2Pools区块小结

区块810727未包含的受制裁交易的费率略高,因为该交易比包含的交易还要小3 vByte。虽然这3 vBytes的额外区块空间不会对总费用产生什么影响,但比特币核心(Bitcoin Core)区块模板算法会选择较高费率交易。区块811791包含的大型额外交易不会对区块811791未包含的受制裁交易产生影响。它很可能已经被过滤掉了。Mempool.space的区块审计也会同意这一点。有可能F2Pool还不知道未包含的受制裁交易的存在。然而,对于一个大池来说,2分钟应该足够接收一个交易了。而且mempool.space和miningpool-observer也都知道这个交易的存在。这个受制裁交易之所以未被包含,很可能是因为被F2Pool过滤掉了。与区块811791未包含的交易类似,区块813357未包含的交易也可能是被F2Pool过滤掉了。

观察这四个未包含的受制裁交易可以推断出F2Pool目前正在过滤交易。由于我们只看到一个OFAC制裁地址3PKiHs4GY4rFg8dpppNVPXGPqMX6K2cBML的交易支出丢失,所以还无法判断F2Pool是否只过滤了这一个地址还是所有OFAC制裁地址都被过滤了。

4、结论

本文探讨了六个来自OFAC制裁地址的比特币交易,miningpool-observer工具检测到这些交易未包含在区块中。ViaBTC和Foundry USA池漏掉的两个交易属于误报,不是被过滤掉的。F2Pool区块中漏掉的四个OFAC制裁交易很可能被过滤掉了。这就引发了一个问题:为什么起源于亚洲的F2Pool是第一个依据美国海外资产控制办公室的制裁来过滤交易的矿池?

然而,比特币网络继续如常工作。一个矿池过滤交易不会影响整个比特币网络的抗审查性。进一步监控矿池的交易选择,可以确定更多矿池何时开始依据OFAC制裁等因素过滤交易,还可以让矿工将他们的算力迁移到这些矿池,以便在他们不同意一个矿池的(未宣布的)过滤策略时做出明智的决定,切换到另一个矿池。

币币情登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。

交易平台最新公告查看更多>
成交额排行榜
  • 交易所
  • 币种
排名 交易所 成交额
1 币安网币安网 ¥3,563.23亿
2 欧易OKX欧易OKX ¥1,419.34亿
3 火币全球站火币全球站 ¥137.88亿
4 抹茶抹茶 ¥186.25亿
5 芝麻开门芝麻开门 ¥280.67亿
6 库币库币 ¥117.29亿
7 Coinbase ProCoinbase Pro ¥104.59亿
8 bitFlyerbitFlyer ¥2.82亿
9 BitMEXBitMEX ¥0
10 BitstampBitstamp ¥6.67亿