比特币上的新的算法BnB能否改变交易模式

区块链

575人已加入

描述

之所以现如今人们能把比特币与现金相比较,这其中的技术机制之一是比特币正处于重大更新的边缘。

所谓的“硬币选择(coin selection)”,指的是现如今决定将哪些数据集合在一起来创建用户交易的算法。从本质上讲,硬币选择代码复制了一个转账过程,该过程相当于消费者给收银员一个10美元的钞票,消费者拿到了7美元的商品同时得到了3美元的零钱。

但如果这听起来不太复杂,那就请你记住比特币是一个正处于实验中的软件,而上述的这个功能在运转的时候并不是完全优化的。更糟糕的是,比特币软件中可能需要调整的部分会对用户成本造成直接的影响。

Bitcoin Core的贡献者Andrew Chow对CoinDesk说道:

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

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

因此,开发人员一直在开发一种新的算法,称为“分支界定法(branch and bound)”或“BnB”,它以一种更有效的方式将数据融合在一起,从而产生了一个更小的扩容碰撞和更低的交易费用。

大约在两年前,Erhardt首次提出了针对比特币算法的一些优化,而Chow则是第一个将改变这些代码的开发人员。

最近这项改变已经准备好被添加到比特币最受欢迎的软件Bitcoin Core中,同时将其并入代码库。对用户来的好消息是,这一功能将在明年公布的第17个版本中进行广泛的使用。

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

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

算法不需要改变?

正如前面提到的,退一步说,用户发送的每一个比特币交易都是由不同数量的比特币组成的。

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

例如,绑定到你的比特币钱包地址的可能是一个价值0.1 BTC的数据,一个0.3 BTC的数据,一个0.1 BTC以及一个0.5比特币的数据,它们一同组成一个完整的比特币数据。

这些数据是基于他们之前的交易,以及他们最初是如何分配到你的钱包的。

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

然而,根据开发人员的说法,该算法并不擅长决定如何选择交易的硬币。

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

他继续说着该算法的另一个不幸的副作用:

你不希望你的交易由粉尘交易组成。

“粉尘”指的是数量非常小的比特币,它们小到几乎不值得花钱,从而使得粉尘交易的费用可能比要交易的比特币更要多。它们可能类似于便士,因为在购买商品时,你花费的便士可能实际上比它的本身价值要高。

我们该如何进行选择呢?

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

Chow说道:

这有助于减少UTXO的数量。此外,发现精确匹配的交易数据通常比有找零的交易数据要小,因此,这也将节省用户的交易费用并腾出更多的区块空间以适应其它交易。

有证据表明这样的方法是可行的。在一个交易模拟的过程中,Erkhardt发现通常的交易中有40%是有零钱输出的,而新的算法能够处理掉不必要的数据。

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

不过,开发人员并没有对硬币的选择过程进行调整。Chew和其他一些人计划通过添加一个所谓的“简单随机取样(simple radom draw)”来进一步研究这个算法。

当BnB算法通过所有的比特币用户的UTXOs,并且无法避免创建一个零钱输出时,它就会回到最初的硬币选择过程。但是,在简单的随机抽取下,算法会选择随机的UTXOs,直到它达到所需的金额。

有趣的是,开发人员发现随机选择硬币的方法比Bitcoin Core今天使用的更为谨慎的算法要好。

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

因此Erhardt说道:

没有人愿意花太长时间摆弄它,现在我们已经投入了大量的努力来做进一步的改变。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分