当有人想进行交易时,他们的软件必须选择使用哪个UTXO。这里有几种不同的方法,可以优先考虑使用哪些UTXOs。
最老的UTXOs优先
最新UTXOs优先
先用最小数量的UTXOs
金额最大的UTXOs优先
核心客户选择算法:什么是硬币选择算法?
其他人?
UTXO的优先支出的不同方式有哪些权衡?有快一点的吗?有没有让区块链变小(增长速度变慢)?是否有一些使UTXO集变小?让用户支付最少的费用怎么样?考虑到所有这些因素,有没有一种方法被普遍认为是最好的方法?
我喜欢的一种可能性是,在保持1kb最低费用限制的同时,尽可能多地使用UTXO。这样,如果节点修剪STXOs的区块链(花费的事务输出),他们可以修剪更多,这使得区块链对他们来说更小。尽管如此,对于保留整个块链的节点来说,这可能会导致少量的膨胀,因此这是一种折衷。
utxo公司
支出
硬币选择
分享
改进这个问题
跟随
编辑时间:2017年4月13日12:47
社区♦
1
2014年10月27日2:28问
莫尔斯编码器
13.3k22金徽章3535银徽章8585铜徽章
添加评论
1个答案
11
选择硬币选择算法的挑战在于有多个目标需要优化:
隐私
硬币的选择应该尽可能少地透露用户钱包的内容。
交易费
一方面要尽量减少目前的交易费用,另一方面也要减少整体的长期交易费用。
无尘化创造
最好是创造无灰尘的变化。
降尘UTXO
dustutxo必须存储在所有用户的设备上,因此即使在瘦客户机上也要创建数据卷。应该优先减少他们的人数。
不幸的是,这些问题相互矛盾,因此,每一个解决办法都必须为自己找到适当的平衡。
最早的UTXOs优先(FIFO)
很好
当它们出现在您的事务历史记录中时,将耗尽dust UTXO。
坏的
给出发信人钱包里最老的UTXO的日期。例如,显示一个用户至少使用比特币(钱包)的时间,甚至可以通过观察一个人花费已知产出的时间来猜测他持有的比特币数量。
不会降低交易费用。
最新UTXOs优先(后进先出)
很好
比先进先出(FIFO)揭示的钱包信息更少。
大多数UTXO几乎看不到任何操作(可能有利于隐私)。
坏的
将最新的UTXO研磨成灰尘,直到收到新的或用完。可能会产生一个装满小UTXO的钱包。
如果收入等于或大于支出,灰尘将永远不会被巩固。
不会降低交易费用。
将通过始终重用最新的更改输出来链接最近的活动。
先用最小数量的UTXOs
很好
尽快固化灰尘。
持续保持钱包中UTXO的数量最少。
坏的
显示钱包中UTXO值的下限。
大量的输入列表(特别是只要钱包里有灰尘)会导致巨大的费用和缓慢的确认。
将钱包中的许多地址链接在一起。
如果人们只发送低价值的输出,可以利用它来增加您的交易费用。
金额最大的UTXOs优先
很好
最低交易费用。
可能会造成无尘变化。
坏的
显示钱包中UTXO值的上限。
决不使尘土凝结。
通常会增加网络中UTXO的数量。
比特币核心的背包选择算法
很好
通常是小额交易费用
随机选择UTXOs很少会显示有关钱包的任何信息。
可能会随机合并粉尘UTXOs。
坏的
始终以10 mBTC变化输出为目标。
你的钱包里有很多小的UTXO,很可能会导致大笔交易费用。
(2014:)我一直在研究一种更好的硬币选择算法,但还没有找到一种能显著改进核心客户选择算法的算法。
以下是一些改进方法:
当一个UTXO被随机选择时,将与同一地址相关联的所有其他UTXO也添加进来:事务的较少链接提高了隐私性,可能会将UTXO合并到较少的地址中。
与其选择最小的变化,不如创建与支出目标相同大小的变化。假设人们主要发送有用的量,这将创建有价值的新UTXO,而不是像现在这样的最小可能的更改。这也使人们更难猜测是什么变化和什么是付款。
选择UTXO set以最小化事务费用,而不是最小化更改输出。
2021年更新:
删除了一些关于硬币时代优先权作为区块构建中的交易选择政策的典故,2016年比特币核心0.12.0中删除了这些典故。
删除了一个错误的说法,即从同一地址花费多个输入比较便宜
请注意,比特币核心在2017年之前一直将背包解算器作为其唯一的算法,但此后又添加了一个由本文作者提出的改进算法。
分享
改进这个答案
跟随
两小时前编辑的
回复时间:2014年11月11日22:20
墨奇♦
53.6K33232金徽章149149银徽章463463铜徽章
谢谢你这个伟大的,非常彻底的回答。有很多事情我没有考虑过穆尔塞科德11月12日2点27分
谢谢你详细的回答。2019年看起来仍然合法,但是否有新的“硬币选择算法”可供参考onepix 4月10日15:42
1
是的,比特币核心从0.17.0开始使用分支定界算法:Bitcoin.stackexchange.com/a/72928/5406。你也可以在这里阅读更多关于硬币选择的信息:murch.one/wp content/uploads/2016/11/…–murch♦ 4月10日16:00
添加评论