第四章 MeriToken 模型

4.1 模型概述

MeriToken 是 GMC 的核心度量单位。它的设计需要回答一个关键问题:如何让贡献度量既反映当前活跃度,又尊重历史贡献?

答案是:指数衰减 + 非零底部值。

4.2 两个关键数值

每个 MeritPocket 维护两个核心数值:

  • curMerit(当前 MeriToken):实时的贡献度量值,随时间衰减,随新贡献增长
  • minMerit(底部值):衰减的下限,代表历史贡献的长期沉淀,只增不减(除惩罚外)
curMerit ≥ minMerit ≥ e(初始值)

4.3 获取

MeriToken 通过贡献获取,系统铸造(Mint)新的 Token:

获取方式描述触发条件
客观计量基于可验证指标自动计算系统自动记录达标
任务悬赏预设 Merit 给特定任务完成后干系人投票通过
初始分配注册入网时获得完成身份注册

初始值 = e ≈ 2.718(自然常数,与指数衰减模型天然契合)。

4.4 衰减模型

核心思想

每个 Merit 获取批次有独立的影响期限。影响期限反映该贡献的时效性——一次影响 100 天的贡献,其 Merit 在 100 天内衰减完毕。

单批次衰减公式

MeriToken_i(t) = (V_i - B_i) × e^(-λ_i × t) + B_i
  • V_i:该批次的初始 Merit 值
  • B_i:该批次对底部值的贡献
  • λ_i:衰减系数,由影响期限 T_i 决定(λ_i = k / T_i,k 为常数)
  • t:自获取以来的时间

当前 MeriToken 总值

curMerit = Σ MeriToken_i(t)  (所有活跃批次之和)

当所有批次完全衰减后,curMerit 趋近于 minMerit。

4.5 底部值(minMerit)

更新规则

每次获取新 Merit 时,底部值更新:

设当前 curMerit = M,新获取 Merit = x,当前底部值 = B,则:

新底部值 B' = (x + M) × B / M

含义:底部值按照新 Merit 占总量的比例增长。

特性

  • 起始值 = e ≈ 2.718
  • 只增不减(除惩罚外)
  • 代表历史贡献的不可磨灭的沉淀
  • 即使完全停止贡献,curMerit 最终也不会低于 minMerit

边界情况

当 curMerit = minMerit(即处于底部状态)时获取新 Merit x:

B' = (x + B) × B / B = x + B

底部值直接增加 x——这意味着在底部状态下获取的 Merit 会完全沉淀为底部值。

4.6 每批次独立衰减的实现

挑战

  • 每个 MeritPocket 需维护 Merit 批次列表
  • 查询当前值需遍历所有未完全衰减的批次
  • 链上存储和计算开销随批次数量线性增长

优化策略

  1. 批次合并:影响期限相近的批次定期合并,减少活跃批次数
  2. 链下计算:用 Rollup 在链下计算实时值,链上只存储快照和证明
  3. 批次沉淀:超过最大活跃批次数后,最老的批次自动沉淀为底部值
  4. 惰性计算:只在需要时(如投票、查询)才计算精确值

4.7 设计哲学

为什么选择指数衰减?

  • 激励持续贡献,而非一次性大额贡献后躺平
  • 反映贡献的时效性——越近期的贡献对当前信誉影响越大
  • 自然模拟社会记忆的衰退规律
  • 前期衰减快、后期趋缓,符合直觉

为什么需要非零底部?

  • 承认历史贡献的长期价值——过去的付出不会完全归零
  • 防止长期贡献者因短暂休息而丧失所有话语权
  • 底部值随累计贡献增长,奖励持续参与者

为什么每批次独立影响期限?

  • 不同贡献的时效性天然不同
  • 一次客服接待的影响可能只有 30 天
  • 一个开源项目的维护影响可能持续数年
  • 统一衰减速率会扭曲不同类型贡献的价值

4.8 讨论备注

MeriToken 模型的关键决策:

  • 指数衰减 + 非零底部:在"激励持续参与"和"尊重历史贡献"之间取得平衡
  • 每批次独立影响期限:增加实现复杂度,但更精确反映贡献时效差异
  • 底部值只增不减(除惩罚外):保护长期贡献者的基本权益
  • 初始值选择 e:数学美感与实用意义兼具

待进一步推敲:底部值更新公式在极端情况下的行为是否合理