比特币与硬币比较的技术机制之一正处于重大更新的边缘
2018-04-02 22:52 文章来自:IFTNews.CN 收藏(0) 阅读(1867) 评论(0)

IFTNews.CN比特币快讯:比特币与硬币比较的技术机制之一正处于重大更新的边缘。

这个术语被称为“硬币选择”,它指的是今天决定哪些数据位合在一起来创建用户事务的算法。从本质上讲,硬币选择代码复制了给收银员一个10美元的钞票,其价格为7美元,消费者会得到3美元的零钱。

如果这听起来不是特别复杂,记住比特币是实验性的软件,而这个功能在工作时并没有完全优化。更糟糕的是,可能需要调整的部分对用户成本有直接影响。

“比特币核心的原始硬币选择算法实际上需要大量的返工工作,特别是在交易费用方面,这种算法效率低下,最终造成了一个奇怪的循环,试图猜测需要的交易费用。”比特币核心贡献者Andrew Chow 表示。

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

因此,开发人员一直在开发一种新的算法,称为“分支和绑定”或“BnB”,它以一种更有效的方式将数据融合在一起,从而实现小型缩放和低交易费用。

大约两年前,Erhardt首次提出了一些优化,而Chow则是第一个将变更编码的开发人员。

最近,比特币最受欢迎的软件“比特币核心”(bitcoin Core)被认为已经准备好加入比特币,并将其并入代码库。对用户来说,这一功能更适合于在明年发布第17版的软件。

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

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

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

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

 

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

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

因此,如果您需要发送0.2 BTC,比特币核心“硬币选择”算法可能会决定将价值0.3 BTC的数据放入所谓的“输入”中,创建事务。然后将会有两个输出:0.2 BTC,将被发送给接收者,0.1 BTC,它将被放回你的钱包,作为“改变输出”。

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

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

他继续谈到另一个不幸的副作用:

“你不希望交易被粉碎。”

 “灰尘”是比特币的一小部分,它们很小,几乎不值得花钱,因为这些费用可能比交易本身更重要。它们可能类似于便士,因为一便士实际上比购买商品的价值要高。

如何选择?

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

Chow:“这有助于减少UTXO的数量。”“此外,发现精确匹配的事务通常比有变化的事务要小,因此,这也将节省用户的交易费用,并腾出更多的块空间以适应其他事务。”

有证据证明这是可行的。在一个模拟中,Erkhardt发现,在通常有变化输出的大约40%的事务中,新的算法能够处理掉不必要的数据。

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

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

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

有趣的是,开发人员发现随机选择硬币的方法比比特币核心今天使用的更为谨慎的算法要好。这是多年工作的顶峰,但根据埃尔哈特的说法,这个过程不可能更快。他说,硬币选择是代码的一个“敏感部分”,改变它会产生“全球性后果”。因此,“没有人愿意摆弄它太久,”埃尔哈特解释道,并补充道:“现在我们已经为进一步的改变投入了大量的管道。”