前言:
工作量证明(Proof-of-work)机制将比特币牢固地固定在物理世界中,并使其服从热力学定律。矿工们消耗的能量确保了区块链的安全性,但这个有用工作伴随着熵的增加及废热的产生。如果比特币区块链是一台引擎,那么粉尘UTXO将成为其所排放的废热的一部分。正如没有引擎是完全有效的,比特币也永远不会停止制造粉尘UTXO。而我们要做的,就是提升比特币这台引擎的效率。
原文作者是物理学家兼金融服务公司Unha.Capital的联合创始人Dhruv Bansal,以下为译文内容:
(图片来自:Cryptocurrency Market)
长话短说:我们调查了粉尘(dust)的历史和未来:比特币容器(UTXO)所花费的费用,已经超过了它们持有的资金。
区块链中的粉尘数量,是由当前UTXO集和交易费用市场所决定的。在费用高峰期 (2017年12月),比特币区块链中25%-50%的UTXO可能是被粉尘占据的!同时,这些粉尘UTXO中含有的BTC数量很少:17年底时价值约为几千万美元,而目前已降低到数十万美元。所以,根据你如何衡量粉尘UTXO,其要么是一个大问题,要么是一个微不足道的问题。无论哪种方式,我们会讨论尽可能减少新粉尘UTXO和清理现有粉尘UTXO的可能解决方案。
什么是粉尘UTXO,它们来自哪里?
比特币使用了称为未使用交易输出(UTXO)的会计结构。任何比特币交易的输出都是新的UTXO,而输入则是现有的UTXO,其会被该笔交易所消耗。在比特币区块链当中,BTC总是“存储”在这样的UTXO中。
该图显示了钱包构造发送0.5BTC交易的两种可能方式。第一笔交易消耗了两个UTXO,因此费用更高。第二笔交易只消耗一个UTXO,因此更便宜,但是会产生非常低额的找零输出。钱包软件必须平衡这些权衡,这是一个难题。
当钱包构造交易时,它必须决定使用哪个UTXO作为输入。
这听起来很简单,但它确实是一个困难的优化问题。
Jameson Lopp定义了钱包软件作者必须追求的,三个同时存在且相互冲突的目标:
- 通过在钱包中保留很多UTXO来支持高交易量;
- 通过不确定性和掩盖输出的变化来保护隐私。
- 尽量减少交易费用,无论是现在还是以后;
“显然,对于这个问题,没有“一刀切”的解决方案,事实上,上面概述的三个广泛的优化目标,往往是直接对立的。” – Jameson Lopp
此外,钱包软件通常是通用的,这意味着其由很多不同类型的用户所共享。钱包作者不知道给定用户计划进行什么样的未来交易,也不知道交易费用市场将会如何发展。
这意味着,钱包没法帮忙,而且有时其会创建低额的粉尘UTXO。钱包中的UTXO管理是一个困难的优化问题,没有全局最优的解决方案。这是粉尘的最终来源。
粉尘UTXO是什么形成的?
直觉上,低余额的UTXO很可能是粉尘。下图显示了UTXO余额随时间的分布:
UTXO余额随时间的分布图。较冷的颜色(蓝色和绿色)代表低余额UTXO,较暖色(橙色和红色)则是高余额UTXO。我们选择绘制的百分位数突出了分布的下端和上端。UTXO余额的范围是巨大的:在分布上端存在包含数千BTC的UTXO,而下端有一些包含少于100聪的UTXO(两者相差11-12个数量级!)[直接链接]
该图确实证实了存在大量低余额的UTXO,但我们能否更精确地定义这些低余额UTXO当中,哪些属于粉尘UTXO?
在一笔交易中使用UTXO需要引用该UTXO(通过提供创建该UTXO的交易ID以及它在该交易中作为输出出现的顺序),以及使用所需的密钥对其进行签名。所有这些都需要一定数量的字节来表达,并且矿工必须得到交易费作为补偿。
一笔交易从其输入UTXO借记其交易费用。这通常不是一个问题,因为交易费用通常比它们消费的所有UTXO余额总和小。但是,如果UTXO的余额非常低,或者如果交易费用非常高,或者UTXO需要花费大量字节,则所得到的输出UTXO,其花费可能要比它包含的资金要更多。
我们将UTXO的值密度,定义为它的余额除以使用它所需的字节数。
UTXO的值密度衡量每个字节所需的BTC数量。
根据这个定义,将UTXO分类为粉尘UTXO需要比较两件事:
- 矿工目前接收的最低交易费用;
- UTXO的值密度;
这两个数量都有聪/字节的单位,因此可以直接进行比较:如果UTXO的值密度小于矿工当前接受的最低交易费,则该UTXO当前就是粉尘UTXO。随着交易费用市场的变化(通常是不稳定的),UTXO可能会跌至“粉尘线”以下,随后又会升至“粉尘线”之上。
花费一个UTXO需要多少字节?
将UTXO分类为粉尘需知道花费多少字节,但是这个数目并没有被很好地定义:平均而言,花费UTXO所需的字节数随着UTXO在单个交易中花费越多而减少,因为它们都可共享头部或隔离见证(segwit)信息。
无论如何,如果UTXO是交易中的单个输入,我们至少可以做出任意选择,并询问花费UTXO所需的字节数。
答案取决于UTXO地址的类型。下表总结了这种关系:
地址类型与在该地址处使用UTXO所需的字节数之间的关系。该表来自Pérez-Solà, Delgado-Segura, Navarro-Arribas, Herrera-Joancomart的表3 [直接链接]
上面的表格对于“简单”的地址类型(如P2PK和P2PKH)有确定的大小。但是对于P2SH地址,不可能先验地计算从这个地址花费UTXO需要多少字节。只有在交易中显示该地址的赎回脚本之后,才能知道从该地址花费多少字节。
尽管如此,大多数P2SH地址是具有可预测结构的多签地址。而且,我们可以从区块链历史中的开销推断出很多P2SH地址:
根据历史数据估计每个给定地址类型花费UTXO所需的字节数。该表来自Pérez-Solà, Delgado-Segura, Navarro-Arribas, Herrera-Joancomart的表6 [直接链接]
给定UTXO在地址类型之间的分布,我们可以使用上表中的估值来计算在任何时间花费UTXO所需的平均字节数。下面的图表总结了这些数据:
比特币UTXO集关于地址类型的分布图,黑线显示了对当时使用平均UTXO所需字节数的最佳估计。如今的地址优势已经从P2PK转移到P2PKH和P2SH。[直接链接]
根据上面的图表,我们估计花费平均UTXO的开销为172字节。
注:按结构计算,这个数字过高了。在比特币的大部分历史中,使用UTXO所需的平均字节数不仅低于172字节,而且通过智能交易批处理,可以显著降低这种估算值。
比特币区块链中有多少粉尘UTXO?
根据比特币历史中任何区块的UTXO集,以及用于花费UTXO的172字节估算值,我们可通过将每个UTXO的余额除以花费UTXO所需字节数来构造UTXO值密度分布:
有色带表示图例中每个百分点处的值密度。黑色虚线表示随时间推移的平均费用,实黑线表示最低费用。值密度低于最低费用的UTXO不能使用,而那些低于平均费用的UTXO则更难使用。该图假定花费任何给定UTXO所需的平均字节数为172。[直接链接]
这个图与前面的UTXO平衡分布图非常相似,它只是根据每个UTXO所需的字节数(172)重新调整大小。这个新分布的单位是聪/字节,所以我们可直接将它与那个区块(黑线)的费用市场进行比较,单靠UTXO余额无法做到这一点。
那这个图代表着什么?
有很多粉尘UTXO!
在2017年末的高费用市场中,15%–20%的UTXO的值密度低于最低50-60 聪/字节的费用,这使得它们几乎无法被使用。40%-50%的UTXO值密度低于600-700 聪/字节的平均费用,这使得它们很难被使用。这里有很多是粉尘UTXO!
到了2018年,比特币的费用市场急剧降温,今天,10%-15%的UTXO值密度仍然低于20-30 聪/字节的平均费用,3%-5%的UTXO值密度低于1-2 聪/字节的最低费用。虽然粉尘UTXO少了很多,但仍是很多的。
这些粉尘UTXO并不值钱!
让我们换个角度来看:很多UTXO可能被归类为粉尘UTXO,但是这些粉尘UTXO总共包含了多少比特币呢?虽然它们有很多,但是根据定义,它们的余额很低,所以总的来说,它们加起来也没有多少。下图显示了低值密度UTXO中包含的比特币百分比:
有色带显示了给定值密度的UTXO所保留的比特币占比。由于大部分比特币是由高值密度UTXO所包含,因此只显示了低值密度UTXO(这些可能是粉尘)的能带。放大过去几个月,看看最近低值密度UTXO的减少。该图假定花费任何给定UTXO所需的平均172字节。[直接链接]
虽然有许多低值密度的UTXO,但是上面的图表显示,粉尘UTXO中聚集的比特币是非常少的。按价值计算,只有0.01-0.02%的比特币是粉尘,即使在费用峰值时期也是如此。以当时的比特币总市值2250亿美元计算,则相当于粉尘UTXO的值大约在2500万-5000万美元之间。
而市场在今天的平均费用比2017年末要低得多。按今天的收费,比特币网络当中只有0.0005%是粉尘UTXO。而在今天比特币市值跌至650亿美元的情况下,这代表全网只有价值30万美元的粉尘UTXO!
这代表被困于比特币网络的粉尘UTXO价值从2017年底的5000万美元缩水至如今的30万美元。
注:这些数字过高了。通过智能交易批处理,我们可有效减少使用UTXO所需的平均字节数,因此可减少我们对粉尘UTXO的数量和值的估计。
我们能减少粉尘UTXO吗?
比特币是一个无需领导的系统,这使得很难设计自上而下的方法来消除现有的粉尘UTXO,并减少未来的粉尘。相反,我们必须依赖对行业用户、矿工和企业的激励。那这种激励措施存在吗?
交易所及其他业务
是的,它们是存在的。虽然暴跌的价格和费用市场是减少粉尘量的主要原因,但在2018年,交易所等大型企业(尤其是Coinbase)采取了积极的降尘措施。下图直接显示了这些有效措施的影响:
市场作为一个整体,无论是缓慢(HODLs)还是快速地(反弹)增加粉尘量。单个参与者可以显著增加(2015年的“压力测试”)或减少(2018年的Coinbase)粉尘量。但是粉尘交易的产生从来没有停止过,请注意最近增加的粉尘交易和正在进行的清理工作。
Coinbase等公司已经制造了大量的粉尘UTXO,并且由于没有充分批量处理客户的交易,因此它们使用区块空间的效率很低。由于像Coinbase这样的主要交易所在2017年的牛市期间会非常受欢迎,这种行为影响了比特币网络的其他部分,很多人也抱怨得对。
当收费市场在2018年初回落时,Coinbase既有动力也有能力减少他们现有的粉尘足迹和未来的粉尘生成。批量交易节省了交易业务费用,同时也减少了粉尘UTXO的生成。Antoine Le Calvez的优秀作品《当比特币的粉尘问题被解决时》分析了这个“UTXO合并”整理活动。
比特币生态系统中的其他成员是否有同样的激励机制来减少粉尘UTXO呢?
对用户来说
用户不受粉尘UTXO的直接影响。由于使用的钱包软件效率低下,用户可能会生成粉尘UTXO,但是很少有个体比特币用户会创建大量的粉尘UTXO。
用户不喜欢高手续费,但粉尘UTXO不会直接影响收费市场。低效的UTXO管理,既会产生粉尘UTXO,又会导致更多小额的交易,这是导致费用增加的更大原因。因此,用户只有适度的激励来减少粉尘UTXO。
即使他们缺乏动力,那用户是否有能力限制粉尘呢?毕竟,正如2017年UASF运动所证明的那样,用户在密码货币方面是具有很大能力的。但是,粉尘UTXO是一个共同的问题,它是一个公地悲剧,因此需要一些协调一致的解决方案。用户将需要来自开发者或交易所或矿商的帮助,以清除他们拥有的任何粉尘。
个人用户可能愿意“捐赠”他们的粉尘,比特币确实为用户提供了捐赠粉尘的机制(例如,ALL|ANYONECANPAY
或NONE|ANYONECANPAY
类型签名)。如果钱包支持它,一个社区协调的公共春季大扫除,可能会是一个有趣的,为各种用户选择的慈善机构或项目增加资金来源的方式,从而受益于比特币生态系统。
对于矿工而言
大多数矿工会忽视粉尘。
矿池运营者需要管理UTXO集,并处理它包含的任何膨胀,但他们也可以自由地简单地从他们的mempool中丢掉低值密度的粉尘UTXO。无论如何,没有用户愿意花钱!这将为清道夫矿池提供拾取并试图挖取这些粉尘UTXO的机会,但这仍然需要用户采取行动来花费它们。用户可能不会注意或者关心。
关心粉尘的独立矿工或矿池运营者可选择安排一个费用假期,在此期间,这些矿工将故意允许零费用交易,这些交易(仅)花费低值密度UTXO,这可能是在春季清洁期间完成的。
这将允许用户清理钱包,同时帮助矿工和节点运营者显著减少UTXO集的memory占用。
诸如BetterHash之类的提议(可分配选择交易的能力),可能会鼓励更多的个体矿工离开传统矿池(矿池运营者来确定待挖取的区块)并构建自己的区块。那么,他们可能必须对付/关心更多的粉尘。
从理论上讲,矿工也可以拒绝处理产生粉尘UTXO的交易。
但是,他们真的愿意在短期内牺牲费用收入来防止长期产生粉尘吗?考虑到矿池在主导挖矿,而且这些矿池并不特别关心粉尘,这似乎不太可能。
对于全节点运营者
全节点运营者是那些备份区块链、中继和验证交易但不做挖矿工作的运营者,他们对粉尘生成也有一定的控制能力。bitcoind软件中的minRelayTxFee
参数允许节点运营者设置最小值密度,而低于该密度,节点运营者将忽略/删除UTXO(以及创造它们的交易)。在某种程度上,这种设置已经防止了极低值密度UTXO的产生,如果从未实施这种设置,那么今天可能会有更多的粉尘。
但是,很少会有节点运营者将配置设置调整到这种详细级别。这是因为,开发人员对bitcoind软件的默认设置并没有启用这个参数。
开发人员
在很多方面,开发者是最有能力限制粉尘产生的存在。
开发人员编写钱包软件和撰写相关文档。他们在面临困难优化问题时的权衡(和失败)是粉尘生成的根本原因。新的策略和最佳实践,是减少未来粉尘生成的最佳途径。
开发人员定义默认节点设置,这些设置渗透至全节点运营者、矿工、交易所。这提供了对粉尘的群体免疫,从恶意的或低效的钱包中过滤掉粉尘。
通过基层活动(就像UASF一样),开发者可以直接与用户和矿工合作,构建必要的社交软件,以安排和操作春季清洁运动和费用假期。
通过构建第二层网络(例如闪电网络),开发人员甚至可大幅克服粉尘问题。
粉尘不可避免
但是,我们没法完全杜绝粉尘的产生。尽管在2017年期间,人们对粉尘的认识在不断提高,并于2018年3月开始试图清理粉尘,但粉尘仍然在不断产生:
- 值密度小于50 聪/字节的UTXO显示出连续生产的锯齿曲线,然后是快速回调:这表示有人正在积极地制造粉尘,但至少也有人也在做清理。
- 此外,值密度小于 100 聪/字节的UTXO(以美元计)已经增加了10%,这些UTXO今天已不再是粉尘了,但如果收费市场再次像2017年那样上升,它们将迅速变成粉尘。
粉尘产生是比特币固有的低效率问题导致的。
粉尘只影响比特币吗?
并非所有的区块链都使用了UTXO模型。例如,以太坊就使用了账户模型。
- 通过不同的交易向一个地址存入以太币是会混合的;
- 交易费用由广播交易的地址支付,而不是被转移以太币的地址;
这两种差异都大大减少了粉尘的产生,但并没有完全消除它。
以太坊开发者也会担心粉尘,以及其可能导致的以太坊区块链膨胀问题。
粉尘的生成,似乎在各种区块链中是一个普遍存在的低效率问题。
区块链的热力学?
粉尘UTXO和普通UTXO的区别在于实用性。在一个粉尘UTXO中的1聪,其不如在正常UTXO中相同数量的1聪有用。但它们在其他方面是相同的。
矿工们为了保护比特币区块链而押注的算力,既保护了粉尘UTXO,也保护了更有用的UTXO。这让粉尘UTXO中的聪(比特币单位)显得更加无用,这看起来是不是在浪费能源?
“能源浪费”对于比特币来说可能是一个敏感的问题。有些人已经对工作量证明为确保比特币交易安全所消耗的能量表示叹息。那如果他们知道,大量的安全保护工作是不会被使用的话,他们的反对是否会更强烈呢?
比特币安全性的能效如何?
比特币是否有能源效率的概念呢?指使用算力来保护有用经济资产的效率?人们可通过将比特币矿机视为空间加热器来简单地定义其能量效率,但是对于整个比特币网络,是否存在更有趣、区块链层的能源效率定义?而这个定义,会导致比特币的效率因为粉尘的存在,而变得比人们想象地要更低?
物理与经济学
关于能量效率的问题可以用热力学来陈述,因此可以用物理学的工具来回答。
近几十年来,物理学家曾多次尝试使用他们的工具来模拟经济系统。有时,这些尝试在简单性和应用范围上都是非常漂亮的:例如有数十亿美元是由Black-Scholes方程导出的模型管理的,该方程通过类比热通过物理物质的扩散来计算期权价格。
这些(“经济物理学”)领域的其他尝试,感觉像是奇怪的、孤立的嵌合体,其被父学科都拒绝了。
对于物理学家的定量分析和理论模型来说,区块链是一个合适的学科吗?考虑:
- 比特币,尽管其市场仍然较小(而且在减少!),但现在它已经有了10年历史,它已经足够大了,可显示用户数量、投资、价格、数量和价值的各种有趣模式;
- 区块链也属于分布式账本,它们以伪匿名方式记录它们的数据,但是具有足够的结构来精确地分析大规模行为(参见我们的 HODL waves文章);
- 最有趣的是,通过使用大量的能量,比特币被锚定在物理世界中。这为物理学家思考区块链的热力学提供了依据。
区块链是结合经济学和物理学见解的一个前所未有的机会。
区块链作为热力引擎
这些属性的结合表明,我们可能想更认真地对待“粉尘UTXO是一种能源浪费”这种随意说法:实际上,更确切地说,UTXO是在“浪费”能源,因为它们对任何人都没有做有用的“功”。这降低了我们寻求测量的效率。
物理学家定义了一个简单的框架来理解有用的热、功和熵如何与机械引擎的效率相关,即:热力学的经典理论。
像这样的热力学方程式,将输入能量和发动机所做的功与发动机内部能量的变化及其产生的熵量联系起来。这个特别的方程式仅仅是暗示性的,还不清楚如何将这些术语用于区块链。
没有哪种经典的引擎是完美的,提取有用功总是伴随着熵的增加,通常表现为系统中的废热:
在反应室中分布在空气和燃料分子中的能量的焦耳,比在发动机的热排气中分子之间的随机振动存在的相同能量焦耳更有用。发动机的效率是指发动机避免产生废热的程度,其效率越高,越有利于有用机械功。
粉尘UTXO是没有用的,但它们是安全的,就像发动机排出的废热没有用,但无论如何都会产生一样。
正如工程师们已设计出聪明的系统来避免产生废热并快速释放废热一样,区块链工程师们正在开发更智能的钱包软件,而区块链公司正在“冷却”自己的粉尘,以努力提高区块链的效率。企业先清理高值密度粉尘,然后再清理低值密度粉尘,这也是Antoine Le Calvez在他的文章中提到的。