性能一直以来都是困扰区块链项目的问题,从BTC到ETH,性能问题在2017年的牛市当中暴露出来,并以极其悲观的速度散播开来,什么一涨网络就卡,什么一个游戏拖垮整个公链,几乎瞬时间,面对BTC和ETH的扩容方案如雨后春笋般不断冒出,那些通过白皮书宣传每秒可以处理百万级交易的项目受到了热捧。
大区块,闪电网络,DPoS,侧链,zk-SNARKs等方案开始走入人们的视野,其速度更迭之快,颇有科技大爆炸的感觉。这些方案大都带着诚意而来,但面对这Vitalik曾提出来的区块链铁三角定律,多多少少有点缺胳膊短腿的感觉。性能,安全和去中心化,这3个指标没有项目能达到三全,两全的项目大都突出自己的强势,而忽略了自己的劣势,市场上的投资者缺少对技术的认知,大都被宣传蒙蔽了双眼,他们的追涨也助推了区块链项目改变性能的浪潮。
1是BTC的大区块扩容,2是共识时代带来的扩容。在我们所接触到,已经实现的扩容方案中,大区块扩容,共识升级和侧链方案也是离我们最近的,也是最容易理解的。
大区块的扩容发生在BTC上,这个扩容引发了,起码是至今区块链史上最大且多次的社区分裂,BTC成功被同一个社区多个人分裂成了不同的项目,BCH,BSV,SBTC,LBTC.。..。.高达10多种的社区分裂币,把整个加密货币圈子搞的“乌烟瘴气”,削弱了很多人对BTC的共识,也给其他Token带去了希望。
共识的扩容已经脱离BTC的本质,从PoW的共识改变到了PoS的共识,PoS共识带来了合作社形式的共识,让PoW矿工的竞争关系变成了合作,这让整个共识效率得到了非常大的提高。而另外一方面,由于PoW矿机出现了长时间的军备竞赛,大量的算力被导向了单一矿池,去中心化程度堪忧,PoS共识的提出有助于解决中心化的问题,这个提出在2014年,Vitalik提出将以太坊的PoW共识改成PoS共识时达到高潮。
我们简单说,PoS改变性能是基于PoW了。PoW的矿工通过同时计算一个哈希值,谁先计算出来谁就胜利的方式,获得共识,但也使得矿工之间浪费了不必要的能量,特别是时间。PoS的矿工通过选举算法的方式,随机轮流在指定时间确定出块,并达成共识,这种由系统决定的次序会比争夺位置获得机会的性能要优化很多。
所以我们在2014年后,看到越来越多基于PoS共识的公有链项目,提出了高于ETH的性能口号,并且是高出指数级别以上的。当然,共识上的优势并不能让PoS项目满足,况且PoS共识的性能也无法和现实中的Master和Visa相比较。据了解,Visa的交易处理速度能达到4000笔/s,而2018~2019年开始运行的公链项目,EOS的TPS最高峰有达到3900,平常也只有60~70左右,而大量PoS公链也只有100以内的TPS,这样的TPS针对分布式网络来说,已经算是比较高的,但是还是不能满足当今显示的商业需要。
当人们看到了PoS共识能带来的性能有限的情况下,基于PoS扩容的方案也逐渐开始出现,其中侧链和zk-SNARKs是目前比较常见的两种方案。
侧链
侧链解决扩容是目前业界一起探索的方向,从闪电网络开始,到Plasma,再到Cosmos,Polkadot这种由侧链组成的项目,侧链方案已经开始慢慢从研究走到应用当中。
侧链的解决办法是将非必要的计算放在侧链上计算,只把重要的状态同步到主链。按照Cardano的设计方案,主链由于承担着较为主要的价值传输,要设计的尽可能的简单,只有简单才能达到足够的安全,而不会因为代码太过于复杂审计不出bug,其他对安全不是更高优先级的计算,可以统一放到侧链上来计算,最后将侧链计算的结果同步到主链即可,这样很好的解决性能和安全的冲突问题,把三角问题放在了一个不同空间维度来解读。
另外一个更深化的解决侧链方案是类似Cosmos或者Polkadot的解决方案,Polkadot创建了一个万链互联中心,让各个公链都变成了Polkadot的侧链,这样的Polkadot可以挂超过100条的侧链,这种扩容方案是指数级的,可以更好的承受计算压力。当然,这些所有的Polkadot“侧链”同样可以有自己的侧链系统,比如Loom项目的侧链项目就形成了Cosmos的一个Zone,叫Plasmchain,并挂在了以太坊项目项目。
目前,侧链的方案都在陆续开发当中,碰到的主要困难在于安全问题,像Plasms这样的侧链如果挂在以太坊下面,需要考虑侧链对于主链的安全问题,还有考虑主链的ETH跑到侧链后是否可以追回的问题等等,这些问题都是目前在困扰着侧链项目的,所以还没有看到一条真正跑得很顺的侧链,实际的应用上更是少之又少,比特币的闪电网络算是一个,Omisego的Plasmachain也是一个,但是他们的应用实在太少了。
侧链虽然是一个种很好的解决方案,但是离我们还有点1~2年,甚至更远的时间。
zk-SNARKs
zk-SNARKs,一种新型的零知识验证(零知识验证就是验证:我能证明我知道问题答案,但却不用告诉你答案),简洁,不需要大量交互验证,不需要双方在线,相对于传统的验证方法,验证快,体积小。
最早运用在Zcash上,于18年10月份升级成2.0版本——Zcash sapling,官方博客放出了两个版本的对比图,验证时间从37s缩减到7s,体积从大于3GB缩减到了40M以内,质变。从此Zcash可以告别只有10%资源用于匿名交易的限制了。
业界对于zk-SNARKs的研究也从来没停止过,但究其从大量的数学验证到工程实现太过于复杂的原因,实际发展的并不太尽如人意。
Tezos在2014年的白皮书里面表示,未来利用zk-SNARKs将匿名交易带入Tezos的意向,Vatilik也早在16年12月Medium上发表了关于zk-SNARKs的系列文章,从数学方式到代码层面做了详细的解释;Eli Ben Sasson,这个为再备受Vatilik推荐的大神,其基于zk-SNARKs的STARK匿名算法,STARKWARE也正在这一方向上前行。
对于zk-SNARKs,匿名和扩容似乎可以并存,因为2.0版本当中,Zcash的博客这么描述,此次的提升:
This rough estimate indicates an 80% reduction of proving time, and a 98% reduction in memory usage which is a key requirement for opening up mobile support for Zcash shielded addresses.
减少80%的验证实践,98%的存储。这个验证过程不确定是否可以用在Tezos的验证阶段,在Tezos的1分钟出块过程中,出块节点是提前选好的,从打包交易到广播全网也很快,花费最多的时间在32个验证签名,如果zk能解决这个验证速度,将对性能有大的改善。
那zk-SNARKs的扩容方案怎么实现不舍弃去中心化的前提下扩容?
zk通过缩减验证体积,加快验证速度来提高性能,这是个数学解决方案。也就是说,通常区块链广播交易,需要所有验证人验证并签名后,才能确定为真(有些链的签名还不是最终确定性,Finality),这其中验证签名的过程耗时过长,导致性能受到影响。
分片通过缩减签名人数,Cosmos通过指定人数的投票通过提前得到确定性,EOS通过减少验证人人数达到全部验证的快速度,这其中都是通过减少人数来达到的,而zk缩减的是验证过程,而不是人数,那么确实是可以保证之前的去中心化的情况下,提高性能的。
zk本身是一个零知识验证,这个验证过程本用于隐私交易,但目前看来本地算法生成验证材料的速度要比网络传播验证要高了去了,这就是zk扩容的本质了。就像现在的edxxxx算法生成公私钥对一样,不联网就生成了,毫秒级别的,如果把大量验证的过程变成zk的本地算法,提交广播验证的数据压缩到非常小的范围,那性能的提高可见会是指数级的。
当然,zk的算法同样中所周知的缺点:在零知识证明协议部署前,需要设置一些初始参数,这些参数将在每一次证明与验证中被用到。参数生成后,参数生成算法运行中使用的所有数据必须销毁,否则整个协议将不安全。
那么这次参数的生成必然会有一个来源,这个来源如果是伪随机数还不能被找到规律,如果是真随机数还得头大,且找到可靠人来执行,两种来源的弊端是明显的,那么这个问题就出现了:我们怎么相信一个这么依赖的公共参数的系统协议呢?
随着协议的发展,我们看到了解决该办法的两种方案
允许人,无人数限制,无门槛的进入到提交参数的过程中,并公然销毁数据(如Zcash 2.0上线前做的The Power of Tau活动,有兴趣的小伙伴可以google一下这个有意思的活动)Eli Ben-Sasson 也提出了另一个具有竞争力的零知识证明协议 STARKs,该协议可不需要考虑可信设置的问题,并依赖于较少的数学猜想。
目前的发展也在进行当中,这也是为什么我在上面说zk有机会成为既可以保证去中心化的同事,又可以进行扩容的点了。可喜的是,第一个方案已经在Zcash上践行,并且运行快几个月还比较完好,所以,我们还是有理由期待zk在PoS其他项目上的扩容的。
侧链解决的是数据的分层计算,zk这种方案是尽可能减少数据之间的交互,尽可能的较少数据大小,所以两种方法是不同维度的解决方案,自然,zk也可以用到侧链上去,减少侧链交互,提高性能。现在区块链的性能优化在减少底层架构,和上层数据交换上是一个大方向,有很大的优化空间。
第五章 PoS中的激励与惩罚
为什么PoS系统当中需要激励?没有激励行不行?多少激励才足够?
区块链的定义来源比特币,比特币立志于成为一种无政府主义的电子货币,摆脱中心化集权的控制,并且给所有人带来自由。自始至终,比特币给广大人们带来的印象就是去中心化和自由,但是,社会发展到今天,我们已经习惯了这种中心化思想形成的社会结构。国家,公司,乃至家庭,都是不同形态下的中心。当我们要把去中心化当成主流的时候,我们会发现,我们要付出的代价,其实不小。特别在我们享受比特币带来的去中心化思想时,往往我们忽略的是自由背后所带来的成本。
作为一个去中心化的社区,比特币需要人运行程序来维护,而且越多的人维护,系统越安全。以往中心化公司运行的成本,其实相当于均摊到了维护网络的每个人。那么这些人的成本谁来承担?难不成都是心甘情愿自掏腰包吗?
不太可能,所以比特币的分发成为了激励手段,以及比特币背后的自由思想所带来的憧憬,给所有维护的人们画了一个大饼,这个大饼带着自由之光,照亮了人们对于未来暴富的无限遐想。所以,我们看到的是,比特币实现了去中心化的自由,用了一种激励的手段解决人们前期所付出的成本,这个可能不对等,但是确实一种很好的价值背书。
那么我们就不难理解了,作为PoW后时代的PoS,自然同样需要激励来维护去中心化所带来的成本。但是由于PoW算力挖矿的方式,被PoS的权重挖矿方式所替代,意味着网络运行初期,就需要有足够的币来进行挖矿。同时,足够多的币才能像足够多的算力一样,更安全的保证去中心化的网络运行,那么PoS的激励不能像比特币一样,由剩余总量作为奖励,而是通过增发通胀作为激励了。
增发是PoS上最为常见的一种激励手段,常年保持一个比较合理的增发率,来激励矿工有足够多的动力维护网络。网络的初期发展特别重要,所以通常,线性改变的增发率会把初始值设置的足够大,以此来吸引更多的验证人。同时,这也作为吸引已存在代币参与到(Staking)网络中来验证区块的重要点子,不参加网络安全验证的代币会被增发的代币稀释,这就是著名的PoS稀释性通胀的概念。
而后,增发率/通胀率会成为一个变化值,至于是多少合适,没有人能准确得出来。现在世界里面的货币政策,通常是伴随是通胀和紧缩同时发生的,在合适的时间使用合适的货币政策,是目前我们所能认识到的。比特币给我们带来的紧缩手段,PoS带来的通胀手段,都是区块链世界里面的一组实验。所以很多PoS公有链并没有把通胀率定死,而是初期定值,然后定价权交由社区定夺。
以太坊ETH把通胀率定在了年3%,Tezos和EOS把通胀率都定在了5%左右,Rchain把通胀率定在了7%,Cosmos把通胀率定在了7%~22%。目前来看,2019年要上主网的项目中,通胀率初始值都在5%~10%,看来是业界普遍的认同。
倒不是说这个是最终的答案,或者说根本没有人知道答案,真实的世界里总是复杂的,所以,拍脑袋决定是也是一种好的办法,而只要有一个人拍了脑袋,后面跟着的人连脑袋都不要拍,跟着就好了。
激励
PoS上的激励机制从比特币衍生而来,比特币需要矿工维护网络的运行和去中心化,那么激励矿工参与网络是需要的,受利益驱使,人们会追逐矿工出块所带来的利润,比特币将铸币分发做成一种激励机制,使用固定总量,分发稀缺性来吸引大量矿工涌入,成为比特币网络维护的一员。
PoS共识网络也一样需要维护,但是PoS的激励和比特币的激励不一样,PoS是新增铸币(PoS的存量已经在初始分发时分发出去了,相当于一些PoW项目里面的预挖),比特币是存量铸币,所以PoS的通胀设计和比特币的存量分发设计有些许不同,造就了两种激励本质上的不一样。
PoS共识中,激励分为两个重要阶段
· 启动
· 去中心化
PoS网络启动之初的通胀设计,是PoS网络重中之重,为了防止初始Stake的不足,导致的攻击成本过低问题,初始的激励要足够大,吸引人们将代币进行Staking,否则,短程攻击可能会发生,交易激励可能会被篡改。一般情况下,启动主网时,开发团队会利用初始分发中留给自己的代币(一般是20%)先行Staking维护网络,同时禁止其他节点进入,在保证整个网络运行一段时间后(一般是小一个月),再开放给所有持币人。
而在网络顺利启动之后,去中心化又成为了一个重要的激励方向,为了防止大户更大的情况出现,很多项目会在奖励激励上做文章,比如单一节点的总量超过整体总量的1%时,超出部分将会的线性较少的奖励,或者不会获得奖励。比如有一个大户持币量1.2%,那么0.2%的量是获得不了奖励的。这样可以有效的控制PoS中的大户恒大的问题。
其次,很多PoS项目会致力于将节点出块,验证程序做得足够简单,依赖的设备随手可得,让持币人能简单的参与到项目Staking中来,也会使得项目更进一步的去中心化,而不会因为无技能,无设备而导致无法参与网络运行
PoS中的激励是通胀型的,通胀的比例作为参数被写到了创世区块中,作为可改参数,意味着社区有权利对通胀率进行修改,从而满足不同时代下的需求。区块链项目活的时间还不够长,所以这个数字目前还未曾被修改过。不同项目的通胀率会在一个范围内(2%~20%)浮动,初始值在5%~7%,或有线性减少或是线性增加的趋势,来保证合理性。
激励的具体行为
一般PoS公有链,为了维护网络不会暂停(Halt)或者是崩溃(Crash),会尽可能的激励出块人正确行为,同时会对不良行为给与惩罚。这和现实中正向引导,反向打击的逻辑是一样的。区块链的区块是按一定时间一个个接着形成并连在一起的,区块链的数据是保证正确并不能被修改的,所以我们可以看到一些具体被激励的行为,包括
· 出块(验证,打包交易)
· 签名(验证被打包的交易)
· 披露(披露用于生成出块人选举的随机数)
· 谴责(举报出块人不良行为)
· 在线(长期保持节点在线)
· 治理(参与链上治理行为)
所有的行为对于区块链的维护是有影响的,只要这些行为被正确执行,很大概率下,区块链会一直运行下去。当然,随着区块链的发展,更多新的技术会被带入到现有区块链中来,那么这些新的技术又会带来新的问题,导致区块链停止运行,甚至崩溃,届时新的解决办法又会被引入进来。
除了以上约束外,PoS中的激励中还存在着一些隐患,这些隐患可能还隐藏的比较深,目前没法对其做约束或者无法约束。
另外,POS激励有很多自己的问题,比如大户问题,选举造假问题等,同样,相对于比特币,PoS激励和比特币激励也有着相同的一些问题,如激励不足,激励单一。下面我来说一下几个和比特币相同的问题。
激励不足
稳定的网络依赖于稳定的矿工群体以及稳定的代币参与(Stake),两者都依赖于系统代币对法币稳定的汇率,或者是说有不断上涨预期,这样才能让整个激励得以继续。从2012年到现在,Peercoin,Nxt,Blackcoin等,我们看到了太多项目因为币价掉的太多,导致激励不足的情况出现了。这样会形成一个恶性循环,当系统对验证人的要求更高,验证人为此投入的成本越多的时候,我们发现,币价无法补足人们在其投入的资金,这使得网络的顺利维护有不好的预期。
在法币本位的今天,代币作为激励的方案是区块链主流,但却不是商业主流。当验证人成为一种专业的工种之后,辛勤工作却不能养家糊口的话,是比较讽刺的。2017年到启动的牛市,把很多人带入到了币本位的道路上,但是这些人很快就发现,币本位在短期内基本都是亏钱的,亏法币的,这点对于一个创业公司来说,太致命了。
所以,代币作为激励的手段,经常会出现激励不足的问题,如果在1~3年的时间里面,不能带来足够的激励的话,那么验证人很容易会离开这个网络。
激励单一
激励不足的另外一面就是激励太单一,代币激励是一方面,另外一个方面是验证人获得奖励的机会。目前,提供给验证人获得奖励的主要机会就是出块和验证(不同的链有别的一些细微的机会设置),这和该验证人持有的币量权重或者是接受委托的币量权重是息息相关的,导致的结果就是验证人如果币量权重不够高,那么他获得的奖励是很少的。
比如一个验证人持币量持币量只占据整个网络中代币的0.01%,那么他只能获得整个网络0.01%的出块和验证机会,别以为0.01%已经很少了,PoS系统中小于该总量的人大有人在,这和世界上,20%的人占据了世界总量80%的财富是一个道理。PoS代币中,估值往往是几十亿美元,0.01%就是几千万美元,有多少人能有几千万美金的?所以,占据总量0.000001%就很不错了,那这0.000001%对应出块奖励就很少了。
所以,我们可以看到,这已经天然的形成一定的门槛,这个门槛会因为激励的不足以及单一,使得币量少的验证人慢慢离开网络,最后只剩下头部的玩家,整个系统又变成了有钱人的天下,强者恒强。
这和我们在比特币上看到的矿池是境况是一样的。
无法解决的问题?
目前的各种尝试当中,没有一个方案可以完全解决此类问题,大都为尝试性的解决,但触动不了根基。本质上,无法解决的问题是贫富差距问题,任何事情一旦和钱挂钩,就无法摆脱别人已经比你有钱的事实,企图劫富济贫,那是武侠小说,不是现实世界。
中本聪愿景是让所有有电脑的人参与到比特币的挖矿中来,这本质上就把一部分没有能力购买电脑的人隔离开了,所以世界上无法做到完全的公平,在去中心化的世界里面,也一样。
但是,我仍然很喜欢看到区块链世界里面,为此付出的尝试。比如Cosmos的官方客户端会针对头部验证人做出警示提醒,或是消减平均的收益率,又比如Tezos里面的接受委托和抵押金息息相关,自己没有抵押金,则无法获得奖励。这些都是防止强者恒强的手段,虽然触发不到根基,但是有一定的作用。
惩罚
比特币里面对矿工是没有惩罚的,硬要说有惩罚,那就是矿工挖出来了孤块。孤块是比特币里面被抛弃的块,合法,工作量证明足够,只不过是因为广播速度或是计算问题等原因,并没有被大部分节点所接收到,而是被另外一个块替代了。挖出来的孤块是没有比特币奖励的,对应的矿工需要自己承担算力成本,所以竞争条件下,付出了算力却没得到奖励,也算是变相的一种“惩罚”。
而我在这里说的惩罚,是PoS中独有的惩罚机制,叫Slash,不同于PoW的“惩罚”。
PoS中的惩罚机制是用来惩罚PoS中矿工的不良行为的。具体的不良行为由不同的链自己决定,虽有不同,但大致都是一个原则,那就是保证系统稳定,任何尝试分叉,双签,和长期不在线的矿工,基本上都会被惩罚。当然,这里的惩罚不单单是和比特币一样的没有奖励,同时还会扣除出块人/验证人在系统里面交的抵押金,相当于是双重惩罚。
抵押金是PoS惩罚机制中独有的设计,抵押金的引入是解决PoS中多方面问题的一个综合解决方案。在PoS共识中,矿工由算法根据持币量权重选出,这些矿工在出块时,作恶的成本要比PoW小的多,因为可以无限制的出块,出多个块,签名分叉链等,不诚实的矿工会想尽办法作恶来获取更多的利益。
在没有抵押金的时代,这个动机显得十分充足,2012年~2014年的那些年代,矿工几乎可以随意的“攻击”这个网络,侥幸来欺骗系统来获得更多的奖励。PoW里面出块是有成本的,需要消耗算力,电力等,矿工好不容易获得了出块机会,如果尝试攻击系统,一旦被其他矿工识别出来,失去奖励的成本比作恶获得的奖励要大,所以这么做就得不偿失了。而PoS中,出块人的自由度是没有成本可言的,本质上就和PoW区分开了,这就是PoS里面著名的Nothing at Stake的问题(这个问题会在第九章节有具体描述)。
所以引入抵押金后,系统会对矿工行为进行检测,一旦发现检测不法行为,系统将会扣除矿工的抵押金。而矿工因为担心抵押金会被扣除,自然也不敢作恶了。
Slash
2014年1月,Vitalik Burtain首次提及了Slasher,后Slash这种手段被广泛应用于PoS共识当中,作为了PoS中解决网络安全的一个重要手段。Slasher可以被翻译为“刽子手”或者扣除人,Slash可以被翻译为削减(开支),或者意译为扣除抵押金。
当时的区块世界,PoW还是主流的共识,很多项目在开始往PoS共识转,但也是这时候PoS上一个重要的缺陷(Nothing at Stake)开始暴露出来,这种缺陷会导致链分叉,从而使得双花攻击成功的概率大大提高。
Vitalik提议用惩罚的手段将出块人的企图扼杀在摇篮当中,这种方法叫做Slasher。区块链对分叉或者重复提交行为进行检测,一旦检测出来,该行为就会被惩罚(Slash),而惩罚的抵押金意味着Nothing at Stake变成Something at Stake。
那么Somethin at Stake中的Something指的就是现在抵押金(bond,或者叫secure deposit)了,抵押金作为出块人出块的基础,诚实的出块人并不会害怕抵押金被扣除(Slash),因为他们不会去篡改程序,进行双花攻击,而不诚实的出块人因为抵押金可能会被扣除的可能性,动机减弱。
Slash的抵押金会被回收到系统中,不同系统对Slash的抵押金的处理不同,一般情况下,会全部销毁(burn),一些系统有举报人,如Tezos,Polkadot,这些系统Slash的抵押金会把少部分给举报人,大部分销毁。还有一种设计就是一部分销毁,一部分流入基金会的统一池子,用于后续的社区/项目资助。
但是,Vitalik并没有在2014年发表的博客中介绍Slasher具体的实现,也没有提到抵押金,只是阐述了一下Slash的方法论。后Slasher经过4年左右时间的发展,已经逐渐发展成为PoS共识当中一个重要的标配功能。
Slash的具体行为
现在我们知道了Slash的对象是出块人,Slash的结果是抵押金被扣除,奖励也无法获得。下面我来说一下Slash的具体行为。不同系统对于Slash的行为不同,Slash的多少也不相同。我列举了一下通用的会被Slash的行为,如
双块:指在同一个高度下,一个出块人出多个块
双签:指在同一个高度下,一个验证人验证了不同链上上的块;或者指在同一高度下,一个验证人在一条链上的同一个块,签多次名
有些项目还有把节点在线时间和投票情况作为可能会被Slash的行为,对于节点要求是比较严格的,比如Cosmos。
大体上,Slash的行为并不会很多,或者说不敢有太多,毕竟Slash还是新鲜事物,凡是有两面,Slash不好,过度,会对出块人生态造成伤害,特别是区块链项目并不成熟的情况下,发生误杀的话,很难处理。所以,我觉得把Slash用作为分叉杀手锏就可以了,其他的一些行为可以在区块链项目越来越成熟后再慢慢增加。
Slash多少?
那么抵押金交多少合适呢?扣除抵押金的时候扣除多少合理呢?这涉及到一个计算问题,有两种算法:
第一种:单块抵押,也就是只要是做涉及到奖励的行为的时候,就需要提前按比例交抵押金
第二种:整体抵押,也就是在做涉及奖励的行为之前,你的持币量是全部当成抵押金的。
在Slash发生的时候,第一种是扣除单个行为所交的所有抵押金,第二种是扣除全部抵押金的一部分,视情节严重程度来确定。
其实两种算法有相似之处,最终的Slash结果都是落在了抵押金的按比例扣除上。而实际中,两种算法对社区生态是有不同影响的。我们先说相似之处的抵押金情况,我们举个例子,有一条PoS公有链的参数如下:
年通胀率 5%
初始供应量 10亿
区块时间间隔 10s
每个区块奖励=10亿*5%/(365*24*60*(60/10)*10)=1.6
一个矿工持币量1亿,那么他需要交多少抵押金呢?我们再列几个系统参数
抵押金赎回时间 15天
单块抵押金为51.2
抵押的币量=(15*24*60*(60/10)*10)*51,2=66355200
抵押率=66355200/10亿=6.6%
个人出1个块需要抵押金=1亿*6.6%=6635520
其中单块抵押金需要51.2个代币是按照Tezos的抵押算法算出来的,我并不知道为什么Tezos单个块的抵押金是512XTZ,我大概的猜想是为了算出接近8%个左右的安全抵押率。如果猜想正确的话,PoS抵押金我们认为会在整体持币量的8%左右。当然,Tezos也可能拍脑袋决定的。
如果发生Slash,按照第一种抵押方式,该个人会被扣除6635520个代币,但是1亿里面其他的代币并不会受影响,可以继续进行出块。第二种抵押方式,1亿个代币都在抵押中,只不过在下一个机会获得之前,他的代币会被扣除6635520个。
激励和惩罚是PoS有别于PoW的另外两个点,个别链在设计上都独具匠心,这个我在第十章中会有具体的解释。
评论
查看更多