EOS 的Dpos共识算法


    
1. BIOS过程
    EOS是以OS设计的,所以它有一个BIOS过程,启动和上线这个EOS, 你就像开你的 pc一样,你先要经过BIOS, 经过一轮设置之后你才能进入正式的系统。 
    

    在BIOS过程,使用创世块中指定的初始帐号(eosio)进行产块,这个过程要一直持续到正式上线。


    EOS的币不是像ETH和BTC一样是内置的,EOS一样也只是一个合约和Token, 它和其它的Token是一样的,但它是在BIOS的时候设置的,这样就令到它的地位比较特殊了.
       eosio.token 这个合约是内置的,

2. 帐号系统
    分层的,树状的,多方控制的。


    有一个内置的帐号 eosio, 一开始的操作都是必须通过这个帐号来操作的。

    在布置dpos之前,需要创建多个预置的帐号。列表如下:
systemAccounts = [
    'eosio.bpay',
    'eosio.msig',
    'eosio.names',
    'eosio.ram',
    'eosio.ramfee',
    'eosio.saving',
    'eosio.stake',
    'eosio.token',
    'eosio.vpay',
]

    

3. 质押
    质押 CPU和NET , 还要买RAM , 只有质押了之后,你才可以投票。 RAM是用来提供如创建帐号,创建合约所需要的内存.
    用户可以随时增加质押, staking, 但是撤销则是先生成一个refund的记录,要等三天后,才可以真正回到自已的帐号 。

4. 超级节点的投票和选举
    Bios ok之后,大家就可以注册为BP, 注册bp的可以发布一个URL的信息,所有的人都可以列出当前的Producer的帐号,URL和得票. 
    投票者投票之后必须进行质押,投票是一次可以投多个人,但是不能大于30个人。 投票之后,producer收到是投票的权重,并不是直接的质押的数量.
     这个权重的计为 value * pow(2, year),这个是为让用户每年都至少要动一下,因为越迟投票的人,同样的质押情况下,权重越大。

     一个投票者的投票是可以多次的,但是投票影响不迭加,而替代性的,就是说你第二次投票的时候,会先取消你第一次的投票的影响,然后再应用你当前投票的影响 。

     每120个块(即1分钟,0.5秒一个块)会尝试进行一次超级节点的选举。这个选举还有一个前置条件,就是: 只有当投票的质押(不是权重)达到min_activated_stake(150'000'000'0000)才会进行选举。

     选举就是把每次统计的权重最高的21个节点取出来。

5. 块的产生和广播
    选举出的21个权重的21节点,要按帐号的名字进行排序,然后轮流出块. 每次轮到自己的话,要连续生产12个块,即6秒钟. 这个算法是新改进的用来避免因为网络延时引起的分叉。

    
6. 奖励


    每产生一个块会有奖励,投票的也有奖励,这个奖励者是发放给超级节点的。  计算:

    //每年 增发5%.
  auto new_tokens = static_cast<int64_t>( (continuous_rate * double(token_supply.amount) * double(usecs_since_last_fill)) / double(useconds_per_year) );


          // 1/5 给bp,  
         auto to_producers       = new_tokens / 5;
         // 剩下约4/5放到 savings中。
         auto to_savings         = new_tokens - to_producers;
         // 1/4的to_producers 用于 每一个块的奖励。 
         auto to_per_block_pay   = to_producers / 4;
         // 剩下约 3/4 的 to_producers 用于投票奖励.
         auto to_per_vote_pay    = to_producers - to_per_block_pay;
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值