Previous
上文(链接在这)整理了multi_index相关的内容,这篇接着学习合约部分的细节。
预备知识
- DPoS(委托权益证明)
EOS的共识机制为DPoS,委托权益证明,英文全称Delegated Proof-of-Stake (DPoS) ,基于这个算法,持有token的人可以通过持续的审批投票系统来选择出块者(producer, 有些英文文档里也简称bp,即block producer)。
eosio允许区块精准的以每0.5秒产生一个区块,只有一个生产者(producer)被授权在任何给定的时间点生产一个区块。如果区块在预定的时间没有被生产出来,那么,那个时间的区块将被跳过,将会产生区块间隔:0.5秒*跳过的区块数量。
产生区块以126个区块为一轮(每个producer可以生产6个,有21个生产者,二者相乘),每轮63秒。在每一轮的开始,21个区块producer通过token持有者的投票被选中。选中的生产者依据商定好的顺序生产区块,这个顺序由15个或者更多的生产者商定。
显然,让每个token持有者经常参与投票是不现实的事,所以有proxy(代理)这个角色,proxy可以替token持有者去投票,而且投票的权重(weight)会随着时间过去而逐步降低。
如果一个生产者错过了一个区块,并且在24小时内没有生产任何区块,他们将会被移除。直到这些不活跃的producer及时通知区块链,他们将打算再次生产区块才被重新加入。
- token(翻译为通证/令牌通证)
Token代表了一个权益证明,只是一个权益证明,有三个要素,缺一不可。
第一是数字权益证明,也就是说通证必须是以数字形式存在的权益凭证,它必须代表的是一种权利,一种固有和内在的价值。
第二是加密,也就是说通证的真实性,防篡改性,保护隐私等能力,由密码学予以保障。
第三是可流通,也就是说通证必须能够在一个网络中流动,从而随时随地可以验证。
正文
- 资源介绍
EOS 共有三大资源:CPU、NET(网络带宽)和RAM(内存)。
用户的一般操作,包括合约代码的执行,对CPU和网络带宽消耗持续一小段时间,因此EOS中采用抵押(stake)的机制来换取,抵押物就是EOS Token。例如抵押1%的Token,最多能够获得1%的网络带宽。就像你使用共享单车要交个押金一样,不用了押金可以赎回。
CPU和NET需要临时抵押EOS获取,类似于交押金,不用了可以赎回EOS。
RAM只能