前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >共识算法解读-PoW算法之GHOST

共识算法解读-PoW算法之GHOST

作者头像
Tiny熊
发布2020-06-05 15:58:57
8880
发布2020-06-05 15:58:57
举报
文章被收录于专栏:深入浅出区块链技术

问题引入:高吞吐量下比特币的安全性如何?

比特币为了保障其安全性,采用最长链规则,并固定了区块大小和出块时间间隔,从而导致其低吞吐量(<10Tps)和长时间区块确认间隔(6个区块,每个区块平均需要10分钟),这一直以来饱受诟病,影响了比特币网络的大规模使用。

一开始人们思考的是在比特币最长链的规则上,通过增加区块大小(1M->4M)和减小出块间隔来增大吞吐量,但是这却带来了三个很大的问题:

不断的分叉!分叉也就意味着安全性降低,容易引起双花攻击。•区块奖励受网络延迟影响:整个网络的区块奖励不单单与算力有关,网络延迟较低的节点更有可能获得出块奖励。•容易受到自私挖矿攻击:恶意节点出块后先不公布,直到发现比主链长时再公布

下图阐释了在一种区块生成间隔较小(区块生成率大于区块传播延迟)的网络中,区块链网络高度分叉,此时攻击者可以秘密创造6个区块(由红色虚线标记),从而超过主链的场景。

于是,研究人员开始思考,如何在保证高吞吐量的同时,还能保证安全性?

2015年,以色列的学者Yonatan Sompolinsky和Aviv Zohar就提出了一种The Greedy Heaviest-Observed Sub-Tree (GHOST)贪婪最重可观测子树算法,以解决这个问题。

论文链接:共识算法相关paper:Secure High-Rate Transaction Processing in Bitcoin[1]

那么GHOST又是如何做的?

GHOST的思路很简单,它对比特币的最长链规则进行更改,在每次分叉的时候选取拥有最重子树的分叉节点。举例来说(参考上图),就是在0处分叉为1B和1A时,1A的子树(它进行自私挖矿)共有6个块(包括1A块),1B的子树有12个块,12>6, 所以选1B为主链的块。这样就减轻了了分叉带来的问题,使得主链不断向后增长。

也就是说,主链之外的区块也被计入了算力。具体的算法如下,输入整个树结构的区块链,输出最终主链的最后一个区块B:

该算法,从创世区块(Genesis)开始,每次分叉就选取最重子树,直到确定完主链的序。还是拿图中的例子,最终选取的主链是 0, 1B, 2C, 3D, 4B

那么GHOST能否保证能够唯一的确定主链吗?相对于比特币他的安全性又如何?GHOST算法对吞吐量的影响又如何呢?这就涉及到GHOST的特性。

GHOST特性

1.收敛特性:任何一个区块,经过足够长的时间,最终会被主链完全丢弃或者采用。也就是经过足够长的时间,任何节点的主链会是一样的。2.抗51%攻击:在有限的时间内,攻击者将任意在主链区块B,替换到链下的概率接近于0。3.吞吐量和安全性:如下图,随着区块生成速度λ(每秒产生的区块数)增加,GHOST的吞吐量相对于最长链Longest Chain规则没有太多下降,并且安全性没有任何下降,而最长链的安全性却指数下降

前路

GHOST在保证安全性的前提,提升了TPS,那么有没有可能进一步提升?

同时由于把非主链的区块抛弃了,只有主链的区块才有出块奖励,这样的激励机制会导致矿工不愿意贡献算力,这又改如何解决?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深入浅出区块链技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题引入:高吞吐量下比特币的安全性如何?
  • 那么GHOST又是如何做的?
  • GHOST特性
  • 前路
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档