基于不同的治理理念,EOSC社区对EOSIO的选举机制进行了优化,在创世高度1启动了EOSC主网,并持续对EOSC主网进行迭代升级,使得EOSC朝着去中心化的高性能智能合约平台的方向持续演进,为加密经济大规模普及奠定基础。
背景
加密经济迎来了从社会实验走向大规模商用的关键阶段。
大规模商用的背后意味着庞大的交易压力。一个区块链系统要高效地承载起巨量的交易需求,首先必须提供足够强劲的性能。要实现这一点,就需要对全节点提出更高的要求,如配置更好的硬件机器、更大的存储容量、更加稳定的网络、更快的带宽、更低的时延,等等。显然,全节点门槛过高会导致能稳定运行的出块节点数量减少,如果在这样的区块链系统中采用POS机制,系统将迅速收敛至中心化的局面。要在高性能和去中心化之间取得平衡,DPOS共识算法无疑是当前最佳的选择,也是针对管理少量节点可行的最好的解决方案。
基于DPOS共识算法的EOSIO应运而生,社区第一次看到了加密经济大规模商用的曙光。选举机制是否充分生效是DPOS共识机制存亡的关键,也关系到DPOS共识机制能否接力POW引领下一代加密浪潮。
为了加速加密经济大规模商用时代的到来,EOSC社区对EOSIO的选举机制进行了优化,在创世高度1启动了EOSC主网,并持续对EOSC主网进行迭代升级,使得EOSC朝着去中心化的高性能智能合约平台的方向持续演进。
共识机制
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链共识与主链的交互。另一方面, 可以实现与其他共识机制的链完成更加去中心化的跨链机制。
EOSC技术改进
基于手续费的资源模型
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的资源模式。
平滑的更新机制
EOSC的选举机制促使超级节点积极的参与推进技术升级, 不同于EOSIO社区节点版本的分裂, EOSC在实践中积极的推进技术升级和更新。
为了实现更平滑的不兼容升级过程, EOSC添加了一套基于生效区块高度的更新机制, 社区可以通过多签确认一个功能的生效块高度, 以此去中心化的完成平滑的升级过程, 不同于EOSIO最近提出的基于区块拓展数据的标签方案, EOSC的更新机制更友好和利于理解. EOSC在基于EOSIO的链中最早实践了去中心化的“软分叉”更新过程, 这是EOSC得以不断进化以解决各类机制问题的基本保障。
在另一方面, 基于多签设置链属性的功能可以为社区提供一套去中心化的链配置上链方案, 各种参数和配置可以根据实际发展来进行去中心化的修改, 使得社区更好的发展。
节点心跳机制与稳定的出块间隔
为了促进主网的稳定性, EOSC从经济模型的角度加强了备选节点的建设, 同时, EOSC添加了链上的节点心跳机制, 以此促进节点加强提高其稳定性, 促进整个主网更加稳定。
在心跳机制的基础之上, EOSC可以确认节点的运行情况, 使得基于链上对故障节点进行惩罚, 以此进一步督促节点的建设, 防止节点不作为导致整个主网的不稳定。
在启动之初便提高出块间隔时间, 以此避免在当前网络基础设施还未完善的情况下, 主网出现偶尔的软分叉, EOSIO设计的半秒钟的出块间隔和一个节点连出六个块的机制固然可以在未来提高链的可用性, 但是当前网络环境下还不适用, 本着务实的态度先行提高出块间隔时间, 未来条件成熟之后再改为快速的出块, 这样可以有效的减少软分叉, 同时区块数量减少可以大幅提高全节点同步速率, 使得可以有更多的全节点, 以此加强整个网络的可用性。
更多的合约层API
为了使DAPP开发者可以更加方便的开发合约, 添加了一些API, 并且对系统合约做了一些特定的调整。
首先, 添加了获取区块高度的API, 开发者可以简单高效的获取当前区块高度, 基于这个API, 合约可以有效避免阻塞区块攻击, 及其他基于重试的攻击. 其次, 添加了获取链配置信息的API, 开发者可以在合约层适配链的各种参数修正和链的升级, 以此合约也可以平滑的跟随链升级功能. 最后, 为了避免假币攻击, 在链启动之前, 就使用了独立的核心代币合约, 使得用户可以明显区分假币攻击。
适配跨链服务
启动之初,原力团队就预见到未来对跨链的支持将是公链的基本功能, 因此原力团队开启Codex项目的开发, 建立Codex.Relay中继链来为各个链提供中继服务, 以此实现各个链之间的跨链机制, 可以对Codex.Relay进行更加完善的支持, 通过两条链的超级节点互相操作, 可以实现“完备化”的跨链机制, 即跨链过程中不会降低任何链的去中心化程度。
通过跨链机制, 可以获得极大的扩展性, 基于中继服务, 可以为添加 Layer 2 子链, 一些资源消耗量较大的服务和DAPP可以基于子链运行, 通过中继服务将计算结果或者核心状态同步到中, 这样后续可以添加存储、计算、DAPP、随机数等专用子链, 以此拓展功能。
高度可定制化的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 子链, 这会为提供无限拓展性。