转自: https://mp.weixin.qq.com/s/pLheHcBlOBQ-9mcjUh5tDg https://mp.weixin.qq.com/s/K75EjXDe7vOHAIdyqdSjGQ
ICP
定义:Dfinity发行代币
主要职能:
- 质押:客户端质押ICP才能成为会员。会员的“话语权”取决于质押的ICP数量与质押时间。
- 维持DAPP运行:DAPP的运行需要cycle作为“燃料”。而cycle为ICP置换而来。
客户端与会员
Client & Membership
客户端 :
Dfinity网络中的活跃参与者称为client(客户端),客户端具有永久匿名身份并且可以通过质押有一定数量,一段锁定期的ICP成为会员(获取一个神经元控制器)。
会员:
可以作为一个神经元,参与神经元网络治理(NNS);可能被随机数灯塔选为一次区块公证流程中的委员会成员,成为“矿工”,参与一次共识中的区块的提议与广播。
PS:
会员作恶会被惩罚,惩罚代价除取消所得利益以外,还会被扣除所有质押的ICP。
Dfinity中的矿工“挖矿”的方式与Pow的计算哈希难题的方式有很大不同,在Dfinity网络中,“矿工”只需正常地参与到网络的治理,维护与运行工作中就可以收到报酬(ICP)。
随机数灯塔与委员会
Random Beacon & Committee
委员会分为两种:区块公证委员会与区块提议委员会。
两个委员会可以为同一组成员也可以是不同组成员。提议委员会成员对区块进行打包与提议,公证委员会成员对区块进行公证与广播。 委员会(Block maker & Notary) 为什么要存在: 类似于DPOS算法,委员会的存在是因为随着网络的拓展,消息处理复杂性越来越大。不同的是,EOS中使用的DPOS算法产生的委员几乎不变,而Dfinity中的委员会成员在每次共识都会随机改变。
随机数灯塔(Random Beacon)是Dfinity共识环节的重要一员,由本轮区块提议,公证的委员会运行,每个委员会都会运行一个随机数灯塔。
随机数灯塔职能为:产生一个随机数组,这个随机数组用于指定下一任委员会成员(委员会之间进行接力,每个委员会均会如此进行),以及指定委员会成员各自提议区块的权重。该职能很好的保证了治理的稳定性。
PS:
DPOS很大程度上保证了即使大多数生产者失败了也能够维持稳定的运行,而引入的随机数灯塔更好的增加了安全性。
转者注:
POW:Proof of Work,工作量证明。简单粗暴,就是组织庞大的算力,来解一个难度非常高的数学题,你拥有的算力越多,解题越简单,获得的比特币也就越多。缺点是效率低下,同时也浪费太多能源。
POS:Proof of Stake,权益证明。是根据你持有货币的量和时间进行利息分配的制度。POS机制最核心的逻辑就是——谁持有币,谁就有网络的控制权。在POS机制中,仍然存在算力挖矿,需要算力解决一个数学难题。但数学难题的难度和持币者的“币龄”相关。持币者持有币的时间越长,难题越简单,挖到币的概率越大。
DPOS:Delegated Proof of Stake ,代理权益证明。这是一种基于投票选举的共识算法,有点像民主大会,持币人选出几个代表节点来运营网络,用专业运行的网络服务器来保证区块链网络的安全和性能。DPOS机制中,不需要算力解决数学难题,而是由持币者选出谁说生产者,如果生产者不称职,就有随时有可能被投票出局,这也就解决了POS的性能问题。
纪元 & 注册表区块(关键帧)
Epoch & Key Frame
纪元:
DFINITY中将区块链上x个区块为一个纪元(x为系统参数)。Mercury是DFINITY上线前的最后一个纪元。
注册表区块(key frame):
每个纪元的第一个区块为注册表区块,这个区块中记录了在上个纪元中新注册与撤销注册的副本。(创世区块也为一个注册表区块,注册表区块又称关键帧 )
副本与罐
Replica & Canister
副本(replica):
任何人都可以在本地运行dfx,参与Dfinity网络,作为Dfinity的一个本地副本。
罐(canister):
数据中心中部署的容器成为罐,罐中具有编译后的代码以及数据状态。罐之间可以进行协同。(DFINITY中实现罐的方式为WebAssembly)
共识流程
以第r轮区块公证为例:
一轮区块公证时间内 :用户 -> 交易发生 -> 副本记录
第一步:由第r-1轮区块高度的委员会共同运行随机数灯塔协议(主要是VRF函数),产生第r层区块高度的委员会(公证委员会与提议委员会)
第二步:产生委员会后,提议委员会成员开始从用户处获取交易,打包区块,将自身权重,区块(以及个人签名),提交给公证委员会成员
第三步:公证委员会成员进行签名公证并在公证后进行广播
第四步:提议委员会收到公证区块,运行随机数灯塔产生下一代委员会
一次共识结束
委员会:
公证与随机数灯塔由所有副本中的x个规模为n的组来实现,这些组成为委员会,根据职能不同,分为提议区块的提议委员会与公证区块的公证委员会。两种委员会可以为同一组成员,也可以为不同组成员。设立委员会是因为随着成员拓展,消息的复杂度会越来越大,因此由部分委员会来执行这些职能。
委员会的个数:如果为数量比较小的一系列副本组成Dfinity网络,那么可能只有一组委员会,由所有副本共同运行。如果副本数量比较多,那么会考虑恶意节点导致的共识失败概率,结合失败概率计算的算法得到一个可抗攻击的规模x与n。