BLUEPRINT
第四章 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 批次列表
- 查询当前值需遍历所有未完全衰减的批次
- 链上存储和计算开销随批次数量线性增长
优化策略
- 批次合并:影响期限相近的批次定期合并,减少活跃批次数
- 链下计算:用 Rollup 在链下计算实时值,链上只存储快照和证明
- 批次沉淀:超过最大活跃批次数后,最老的批次自动沉淀为底部值
- 惰性计算:只在需要时(如投票、查询)才计算精确值
4.7 设计哲学
为什么选择指数衰减?
- 激励持续贡献,而非一次性大额贡献后躺平
- 反映贡献的时效性——越近期的贡献对当前信誉影响越大
- 自然模拟社会记忆的衰退规律
- 前期衰减快、后期趋缓,符合直觉
为什么需要非零底部?
- 承认历史贡献的长期价值——过去的付出不会完全归零
- 防止长期贡献者因短暂休息而丧失所有话语权
- 底部值随累计贡献增长,奖励持续参与者
为什么每批次独立影响期限?
- 不同贡献的时效性天然不同
- 一次客服接待的影响可能只有 30 天
- 一个开源项目的维护影响可能持续数年
- 统一衰减速率会扭曲不同类型贡献的价值
4.8 讨论备注
MeriToken 模型的关键决策:
- 指数衰减 + 非零底部:在"激励持续参与"和"尊重历史贡献"之间取得平衡
- 每批次独立影响期限:增加实现复杂度,但更精确反映贡献时效差异
- 底部值只增不减(除惩罚外):保护长期贡献者的基本权益
- 初始值选择 e:数学美感与实用意义兼具
待进一步推敲:底部值更新公式在极端情况下的行为是否合理
