风险提示:理性看待区块链,提高风险意识!

比特币如何解决“双花”问题?

2个回答

晴天财经阁9星评价

2018-02-25 13:01:32

比特币如何解决“双花”问题?

什么是双花

双花就是同一枚比特币被使用两次,但是无论在比特币网络中还是现实世界都不可能发生,就像在现实中你不能用1块钱买个苹果,又用同一张1块钱买橙子。如果这都可以的话,钱就变得毫无价值了,因为这样每个人都会拥有无数多的钱,用也用不完,货币价值也就没有了。比特币核心网络在比特币区块链中验证每笔交易来防止双花。

那比特币网络如何防止双花呢?

假如你有1个比特币,你想要花两次。于是你向商家买了价值1个比特币的商品。然后,你再在另一个比特币地址上签名,并发送相同的1个比特币。

两笔交易都进入了还未进行验证的交易池。你的第一笔交易得到了确认,并在下一个区块中得到了矿工的工作量验证。但是矿工会认为第二笔交易是无效的,这样就没办法获得足够的确认,就会被撤出网络。

但是如果这两笔交易是由矿工同时操作呢?

当矿工同时从池中提取交易时,获得网络中确认数量最大的交易将会保留在区块链中,而另一个将被撤出。也有可能真实的那笔交易无法获得确认。这就需要6次确认机制。6次确认”就是在这笔交易被添加到区块链之后,另外6个包含多个其他交易的区块就会被添加到这个区块之后。每一个都需要6次确认”,且都和前一个区块有关联。所有这些确认和交易都在加上了时间戳,这就使得区块不可逆转,而且无法篡改。

而当你掌握的算力超过50%时,就可以无限逆转区块。但是有些区块链网络已经非常之大,想要和它对半抗衡是不可能的,但有一些区块链网络比较小,节点比较少,也有可能遭遇51%算力攻击,今天的BTG就是一个例子。

那名矿工为了实施双花攻击,获得了至少51%的BTG网络算力,就能够临时控制BTG区块链。像BTG这样的小型网络上,获得这么大的哈希算力也是非常费钱费力的,但是无利不讨好嘛,实施双花之后就有钱可赚了。

控制了网络之后,攻击者开始往加密货币交易所充值比如1000个BTG,让其进入市场,或者提现出来。再运用手中的算力,从自己对外付款交易之前的区块开始,忽略自己所有对外的付款交易,重新构造后面的区块,利用算力优势与全网赛跑,当最终创建的区块长度超过原主分支区块,成为新的主分支,至此,攻击完成;结果就是,由于撤销了所有对外付款交易,等于收回来所以已卖掉的BTG。就这样,他们能够向交易所充值后再迅速收回资金。

比特币黄金开发人员建议交易所在用户交易时通过确认交易数量来应对攻击。区块链数据表明,攻击者成功逆转了22个区块,这导致开发者建议将需要确认的区块提高到50个。

微米-纳米SiO21星评价

2020-05-12 15:32:34

双花问题是指一笔数字现金在交易过程中被重复使用的现象。

比如,我只有两百块钱,想要把这笔钱支付两次,于是我同时给甲、乙转200元钱。

遇到这种问题,比特币是怎么解决的呢?

大家请仔细想一想,这笔钱是固定的,如何保证这笔钱在交易过程中,只支付了一次呢?

比特币的创始人中本聪在《比特币白皮书》中写道,比特币的支付步骤是这样说的:

1.有一个新的交易,要向全网公布广播。

2.每一个节点,都要将收集到的交易信息,放入一个区块中。

3.每一个节点都要试着在自己的区块中,找到一个足够难的工作量证明。

4.当一个节点找到了自己的工作量证明,都要对全网进行公布广播。

5.当且仅当这个区块中的所有交易是有效且之前从未有过,其他的节点才承认这个交易过程的有效性。

6.其他节点表示承认这个区块,表示认可的方法就是,根据这个区块的编码,往后延长这个链接。

有了上述的步骤,我们就能保证交易的唯一性和确定性。

这样说来,在交易发生的时刻,比特币的交易数据就被盖上了一个时间戳;而在这笔交易数据被打包到区块中这个过程中,就完成了第一次确认,在连续地进行了六次确认之后,这个记录就不能被轻易篡改了。

在这种情况下,当我尝试进行两次支付交易时,由于确认时间较长,后一交易几乎不可能与前一次交易同时确认。在第一次交易确认后,资金在第二次交易中无法确认。区块链的全网记账需要在整个网络中达成共识,就无法产生双花问题。