技术讨论(Technical Discussion) [进化星球氪石分成] 如何实现可信实时分成

hammer · 发布于 2018年12月04日 · 180 次阅读

1. 什么是氪石

氪石是进化星球中代表权益的token。在银行中存入一段时间的ring(可认为是定期存款,期满可取回),就可以根据进化星球银行合约的算法,自动生成一定量的氪石给并发放给存款人。

2. 氪石分成规则

一旦用户存入ring获得氪石后,自获得氪石的那一刻起,根据手里的氪石数量 / 氪石总发行量的比例,自动获取分成池中对应百分比的ring。按照进化星球的系统收入分配规则,现阶段,所有系统收入的30%流入氪石分成池,每一个氪石平均瓜分氪石分成池中的ring。例如用户A持有10氪石,氪石总发行量为100氪石,那么用户A就能得到氪石分成池中10%的ring。

3. 如何实现分成

最简单粗暴的办法就是每当系统产生收入,都触发一次交易,实时把分成池中的ring平均分给所有氪石持有者,这是一种极耗gas的做法,并且当氪石持有者数量庞大时,必须分批操作,这样很难保证分成的实时和公平性。因此进化星球引入快照领取状态通道分成方法, 并以冻结主安装分成方法作为辅助。

4. 什么是快照领取状态通道分成

主要的方式就是通过分成事件触发持有人余额快照并链下计算分成数额,通过类似RING领取状态通道方式,发放领取凭证,或代为保管。

因为需要快照持有余额,因此所有的分成事件和权益通证的持有人余额变动事件都需要按照时间进行排序,并在链下做好处理,可在链上进行验证。

优点:
  1. 简洁且更加通用,任何ERC20通证都可以作为权益通证接受分成。
  2. 无需从分成扣除燃料费,通证持有人可以累积多次分成,一次性领取,如果希望立即领取,则自己支付对应领取燃料费即可。
  3. 业务上的优势,领取需要通过状态通道,目前类似进化星球服务器以及Itering ID这样的业务系统扮演状态通道的角色,可以因为分成查看和领取的需求,带来额外用户访问流量。
  4. Itering ID的特色功能,后期可以将分成加密凭证推送至用户手机,签名凭证本地保管,这样实现完整的状态通道,无需信任服务器,即使服务器单点故障,分成依然能领取。
缺点:

链下分发,因为不是合约,去中心化和不可逆差一点,目前分成加密凭证的签名存在特权账户授权,如需改进仍需要后期改进状态通道(例如多签化)。另一个缺点是进化星球目前的地址不支持合约地址(通过使用其他地址代领应该可以。)

5. 补充方案: 冻结转账分成方法

在快照领取分成的方法中,有些用户如果选择不相信官方的链下分发机制,可以选择更加可信的链上分成方式,即冻结转账分成。该方法的原理是,用户把氪石存入冻结分成合约,只存在购入和取出时,合约中会变更通证持有者的余额。从而实现精确的合约分成。 优点,去中心化方式,合约分账分成。 缺点,需要锁定转账功能。

6. 选择

快照领取分成和冻结分成各有优缺点,用户可根据自己的需求自由选择氪石领取方式。

7. 冻结分成合约地址

附上冻结分成合约地址,懂技术的玩家可以自行研究:0xca2308a86ed57d18856c05be9f4ddf7454933ccc 合约代码详见: https://raw.githubusercontent.com/evolutionlandorg/id/133b1e5afe4bf25635a020d3bae3c089d0b53e74/contracts/dividends/FrozenDividend.sol

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册