谈到比特币的风险,就不能不谈著名的51%攻击。51%攻击是指控制了全网过半的算力后,通过重新计算已确认的区块来造成双花的行为。比如有用户在使用比特币进行一笔交易后,马上动用51%以上的算力在新挖出的区块中不记录这笔交易,那就能把已经支付的比特币拿回来了。
在PoW共识机制下,以比特币为首,51%攻击威胁会一直存在。目前,比特币全网绝大多数算力都掌握在少数几家矿池受手里,比特币并不是绝对安全,理论上说,51%攻击威胁一直都存在。之所以到现在比特币一直在安全运行,是因为大型矿池在发动51%攻击后,会重创比特币币值,这些持有最多比特币的矿池会受到最大的负面影响。对他们来说,持有比特币的收益远远高于将比特币击溃,任何一个理智的人都不会这么做,除非他是个疯子。
除了PoW,我们知道还有其他的共识机制。如PoS,同样存在51%攻击的可能,由于PoS直接在创世区块内就写明了股权证明,主要由股东自己来保证安全,少了算力保证这一步,其安全性尚且比不上PoW机制;DPoS机制(委托权益证明)安全性甚至只由少数关键节点来保证;至于拜占庭机制,其容错率更低,只要有33%以上的节点不可信就一筹莫展了。
18路诸侯,忠臣没过半
读过三国演义的朋友都知道,十八路诸侯讨伐董卓是故事开端的一出重头戏。因为汉末朝廷无能,西凉军阀董卓进京,架空皇帝,荒淫无道,各地实力派纷纷起兵,组成联军对董卓进行征讨。彼时董卓势力很大,单一诸侯与之作战都没有胜算,只有大家联合起来才有希望将其打败。这时候,18路诸侯可以看做18个节点,忠诚汉室,勇敢作战的是“好”节点,心怀鬼胎,畏敌不前的则是“坏”节点。
我们知道,18路诸侯兵力并不相等,从数千到数万不等,大家公推袁绍作为盟主。在后来的作战中,诸侯中的孙坚一度和袁绍,袁术等人起了纠纷,几乎大打出手。如果把兵力近似理解为算力,把诸侯身份看作是股权证明,把纠纷理解为好坏节点之争。那18路诸侯讨伐董卓之战,几乎成为了PoW+PoS+拜占庭容错的超级混合共识机制之争了,倘若大多数都是好节点,将足以迫使坏节点一同进兵。遗憾的是,中间只有曹操一个好节点,数量实在是太少了。在曹操被董卓击败之后,最终讨伐军四分五裂,陷入长期的内战中。
51%攻击就像一把达摩克利斯之剑,高悬在很多区块链应用头上。尽管比特币可以依靠高币价来保证自身的安全,但是其他的小币种可就没这么幸运了,此前,比特币的分叉币比特币黄金(BTG)就遭遇了51%攻击,BTG尚且不能幸免,何况那些更小的币种呢?这就是很多山寨币不可信的一个主要原因。
有解决的办法吗
那么,有没有什么办法能够避免51%攻击呢?或者如何才能大大提高攻击阈值呢?可以看到,上面无论哪种共识机制本质上都是通过依靠恶意的节点没有超过共识机制的抗攻击数,来保证不影响正确的共识结果。这种做法体现了完全的去中心化精神,但换言之,他们都没有对节点“质量”判断的能力,无法选拔出高质量的节点作为代表达成共识。我们便可以从选拔高质量节点这里入手。
这个不难理解。好比将军带兵打仗,一般的共识机制是随机征召来一批人,如果由老人小孩女人甚至病人数量过半,这样组成的军队自然要打败仗。倘若能够选择年轻力壮,训练有素,士气高昂的士兵,哪怕人数少些,但这样的军队才是王牌军。
这里再引入一个概念,叫做小世界网络。我们知道,为数众多的节点与节点之间连边数构成了网络。网络的规模可以由网络平均路径长度和网络群聚系数这两个参数来度量,网络平均路径长度指的是网络中任意两个节点最短距离的平均值,网络群聚系数指的是这个节点与所有邻居节点之间的实际连边数除以这些邻居节点之间可能出现的最大连边数。而小世界网络指的就是平均路径长度较短,而网络群聚系数较大的网络。
这里群聚系数可能不是很好理解,我们举一个例子。曾经火爆一时的人人网,便成功运用到了类似小世界网络的理念。通过人人网,我们常常会惊奇的发现,自己小学的同学,竟然与自己私交甚笃的朋友也是朋友;在校园里擦肩而过的美女,竟然是与自己天天逃课上网小伙伴的妹妹…我们可以这样理解,网络群聚系数与朋友圈子的重合度正相关,网络群聚系数越高,说明两个人朋友圈子的重合度越高。
看到这里,有的朋友可能会产生疑问,我的朋友圈怎么还对比特币风险的原理产生影响了?这两者之间究竟有着什么关系?这个世界就是充满奥秘,如何用小世界网络破解51%%攻击,下面我们接着谈。
值得信任的统帅
我们知道,小世界网络理念具有极强的现实意义。社会学上的同步问题,传染病在人群中的流行问题,谣言在人际社会中的扩散问题,都是小世界网络的传播案例。通过对小世界网络的研究,我们发现,小世界网络能够节点间实现信任传递,传递效果与小世界网络规模动态,连边数等网络结构参数有关,这些参数对小世界网络的传播规律有着深刻的影响。
我们可以运用小世界网络理念,通过信任传递,仅选取少数优质节点作为代表来达成共识,这样大大提高了系统的安全可信性,足以突破传统区块链51%攻击的安全上限,参与共识节点数量减少了,也实现了效率的提升。
这是什么意思呢?我们知道,效率往往与数量成反比,参与验证的节点数量越多,耗时越长,效率越低。而且由于诸侯数量较多,倘若有过半的诸侯怀有私心,势必造成任务的流产。事实上也是,18路诸侯终日宴饮开会,却始终形不成作战共识。试想,如果能在18路诸侯中选出少数几个“最忠诚于大汉”的人形成指挥部来进行决策,而非选出“四世三公”家庭条件最好的袁绍作为盟主,这样,即便过半的诸侯并非完全效忠于朝廷,也必须服从指挥部,这样安全性大大提升了,讨伐董卓的效果应当会更好。
防止浑水摸鱼
那么,问题来了。如何才能甄别出谁才是“最忠诚于大汉”的人呢?俗话说:画虎画皮难画骨,知人知面不知心。没有一个奸臣会把“奸臣”俩字写在脸上,倘若选出的代表是“一点也不忠诚于大汉”的人,那讨伐军也不用打仗了,就地解散算了。
在Trias提出的异构共识算法(HCGraph)中,通过利用可信执行环境 TEE(Trusted Execution Environment)等可信计算技术,对小世界网络中节点质量好坏程度的判断,仅选取少数优质节点作为代表以达成共识,那么这个过程是如何实现的呢?
我们知道,单一TEE技术对技术提供方存在着很强的依赖性,如IntelSGX技术便受到Intel公司的中心化控制,公司做出任何调整对会对Intel SGX产生巨大影响。Trias首次实现了对TEE技术(包括Intel SGX,IntelTXT, ARM TrustZone, TCG TPM, 国标TCM, 国标TPCM等)的全支持,消除了对单一TEE技术的依赖。
在Trias网络中,每一个网络节点都会在某个时间内向周边的邻接节点发起证实的操作,这样它就能获得一个本地的信任向量,通过归并这些本地向量便可以获取本地的信任关系,考虑到真实网络中小世界网络的特性,通过这种方法往往可以获取到一个比较完整的网络互信关系。
每一个节点都有传播和验证两个功能,他们既可以把自己的可信状态传播出去,又能够验证其他节点的可信状态。通过与临近节点的认证关系,他们之间便有了信任和不信任这两种关系,通过确定其与邻接节点连接的信任强度值,强度越高,说明节点的可信度越高。据试验数据统计,每一个节点,想要执行非法操作而不被发现,都需要超过90%的不良节点与其同谋,这是接近不可能的事。
信任,需要时时检验
另外,值得注意的是,这种信任关系并非一成不变的,信任也好,不信任也好,随着时间的关系都会逐渐变淡,这种关系是处在反复的验证中,以确保随时都能选拔出最可靠的小世界网络中的节点。
对应到大汉朝就是,从大臣选拔开始,就不拘泥于单个门阀贵族(单个TEE),而是面向全体有能力的人(所有TEE),(科举制度优于九品中正制,可见一斑)。只有可信的人才能入朝为官。从第一步就减少了奸人乱政的可能性。此后,每一位大臣始终都处在不断的被周围人验证的状态,验证其是否对朝廷足够忠诚,验证其是够足够文韬武略,验证其是否一直尽职尽责,这个验证的过程并非一次性的,而是一直在进行中,一旦某个大臣有不轨的举动,都会被辨识并剔除。
这样就好比每一个大臣都随时有一个打分,试想,如果朝廷突然出现董卓这样的奸臣擅政,所有诸侯自动围绕在几个分数最高的大臣身边,由他们发号施令勤王讨逆,由于这几个人都是长期以来被大家公认为最可靠的人,其忠诚,其能力,其威望,各方面都无可指摘,自然最为安全,而且效率高高。
评论
查看更多