首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块链简史(六):比特币系统如何解决双重消费和拜占庭将军问题

欢迎来到懒区块公众号,本文由懒区块整理撰写,不经过允许,切勿转载。本系列有十二篇文章,这十二篇文章介绍了区块链技术的简史、应用、预测和展望。您的每一次关注、转发、收藏都是我们更新优质内容的源动力。

各位小伙伴们晚上好,在上一篇文章中我们简单创建了一个丑陋无比的区块链网络。今天懒区块想和大家来聊一聊比特币网络在设计之初是如何解决去中心化的“双重消费”问题和“拜占庭将军”问题,这两个问题可以说阻碍了去中心化数据货币发展许多年。我们先来看下双重消费问题:

题图

我们来用一个简单地案例来解释一下什么是“双重消费”。从前有一个无恶不作的坏人A,有一天A使用了1000块钱找B买了一个手机,然后趁着交易共识没做完的时候马上又去找C买了一台电脑,此时C还不知道A已经将这1000块钱花完了。这个时候整个支付系统就会记账两笔,分别是购买手机和购买电脑。这个就是“双重消费”问题,可以简单地看出,“双重消费”是电子货币才会出现的问题,在现实生活中可以使用防伪技术来解决该问题,而在电子货币系统中,无论怎么加密,始终是一串二进制二维码。那么比特币系统中是如何解决这个问题的呢?比特币系统通过两步来解决这个问题:

全网所有节点公告保存账本;

当交易广播的时候,需要得到足够多的节点的确认,那么交易才算完成。

通过这两点可以解决“双重支付”问题(即全网的节点收到两笔交易记录的时间是有先后顺序的,比特币网络对每笔记录都记录了时间戳,然后通知全网的其他节点,最先占据超过全网51%节点的记录即被验证为真实的,小于51%的记录会被抛弃掉),这样处理可以确保数据的完整性,但是可以发现带来了新的问题,就是使用该算法处理的业务是非实时性的,在区块链网络节点日益变多的时候,处理一笔交易可能会耗时数十个小时甚至更久,相信在不就的将来该问题可以得到解决。接下来我们来看下“拜占庭将军”问题:

拜占庭将军问题

我们来简单应用下“拜占庭将军”所面临的问题:

当年的拜占庭罗马帝国国土辽阔,为了防御,每个军队都被分隔得很远,将军与将军之间只能靠信差传递消息。拜占庭帝国军队的将军们必须全体一致决定是否共计某一支敌军,不过问题是这些将军在地理上是被分割开的,并且在将军中存在叛徒。叛徒可以任意行动以达到以下目的:

欺骗某些将军采取进攻行动

促成一个不是所有将军都同意的决定,例如当将军们不希望进攻时促成进攻行动;或者迷惑某些将军,使他们无法做出决定

我们可以看出“拜占庭将军”问题是对现实时间的模型化,在互联网的世界中,因为硬件、网络阻塞或者遭受到恶意攻击,整个互联网都会出现不可预料的行为,在整个比特币支付网络中必须处理这些失效的问题。

比特币网络是通过工作量证明(pow)来解决该问题的,区块链技术在发送信息的时候加入了成本,降低了垃圾信息的传递,即每一个节点要传递信息必须要经过大量的尝试和计算才能得出结果,而其他节点只需要少量的成本就可以验算结果。并且在传递消息的时候使用非对称加密,每个节点收到发起者的信息必须签名盖章,确认各自身份,这样就可以解决古代难以解决的问题。并且在比特币网络中还设定了以下的假设:

所有的交易都在P2P网络上完成

每个节点可以随意加入/离开节点网络

交易不可逆

交易可溯源

节点网络上的良性节点数量大于恶性节点数量

比特币成功解决拜占庭将军问题

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180219G0LEXK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券