引言

EOS Force 是基于 EOSIO 软件并加以进化的区块链。

在深入研究 EOSIO 软件的过程中,我们发现了很多可能会导致链不稳定的因素,比如用 C++ 编写基于 WASM 虚拟机智能合约的安全性,一票 30 投可能导致的“超级节点联盟” 等等。如果按照 EOSIO 官方指引进行链的启动,推进链的选举、投票,支持用户转账、部署合约,那么用户的资产安全将很难得到保证。

本着以用户资产安全为第一要素的原则,我们对 EOSIO/eos 进行了多层次演绎,并最终提出 EOS Force 的解决方案。

通过调整出块时间,收取交易手续费,鼓励超级节点分红,分阶段释放自主部署合约功能等诸多途径,EOS Force 致力于进一步提高链的稳定性与安全性。

节点如何加入

请下载 EOS Force Testnet v0.5版本,启动节点链接github如下

https://github.com/eosforce/testnet-v0.5

此次测试使用系统合约源码如下,节点可以参考

https://github.com/eosforce/System

如何加入

测试请下载我们的测试钱包代码地址,用户可以自行编译,支持 windows、linux、mac

https://github.com/eosforce/wallet-desktop/releases

钱包启动后请加入电报群,领取主网测试代币,开始测试之路

英文电报群 :https://t.me/eosforce_en

中文电报群 :https://t.me/eosforce01

欢迎加入开发者 Telegram一起让 EOS 更美好

EOS主网公测技术群:

https://t.me/EOSForce

模型

用户资产

EOS Force 支持对以太坊上 EOS ERC20 代币的用户进行映射,EOS Force 的用户资产具备以下属性:

*可用余额:可用于转账、投票。

* 投票金额:投给不同节点的金额,处于锁定状态,减少投票后变为赎回金额。

* 赎回金额:撤销的投票金额,有 3 天冻结期,3 天后可以提取成可用余额。

* 待领分红:用户根据对节点选举的币量和时间贡献,占有节点奖励池的一部分,提取后变为可用余额。

区块奖励

EOSIO 默认 0.5s 的出块速度在全球性的分布式网络中尚未得到有效验证,网络延迟很可能会造成区块链分叉和停止。因此,EOS Force 在链的启动阶段将出块时间设为 3 秒,每个节点每次只出一个块,每个块奖励为 9 个 EOS。待链运行稳定后,EOS Force 将会恢复 0.5s 的出块时间,在稳定的基础上进一步提升链的性能。

交易手续费

EOSIO 需要用户抵押币来获取资源,从而竞争性地使用区块链,继而达到 “免交易手续费” 的目的。“免交易手续费” 实际是自欺欺人,超级节点可获得 1% 的年化奖励,这实质上将交易手续费转嫁为了用户必须承担的 1% 年化通胀。

为了链的安全性,防止被 DDOS 攻击,EOS Force 恢复了交易手续费,以交易执行的种类计费,用户无需指定手续费金额,系统将会自动从交易发起方的余额中扣除,如果余额不足,交易失败。

水龙头功能

EOS 的公私钥可以链下生成,但 EOS 的用户需要创建用户名后才能进行链上操作,所以首先需要由已有用户发送链上交易帮新用户创建账户,默认情况下需要用户自己去寻找第三方帮忙。EOS Force 的钱包内置了开通水龙头功能的节点,由这些节点承担创建账户的链上手续费,为新用户提供无缝体验。

治理

投票分红

如果不给投票用户分红,普通用户的投票意愿就会降低,这会导致全链币的投票比例降低,那么几个大户联合就可能操纵投票影响选举,从而进行分叉攻击。所以,我们鼓励超级节点给投票的用户进行分红,充分活跃普通用户的投票参与度。

EOS Force 每年大约有 9000 万 EOS 奖励,超级节点可以自行设置自己的佣金比例,比如 1%。那么节点当选并出块后,可以拿走每个块奖励的 1%,剩余 99% 会进入每个节点的奖励池。节点根据每个用户的投票金额和时间得出用户“票龄”,再根据节点所有用户的“总票龄”,计算出每个用户在奖励池中的分红占比,给节点投票的用户随时可以从奖励池中提取分红。

如果 EOS Force 全网只有 3 亿的 EOS 参与投票,那么所有这些投票用户将平分 9000 万 EOS 的奖励,年化利率约为 0.9亿/3亿,也就是 30%。用户的年化利率随着投票参与率的升高而降低。随着币总量的上升,每年的奖励比例也会逐年下降。

为了减少自动分发消耗大量运算资源,EOS Force 的投票分红需要用户手动领取,领取快慢并不影响分红数量,所提取分红会立即变成可用余额。

用户每次提取分红后,在节点中的“票龄”会归零重新累计。

变更节点投票金额会自动领取之前投票所应得的分红,分红清零后重新计算。

一票一投

EOS Force 实行一票一投的用户投票机制,1 个 EOS 只能投给某一个节点,但是一个用户可以给多个节点分别投不同数量的币。

假设一个用户有 1000 个 EOS,节点 A 的佣金比例是 1%,用户投给 A 300 个 EOS,节点 B 的佣金比例是 1.5%,用户投给 B 100 个 EOS,那么该用户的可用余额还剩 600 个 EOS,用户最终可以从这两个节点分别获得相应的投票分红。

EOS Force 支持用户调整投票数量,即增加或减少投票。如果增加投票,则自动进行一次分红领取,并扣除可用余额。如果减少投票,也会自动进行一次分红领取,同时减少的币量会有 3 天的冻结时间,3 天后,用户需要手动进行“解除冻结”操作,才能把投票金额变为可用余额。

23 个超级节点

在 BFT 算法中,节点数天然不适合是 3 的整数倍。如果是 21 个节点,且恰好形成了 14 票同意,7 票反对的局面,则既无法达成大于 2/3 的通过,也无法达成大于 1/3 的否决,治理陷入僵局。如果是 23 个节点,不是 3 的整数倍,那么最终会形成 15 票同意,8 票反对的否决决定,或者 16 票同意,7 票反对的通过决定,不会形成僵局。

紧急状态

EOS 链还不能完全确认稳定性,如果链出现没有预料到的 BUG,那么需要有可以设置紧急状态的功能,使链进入超级节点治理状态。一旦进入紧急状态,立即停止转账、投票、分红等可能影响用户资产安全的操作,只允许节点治理相关的操作。只有注册节点可以开启和关闭紧急状态,如果在职 23 个节点中有 16 个节点同意开启,则紧急状态启动。问题处理后,超级节点可以选择关闭紧急状态,当关闭紧急状态的节点数大于 8 时,恢复链的全部功能。

测试网

为了加快测试流程,测试网对各项参数都进行了适当调整,这些参数在将来主网上线时很可能会不一致。钱包票龄显示由天缩短为小时,赎回金额锁定期缩短为 1 分钟,出块节点选举周期缩短为为 10 个块,创建账户、转账、投票、领取分红、解除冻结手续费为 0.1 EOS,节点注册/更新、设置紧急状态手续费为 100 EOS。

启动

启动阶段追求链的稳定性。在此阶段,只有用户转账、投票、分红的系统合约,用户不能自主部署新合约。

基础功能稳定后,开放合约部署功能,开发者可以开发 DAPP。

网络稳定后,各超级节点也完成了前期训练,恢复 0.5s 的出块速度。

EOS Force 创世块中默认会有 23 个引导节点,链启动后超级节点即可注册参与出块。