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

田教授侃区块链第六讲:双花、分叉与51%攻击

每天5分钟,轻松区块链

田教授侃区块链第六讲:双花、分叉与51%攻击

啥是双花!

就是一份钱花两次,爽不爽?

爽是爽,可是现实社会中,不可能!

如果是实物货币!比如你有10元人民币,你买 了一杯咖啡!

咖啡给你,钱归人家!

你那个10元钱转移到另外一个人手里了!

你花两次的可能性,只能在梦中!

但是,如果用数字方式支付,是不是就不一样了呢?

比如,我刷卡!

我不用实体货币,我支付10元钱!其实只是少了点数字?

那能不能花两次呢?

答案是也不行!

因为,你花了10元,你的卡上的数字就会少10!

这个账由谁来记呢?

由发卡方银行!

哪张卡,在哪里消费,在啥时候消费,都被清清楚楚的给记在中心化数据库里!

这就是中心化记账!

想花两次,门都没有!

但是,这个账本能不能改呢?

答案是:技术上容易!

中央数据库,余额数字只要你有权限,随便改!

相改多少,就改多少?

一夜暴富不是梦想!

但问题是:银行很容易查出来!

因为银行有很严谨的对账系统!

你的卡上的数字,没有进项,是凭空多出来的!

这不合理,分分钟警察就会来找你!

但是,如果银行要改呢?

嗯,没毛病!

问题是,改少了,你会闹!

改多了,我就想问问,你是谁?谁的脑子被驴踢了?

但是,黑客也不傻!

道高一尺魔高一丈!

他不改自己的账户,改着玩!然后敲诈银行!

类似收点啥漏洞修补费之类的!

或者改完了,赶紧转账!

反正,有套路的人多的很!

你要知道,世界上还有洗钱这一说法!

明白了吧,这就是传统中心化数据库的好处与弊端!

没有双花问题!

但是潜在问题很大!

保证不出问题,不是靠的头顶灿烂的星空,而是靠心中的道德法则!

其实,最重要的是靠警察!

哈哈!

刚才说了,双花在中心化记账的情况下不会出现!

但是,在分布式账本的情况就不一样了!

为啥?

分布式记账!顾名思义,很多节点都有一本账!

可是问题就出在,各个账本的的统一性上!

先看一下交易的确认过程!

一个交易发生之后,比如,你花10元买了一杯咖啡!

你就会把这个交易信息向全网广播,请求记账!

注意,因为节点很多!网络传输是有延迟的!

这个延迟大小与节点的地理位置、接入带宽和当时的网络使用情况都有关系!

反正,节点A先收到这个信息,节点B没收到这个消息!

注意,时间差来了!

这个时候,假如你立刻再用这笔钱去买一个蛋糕!

同样,也要把这个交易信息向全网广播,这个时候,恰恰相反,B收到这个交易,A没收到这个交易!

在这个时间窗口下,你的钱就花了两次了!

那个这个问题出在哪里?

答案是记账!

也就是到底是A负责记这个账,还是B记这个账!

结果完全不同!

所以,拥有记账权的这个节点非常关键!

那么到底是谁有记账权呢?

答案是比赛!

比赛的题目是做数学题!

谁先猜对,谁就可以记账!

比如A先猜到,那么A就向全网进行广播,宣称已经做好了题目!

其他节点验证通过之后,就认可A的记账权利!

公平合理,童叟无欺!

这种选择谁来记账的方式,在区块链中有个比较专业的名字!

共识算法!

所以,共识算法就是解决双花问题的!

靠选择共同认可的单一记账节点,解决了账本不统一的问题!

等等,还有一个问题!

加入,AB两个节点同时解出了算数题呢?

那么他们就会同时宣称有记账权!

因为网络延迟问题,可能一部分先收到A的广播!

一部分先收到了B的广播!

就会分成两派,一部分节点认同A有记账权,一部分节点认可B有记账权!

怎么办?

分裂!

也就是传说的分叉!

认可A的,就会沿着A的链记录下去!

认可B的,就会沿着B的链记录下去!

那么究竟选哪个呢?

答案还是比赛!

在规定的条件下,哪个链长,哪个就赢!

另外一个作废!

听好了!

以下有点烧脑!

刚刚说的情况,是理想的、自然的情况!

假如,有人恶意分叉!

然后又干掉一个叉呢?

啥意思,你先把10元转到一个自己的一个交易所的账户!

然后等待这个交易被确认!

确认之后,你立马从交易所把这个10元取走!

然后,你又立刻分叉!

在新的分叉交易里面,你又把这10元转到自己的另外一个账户里面!

然后,两条链开始赛跑!

假如,在规定的条件下,第二条链更长!

那么,前面的链路作废!

也就是,你先前提现的10元钱交易,被作废了!

爽歪歪啊,这10元钱已经在你兜里面了!

可交易所欲哭无泪!

别急,实际上,交易所哭不了!

而是你哭!

为啥!

因为,你的第二条链要跑过第一条链,得靠实力,也就是算力!

最起码你得有超过全网算力的51%!

你在概率上才有赢的机会!

当然越多越好!

好了,很熟悉吧!

这就是所谓的51%攻击!

而这非常非常难!

因为你面对的是全网!

另外,比特币为啥是6个区块确认?

因为,根据一大堆计算!

如果,一个链领先另外一个链6个区块,另外一个链就基本追不上了!

事实也确实如此!

比特币这么多年安然无恙!

从中也可以看出,越费时费力费钱的共识算法,越安全!

事物总是双面的!

一般是天使,一半是魔鬼!

如果,你更爱天使,

那魔鬼也就忍了!

不是吗?

今天就到这里,明天继续!

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券