比特币“硬币选择(coinselection)”决定将哪些数据集合在一起来创建用户交易的算法

资讯 7个月前 manoon
0

人们今天之所以能将比特币与现金进行比较,是因为其中一项技术机制是比特币即将进行重大更新。

所谓的“选币”是指当今决定将哪些数据放在一起以创建用户交易的算法。本质上,硬币选择代码复制了一个转账过程,这相当于消费者给收银员一张 10 美元的钞票,消费者收到 7 美元的产品比特币交易免手续费,同时还收到 3 美元的找零。

比特币“硬币选择(coinselection)”决定将哪些数据集合在一起来创建用户交易的算法

但如果这听起来太复杂,那么请记住,比特币是一个实验性软件,运行时上述功能并没有完全优化。更糟糕的是,比特币软件中可能需要调整的部分将对用户成本产生直接影响。

比特币核心贡献者 Andrew Chow 告诉 CoinDesk:

Bitcoin Core 的原始选币算法实际上需要大量的返工,尤其是在交易费用方面。它非常低效,算法最终会进入一个奇怪的循环并试图猜测所需的交易费用。

比特币提供商 BitGo 的工程师 Mark Erhardt 同意这一说法,在最近的播客采访中称该算法“令人费解”。

比特币“硬币选择(coinselection)”决定将哪些数据集合在一起来创建用户交易的算法

因此,开发者一直在开发一种称为“分支定界”或“BnB”的新算法,将数据以更有效的方式融合在一起,从而产生更小的碰撞扩展和更低的交易成本。

大约两年前,Erhardt 首先提出了对比特币算法的一些优化,而 Chow 是第一个更改这些代码的开发者。

最近的这一更改已准备好添加到比特币最受欢迎的软件 Bitcoin Core 中,并同时合并到代码库中。对用户来说好消息是,该功能将在明年发布的第 17 版中广泛使用。

比特币“硬币选择(coinselection)”决定将哪些数据集合在一起来创建用户交易的算法

在谈到这些变化的好处时,周说:

这将使我们能够对货币选择代码进行大量整理,并使人们能够准确了解货币选择算法在做什么。

比特币“硬币选择(coinselection)”决定将哪些数据集合在一起来创建用户交易的算法

算法需要改吗?

如前所述,退一步说,用户发送的每笔比特币交易都是由不同数量的比特币组成的。

假设你的钱包里有一个比特币。这种比特币通常由不止一条数据组成。相反,它通常是由大量数据块拼凑而成。它可能包括一个、两个或几十个小交易块——每个块都称为“未使用的交易输出”(UTXO)。

比如你的比特币钱包地址绑定的可能是0.1 BTC的数据值,0.3 BTC的数据,0.1 BTC的数据,还有0.1 BTC的数据。 @0.5 比特币数据,它们共同构成了一个完整的比特币数据。

此数据基于他们之前的交易以及它们最初如何分配到您的钱包。

因此,如果您需要发送0.2 BTC,Bitcoin Core的“选币”算法可能会决定将价值0.3 BTC的数据放入所谓的“输入”并创建交易。然后会生成两个输出:一个输出是0.2 BTC,将发送给接收者,另一个输出是0.1 BTC,将用作“找零输出” Put它回到你的钱包里。

比特币“硬币选择(coinselection)”决定将哪些数据集合在一起来创建用户交易的算法

但是,据开发人员称,该算法并不擅长决定如何选择用于交易的代币。

Erhardt 解释说,该算法几乎总是自动生成“变异输出”,这通常是不必要的,而且会浪费区块链上的空间。在上面的例子中,算法可以通过选择价值0.1 BTC的两条数据来避免这种情况,而不必将“找零”发送回发送方。

他接着谈到了该算法的另一个不幸的副作用:

您不希望您的交易包含灰尘交易。

“灰尘”是指极少量的比特币,它们小到几乎不值钱,以至于灰尘交易的成本可能比要交易的比特币还要多。它们可能类似于便士,因为您在购买商品时花费的便士实际上可能高于其本身的价值。

我们如何选择?

比特币“硬币选择(coinselection)”决定将哪些数据集合在一起来创建用户交易的算法

比特币上的新算法 BnB 阻止了这些发行者试图消除尽可能多的变化输出场景。简而言之,它会查看所有输入,看看是否有办法达到用户想要发送的比特币数量。

周说:

这有助于减少 UTXO 的数量。此外比特币交易免手续费,找到完全匹配的交易数据通常小于发生变化的交易数据。因此,这也将节省用户的交易成本,释放更多的区块空间来容纳其他交易。

有证据表明这种方法是可行的。在交易模拟过程中,Erkhardt 发现 40% 的平常交易是有变化的输出,新算法可以处理不必要的数据。

除了为用户带来这些好处之外,代码更改也对开发人员有所帮助,因为新算法在技术上更容易理解。

但是,开发人员并没有调整硬币选择过程。Chew 和其他人计划通过添加所谓的“简单随机抽取”来进一步研究该算法。

比特币“硬币选择(coinselection)”决定将哪些数据集合在一起来创建用户交易的算法

当 BnB 算法通过了所有比特币用户的 UTXO 并且无法避免创建找零输出时,它将返回到原始的硬币选择过程。但是,在简单的随机抽取下,算法会随机选择 UTXO,直到达到所需数量。

比特币“硬币选择(coinselection)”决定将哪些数据集合在一起来创建用户交易的算法

有趣的是,开发人员发现随机选择硬币的方法比比特币核心今天使用的更谨慎的算法要好。挖矿教程私信我。

这是多年工作的结晶,但根据 Erhardt 的说法,这个过程不可能更快完成。他说,硬币选择是代码的“敏感部分”,更改它将产生“全球后果”。

因此艾哈特说:

没有人愿意在它上面花费太长时间,现在我们已经投入了大量精力来进行进一步的改变。

报告/反馈

暂无评论

暂无评论...