售前客服二维码
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!
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成为候选人,持币人通过持币量权重选出轮值主席,候选人成为轮值主席后抵押金会被退回。文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!