比特币的新算法BnB能否进一步降低交易手续费?
币安(Binance)最新可用网址(点击下图直达注册!)
之所以现如今人们能把比特币与现金相比较,这其中的技术机制之一是比特币正处于重大更新的边缘。
所谓的“硬币选择(coin selection)”,指的是现如今决定将哪些数据集合在一起来创建用户交易的算法。从本质上讲,硬币选择代码复制了一个转账过程,该过程相当于消费者给收银员一个10美元的钞票,消费者拿到了7美元的商品同时得到了3美元的零钱。
但如果这听起来不太复杂,那就请你记住比特币是一个正处于实验中的软件,而上述的这个功能在运转的时候并不是完全优化的。更糟糕的是,比特币软件中可能需要调整的部分会对用户成本造成直接的影响。
Bitcoin Core的贡献者Andrew Chow对CoinDesk说道:
比特币提供商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说道:
有证据表明这样的方法是可行的。在一个交易模拟的过程中,Erkhardt发现通常的交易中有40%是有零钱输出的,而新的算法能够处理掉不必要的数据。
除了这些对用户的好处之外,代码更改还有助于开发人员,因为新算法在技术上更容易被理解。
不过,开发人员并没有对硬币的选择过程进行调整。Chew和其他一些人计划通过添加一个所谓的“简单随机取样(simple radom draw)”来进一步研究这个算法。
当BnB算法通过所有的比特币用户的UTXOs,并且无法避免创建一个零钱输出时,它就会回到最初的硬币选择过程。但是,在简单的随机抽取下,算法会选择随机的UTXOs,直到它达到所需的金额。
有趣的是,开发人员发现随机选择硬币的方法比Bitcoin Core今天使用的更为谨慎的算法要好。
这是多年工作的顶峰,但根据Erhardt的说法,这个过程不可能更快的完成。他说,硬币选择是代码的一个“敏感部分”,改变它会产生“全球性的后果”。
因此Erhardt说道: