热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

FractalCTO范磊:PoS能不能实现真正去中心化?

2019年9月6日,FractalPlatformCTO范磊在Fractal社区,进行了主题为《PoS能不能实现真正去中心化?》的在线直播。文章比较长,约5000字,但都是硬核干货

2019年9月6日,Fractal Platform CTO 范磊在Fractal社区,进行了主题为《PoS能不能实现真正去中心化?》的在线直播。文章比较长,约5000字,但都是硬核干货,希望大家能看到最后。

以下是部分直播内容整理:

大家好,这是我们第一次在比较公开的环境下进行分享,今天会从六个方面来讲,主要围绕区块链的一些基本原理设计、Fractal之前做的工作,以及我们对行业的一些看法。

为什么使用PoS共识算法

我们先讨论有关PoS集中化的话题,这可以从两个角度去理解,一是技术造成的集中化,当共识协议无法容纳大量节点时,开发者迫于无奈将节点数缩减到很少,这就产生了集中化现象,这块具体内容我们在后面PoS协议分析的时候会讲到。

另一个是经济模型造成的集中化,PoS 系统的收益与持有的stake数量相关,这会造成stake持有量大的人会有更多的stake,而持有量少的人无法参与挖矿。这种担心是非常合理的,不过即便是在最开放、最公平的系统中,财富的集中化在整个人类社会中也是不可避免的。

那么在经济系统中产生了集中化后,我们看看PoS会不会带来一些负面影响?人类社会发展了这么多年,虽然产生了很多资本家和金融大鳄,但是并没有影响社会稳定,因此可以说明这个事不可怕。我们只要能保证财富的正常流通,以及再分配的机制就可以了。有人认为它有投资价值,自然会相对高价的购买stake,反之则会被抛售,在这之间自然会形成一个动态平衡,所以我们认为只要有一个正常的流通机制,那么PoS的经济集中化不是问题。

如果不用担心这个问题的话,其实PoS成为大多数公链的选择有一定的必然性,因为它的优点是显而易见的。除了节能之外,尤其对于新公链来说,PoS系统会更加友好。

PoW是完全开放的,其算力也是标准化的,那么对于恶意攻击者来说,会较容易搜集到足够多的算力来对新公链发动攻击。在PoS系统中算力跟stake相关, 如果要发动攻击,你唯一能做的就是从二级市场去获取,这个操作自然会推高stake的价格,那么一方面就保护已有投资者的利益,另一方面也提高了攻击者的成本。所以对于新公链来说,被恶意攻击的概率会更低一点。

所以我们采用了PoS共识算法,我们这个项目本身学术背景非常浓,我们从16年就考虑设计纯的PoS共识算法,直到17年,算法就大概成型了,所以我们也自然地把PoS作为我们努力的方向。但是PoS的设计是非常困难的,我们看到市面上有大量雷同的设计,我后面也会详细讲。

PoS共识协议设计难点
其实PoW的成功是有一定代价的,即能源消耗,但其带来的好处是限制了攻击者的能力。在这种分布式系统里面,我们想要得到一个有序的结果,有两个需要面临的挑战,第一,谁是合法的参与者?在早期的分布式系统里是靠设备注册,如果没有注册过程,谁都可以进去,那么坏人就可能占大多数。 也就是形成了所谓的女巫攻击(sybil attack),二是发言的无序性。如果用户在系统中发很多垃圾信息,会导致实现共识非常困难。而PoW巧妙地运用了硬件资源的限制,解决了这两个攻击的问题。

在PoS系统中,即便没有硬件资源的约束,但stake相当于用户的准入门槛,所以女巫攻击的问题我们不用担心。我们将关注点放在第二个问题上,如何排除噪音最终形成确定性的大家一致认可的结果?这里面有个很重要的概念,也是是密码学或分布式算法中研究了很多年的协议,我们叫交互式协议。交互式协议的过程就是把坏人筛除掉,最终形成一个结果,目前类PoS的协议基本上都是使用这种交互式协议来完成的。

但交互式协议有个问题,如果要达成一个结果,需要网络上很多人参与交互,并且是多轮交互,这时候交互的过程非常耗时,即便带宽很大都不行,因为网络会有延迟,延迟和带宽是两个概念,所以交互式协议通常延迟比较大,网络性能不好。尤其是参与者增多之后,网络的延迟或整个的协议复杂性,不是呈线性变化的,它至少是平方或者更高次方的变化。那么在这种情况下,PoS的设计就变得十分困难。

我们必须要找到一个新的设计方法或者思路。在找到新思路前,我们来看看古典的算法是怎么做的?

PoS发展史

PoS共识协议可能近两年大家听到的会比较多,但其实它的相关技术发展大概已有30多年了。比较广泛的是PBFT或者BFT这个名词,就是拜占庭类协议。这里有个学术研究的图,总结了BFT类协议的发展历程。

《Fractal CTO 范磊:PoS 能不能实现真正去中心化?》

在80年代就开始有Dolve-Strong等人设计的一些协议,最上面一行的第二个圆圈中的Katz,就是Fractal的首席科学家Jonathan Katz,他在在早期的拜占庭协议里做了非常多的贡献,可以说是教科书级的人物。
我们重点看图中最下面一行的右边三块,其中PBFT是两个分布式计算的学者在约20年前左右提出的,它改进了传统的BFT,使得算法的复杂度降低了。但PBFT类协议是存在效率问题的,另外,它对网络延迟条件的假设也非常高。

PBFT协议非常适合用在分布式系统里面,如果我们从区块链的角度看,它更适合私有链或者联盟链,如果我们硬要把它搬到公有链上,这是勉为其难的。所以,我们现在看到的大多是折中方案,比如只限定几十或一百的节点来参加共识,这也是为什么我们会认为PoS系统有非常强的中心化趋势。之后我们也会讨论PoS中心化的趋势是不是一定会存在?

为了改善上述存在的问题,尤其是降低通讯的复杂度,近年来还出现了SBFT,它的想法很简单,就是采用聚合签名算法。有了聚合签名之后,节点再发签名,只需要发给一个leader或者叫collector,他把签名聚合到一起后再发给其他人。从总量上来说,这确实降低了通讯的复杂度,但这种设计把压力都给了leader这个节点,如果这个节点坏了,整个系统就坏了,所以SBFT的中心化趋势更加严重,它是一个有限的改进。

今年出现的项目Libra采用的是Hotstuff算法,Hotstuff是SBFT上更进一步的优化,其主要对上述所说的当leader节点变坏之后的问题做出了改进。其做法在每一轮中更换leader,把共识和更换leader的过程合二为一,这里面也存在代价,就是每一轮都依赖于时间同步,否则工作不能继续,且集中化的趋势并没有降低。

除了BFT类协议之外,在PoS中还有更直接的共识协议,比如Algorand 。Algorand 用到的是另一种解决争议的交互式协议BA*,其扩展性本质上与PBFT类似。所以整体来讲,目前大多数PoS协议都有这些特征。

我们不想在类BFT协议上继续做小幅度的改进,包括Libra也在白皮书中明确说了,在当前基于Hotstuff的这个项目中,做的是许可链(Permissioned Blockchain),但Libra最终还是会向非许可链的方向发展,不需要许可,谁都可以参加,这样是我们的共识协议所支持的方向。

Fractal设计的新型PoS共识协议——iChing

iChing 是易经的音译,这个协议最初的版本在2017年就有了,后面一直在做一些改进。回到PoS协议设计的初衷,我们发现会面临两个问题,一个是准入机制,这个由stake来决定,另一个是当发生不同意见是,如何裁决?

在去掉交互式协议后,我们会面临PoS中的Nothing at stake攻击。因为持有stake就能挖矿,且不会浪费任何资源,大家会在多个地方进行挖矿,那么必然会产生大量分叉。很显然,分叉就会影响共识,我们现在来讲讲怎样不通过交互式协议去达成共识。

大家看下面这张图片,这是我们最核心的算法构造,这个哈希不等式将PoW的算力竞争转化为了PoS的stake的竞争。即便有了这个公式,系统中还是会出现很多分叉。但我们通过严格的数学分析,证明了这个分叉并不可怕,有兴趣的朋友可以点击查看这篇论文,里面会有详细的分析。我们得出的结论是,如果坏人尝试在所有的地方挖矿,那么他挖出的链会以2.7倍的速度往前涨,显然这时系统不能容忍的49%的坏人和51%的好人,因为49*2.7倍则会超过好人。

《Fractal CTO 范磊:PoS 能不能实现真正去中心化?》

针对这个问题,我们有个greedy策略,也是iChing协议设计中最精妙的地方。我们鼓励好人也在分叉的地方挖矿,即时不是链最长的地方,从下图中可以看到,有1greedy,2 greedy或full greedy几种策略,当然,对好人来说不会用full greedy,坏人有可能在所有地方尝试。

我们鼓励好人做2或3 greedy,得到的结果是好人能让诚实链的增长速度达到原来的2.2倍左右,以此来抵抗坏人的链的增长速度,也就是说Nothing at stake攻击带来的影响并不可怕。我们通过鼓励好人使用greedy策略,来抵消坏人的优势,这样我们就不需要使用交互式协议来排除分叉。

所以基于以上分析,在我们的iChing协议中,所有的矿工只需要像Bitcoin一样,找最长的链产生区块然后发出去,当然,我们除了最长的还有次长的等等,这按照算法要求来做就可以了。iChing可以支持类似Bitcoin这种规模的参与者,我们不要时间同步的假设,也不需要交互式协议。所以说iChing的系统可扩展性,或者说是去中心化特性跟Bitcoin是一样的。

基于iChing共识的公链Fractal Platform

基于上述研究结果,我们在18年上半年开始,筹划做一个全新的公链系统——Fractal Platform,为什么叫Fractal?刚刚讲到我们的链会有很多分叉,Fractal就是分叉的意思。

我下面讲一下,基于iChing我们所做的Fractal公链。iChing本质上只是一个共识协议,如果我们把它当做支持未来区块链落地应用的架构来说,那么还有很多问题要解决。我们解决了PoS去中心化共识问题,还要提高性能或者说吞吐率。这涉及到Fractal另一个重要的技术点。

我们经过严谨的计算分析,得出了区块链系统性能的瓶颈在哪,一个是共识,比如说交互式的共识,它本身就会把网络卡住;另外一个瓶颈就是网络层,现在所谓的1万甚至10万TPS的项目,远远不是我们家用或普通商用的网络带宽能承受的,并且在区块链系统中还有额外的开销,就是交易数据。交易数据通常是小包,大其在网络中传输的效率很低。

举个栗子, 比如船运货,如果货物都是散装的,各种各样的货物,它的运输效率会很低,而现在海运为了提高效率,会采用集装箱的方式。我们在网络层(Layer 0)上有一个创新的优化,叫作Backpacker。它的机制就是把小包通过packer打成一个标准的集装箱,这样我们就可以有效的提高网络对于小包的处理的能力。我们这里数据的集装箱,也就是 packer打出来的小包叫作 pseudo-block,然后将其传给所有的共识节点。这里利用了PoS一个天然的好处,就是将区块打包放在共识区块之后,节点产生共识块后,我们再把pseudo-block组成新的真正交易区块。但这时候真正的交易区块已经不用传了,因为pseudo-block已经传遍全网了,我们只要传输很小的meta-block,也就是这个block头部就可以了。

所以Fractal会提供一个非常平稳的网络流量,使得带宽利用率很高,因为既没有小交易数据包的消耗,又没有大共识块的冲击,所以整个网络的性能优化非常好。

Fractal基于iChing和Backpacker这两点创新,就可以在跨大洋跨洲的真实网络环境下,实现超过3000TPS的完全分布式的去中心化PoS系统。

Fractal当前开发进展及未来规划

Fractal经过一年的开发,我刚才讲的所有的特点和协议都已经完全实现,从核心网络共识、钱包接口、智能合约已经DApp的demo,也已经全部具备。我们的共识节点已经在跑了,目前主要节点部署在亚马逊上,当然我们也尝试过在阿里云等其他多种不同的云上同时部署节点。

下面是我们配套的区块链浏览器总览图,包括block数量、时间数量,当前的TPS等等,这是我们跑的一个小的背景流量,大概一二百TPS。我们在压力测试的时候,会做到一两千甚至三千的TPS。

《Fractal CTO 范磊:PoS 能不能实现真正去中心化?》

下图是block的交易信息,大家可以看到里面的区块信息、交易信息以及地址信息等等,按地址查询余额、交易等等区块链浏览器应该具有的功能,我们也都已经开发完成。

《Fractal CTO 范磊:PoS 能不能实现真正去中心化?》

下面的界面是有关钱包的,大家可以看到,这是一个全功能钱包,从发交易到部署智能合约、调用智能合约以及等待交易确认等等功能都已实现。

《Fractal CTO 范磊:PoS 能不能实现真正去中心化?》

我们的钱包目前是以chrome插件的形式来提供的,因为它可以很自然的和DApp的开发结合在一起。同时,我们也做了一个DApp的demo,从下图可以看到这是一个掷骰子的游戏。我们通过智能合约以及钱包接口,来实现了在浏览器中DApp开发。

《Fractal CTO 范磊:PoS 能不能实现真正去中心化?》

这个DApp的特点是接受交易双方的随机数输入来实现绝对的公平,整个的过程是完全开源的,不是依赖于单独一方产生随机数,右上角的彩色小点都是鼠标移动的时候产生的随机数种子。

所以大家可以看到Fractal目前的完成度是非常高的,也非常欢迎对这个项目有兴趣的各路英雄,以各种形式来参加我们的项目。我下面就稍微说一下Fractal未来的规划。当然,一方面是完善目前的系统,我们还有非常多的细节需要去改进优化。另一方面,也是跟社区关联最大的,就是如何来参与这个系统。

我们将Fractal定位成一个基础的功能平台,希望上面会承载不同的应用,我们也会做一些技术上的储备和支持来使得它真正成为一个生态系统。比如内置的去中心化兑换机制,大家在上面做应用可以发行自己的token,发行后,开发者不需要去考虑用交易所来兑换,我们内置的机制就可以跟其它主流数字货币进行兑换,这样一来就保证生态开发者的利益,平台是不会侵犯和抢占这部分利益的。另外,像随机数的产生,以及链下信息上链的oracle(预言机)机制等,我们都会提供内生的支持,所以也非常欢迎大家来参与Fractal整个生态的建设。 以上就是我今天的分享,谢谢大家。

Fractal Platform 官方渠道

《Fractal CTO 范磊:PoS 能不能实现真正去中心化?》

微博:https://weibo.com/u/7236880516

Facebook:https://www.facebook.com/Frac…

Twitter:https://twitter.com/fractalblock

商务合作:Fractal@fractalblock.com


推荐阅读
  • 应用链时代,详解 Avalanche 与 Cosmos 的差异 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本文通过思维导图的形式,深入解析了大型网站技术架构的核心原理与实际案例。首先,探讨了大型网站架构的演化过程,从单体应用到分布式系统的转变,以及各阶段的关键技术和挑战。接着,详细分析了常见的大型网站架构模式,包括负载均衡、缓存机制、数据库设计等,并结合具体案例进行说明。这些内容不仅有助于理解大型网站的技术实现,还能为实际项目提供宝贵的参考。 ... [详细]
  • Cosmos生态系统为何迅速崛起,波卡作为跨链巨头应如何应对挑战?
    Cosmos生态系统为何迅速崛起,波卡作为跨链巨头应如何应对挑战? ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 在当今的软件开发领域,分布式技术已成为程序员不可或缺的核心技能之一,尤其在面试中更是考察的重点。无论是小微企业还是大型企业,掌握分布式技术对于提升工作效率和解决实际问题都至关重要。本周的Java架构师实战训练营中,我们深入探讨了Kafka这一高效的分布式消息系统,它不仅支持发布订阅模式,还能在高并发场景下保持高性能和高可靠性。通过实际案例和代码演练,学员们对Kafka的应用有了更加深刻的理解。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
  • 美团优选推荐系统架构师 L7/L8:算法与工程深度融合 ... [详细]
author-avatar
唐进水566673
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有