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

币圈资讯 阅读:37 2024-04-22 12:24:41 评论:0
美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

作者: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制裁等因素过滤交易,还可以让矿工将他们的算力迁移到这些矿池,以便在他们不同意一个矿池的(未宣布的)过滤策略时做出明智的决定,切换到另一个矿池。


Author Bitcoin developer translation Bitcoin trading network My project Mine watchers are used to detect the transactions in the Bitcoin mine pool that could have contained transactions but were not included. In the past few weeks, I found an excluded transaction from the sanctioned address of the Overseas Assets Control Office of the US Treasury Department. This article will discuss whether these transactions were intentionally filtered out because of the sanctioned address or whether there are other possibilities to explain why these transactions were not included in the Bitcoin block. It is very likely that there is a transaction in this transaction that was intentionally filtered out. There are six blocks without sanctions address transactions, one of which was dug up by a mine pool, the other was dug up by a mine pool, and the other four were dug up with sanctions. The transaction refers to the transaction of receiving and paying through the address sanctioned by the Office of Foreign Assets Control of the US Treasury Department. A tool I maintain can extract the list of sanctions addresses from the published list of specially designated nationals. A transaction is not included in the block. There are several reasons for this. Usually, transactions are not transmitted fairly in the network. There is no global memory pool in the network. Each node has its own set of valid transactions. Each pool can also give priority to out-of-band payment transactions, but it can also lower the priority of transactions or filter out transactions. Our goal is to determine whether the mining pool has filtered any of these sanctions transactions or whether there are other possible explanations that lead to these transactions not being included. Please note that the mining pool is free to choose which transactions to include and which not to include. However, it is very important to analyze the anti-censorship characteristics of Bitcoin and know which mines and specific quantities are being filtered. My conclusion is that the report shows that the sum block does not contain sanctions transactions, which may be false positives and do not belong to intentional filtering transactions. However, the transactions not included in the block are likely to be filtered out. The dug-out block was dug up on the year, month and day, which did not include transactions. The transaction merged two input transactions into one output transaction, and one of the input transactions was payment. This address has been listed in the sanctions list on, the size of the transaction is the handling fee paid, and it was just created the day before. When the block was dug up, the transaction had stayed in my node's memory pool for about minutes. It did not depend on the template and block rate distribution of the transaction block in the memory pool at all. Observing the rate distribution of the block, we can find that the priority transactions occupy about the block space, and the total space may be derived from bitcoin transactions. Accelerator gives priority to certain transactions, which means that low-rate transactions, such as transaction expenses from the sanctioned address here, will not enter the block. For this block, I have listed a large merger transaction that did not enter the block, which leads to the conclusion that this transaction was not filtered. It was replaced by other priority transactions. It turns out that the transaction expenses of the same sanctioned address in the block were processed three days later because the dug-up block did not contain transactions. The transaction will be. The transaction inputs are merged into one transaction output, and the address of one of the inputs is this address, which was added to the sanction list on, month, and month. Most of the inputs are multi-signed scripts, which do not contain transaction data. The transaction rate is and does not depend on the transactions in the memory pool. This rate is enough to rank it first among the transactions handled by my Bitcoin core node. However, this transaction and other transactions only stayed in my memory pool for about seconds, so there is probably no chance to put it. Transactions are included in their blocks because they don't know it exists yet. It may take several seconds for transactions to be transmitted, and it will take some time for most mines to push new block templates to miners every second and then switch to new tasks. In addition, tools will draw new block templates every few seconds and make the best match based on the least lost transactions and additional transactions, which makes it possible for new transactions with short time to have false positives, which may last for about seconds. Block browsers also track blocks. The difference between the template and the final block broadcast by miners shows that the transaction was included in their template but not in the block, and it was also marked by them for the latest broadcast transaction, which led to the conclusion that the transaction was not filtered, and it was broadcast too late to be included in the mining operation of the finally found block. In addition, a new block was excavated at the height of the block, and the sanctions transaction was included in the new block, and the block was dug on the month, month and day. Digging out the block and digging out the block on January, each block missed a sanctioned transaction. Each transaction in these transactions merged a multi-signature input into one output, and one input in each transaction was the opposite payment output. This is the same as the merging mode and address discussed in the previous section. All lost transactions do not depend on the transaction block in the memory pool. It contains a sanctioned output. Because it is a multi-signature input, the transaction is quite large for its payment fee. When digging out the block, the transaction has stayed in my node memory pool for nearly hours, and choosing to include the transaction instead of this transaction is also a merger transaction. It combines the inputs into one output but does not include the sanctioned output, but it happens to be larger, because this means that the rate of excluding the transaction is slightly higher. When strictly sorting by the rate, the excluded transaction should be included, but the reality is that the extra block space is unlikely to affect the total cost of the block. The block is sanctioned. The block in which the transaction has not been dug up contains a transaction similar to the merger transaction mentioned above. The size of this transaction is the transaction fee, and the rate is that when the block comes to the node, the transaction has stayed in its memory pool for minutes. It is noteworthy that five transactions with block commitments have been missing in this block, but their own block commitments have been inserted. This often happens before, and this kind of report has been made. In addition, their block contains two large-scale zero-fee transactions and one transaction has been merged. The other transaction before the output is the transaction paid to miners, which is a common operation of the excavated block. Although these additional transactions occupy a lot of block space, there is still enough space to contain the transaction. For this reason, the scale of the transaction should be included in the block. This transaction is marked as deleted, which has a negative impact on their block health indicators. The block does not contain the transaction, which also contains a sanctioned expenditure. This transaction is also a large-scale merger transaction. The fee is the rate when the block reaches the node. 比特币今日价格行情网_okx交易所app_永续合约_比特币怎么买卖交易_虚拟币交易所平台

文字格式和图片示例

注册有任何问题请添加 微信:MVIP619 拉你进入群

弹窗与图片大小一致 文章转载注明 网址:https://netpsp.com/?id=62976

美化布局示例

欧易(OKX)最新版本

【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   全球官网 大陆官网

币安(Binance)最新版本

币安交易所app【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址

火币HTX最新版本

火币老牌交易所【遇到注册下载问题请加文章最下面的客服微信】永久享受返佣20%手续费!

APP下载   官网地址
可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
平台列表
美化布局示例

欧易(OKX)

  全球官网 大陆官网

币安(Binance)

  官网

火币(HTX)

  官网

Gate.io

  官网

Bitget

  官网

deepcoin

  官网
关注我们

若遇到问题,加微信客服---清歌

搜索
排行榜
扫一扫,加我为微信好友加我为微信好友