读书笔记N242:波卡运行原理系列
读书笔记N242:波卡运行原理系列
发于波卡区块链开发指南: http://boka.network
平行链租赁机制仍在演进中,以下只是目前最新的进展而非最终版本:
1、在链初始启动时,插槽数量较少,但会随着时间增加
2、我们会通过拍卖的方式出租插槽,拍卖的方式是 Candle Auction
3、每次出租的插槽的生命周期是有限的
4、小部分插槽会由Web3基金会保留一部分时间,给“common good”的平行链
注:理解 Candle Auction 可以看下这个
https://en.wikipedia.org/wiki/Candle_auction
Parachains 属于构成波卡的外部系统。
一个区块链有两种方式与波卡交互:通过原生的平行链,或者通过中继链。
部署原生的平行链,可以借助 Cumulus (一个Substrate的插件)。
原生的平行链可以调用更快速的跨链消息机制,并与波卡共享安全性。
但是如果该链有一些历史遗留的设计导致其无法完全使用波卡的底层框架,它可以保留自己的共识和最终性机制,通过平行链上的中继成为一个中继链。
项目需要抵押 DOT 来获得平行链插槽,因此将无意义的平行链,接入的成本是很高的。平行链需要资源来保证安全的运行。平行链的数量有限因为波卡网络的资源是有限的。这和其他链引入手续费或者其他资源来限制计算资源使用异曲同工。
随着优化的进行,平行链的数量将从初期的5,在1到2年内逐步增长到50至200之间。
具体的推出顺序:
1、保证 Relay 链的安全;
2、优先让最有价值的项目加入;
3、平衡平行链的供需关系,使得验证人有足够的经济激励;
4、为更多实验性需求提供拓展性
波卡网络启动最初应该不会有大量平行链的存在,所以在启动初期插槽将由 Web3 基金会根据下面的条件来确定:
1、具有通用价值,比如中继链、智能合约链等;
2、Web3 基金会会进行与 on-chain 相同逻辑的 off-chain 拍卖,运行团队来租用插槽,抵押最多 DOT 的团队将获得该插槽
通用价值链的类型包括:
1、以太坊中继;
2、比特币中继;
3、Edgeware,wasm的智能合约平台;
4、其它关键基础设施,比如去中心化交易所或稳定币
参与竞拍并非购买,只需抵押固定期限的DOT即可,本质上只是付出了通胀可能带来贬值的机会成本。当平行链插槽释放时,竞拍时抵押的DOT就可以获得返还。
出租周期被划分为【每6个月】,所有插槽的出租期同时开始和结束。
每次拍卖会包含4个出租周期,即2年时间。
所有竞拍通过 DOT 进行。项目可以通过下面的方式获得 DOT:
1、创建自己的平行链通证,并通过市场交换获得 DOT;
2、从市场上购买 DOT;
3、众筹募集 DOT;
4、向 Web3 基金会申请;
多个项目也可以通过共享一个插槽的方式均摊成本。
在波卡网络里,有4个地方需要DOT:
治理、平行链租赁、转账、Staking抵押。
抵押在平行链插槽租赁的DOT,将无法用于其他三个场景(治理有可能可以)。
波卡创始启动时,因为10%的年增发,Staking奖励的年化将达到20%。(以太坊启动初期的增发是30%每年,因为波卡的 BABE/GRANDPA 共识的消耗比以太坊的PoW低得多)。
总的来说,波卡共享安全性的模式会比通过自行组建节点的方式成本更低。
有缺陷的平行链(死循环、内存爆炸、垃圾消息)将会被验证人发现并禁止。这些离开波卡网络的平行链需要自行维护它的共识安全性。
波卡的治理设计复杂而独特,尤其是以下三点
1 引入抵押时间的概念;
2 设置了理事会,并能够对公投的机制互相作用;
3 所有链的更改通过治理决定,而非仅局限于部分参数
通常治理包含三个要素:
系统的规则;
做决策;
参与者需要负责
波卡治理的核心是 DOT 持有者对社区提出的提案进行抵押投票。
基于抵押权重机制,所有对波卡的修改需要多数同意。
DOT 持有者可以用他们的 DOT 在 Polkadot 治理中做以下相关的事情:
发起提案; ;
改变提案顺序;
给所有生效的提案投票;
选举理事会成员;
申请成为理事会候选人
DOT 代币也可以通过抵押成为网络验证节点,或者将抵押的 DOT 投票给某个验证节点。
为了代表那些不活跃、不能每次投票都参与的利益相关方,Polkadot 推出了理事会,它由 6-24 名成员组成,并拥有优先投票权。理事会通过选举产生,负责过滤合理的公投提案,理事会成员需要在发展、维护和使用去中心化网络中有专业度和经验。
波卡系统的所有修改都需要公投来完成。
公投程序中包含了一个重要的方法:set_code。
set_code 是 Polkadot 系统中最强大的方法,因为它可以改变系统的任何逻辑,包括治理机制本身。
公投提案可以由以下三种方式被发起,它们的获批路径各不相同:
匿名理事会;
大多数理事会;
公投
当一个提案被理事会全票同意,使用“倒置的投票参与度偏差”是更有利的。因为我们假设一个由理事会提出的提案,较低的投票率反而是更高效的。
但是公投则需要使用“标准的投票参与度偏差”,这可以阻止恶意和不成熟的提案对系统的攻击。
延迟执行是 Polkadot 治理中一个重要的功能。每一个批准的提案需要等待一段时间才可以真正发布到链上。
这样可以让那些不同意提案的参与者离开(比如卖掉手中的代币),而投票支持这个提案的 DOT 持有者的代币会被锁定,直到提案被执行。
所有的投票者都按照以下两个维度来衡量权重:
DOT 数量:DOT 代币持有者的 DOT 数量;
锁定时间:公投结束之后 DOT 代币保持抵押锁仓的时间长度。5个不同的时间段计量:4 周,8 周,16 周,32 周和 64 周。每一个两倍之前的时间长度都会增加投票者的权重
一个目前即将要被开发出来的功能,叫做代理投票,同时也被称为“流动的民主”。那些不想参与每一轮投票的参与者,可以将他们的投票权授权给他们认为跟他们理念相近、值得相信的个人或者群体。
Substrate:
Parity 开发的区块链基础框架;
开发者可以定制一个区块链的各个模块,自定义开发主要关注 State Machine,Substrate 中称之为 Runtime;
Polkadot 的 Relay Chain 和 Parachain 都是基于 Substrate 框架开发的
Relay Chain 中继链:
类似 ETH 2.0 的信标链或 Cosmos 的 Hub;
块中记录的是各个 Parachain 的 Candidate Receipts 和 Erasure Coding;
基于 NPoS 共识;
为 Parachain 提供安全保证;
提供 Parachain 之间消息通信的可靠性凭证
Parachain 平行链:
也叫应用链;
数量 10-100;
基于 Substrate 开发的 runtime;
需要通过拍卖的方式获得插槽 Slot 才能成为 Parachain,如果未获得插槽则可以用 Parathread 方式的方式接入 Relay Chain;
需要组建 Collator
Collator 收集人:
Parachain 的 Full node、Relay Chain 的 Light node
Validator 验证人:
数量 250-1000,由 DOT 持有者投票选出;
每个 Parachain 会被随机分配 10 个 Validator;
与 Collator 交互验证 Parachain 新的区块数据;
需要5-7个 Validator 来验证和签署 Parachain 中新产生的区块
Fishermen 钓鱼人:
Fishermen 需要抵押 DOT(Collator不需要抵押 DOT);
Fishermen 是 Parachain 的 Full node;
出块(BABE)与最终确定(GRANDPA)之间,Fishermen 进行有效性检查,防止 Validator 合谋
Nominator 提名人/投票人:
一般指 DOT 的投票人(Parachain 可以有自己的Staking机制,所以也可能有 Nominator);
最多投票给 16 个 Validator, 系统会自动分配票数,使得票数尽量分散;
Stake 解委托:Kusama 是7天;
参与治理投票:自定义 Conviction,不同锁定期产生不同的投票权重
Bridge 桥:
一种特殊的 Parachain,通过运行一个 Sovereign Chain(BTC、ETH等非 substrate 构建)的轻节点,完成资产的跨链;
再通过 XCMP 将资产传递到其它 Parachain;
Sovereign Chain 和 Parachain 的一个简单的区分方法是 Sovereign Chain 自己提供共识,Parachain 由 Relay Chain 提供共识(验证 Parachain 数据需要跑一个 Relay Chain 轻节点)
XCMP:
Parachain 之间通信的机制;
本质上 Parachain 之间直接建立网络连接传递消息;
消息的安全性通过 Relay Chain 验证
2nd Layer Relay Chain 二级中继链:
Parachain 本身变成一个二级的 Relay Chain;
安全性更低、出块敲定速度更慢、跨链消息传递速度更长;
接入成本更低,满足安全性要求更低的 Parachain 需求;
可以继续往下级联实现无限的拓展性
https://www.polkaworld.org/articles/polkadot-white-paper-in-chinese
Polkadot 中文白皮书
存储账户
– 设置控制账户;
– 绑定和解绑投票金额
控制账户
– 解绑投票金额;
– 设置奖励归集方式;
– 提名节点
存储账户可以设置自身为控制账户。
控制账户本身也可以作为存储账户并设置下一级控制账户,实现嵌套的模型。