发布时间:2019年8月11日
本文是比特币数据科学三部曲的第三篇,它分析了比特币区块链中存在多少“灰尘”——难以花费的UTXO。作者Dhruv Bansal是一位物理学家和连环创业者。
Dhruv Bansal 文
本文由币信研究院原创编译,原文链接:
https://www.unchained-capital.com/blog/dust-thermodynamics/
本文版权归原作者所有,仅代表作者本人观点,不代表币信或币信研究院的观点或立场。
本文约7500字,阅读全文需约15分钟。
我们研究了灰尘(dust)——发币交易费大于余额的比特币容器(UTXO)——的历史和未来。
区块链中的灰尘量由当前的UTXO集和交易费市场决定。在交易费高峰时期(约2017年12月),比特币区块链中25-50%的UTXO可以被称为灰尘!与此同时,这些灰尘UTXO中包含的比特币数量很少:只值数千万美元。因此,根据你如何衡量,灰尘要么是一个巨大的问题,要么是一个微不足道的问题。无论如何,我们会讨论最小化新灰尘和清理现有灰尘的可能解决方案。
在物质世界中,工作量证明强烈地锚定了比特币,并使其受制于热力学定律。矿机消耗的能量可以保护区块链,但这项有用的工作伴随着熵增和废热的产生。 如果比特币区块链是一个发动机,灰尘UTXO将成为它耗尽的废热的一部分。由于没有发动机是完全有效的,比特币永远不会停止制造灰尘。
比特币使用一种被称为未花费交易输出(UTXO)的会计结构。任何比特币交易的输出都是新的UTXO,输入是现有的UTXO——它们被该交易完全消耗掉。在区块链上,比特币总是被“存储”在这样的UTXO中。想了解有关比特币UTXO分布的更多信息,请参阅本系列之前关于囤币潮的文章。
本图显示了钱包可能构建发送0.5 BTC的交易的两种可能方式。第一笔交易消耗了两个UTXO,因此费用更高。第二个交易只消耗一个UTXO,因此更便宜,但创造了一个非常低余额的找零输出。虽然对未来的交易费市场将如何变化只有不完全的知识,但钱包软件必须在今天平衡这些权衡。这是一个难题。
在钱包构建一笔交易时,它必须决定使用哪些UTXO来作为输入。这可能听起来简单,但这确实是一个很难的优化问题。Jameson Lopp定义了钱包软件作者必须追求的三个同时存在且相互冲突的目标 (https://medium.com/@lopp/the-challenges-of-optimizing-unspent-output-selection-a3e5d05d13ef):
- 通过在钱包中保留许多可用UTXO来支持高交易量。
- 通过变得非决定性并屏蔽哪些输出发生了变化来保护隐私。
- 无论现在还是以后,都尽量让交易费最小化。
很明显,这个问题没有“一刀切”的解决方案,事实上,上面概述的三个宽泛的优化目标往往是直接对立的。——Jameson Lopp
此外,钱包软件通常是通用的,意味着由许多不同类型的用户共享。钱包作者并不知道一个给定用户计划在未来做什么交易,也不知道交易费市场将如何发展。
这意味着,钱包对有时会产生低余额灰尘UTXO无能为力。钱包的UTXO管理是一个困难的优化问题,没有针对所有用户的全局最优解决方案。这是灰尘的最终起源。
是什么产生了UTXO灰尘?
直观地说,低余额的UTXO可能是灰尘。下图显示了UTXO余额随时间的分布:
UTXO余额随时间分布图。冷色调颜色(蓝色和绿色)代表低余额UTXO,暖色调(橙色和红色)代表高余额UTXO。我们选择绘制的百分位数突出显示了分布的下端和上端。UTXO余额的范围很广:分布上端的UTXO包含数千个BTC,而在下端则包含少于100聪(11-12个数量级!)。[https://plot.ly/~unchained/41/utxo-balance-percentiles/#/]
该图确实证实存在大量的低余额UTXO,但是我们能否更精确地定义哪些低余额UTXO是灰尘呢?
在一笔交易中花费一个UTXO需要引用该UTXO(通过提供创建它的交易ID以及它在该交易中作为输出出现的顺序)并使用所需的密钥对其进行签名。所有这些都需要一定数量的字节来表达,必须用交易费来向矿工补偿字这些节数。
一笔交易会从其输入UTXO中扣除其交易费。这通常不是问题,因为与它们正在消耗的所有UTXO余额总和相比,交易费通常较小。但是,如果一笔UTXO的余额非常低,或者交易费非常高,或者花费UTXO需要大量的字节,那么就有可能花费一笔输出UTXO的成本会高于它所包含的币。
我们将UTXO的价值密度(value density)定义为其余额除以花费它所需的字节数。
UTXO的价值密度衡量的是为了把币发出去,每个字节所含的比特币数量。
根据这个定义,将UTXO分类为灰尘需要比较两件事:
- 目前矿工接受的最低交易费
- UTXO的价值密度
两个数量都具有聪/字节的单位,因此可以直接进行比较:如果一笔UTXO的价值密度低于矿工目前接受的最低交易费,那么该UTXO目前就是灰尘。随着(通常不稳定的)交易费市场的变化,UTXO可以随时间推移降到“灰尘线”以下,又在后来升到这条线以上。
花费UTXO需要多少字节?
把一笔UTXO列为灰尘需要知道花费它需要多少字节,但这个数字并没有真正的明确定义:单笔交易中花费的UTXO越多,平均花费一笔UTXO所需的字节数就会减少,因为它们可以共享区块头或隔离见证信息。
无论如何,我们至少可以做出任意的选择并询问花费一笔UTXO所需的字节数——假设交易为单个输入。答案取决于UTXO地址的类型。下表总结了这种关系:
地址类型与在该地址上花费一笔UTXO所需字节数之间的关系。复制自Pérez-Solà,Delgado-Segura,Navarro-Arribas,Herrera-Joancomart的表3。《另一种币遭遇灰尘:基于UTXO的加密货币中的灰尘分析》(2018年) [https://eprint.iacr.org/2018/513.pdf]
上表对“简单”地址类型(如P2PK和P2PKH)具有明确的大小。但对于尤其是P2SH地址,不可能先验地计算从该地址花费UTXO所需的字节数。只能后验,一旦在交易中显示了该地址的兑换脚本,就可以知道从该地址需要花费多少字节。
尽管如此,大多数P2SH地址都是具有可预测结构的多签地址(一旦知道它们是多签地址)。而且,我们可以从区块链历史中的花费中推断出许多P2SH地址:
根据历史数据估算从每个给定地址类型中花费UTXO所需的字节数。复制自Pérez-Solà,Delgado-Segura,Navarro-Arribas,Herrera-Joancomart的表6。《另一种币遭遇灰尘:基于UTXO的加密货币中的灰尘分析》(2018年) [https://eprint.iacr.org/2018/513.pdf]
有了地址类型中UTXO的分布,我们就可以使用上表中的估计来计算在任意时间花费一笔UTXO所需的平均字节数。下图表总结了这些数据:
整个历史的比特币UTXO集地址类型分布图。黑线显示了在当时花费平均UTXO所需字节数的最佳估计值。主导地址已经从P2PK转移到今天的P2PKH和P2SH。[https://www.unchained-capital.com/blog/dust-thermodynamics/]
根据上图,我们估计花费平均UTXO需要172字节。
注意:通过建构,这个数字是被高估的。在比特币的大部分历史记录中,不仅花费UTXO所需的平均字节数低于172字节,而智能批量交易可能会显着降低此估计值。
存在多少灰尘?
从比特币历史中任何一个区块的UTXO集,以及花费一个UTXO需172字节的估计值,我们可以通过将每个UTXO的余额除以花费它所需的字节数来构建UTXO价值密度分布:
彩色条带显示图例所示的每个百分位数的价值密度。黑色虚线表示一段时间内的平均费用,黑色实线表示最低费用。价值密度低于最低费用的UTXO无法花费,低于平均费用的UTXO难以花费。该图假定花费任何给定UTXO需要平均172字节数。[https://plot.ly/~unchained/39/utxo-value-density-percentiles/]
该图非常类似于之前的UTXO余额分布图——它只是根据花费每个UTXO所需的字节数(172)进行了重新调整。这个新分布的单位是聪/字节,所以我们可以直接将它与该区块的转账费市场(黑线)进行比较,这是我们只靠UTXO余额无法做到的。
这个图表明了什么?
存在很多灰尘!
在2017年末的高交易费市场中,所有UTXO中有15-20%的价值密度低于50-60聪/字节的最低费用,因此几乎不可能花费。40%-50%的UTXO的价值密度低于600-700聪/字节的平均费用,这使得它们难以被使用。这是很多灰尘!
交易费市场在2018年大幅降温。今天,10-15%UTXO的价值密度仍然低于20-30聪/字节的平均交易费,并且3-5%UTXO的价值密度低于1-2聪/字节的最低费用。灰尘少了得多,但仍然很多。
所有灰尘都不值钱!
让我们换一个不同的视角:按个数计,许多UTXO可能是灰尘,但这些灰常UTXO包含多少比特币?虽然它们数量很多,但根据定义它们的余额很低,所以总的来说它们并没有太多。下图显示了低价值密度UTXO中包含的比特币的比例:
彩色条带表示给定价值密度的UTXO所包含的比特币分数。由于大部分比特币包含在高价值密度UTXO里,因此仅显示低价值密度UTXO(可能是灰尘)的条带。放大最近几个月,看看近期低价值密度UTXO的减少情况。该图假定花费任何给定UTXO需要平均172字节。[https://plot.ly/~unchained/33/utxo-value-densities-distribution-satsbyte]
虽然有很多UTXO价值密度很低,但上图显示在灰尘UTXO中包含的总比特币非常小 。即使在交易费峰值,按价值算也只有0.01-0.02%的比特币是灰尘。当时的市值约为225亿美元,相当于2500万至5000万美元的灰尘。
今天的平均交易费远低于2017年底。在今天的费用下,只有0.0005%的比特币是灰尘。在今天低至650亿美元的市值下,这表示只有30万美元的灰尘!
陷在BTC灰尘里的价值已经从2017年底的5000万美元萎缩到今天的30万美元。
注意:这些数字是被高估的。智能批量交易可以减少花费UTXO所需的平均字节数,从而降低我们对灰尘UTXO数量和价值的估计。
我们可以减少灰尘吗?
比特币是一个没有领袖的系统。这使得我们难以设计各种自上而下的方法来消除现有的灰尘并减少未来的灰尘产生。我们必须依靠对生态里的用户、矿工和企业的激励。存在这样的激励吗?
交易所和其他企业
是的,他们会这样做。虽然崩溃的价格和交易费市场是减少灰尘量的主要原因,但在2018年,交易所等大型企业(尤其是Coinbase)开展了积极的降低灰尘措施。下面的低价值密度UTXO所含余额图直接显示了这些有效措施的影响:
给定价值密度的UTXO所包含的比特币分数图的注释版本。整个市场的作用是增加灰尘量,无论是缓慢(囤币期)还是快速(反弹期)。单个行动者可以大幅增加(2015年的“压力测试”)或减少(2018年的Coinbase)灰尘量。但灰尘的产生永远不会停止;注意最近增加和持续清理。
像Coinbase这样的企业已经制造了大量灰尘,并且在使用区块空间方面效率低下,因为它们没有充分地批量处理客户交易。由于Coinbase等主要交易所在2017年的反弹期间大受欢迎,这种行为影响了比特币网络的其余部分,并且被许多人正确地抱怨 。
当交易费市场在2018年初回落时,Coinbase既有激励也有能力去减少现有的灰尘足迹和未来的灰尘产生。批量交易能为Coinbase这样的大体量公司节约交易费,也能减少灰尘产生。Antoine Le Calvez的雄文《比特币灰尘落定时》(https://medium.com/@alcio/when-the-bitcoin-dust-settles-878f3431a71a)分析了这个“UTXO合并”期——一个UTXO集的大扫除。
比特币生态系统中的其他阵营是否同样具有减少灰尘的激励和能力?
用户
用户不会直接受到灰尘的影响。由于他们使用的钱包软件效率低下,他们可能会产生灰尘,但很少有个别比特币用户创造了大量灰尘。
用户不喜欢高额交易费,但灰尘并不直接影响交易费市场。造成灰尘的低效UTXO管理,也导致更多的小额交易,这是交易费变多的一个更大原因。因此,只有适度的激励去鼓励用户减少灰尘。
即使他们缺乏激励,用户是否有能力限制灰尘?毕竟,用户在加密货币方面拥有很大的力量,因为2017年的UASF运动证明了这一点。但灰尘是一个共同的问题,是公地悲剧,因此需要一些协调的解决方案。用户需要开发者和/或交易所和矿工的帮助来清除他们拥有的灰尘。
个人用户可能愿意“捐赠”他们的灰尘,比特币确实提供机制(例如ALL|ANYONECANPAY或NONE|ANYONECANPAY类型签名)供用户捐赠他们的灰尘。如果钱包支持它,那么社交协调的公共大扫除可能是一种有趣的方式,可以为各种用户选择的慈善机构或有利于比特币生态系统的项目提供资金。
矿工
大多数矿工都不理会灰尘。
矿池中的矿工只是被付钱去做哈希运算的;矿池运营者需要管理UTXO集并处理它包含的任何膨胀,但他们也可以自由地从他们的内存池中删除低价值密度的灰尘UTXO。无论如何,没有用户能把它们花掉!这将为清道夫矿池提供机会,并尝试挖掘这些灰尘UTXO,但这仍然需要用户采取行动来消费它们。用户可能不会注意或关心。
关心灰尘的独立矿工或矿池运营者可以选择安排一个交易费假期——这些矿工将故意允许零费用交易,(只)花费低价值密度的UTXO,可能在大扫除期间完成。这将允许用户清理他们的钱包,同时帮助矿工和节点操作员大幅减少他们的UTXO设置的内存占用。
分发选择交易能力的BetterHash(https://github.com/TheBlueMatt/bips/blob/betterhash/bip-XXXX.mediawiki)等提案可能会鼓励更多个体矿工离开传统矿池(在这里矿池运营者确定要开采的区块)并构建自己的区块。那么,他们可能不得不更多地处理/关心灰尘。
理论上,矿工们也可以拒绝挖创造灰尘UTXO的交易。但他们真的愿意牺牲短期交易费收入来防止制造长期的灰尘吗?鉴于矿池主导着挖矿,而这些矿池并不特别关心灰尘,这似乎不太可能。
全节点运营者
全节点运营者——那些备份区块链,传播和验证交易但不挖矿的人——也对灰尘创建有一定的影响力。bitcoind软件中的minRelayTxFee参数允许节点运营者设置最小价值密度,低于该密度,他们将忽略/删除UTXO(以及创建它们的交易)。在某种程度上,这种设置已经阻止了极低价值密度UTXO的创建——如果从未实施此设置,今天可能会有更多的灰尘。
但很少有节点运营者将其配置设置调整到这种详细程度。因为开发者选择bitcoind软件的默认设置,可能开发者会对全节点在真实环境下的运行方式产生更大的影响。
开发者
在许多方面,开发者最有能力限制灰尘的生产。
开发者编写钱包软件并为其撰写文档。面对困难的优化问题,他们的权衡(和失败)是灰尘的根本原因。在用户需求的推动下,从钱包到钱包的新策略和最佳实践是减少未来灰尘生产的最佳方式。
开发者定义默认节点设置,这些设置通过全节点运营者、矿工、交易所和其他企业构成的网络渗透出来。这提供了一种抵御灰尘的群体免疫力,从恶意或低效的钱包中过滤掉灰尘交易。
通过草根运动(就像UASF),开发者可以直接与用户和矿工合作,建立安排和操作大扫除和交易费假期所需的社交软件。
通过建立闪电网络这样的第二层,开发人员甚至可以希望完全超越灰尘问题。
灰尘是不可避免的
但是,没有任何阵营或合作可以完全消除灰尘生产。尽管2017年对灰尘有了越来越多的认识,并且在2018年3月试图对其进行清理,但灰尘仍在继续产生:
- 价值密度<50聪/字节的UTXO呈现出持续生产的锯齿曲线,然后是快速回调:有人积极制造灰尘——但至少他们自己正在清理。
- 价值密度<100聪/字节的UTXO已经增加了10%(以美元计)——这些UTXO今天不是灰尘,但如果费用市场再次像2017年那样再次上涨,它将迅速变成灰尘。
灰尘的产生是比特币所固有的低效率 。
灰尘只会影响比特币吗?
并非所有区块链都使用UTXO模型进行交易。例如,以太坊使用了帐户模型。
- 从不同交易存入一个地址的ETH是混在一起的。
- 交易费用由广播交易的地址支付,而不是转移ETH的地址。
这两种差异都大大减少了灰尘的产生,但并没有消除它们。以太坊开发者们也担心以太坊区块链中的灰尘(https://github.com/ethereum/EIPs/issues/168)及其造成的膨胀。
灰尘(更一般地定义为使用不经济的代币)的产生,似乎是区块链中常见的低效率。
区块链的热力学?
灰尘UTXO和普通UTXO之间的区别是使用性上的区别。存放在一笔灰尘UTXO中的一聪比存放在普通UTXO中的同样一聪难用。但它们在区块链上是相同的。
矿工为了保护区块链而下注的算力保护灰尘UTXO,和保护更有用的UTXO一样。这使得在灰尘UTXO中的几聪显得更加无用,实际上是浪费能源。
对于比特币而言,“浪费能量”可能是一个敏感的问题。有些人已经在哀叹为了确保比特币交易工作量证明所用的能量了。如果他们知道比特币保护的大量资金不会被使用,他们的反对意见会更加声势浩大吗?
比特币的安全性能效是多少?
比特币有能效的概念吗?使用算力保护有用经济资产的效率如何?人们可以通过将其视为加热器来简单地定义比特币矿工的能效——但整个比特币网络的能效是否有更有趣的区块链层面的定义?这个定义认识到由于灰尘的存在,比特币的效率低于它原本应该的水平。
物理与经济学
关于能效的问题可以用热力学术语来说明,并因此可以用物理工具来回答。
近几十年来,物理学家已经多次尝试使用他们的工具来模拟经济系统。有时候这些尝试的简单性和应用范围都是惊人的:由Black-Scholes方程式(或类似于它)得出的模型管理着数十亿美元,该方程式计算期权价格类似于热量在物质中的扩散。
其他尝试整合这些领域(“经济物理学”)感觉就像奇怪而孤立的东拼西凑,被他们的母学科拒绝。
区块链是否适用于物理学家的定量分析和理论模型?考虑:
- 比特币虽然市值仍然很小,但现在已有10年的历史,已经足够大,可以在用户、投资、价格、体量和价值上展示出许多有趣的模式。
- 区块链也是分布式账本,它们以匿名方式记录其数据,但具有足够的结构来精确分析大规模行为(参见我们的囤币潮帖子)。
- 最有趣的是,通过使用大量的能量,比特币锚定了物理世界。这为物理学家提供了考虑区块链热力学的手柄。
区块链是结合经济学和物理学洞见的前所未有的机会。
区块链作为热引擎
这些属性的结合表明我们可能想要更加认真地对待“灰尘UTXO是浪费能源”的随意声明——事实上,更确切地说 :UTXO是一种能源“浪费”,因为它们没有为任何人做任何有用的“功”。这降低了我们寻求衡量的效率。
物理学家为了理解热量、功和废物(熵)与机械发动机效率的关系,定义了一个简单的框架:热力学的经典理论。
像这样的热力学方程将输入能量和发动机所做的功与其内部能量改变及其产生的熵量相关联。这个特定的等式仅仅是暗示性的;目前尚不清楚如何为区块链定义这些术语。
没有经典引擎是完美的;有用功的提取总是伴随着熵的增加,通常表现为系统中的废热:分布在反应室空气和燃料分子里的焦耳能量比发动机热排气中随机振动的分子里的相同焦耳能量更有用。发动机的效率是发动机避免产生废热的程度,有利于有用的机械功。
灰尘UTXO无用,但无论如何它们都是安全的,就像发动机排气中的废热无用但无论如何都要生产一样。正如工程师们设计出巧妙的系统来避免产生废热并迅速摆脱它,区块链工程师正在开发更智能的钱包软件,区块链公司正在“冷却”他们自己的灰尘,以提高链的效率(特别是,冷却UTXO按照“粒度”的顺序进行——企业在低价值密度之前清理更高价值密度的灰尘,如Antoine Le Calvez在《比特币灰尘落定时》中所示 )。
灰尘和废热之间的更精确类比是一项挑战。控制发动机的相同热力学定律适用于任何系统——包括基于工作量证明的区块链。困难在于应用它们的定义。什么是比特币交易语境下的“功(work)”?如何衡量区块链的“内部能量”?比特币处于均衡状态吗?将系统视为一堆制造物理废热的计算机是对的,但无趣且过度精简。比特币的域数据(交易、UTXO、价格、体量、交易费等)是否可以被视为热力学系统?
如果我们对工作量证明区块链的热力学有了更好的理论,我们或许可以回答这些问题,并为比特币定义“能效”以及用能源使用、交易量、UTXO创建、价格数据、交易费市场等实际数据去计算它的方法论。
区块链的热力学理论将是经济学和物理学的进步。回答“矿工投入为比特币做哈希运算的能量去了哪里?”这个问题以一种帮助我们使用热力学语言去理解比特币经济学的方式,可能是一个非常强大的理解世界的新框架。