第四章 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:數學美感與實用意義兼具

待進一步推敲:底部值更新公式在極端情況下的行為是否合理