LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 几乎杀死了比特币的错误

几乎杀死了比特币的错误

2019-10-17 不详 来源:区块链网络

比特币是第一种加密货币,是由中本聪(中本聪)的匿名开发人员或一组开发人员引入世界的。

BTC的起伏历史悠久,其中一些对社区来说是相当不错的,因为它允许人们进一步增持更多的比特币。然而,其他人几乎摧毁了原始加密货币。

今天,我的目的是研究比特币开发人员必须处理的一些最棘手的错误,它们为什么发生,出了什么问题以及如何缓解它们。

我会尽力使事情简单而不是技术性的。

准备听听有关比特币的一些最令人不安的故事吗?

帝恶笑

错误如何发生

通过脚本创建软件。在比特币中,原始版本使用一种称为“ c ++”的低汇编语言进行编程。

即使开发人员(尤其是在开放源代码世界中的开发人员)在代码上运行了无数次运行,但还是会发生一些错误。这可能是由于更改导致某些功能与新代码不兼容,由于新代码中的错误,甚至是由于某些功能不应该执行的操作所致。

无论是什么原因,你都必须意识到,作为开源软件的比特币也容易出现一些错误。即使大多数问题都可以轻松解决(BTC幸运的是,一流的开发人员正在研究它),但有时出现的错误可能会导致无法预料的问题。

下面,我将探讨几乎导致比特币崩盘的前三个错误和错误。

错误1:OP_LSHIFT崩盘

你可以使用脚本语言运行的原始指令之一是OP_LSHIFT,它将向左移动一定位置的一组数字。发现在某些计算机上使用OP_LSHIFT时,处理事务将导致计算机崩盘。

该错误的起作用方式是,你只需进行一次恶意交易,然后将其发送到比特币节点,有效地导致该节点崩盘。

开发人员修复该错误的方法是使某些功能无效,从而使脚本返回“ false” –本质上是不运行程序(事务)。

错误2:通货膨胀错误

通货膨胀错误使你可以印更多钱。就像你能够成为比特币协议中的中央银行一样。

引发问题的代码是关于将事务中的所有输出和所有输入相加。你从输出中减去所有输入,如果得到负数,则意味着你的输出大于输入。

基本上,膨胀错误是由溢出引起的,例如当数字的绝对值太大而计算机无法表示它时。

因此,这使用户可以打印钱,并且此错误已在主网上被利用。产生了数十亿个BTC。

为了解决该问题,对代码进行了修补,每个矿机都使用了漏洞利用之前的最后一个块来切换到新的fork。从本质上讲,有一个硬分叉的比特币代码。

错误3:Netsplit

netsplit错误利用了这样一个事实,你可以在其中包含两个具有不同事务的备用块,这些块散列为相同的值。

这并不意味着哈希值已损坏。这意味着有两个块,具有不同的事务冲突,它们具有相同的哈希值。

这个错误有一个简单的修复。矿机只需要最终拒绝其中一个区块,就可以使那些交易无效。

碰撞可能会发生,并且已知会在一定程度上发生。最糟糕的时刻之一是有两个大约八个区块的有效区块链。意味着一些矿机正在挖矿一条链,而其他矿机正在挖矿另一条链。

这些分裂可能会发生,但最终会得到解决,因为其中一个链条将完成更多工作并替换另一个链条。

—-

编译者/作者:不详

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...