EOSC主网介绍

English version

1.背景

加密经济迎来了从社会实验走向大规模商用的关键阶段。

大规模商用的背后意味着庞大的交易压力。一个区块链系统要高效地承载起巨量的交易需求,首先必须提供足够强劲的性能。要实现这一点,就需要对全节点提出更高的要求,如配置更好的硬件机器、更大的存储容量、更加稳定的网络、更快的带宽、更低的时延,等等。显然,全节点门槛过高会导致能稳定运行的出块节点数量减少,如果在这样的区块链系统中采用POS机制,系统将迅速收敛至中心化的局面。要在高性能和去中心化之间取得平衡,DPOS共识算法无疑是当前最佳的选择,也是针对管理少量节点可行的最好的解决方案。

基于DPOS共识算法的EOSIO应运而生,社区第一次看到了加密经济大规模商用的曙光。选举机制是否充分生效是DPOS共识机制存亡的关键,也关系到DPOS共识机制能否接力POW引领下一代加密浪潮。

为了加速加密经济大规模商用时代的到来,EOSC社区对EOSIO的选举机制进行了优化,在创世高度1启动了EOSC主网,并持续对EOSC主网进行迭代升级,使得EOSC朝着去中心化的高性能智能合约平台的方向持续演进。

2.共识机制

EOSC沿用了EOSIO的共识机制, 即DPOS BFT Pipeline Consensus, 与EOSIO不同, EOSC没有采用EOSIO每0.5秒一个区块, 一个节点连出6个块的模式, EOSC中每3秒一个区块, 节点不会连续出块, 虽然节点连续出块可以降低未打包交易的等待时间, 但是由于当前网络环境往往并不十分理想, 快速出块会影响链的稳定, 造成大量的微分叉.

EOSIO当前的共识机制不够完美, 但是作为一个DAPP的平台, 区块的确认时间并不是链的第一优化要务, 对于EOSC, 必须在高负载环境下考虑共识机制, 在当前并行计算机制并不完善的情况下, 仓促改进流水线式的确认机制很带来很大问题.

EOSC未来的共识机制将会从两个方向并行演进

1.兼容EOSIO发展更新其共识算法,我们根据EOSIO当前开发进度判断,当EOSIO完成并行改进之后, 将会升级共识算法, 实现更快的区块确认时间.

2.将会适配其他的基于确认数的共识机制, 作为现有DPOS共识的补充, 一方面实现内嵌的Layer 2链共识与主链的交互。另一方面, 可以实现与其他共识机制的链完成更加去中心化的跨链机制.

3.EOSC技术改进

3.1基于手续费的资源模型

EOSIO的CPU和NET资源的支付模式虽然在技术是一个很好的设计, 对于用户来说太过复杂, 同时不能促进DAPP开发者优化其合约, 另一方面, EOSIO的RAM的购买方式会导致某些囤积行为, 不利于DAPP生态的发展, 为此, EOSC创新的设计了一套全新的资源模型, 通过实践中的优化,探索在复杂智能合约环境下基于手续费的资源模型, 彻底解决困扰EOS生态的资源问题.

首先, EOSC以手续费模式支付用户的CPU和NET资源消耗, 对于DAPP当中开发者定义的Action, DAPP开发者可以为Action设置所需的手续费, 系统基于此来控制Action的资源使用, 这样一方面便于用户理解资源的消耗, 另一方面也强烈的促进DAPP开发者优化合约资源使用, 使得整个生态良性发展.

EOSC采用类似租云主机的方式以方式分配RAM资源, 用户可以通过使用投票分红来支付租赁RAM资源的费用, 这样即不需要用户担忧租金缴纳问题, 也杜绝了租金欠费的问题. 通过“以租代售”的方式, EOSC可以有效避免针对RAM资源的投机行为, 使得DAPP的发展不必受到RAM价格的干扰, 有效促进DAPP生态建设.

在大胆创新探索新的资源模型的同时, EOSC也在机制上进行探索以兼容EOSIO的资源模型, 对于CPU和NET资源, 用户可以基于分红票龄支付手续费来达到类似EOSIO抵押获取CPU和NET资源的效果, 对于RAM, 用户可以通过抵押投票互换的形式来达到EOSIO基于市场购买的效果, 这样DAPP开发者可以快速从其他EOSIO链切入EOSC, 并平滑的转向EOSC的资源模式.

3.2平滑的更新机制

EOSC的选举机制促使超级节点积极的参与推进技术升级, 不同于EOSIO社区节点版本的分裂, EOSC在实践中积极的推进技术升级和更新.

为了实现更平滑的不兼容升级过程, EOSC添加了一套基于生效区块高度的更新机制, 社区可以通过多签确认一个功能的生效块高度, 以此去中心化的完成平滑的升级过程, 不同于EOSIO最近提出的基于区块拓展数据的标签方案, EOSC的更新机制更友好和利于理解. EOSC在基于EOSIO的链中最早实践了去中心化的“软分叉”更新过程, 这是EOSC得以不断进化以解决各类机制问题的基本保障.

在另一方面, 基于多签设置链属性的功能可以为社区提供一套去中心化的链配置上链方案, 各种参数和配置可以根据实际发展来进行去中心化的修改, 使得社区更好的发展.

3.3节点心跳机制与稳定的出块间隔

为了促进主网的稳定性, EOSC从经济模型的角度加强了备选节点的建设, 同时, EOSC添加了链上的节点心跳机制, 以此促进节点加强提高其稳定性, 促进整个主网更加稳定.

在心跳机制的基础之上, EOSC可以确认节点的运行情况, 使得基于链上对故障节点进行惩罚, 以此进一步督促节点的建设, 防止节点不作为导致整个主网的不稳定.

在启动之初便提高出块间隔时间, 以此避免在当前网络基础设施还未完善的情况下, 主网出现偶尔的软分叉, EOSIO设计的半秒钟的出块间隔和一个节点连出六个块的机制固然可以在未来提高链的可用性, 但是当前网络环境下还不适用, 本着务实的态度先行提高出块间隔时间, 未来条件成熟之后再改为快速的出块, 这样可以有效的减少软分叉, 同时区块数量减少可以大幅提高全节点同步速率, 使得可以有更多的全节点, 以此加强整个网络的可用性.

3.4更多的合约层API

为了使DAPP开发者可以更加方便的开发合约, 添加了一些API, 并且对系统合约做了一些特定的调整.

首先, 添加了获取区块高度的API, 开发者可以简单高效的获取当前区块高度, 基于这个API, 合约可以有效避免阻塞区块攻击, 及其他基于重试的攻击. 其次, 添加了获取链配置信息的API, 开发者可以在合约层适配链的各种参数修正和链的升级, 以此合约也可以平滑的跟随链升级功能. 最后, 为了避免假币攻击, 在链启动之前, 就使用了独立的核心代币合约, 使得用户可以明显区分假币攻击.

3.5适配跨链服务

启动之初,原力团队就预见到未来对跨链的支持将是公链的基本功能, 因此原力团队开启Codex项目的开发, 建立Codex.Relay中继链来为各个链提供中继服务, 以此实现各个链之间的跨链机制, 可以对Codex.Relay进行更加完善的支持, 通过两条链的超级节点互相操作, 可以实现“完备化”的跨链机制, 即跨链过程中不会降低任何链的去中心化程度.

通过跨链机制, 可以获得极大的扩展性, 基于中继服务, 可以为添加 Layer 2 子链, 一些资源消耗量较大的服务和DAPP可以基于子链运行, 通过中继服务将计算结果或者核心状态同步到中, 这样后续可以添加存储、计算、DAPP、随机数等专用子链, 以此拓展功能.

3.6高度可定制化的EOSIO区块链开发框架

基于中继服务, 可以为添加 Layer 2 子链, 未来各式子链将会在EOSIO的生态中发挥很大的作用, 但是需要注意到, 目前基于EOSIO开发一条定制功能的区块链项目还是具有很高的门槛的, 为此原力团队开启了Codex.io项目, 这是一个高度可定制化的EOSIO区块链开发框架, 降低子链的开发门槛, 为开发者提供一个更经济更友好的子链开发体验.

原力团队在开发的过程中积累了很多基于EOSIO开发区块链的经验, 也希望能够将这些经验发挥其最大的价值, Codex.io是一个“开箱即用”的EOSIO区块链开发框架, 开发者可以快速的基于Codex.io启动一条自己的链, 经过简单的配置, 可以定制各种符号、自由选择经济系统和资源模型, 在此基础之上, 开发者只需要关注链本身所要解决的问题, 据此可以选择基于合约或者链native层来实现, Codex.io可以便于开发者在链的native层进行的拓展, 以此解决一些性能问题, 同时也可以极大拓展链的功能.

Codex.io集成了目前大多数EOSIO链所提出的拓展功能, 本着兼容并蓄的态度, Codex.io允许开发者自由组合链上功能: 包括低保系统、账户系统、各种黑白名单机制、常见的治理机制和投票机制以及各种插件.

通过Codex.io, 未来将会集成大量的Layer 2 子链, 这会为提供无限拓展性.

4.经济模型和资源模型

4.1代币发行

EOSC的初始总量为10亿,根据北京时间2018年6月3日的EOS ERC20映射快照完成初始资产分配。用户可使用映射过的EOSIO私钥离线签名激活EOSC资产。

4.2资源使用

获取链上资源是EOSC主网代币的核心功能。EOSC主网上每一个 Transaction 都需要消耗资源,资源的类型主要为以下三大类:

  1. 带宽资源(NET)

  2. 计算资源(CPU)

  3. 内存资源(RAM)

NET和CPU属于可恢复资源,用于提供转账、执行智能合约时需要消耗的网络带宽和CPU计算资源。具体地说,一笔交易被区块生产者打包并同步到全网,这一过程需要消耗NET资源,且操作产生的数据量越大,需要消耗的NET资源越多。当智能合约被调用,合约代码被加载到内存中执行时需要消耗CPU计算资源。合约执行的运算时间越久,消耗的CPU资源越大。

RAM用于存储账户、智能合约状态等信息,需要存储在区块链上的数据越多,需要的RAM资源越多。与NET和CPU不同,RAM资源需要长期占用。

为了避免有限的链上资源被浪费或滥用,同时兼顾到用户友好和开发者友好,EOSC主网设计了一套基于手续费的资源模型,用户可以通过支付手续费来获得NET资源和CPU资源,通过投票抵押的方式来获得RAM资源。

4.3区块奖励

EOSC主网的出块时间设为 3 秒,每产生一个区块,系统都会增发一定数量的EOSC,称为区块奖励。区块奖励的分配如下:

  1. 区块奖励的10%由出块节点按出块数占比分发。

  2. 区块奖励的10%由所有收益节点奖励按照投票加权票数占比分发。

  3. 区块奖励的50%节点可以自由调整分红比例。

  4. 区块奖励的30%进入去中心化预算系统。

EOSC的通胀率为上一年代币总量的20% ,即每年的区块奖励总和是上一年系统中所有EOSC的20%。

5.社区治理

5.1基于时间加权的选举机制

EOSC通过选举机制持续改进,实现DPOS共识机制的去中心化。

5.1.1 加权票数

节点的排名由所获得的加权票数决定,节点所获得的加权票数越高,节点的排名越靠前。

参与投票的方式分为定期投票和活期投票。定期投票有多种时间周期可选择,分别是3个月、6个月、12个月和24个月对应的块高度。定期投票期间代币处于锁定状态,到期自动解锁。

活期投票没有无固定周期,投票代币可以随时选择赎回,赎回需要3天时间的块高度解锁。 此外,不同的时间周期所对应的票数权重也不同,活期票数权重为0.2,而3个月、6个月、12个月,24个月的时间周期分别对应的权重为1、2、4、8。

不论是定期投票还是活期投票,投票人都可以随时切换节点,只需要支付系统本身的操作手续费,无需等待时间。

5.1.2 一票一投

选举机制决定了DPOS机制能否充分生效。

EOSC主网实行一票一投的投票机制,一个账户可以给多个节点投票,但每一个EOSC一次仅能投给一个节点。EOSC主网的实践证明,一票一投可以有效地防止节点联盟的出现,为节点的竞选营造了一个更加公平、合理、有活力的选举空间。

通过一票一投的投票制度,没有节点可以长期霸占出块节点列席,后来的新节点也有足够的空间跻身成为出块节点。EOSC主网的选举机制充满活力。

5.2去中心化的协议治理

EOSC开放的协议治理体系,使得当选节点通过链上治理实现网络的升级,确保EOSC协议的发展遵循社区的意志。

5.2.1 投票分红

投票分红是EOSC主网激励链上用户积极参与投票的激励方式。持币人参与投票可获得分红奖励,分红奖励来源于系统的增发。

投票人可获得分红奖励的多少,取决于其投票的加权票数在总加权票数中的占比。加权票数占比越高,可获得的分红奖励也越高。

定期投票和活期投票所产生的分红都可以随时领取和复投,但定期投票的本金无法在定期结束之前释放,到期后票数权重清零。

5.2.2 节点惩罚

EOSC主网的节点分为出块节点和收益节点。

出块节点,也即超级节点,是基于加权票数排名的前23名节点。收益节点是能够获取网络投票收益的注册节点。任何人都可以接入EOSC主网成为收益节点,并按照投票加权票数占比瓜分区块奖励的10%。

基于DPOS共识机制的区块链系统需要多个超级节点共同运行和维护,如果这些超级节点中某些节点运行出错或作恶,系统的安全和稳定将会受到威胁。为了更高效地保障系统的安全稳定,淘汰作恶节点和不作为节点,选举出能够真正地为社区服务、支撑系统运作的节点,EOSC主网建立了节点惩罚机制。

节点惩罚机制主要体现在三个方面,一是减少出块节点的区块奖励,二是扣除出块节点押金,三是冻结节点。

出块节点奖励

根据区块奖励分配规则,生产节点可以获得区块奖励的10%。但区块奖励并不由出块节点平均分配,而是按照节点的出块币龄(连续出块时间)作为权重来分配。

具体地说,EOSC主网提出了”出块节点稳定度“的概念。每个节点的出块节点稳定度的初始值为0,如果每个周期600个块不漏块则加1。最大为3800,达到3800不再继续增加。如果有漏块情况重置为0. 出块节点稳定度和出块分红权重相关。如果连续稳定出块则分红权重高,在出相同块的情况下,稳定度越高的节点分红越高。

出块节点押金

节点需要抵押一部分系统代币作为押金才能成为出块节点。如果出块节点漏出块,每少生产一个区块将扣除该区块奖励的2倍押金。当节点的押金低于系统设定的最低值,则节点无法获得出块奖励,且不能竞选出块节点。

如果在出块过程中,节点的押金被扣为负数后还不补足,则投票给此节点的所有用户都没有分红,节点也无收入奖励。

冻结节点

在节点连续漏块超过9个块后,任何人都可以发起多签提议惩罚冻结节点,未出块扣除的罚金由提议多签惩罚漏块节点的用户和同意多签的前16名出块节点平分(发起方占20%,同意多签占80%)。提议多签惩罚需要抵押100EOSC代币,14400块高度后无论多签是否通过,可领取返还抵押代币。

被冻结的出块节点进入为期1小时的观察期,此期间用户投票无挖矿奖励,节点也无任何奖励。观察期过后BP可申请恢复正常,再进入正常选举,产生正常投票挖矿收益。

5.3链上去中心化预算系统

EOSC主网的链上去中心化预算系统为社区贡献者、开发者提供预算支持,任何人都可以发起预算提案申请,并交由去中心化的预算管理委员会进行审批。实现区块链的长期可持续发展。

预算提案的申请有以下规则:

  1. 提案人发起提案需要抵押100个EOSC作为押金,防止垃圾提案,押金在提案通过后退回。

  2. 提案人需要详细说明提案目标,实施细则(周期、成本、金额)以及提案将带来的回报。

  3. 提案获得管理委员会批准后,将有14天的公示期,公示期内大于三分之一超级节点反对,即可否决提案。若提案在公示期没有被否决,在公示期后,系统将自动将申请奖励按月份发放到申请人账户。

  4. 提案通过公示期后,提案人在下一个区块奖励中,会按月份开始获得申请的EOSC代币来执行自己的提案内容。

  5. 奖励发放期间,管理委员会和超级节点大于三分之一否决,可以叫停该提案奖励发放。

Last updated