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:數學美感與實用意義兼具
待進一步推敲:底部值更新公式在極端情況下的行為是否合理
