LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 《读懂区块链PoS共识》PoS项目例子-Polkadot

《读懂区块链PoS共识》PoS项目例子-Polkadot

2019-07-10 00:00 不详 来源:网络
Polkadot,中文名叫波卡。Polkadot从2016年出生开始,就带着光环。整个光环来自于前以太坊的隐形大脑,Gavin Wood。Gavin和Vitalik一起建立了以太坊,在以太坊成立的头18~24个月里面,Gavin一直充当着CTO的角色,写了以太坊的第一个测试网PoC-1,编写了以太坊的技术黄皮书,为以太坊做了很多贡献,但后来他因为各种原因,他离开了以太坊,并创建了Parity。现在,Parity团队除了在做以太坊的客户端外,还在负责Polkadot这个项目。
 
Polkadot,是一种异构多链技术,这种技术主要用于打破目前区块链之间的信息孤岛问题,用一个简单名词描述就是:跨链。
 
跨链是在2017年热门起来的,2017年的牛市带来了大量的公链项目,那时候各种Token满天飞。但当时一个非常重要的问题是,每个公链都有自己的一套技术,并且有一套围绕自己技术发展起来的一套生态,加上2017年后期市场愈热,后来者总想要成为市场中唯一的那条公链,公关时毫不掩饰,所以2017年后,公链生态发展着发展着,慢慢都变成了一个个信息孤岛,彼此之间的信息并不能很好的互通。
 
这种生态就像现在市场上的APP,微信的消息不能和抖音的信息互通,今日头条的内容不能和网易云的音乐互通,各自的信息都在各个互联网公司的服务器上,这些资源被各大厂商认为是核心竞争力。而区块链世界,本质已经没有大厂,也没有中心化的服务器,所有数据都是公开透明的,那么为啥这一个个的孤岛不能完成信息交互了?
 
波卡认为,信息交互有足够大的需求,而且会带来更好的区块繁荣,所以Polkadot尝试建立一套异构多链的架构,就像现在的互联网TCP/IP协议一样,将让所有接入此架构的区块链能更好的完成互相信息的交互。
 
除区块链信息封闭之外,另外一个成立Polkadot的原因,是2017年以太坊爆出来的性能问题。为了解决区块链的可伸缩性和可扩展性,Polkadot定义了一套平行链(Parachain)和中继链(Relaychain),分别解决扩展性和伸缩性。平行链处理自己逻辑和交易,多条平行链可以完成横向扩展,而中继链作为Pokaldot的一个中心,验证各个平行链给出来的区块,并给出最终确定性的证明。中继链会给平行链分配验证组,帮助验证区块,并参与决定是否允许新的平行链的加入,增加验证人等等的方案来解决区块链的可伸缩性。
 
这两个原因很好的帮助Polkadot搭建了项目愿景,使得一个类互联网协议的区块链底层架构清晰可见。如果说我们今天能享受如此好的互联网服务,那么我们能想象一下这套Polkadot架构会在未来给我们带来什么影响。
 
但像Polkadot这种底层基建的搭建者,从来都不是孤单的。在跨链领域,还有Cosmos,Interledge,Wanchain,还有一些侧链概念的跨链,像Plasma,lightening network等。当然,在这个跨链技术更新之前,还有中心化的“跨链”,像中心化的交易所,中间验证人的跨链交易的等等,这些都是解决区块链信息孤岛路上不可或缺的伙伴,带来竞争,也会共同发展。
 
除了外部竞争,Polkadot要面临的另外一个问题是自己发展问题。按照Polkadot的白皮书描述,Polkadot想要实现的愿景极其宏大,宏大意味着背后的工程会极其的复杂。作为一个底层协议,支持长远发展和系统安全极其重要,此基础上,性能提升又是必须的表现。想象如果Polkadot建成了之后,每条平行链的加入带来的延迟性会逐条递增,那么10条,20条之后是否还可用,100条后呢?多条平行链带来的新区块中继链的验证人验的过来吗?或是中继链和越来越多新加入的平行链如何保持安全性的沟通,重大bug发生时,系统会不会崩溃,如果影响平行链的生态,那就好比一个省的GDP崩溃率,那么全中国也跟着崩溃是一个道理,根本不合理。所以,Polkadot要走的路还很长。
 
此外,我们说跨链是区块链底层协议,但是讽刺的是,像Polkado这样的底层协议对于现存的区块链并不兼容,因为现存区块链并没有按照这套协议接入。那么意思就是说,Polkadot的应用现在应该还没有出生,除非现有区块链按照波卡协议改变自己,要不然Polkadot的生态是未来增量,而不是现有存量。不过,为了一个基础的跨链产生,跨链项目方都会瞄准两个生态做迁移,第一个就是把以太坊的信息交换迁移过来,另外一个就是把比特币的信息交换迁移过来,这样可以把大量的存量带来过来了,其他的公有链如果要接入Polkadot,还需要自己来。
 
这就是Polkadot的目前的项目状况。
 
代币情况

Polkadot的代币称号为Dot,总量为1000万,每年有增发,700万用于公开ICO销售(其中500万Dot已经在2017年5月销售完毕,200万Dot还没确定销售形式和时间),300万给到Web3基金会或者自己决定分发。
 
第一阶段有500万个Dot进行ICO,ICO用了一种比较特殊的方式进行售卖,叫荷兰式拍卖(Dutch Auction)。Dot在初始拍卖是会以一个比较高的价格开拍,比如1个Dot=100美金,投资人往智能合约里面投注ETH,如果智能合约里面所有ETH的价格无法购买500万Dot,那么流拍,进入下一轮,此时Dot会下降单价,比如1个Dot=80美金,投资人继续往智能合约里面投注ETH,当总的资金能按照当前Dot价格能购买所有Dot数量(500万)后,所有投资人按照当前Dot价格成交。
 
使用此荷兰式拍卖的特点是通过市场那只看不见的手来来决定Dot的价格。通过对智能合约的关注,投资人可以看到Dot单价和当前投资额,以确定是否需要在当前价格进行投注。这对于高热度的项目是非常好的方式,投资人对于高热度的项目往往有更高的市场预期,项目方的拍卖会因此融到很多钱。
 
另外一个特点就是,区块链使用荷兰式拍卖可以很好的实现去中心化。人们根据自己预期选择投资,开放透明,市场看不见的手会让预期恢复合理,从而使得更多人有了参与的动力。这样有利于整体参与人数的扩大,并且分散。
 
我在写此书的时候,正值Polkadot准备第二次ICO的阶段,目前并未公布具体的细节,Gavin wood在博客中说到了新阶段融资的需求,在于扩大技术队伍,在现在技术人员基础上翻番。目前,虽然大家对于Polkadot的预期较高,但熊市还未见底,众筹情况不得而知。
 
代币作用

Dot在Polkadot里面的作用有3个,和其他PoS共识链的操作并没有太多区别,多出来的区别是平行链需要抵押才能接入Polkadot架构当中,以下是列举Dot的作用:

· 参与治理:持币人可以直接参与Polkadot的链上治理,通过投票的方式决定社区方向
· 参与链的操作:持币人可以通过Stake参与链上操作,好多行为会获得奖励,坏的行为会被惩罚
· 抵押:新的平行链添加需要通过抵押Dot

目前,这3个作用的具体细节并没有公布,代码也没有出来,所以像抵押数量,奖励/惩罚数量等还需要等实现后才能知道。
 
2. 发展路线(Roadmap)

Polkadot是2016年10月开始的项目,从Gavin写的Polkadot白皮书草稿开始。Polkadot的发展路线比较清晰,根据官方2018年的回忆录来看,项目已经进行了13个月的开发,进展正常,各个时间点基本没有延期的情况,加上Polkadot马上进行第二轮ICO,新筹到的钱可以招收给多人手来加快开发。按照现在的roadmap,Polkadot的主网将在2019年Q3上线。
 
距离上线,具体的路线图是:

· 开发P2P网络
· 开发共识机制(BFT部分)
· 开发验证人选举机制
· 开发共识机制(PoS部分)
· 开发平行链系统
· 开发平行链和中继链之间的信息交互架构
· 开发平行链和中继链之间的信息路由架构
· 开发中继链机制
· 开发独立收集人机制

目前,Polkadot测试网已经进入了“PoC-3”,也就是“Alexander” 测试网,于2018年1月20号左右发布,包含共识GRANPA机制(PoS部分)。前两个测试网分别为PoC-1和PoC-2“Krumme Lanke”,PoC-1主要是包含Polkadot的基础框架,如数据框架,基于WebAssembly的状态机等,于2017年Q1发布;PoC-2主要包含平行链支持的架构和PoS的Slash和奖励部分,于2017年7月份左右发布。
 
测试网发布的功能还比较有限,很多代码并没有确定到执行部分,只是把大概框架写好了,方便扩展,难点的部分从代码部分并没有看到Polkadot很好的解法,比如PoS共识的最终确定性,还有Slash条件和具体行为定义等,不知道这些部分在论文论证阶段有没有定义好。
 
预计2019年Q3,大概是10月份左右Polkadot能上线主网。
 
设计哲学

Polkadot本身是一个区块链架构,而不是一个区块链,这决定了Polkadot在很多方面的设计会变得不同。充当架构的主要解决问题在于连接互通,把基于此架构搭建的所有区块链能很好的绑定在一起,进行信息交换,价值交换。为此,Polkadot本身要保证足够简洁,只做桥接,不做冗余的功能,这是现有区块链所不能完成的一点。

另外,每一个区块链都是一个巨大的价值网络,传递价值所需要的安全性极其重要。Polkadot作为架构底层,保护所有连接区块链的安全是首要任务。其中,Polkadot所用到的共识算法GRANDPA就需要非常仔细设计的。GRANDPA是BFT+PoS的混合共识,提供概率性的最终确定性,并加强了多平行链下提交区块验证的并发处理能力,使得GRANDPA在保证一定安全的情况下实现性能提升。
 
平行链和中继链的设计是另外一个需要好好设计的部分。中继链作为Polkadot的中心,尽可能的不干预平行链的出块和问题解决,而本身只做区块验证的事情,代码足够简单,一眼就能看得清楚,也保证了安全。而平行链则不需要考虑自己链和中心沟通的问题,只需要将自己链上的事务处理ok就可以(这一点是Polkadot和Cosmos最不同的一点)。如此设计省去了接入方的开发成本,Polkadot也很好的履行了基础架构的职责。

Gavin Wood在白皮书的第一版草稿里面,列举了Polkadot看中的一些主要原理和原则:

最小(Minimal):Polkadot 本身要尽量简洁
简单(Simple):Polkadot本身不需要实现太多功能,将复杂的功能交给中间件、平行链、或用其他优化手段
通用(General):Polkadot可以成为共识开发基石,不对平行链设置约束和限制
健壮(Robust):Polkadot 需要足够稳定,并且具有经济完善性

这些原则对于Polkadot来说非常重要,作为设计哲学基础,能知道Polkadot具有一个很好的可扩展性和可伸缩性。当然,根据这些原则设计的Polkadot还需要考虑后续升级。
 
当Polkadot交给社区之后,社区要共同来维护网络和后续发展,那么链上治理的逻辑显得极其重要,Polkadot不希望用社区分裂或者以基金会主导的硬分叉方式来升级原型,而是通过社区投票为主导的内在升级逻辑,这也是Polkadot一个重要的设计哲学。
 
GRANDPA

Polkadot的共识使用的是BFT+PoS的混合共识,叫GRANDPA(GHOST-based Recursive Ancestor Deriving Prefix Agreement),没有恰当的翻译,有人翻译成祖宗共识,有点搞笑的意思。
 
GRANDPA要完成的共识和别的PoS不太一样。Polkadot本身是协议,连接协议的是各个平行链,GRANDPA的重点在于帮助平行链做共识,平行链不再需要自己做共识,引入验证人模型,中继链里面的验证组帮助平行链验证最新区块,并为平行链带来新区块的最终确定性。
 
GRANDPA最终确定性有3个特点:

1. 在网络状况比较好的情况下,GRANDPA几乎可以立马完成区块的最终确定性
2. 在糟糕的网络状况下,比如一个网络分区,GRANDPA几乎可以在分区解析完成后,完成上百万个区块的最终确定性
3. 只要子块的父块是最终确定性的,GRANDPA可以在忽略以往区块状态的情况下完成子块的最终确定性

解读这3个特点,GRANDPA的一个重要表现就是最终确定性,而且是几乎及时的,不依赖太多条件的最终确定性。最终确定性作用于安全和性能,及时的确定性能保证安全又能保证良好的用户体验,当你在Polkadot给用户B发一笔Dot的时候,你不再需要像BTC转账一样等上半个小时的区块确认,而是只需要等待几十秒,甚至几秒就可以确认到账。这是最终确定性给人们带来最直观的收益。
 
GRANDPA通过大部分诚实节点的验证投票来决定区块的最终确定性,每条平行链通过自己的收集人(Collactor)提交验证区块,中继链上的节点验证组(Validator)对区块进行验证,超过2/3的节点投票验证通过,那么区块上的交易被篡改的代价将非常大,我们认为这种攻击的代价不具有经济可行性,那么超过大部分人认同的区块交易就是不可逆的,即最终确定性。
 
2/3的验证人达成是Polkadot严格控制的条件,这是BFT的典型表现。结合PoS的Stake数量,网络中当Stake投票的比例超过2/3时,即达到最终确定性。GRANDPA不容忍Stake重复投票,这样操作的验证人会被扣除抵押金,这也是PoS的典型表现。
 
收集人Polkadot里面另外一个独立群体,通过运行平行链的全节点数据,来收集新区块数据,做简单的验证后会将区块提交由Polkadot分配的验证组验证,验证成功后会将返回信息给到平行链中。
 
由于平行链和中继链之间存在信息交互,有时延,所以在GRANDPA这种半异步的网络当中,收集,验证,确定需要时间。但是GRANDPA为了让多条平行链在共识区间保持正常工作,GRANDPA的共识采用了一定的方式解决,这个方法导致了一个和我们以往认知不同的一种PoS区块链形式出现,即一种上一个区块并没有确认也能不断变长的区块链,GRANDPA把这种形式类比成比特币的PoW共识,并称之为概率性确认(Probabilistic Finalization)。
 
目前GRANDPA还在不断的优化中,有一篇论文对GRANDPA算法进行了说明。另外在PoC-3的测试网上,GRANDPA上线并完善了很多方面的机制,进步很大。但是我们也看到像Slash,激励等方向并没有完善,平行链也还没有完善,所以需要后期继续关注。
 
运行

在Polkadot上可以运行的客户端有多个,同比其他PoS共识,除了运行节点客户端外,Polkadot还可以运行收集人客户端和钓鱼人(Fishman)客户端。
 
节点客户端,是Polkadot上的验证人。Polkadot上的验证人不做收集工作,包括收集交易和平行链区块,只验证由收集人提交上的区块,给与最终确定性证明。
 
收集人客户端,是平行链的交易收集人。Polkadot上的收集人需要运行对应平行链上的全节点,用来验证区块交易的正确性,比如用用户公钥验证所发交易是否为真,余额是否足够等,然后将收集到的区块发送给中继链的验证人。
 
钓鱼人客户端,是对中继链上验证人的监督人,用来监督验证人作恶的。在系统无法检测到验证人作恶的时候,钓鱼人执法是一个比较好的人为干预方式。
 
目前Polkadot的具体实现流程还不确定,但Gavin在早期Polkadot的白皮书当中,明确了各个客户端的操作流程,以下是流程介绍。
 
前提:假设所有参与方都知道下n和n+1区块验证人的分组情况

1. 确保收集人有对应的验证组
2. 收集人构造候选区块,包含(b.header, b.ext, b.proof, b.receipt, b.egress)信息
3. 发送收集人的验证信息Proof[S]=(b.header, b.ext, b.proof, b.receipt, b.egress)
4. 确保外部交易数据,b.ext对其他收集人和验证人可用
5. 发送出口信息给下个区块的接收方小组的验证人
6. 验证人收集这个块所有的入口数据
7. 验证人对区块出块进行有效性的投票
8 .验证人等待投票共识

运行3个客户端都需要抵押Dot,诚实行为可以得到奖励,但作恶行为会导致抵押金被Slash,这块会在下面的章节中介绍到。
 
性能

目前并不能确定GRANDPA的性能情况,后续会继续跟踪。
 
激励

Polkadot上的奖励行为有很多,对应的惩罚行为也会很多。奖励的原则基于参与链和维护链这两个方式来奖励。为了提高作恶成本,参与和维护网络都需要抵押Dot,像成为验证人,成为收集人等,这些抵押的Dot会被锁仓(提出需要足够长的时间,比如3个月,防止长程攻击)。那么对应的,锁仓的风险Polkadot系统给予增发奖励作为补充,以下是Polkadot的激励行为

1. 收集区块
2. 验证区块
3. 举报作恶
4. 提名验证人
5. 投票激励

具体的经济激励策略还没有发布,所以并不清楚各个行为获得的奖励情况。

惩罚

Polkadot上的惩罚是针对抵押金的Slash,但是会根据严重程度来决定Slash多少。通常情况下,尝试分叉的双签,是被严格禁止的;企图伪造数据,或者提交假签名蒙骗的,都是可能被检测并Slash的。以下列举以下惩罚的一些具体行为:
 
1. 验证人不在线,不给分配的平行链验证区块
2. 签名一个平行链中不合法的区块
3. 不去处理出口队列中被投票为已生效的消息
4. 不参与共识流程,比如投票
5. 双签,在同一个高度签名两个区块

同样,由于Polkadot未上线,惩罚力度和其他的行为还不清楚。

出块人

我们一般说PoS上的出块人是本身代币的区块收集人+验证人,由于Polkadot是跨链项目,Polkadot上出块人拆分成了收集人(平行链)和验证人(平行链和主链),收集人负责收集平行链交易来构造区块,然后提交给Polkadot的验证人做验证,验证人并不做新区块收集工作。所以我们在这里说的Polkadot出块人是指平行链来说的验证人。
 
一般持币人通过抵押可以注册成为准验证人,准验证人由持币人自己拥有的Dot数量和接受到委托Dot数量之和,来确定是否可以变成真正的验证人。Polkadot上的验证人可能随着平行链的接入而增多,单个验证人的成本也会增多,但是Polkadot对接入架构的平行链设置了准入门槛,一是需要抵押足够量的Dot,一个是需要已有验证人批准,以确定这个项目对Polkadot来说是有价值项目。
 
目前,验证人的数量尚未确定,门槛也尚未明确,在PoC-3中可以稍微窥探一点,相信随着测试网的成熟,相关的功能都可以在测试网测试。
 
持币人

Dot的持有人可以通过Stake,将“投票权重(Voting Power)”委托给准验证人,如果验证人验证了区块,那么委托人会得到大部分的区块奖励。
 
另外,持币人可以参与链上治理,投票选择出提议,共同决定社区发展方向。
 
链上治理

在Polkadot,链上治理被看重,有一个专门词汇形容,叫绑定治理(Binding Government)。
 
绑定治理是针对链上治理和链下治理来说的,比特币就是典型的链下治理,但是由于大家的投票并没有约束,提案通过后也可能有反悔的情况发生,比如Segwit2x。链上治理了治理提案的绑定,是的共识(投票)过的提案执行变得必然,这就是Polkadot绑定治理的方案由来。
 
在PoC-3中,Polkadot实现了链上治理的几个基本功能:

· 公投(Referenda )
· 灵活的偏执法定人数(Adaptive quorum biasing)
· 议会(Council)
· 锁定投票(Lock-Voting)
· 同意型投票(Approval voting)
· 激励(Treasury)
· 延迟自治立法(Delayed autonomous enactement)

整个Polkadot的链上治理流程很像一个国家,设立了议会,对提议进行公投,公投通过法定人数的情况下获得立法权,但治理权结合了PoS共识的区块链,多出来了币权投票,锁定投票权和激励投票和延迟立法的功能,使得Polkadot在链上实现治理变得可能。

图 Gavin演讲的PPT
持币人可以进行提议,提议提案会进入表决期,由持币人投票决策是否通过,通过的提案进入议会审核,议员可以进行不记名投票否决提案,同时议会轮值主席拥有一票否决权。轮值主席每轮会通过投票进行更换,每次提案的主席可能不一样(具体的轮换周期还不明确)。每个持币人都可以成为轮值主席,通过抵押Dot成为候选人,持币人通过持币量权重选出轮值主席,候选人成为轮值主席后抵押金会被退回。
 
如果决议通过,那么投票人对应的币会被锁定。锁定的周期由用户自己决定。投票的累计票数=投票币量x锁定时间,这意味着锁币时间更长的相同币量拥有更大的投票权,比如1个Dot锁8周和2个Dot锁4周是一样的投票权重,但是投票通过情况下,对应锁币的周期分别是8周和4周。
 
另外,Polkadot没有限制法定投票人数,而是当投票率降低时,要求投票量要加大,具体的表现是:

· 正向的投票率偏好
· 投通过的票x投票率>投否决
  · 比如持币人100,提案1投票50张,如果投Y的是20人,那么投N的是30人,计算公式20x(50/100)<30,所以不满足要求的;
  · 比如持币人100,提案1投票50张,如果投Y的是40人,那么投N的是10人,计算公式40x(50/100)<10,所以是满足要求的;

提案在议会通过之后,会进入立法流程。为了避免乱投票,不合理投票的情况发生,投通过票的币会被锁定一定冷却周期(Cool Down Period),冷却周期结束后会进入立法流程。
 
Polkadot的这套链上治理方案,像极了现实社会中的治理制度,只不过是把现实中的很多东西搬到了区块链上,持币人的投票,议会的决议变得更加透明了。和其他PoS共识链上治理很大不同的一点是,Polkadot增加了议会,议会的不记名投票给了权利人更大的操作空间,人为因素变大,各有利弊,操作好了是造福,坏了是腐败。

问题

· 跨链采用(Adoption)

跨链的愿景基于众多平行链的之间的价值交换,那么采用这个跨链框架实现的平行链需要变得越多越好,这样才能形成数据城墙,就像微软的操作系统,正因为有了足够多的应用在Windows上建立了应用,形成了应用生态,才让其他竞争对手无论做出多么优秀的操作系统,也不能取而代之。
 
所以,Polkadot本来就是具有宏观愿景的项目,但在采用上还没有太大的动作,因为整个项目还在开发阶段,这个过程中,Polkadot可能会被对手赶上,或者超越。这个是目前Polkadot除了面对技术问题外,需要面对的最为严峻的问题了。
 
· 愿景太宏大

作为基础架构,Polkadot需要权衡的东西很多,除了要适应现存区块链项目,还有考虑好新增项目,甚至要想清楚未来10年区块链世界的样子,这会让Polkadot整个项目会比其他项目需要更多的考虑项目的可扩展性和可伸缩性,并且做出可动态升级的架构,支持未来的发展。
 
这种事无巨细的考虑会给整个项目带来困难,可能很多进程做着做着发现原来的架构设计不合理,这是代码架构太大会经常出现的问题,我想也是Polkadot会面临的一个问题了。
 
未来

跨链是一个非常未来的项目,和其他公有链不同,Polkadot提供的是供平行链(功能链)使用的架构,而现有公有链提供的是Dapp使用的架构,Dapp是比平行链还有小的开发单位,它只需要一个智能合约和用户界面,但是在现在Dapp开发都没有开展来的今天,跳到侧链架构,是有很大的超前感的。
 
所有跨链的项目都是基于未来可能繁荣的公链生态,这是最重要的前提。但是未来是否真的是公链百家争鸣呢?现在谁都下不了定论,这可能是跨链项目带来期望的一个点。如果未来项目繁荣,那么底层架构的互通性必定会被需要,而提前做好准备的Polkadot会是一个非常好的选择。
 
我们想象未来的发展场景,不同数据在不同项目链上存在,虽然这些数据在各自链上透明,但是它们之间很难交互来产生各大的价值。当然,各个项目可以通过爬虫并分析数据,为自己所用,但这可能违背了区块链数据透明化的愿景,毕竟,链上数据交互,可追溯,会是比爬虫抓取可信得多,那么我们有理由相信,在透明化的C端需求下,会催生很多商业需求,从而让B端在Polkadot上建立生态,假如Polkadot的发展如想象,那么底层跨链架构的未来,可期。
 
至于跨链安全性,性能问题,我觉得这些问题不仅仅存在跨链底层,还存在现存的各种公链项目中,这些问题并不是阻塞发展的,至少目前的学术界还在源源不断的产出新的论证公理,而且不存一些不可能公理限制区块链发展,目前看来,把这些问题留给时间,会有解决方案的。

币圈大佬都在关注!

—-

编译者/作者:不详

玩币族申明:我们将尊重作者/译者/网站的版权,促进行业健康发展,如有错误或不完整之处请与我们联系。

LOADING...
LOADING...