主页 > imtoken版本怎么看 > 区块链---双重支付问题

区块链---双重支付问题

imtoken版本怎么看 2023-04-18 05:51:05

双花问题

Double spending实际上是指双重支出,一种货币被使用了两次。

在传统现实中,由于低延迟网络和中心化管理,不会出现双花现象。 无论是线下交易的现金支付,还是线上支付的第三方监管交易确认,都可以避免双花问题。

这个问题怎么会出现在区块链上,又该如何避免呢? 让我们用一个例子一步步回答:

场景:

首先,下面的例子主要是为了帮助大家理解。 我们将区块链上的数字资产统称为:比特币(注:将比特币作为数字货币资产并不严谨比特币验证双花,这里只是为了帮助大家更好的理解)。

假设小明账户在区块链上的总资产为10个比特币。 小明向全网广播:“我小明,付给小红10个比特币”。

比特币验证双花_比特币主连比特币连续的区别_比特币分叉对比特币的影响

每个区块链的块生成需要相应的时间量。 具体原因在之前的文章中已经讲过,这里不再赘述。

此时,交易已经广播到网络中,但由于负责整理区块的矿工之间存在时间差,交易还没有被记录在区块中,被全网识别。 这时,小明立马发布了一条新的广播:“我小明,给小黄支付了10个比特币”

你可能会认为这就是所谓的双花问题,只要你的广播间隔足够小,就可以迷惑观众。 重复消耗资产。 很快,小明的一笔交易就被拒绝了。 原因如下:

在区块链网络中,每笔交易都需要确认对应资产的先前状态。 如果之前已经标记为已花费,则新交易将被拒绝。 因此,当小明的上述两个广播中的一个被记录在区块链上时,另一笔交易将被系统自动拒绝,为无效交易。

小明知道区块链的原理,所以不断重复上面的步骤(我们假设小明有无数个账户,每个账户只有10个比特币)。 经过数万次的重复,最后,出现了一种情况:

比特币分叉对比特币的影响_比特币主连比特币连续的区别_比特币验证双花

小明的两笔交易同时出现在不同的区块。 这时,由于小明的不良行为,区块链出现了所谓的“分叉”:

碰巧两个矿工几乎同时获得了记账权,并把各自的区块发布到网络上(这个概率很低),只是因为网络延迟问题,两笔交易被排序到一个区块上级。

在这里插入图片描述

此时区块A记录“小明支付小红10个比特币”,区块B记录“小明支付小黄10个比特币”,那么此时小明已经实现了双花?

当然,细心的朋友可能会发现,区块链这么长肯定是有问题的。 事实上,区块链规定当出现分叉时,承认最长的分支,承认最短的分支。 如果被遗弃,账本仍会归一。

比特币验证双花_比特币分叉对比特币的影响_比特币主连比特币连续的区别

我们假设,毕竟A分叉的块数超过B分叉的块数……如下:

在这里插入图片描述

毕竟比特币验证双花,只有一个分支是有效的。 绞尽脑汁后,小明开始了以下操作:

现在A分叉获批,小明立马跑到小红身边,顺理成章用10个比特币换了10部iphone,一切都是理所当然的。 然后,小明打开电脑开始挖矿,也就是参与区块的整理和发布。

假设小明的算力很强,当A分叉再次产生下一个区块时,小明已经整理出三个区块发布在B分叉上(如下图),此时A分叉不再被认可:

比特币验证双花_比特币主连比特币连续的区别_比特币分叉对比特币的影响

上一篇文章提到,工作量证明机制意味着只有在计算出一道数学难题后,才能对区块进行排序和释放。 理论上,当算力足够大时,可以实现上述小明。 实践。

在这里插入图片描述

最终,小明实现了双花。 他已经从小红那里拿走了10部iphone,接下来他还可以去找小黄拿10部iphone。 一切都是那么的美好,小明仿佛已经走到了人生的巅峰~~(全文)

如何实现双花

等等,我们好像忽略了一个问题,小明如何在A链衍生出一个区块的情况下,整理出三个新的区块发布到B支链上呢?

比特币主连比特币连续的区别_比特币分叉对比特币的影响_比特币验证双花

有两种可能性:

我们暂且假设全网每台计算机的算力相同,全网共有1亿台计算机参与算力。

第一个,穷人靠变异:

假设小明是一个正常人,有一台普通电脑。 如果他需要在短时间内三次通过工作量证明机制,这个机制其实就是计算某个Hash值。 只有当Hash值的前10位全为0时,Hash才有效,此时才可以发布新区块。 理论上,如果运气够好,可以连续3次得到3个有效的Hash值。 整理完三个块,他的概率是:1/100000...000(27个0)的概率。 以这个概率,您可以中奖超过1000亿次的大奖。

第二种,有钱靠Money:

假设小明非常非常有钱,控制着超过5000万台电脑的计算能力,此时,小明可以坐在家里等待B分支的长度超过A分支的长度,因为它会迟早会发生。

这就是所谓的“51% 攻击”问题。 事实上,只要B上发布区块的矿工数量大于50%,B的支链长度迟早会超过A的支链长度,从而被认可。 但问题是,你需要控制50%以上的算力,这样你才能按照自己的意愿控制B支链。