仕組みの詳細
BACKの発行カーブ
確定した損失がトークンの供給になる仕組みを説明します。供給量はゼロから始まり、最初は固定、その後は下がっていくカーブに従います。所有者が切り替えた後は、損失のドルあたり現在の供給量の一定割合が発行されます。
二つのフェーズ
トークンの供給量はゼロから始まるので、最初から自分自身の割合として発行することはできません。そのため、発行は二つのフェーズで進みます。
- ローンチ時のカーブ(下記):固定レートの後、下がっていくテール。
- 供給量シェア方式:所有者がタイムロックを通じて有効にした時点から。切り替えは一度だけで、元に戻せません。切り替えの時点で、新しい方式の定数は、ドルあたりの限界発行量がそのまま続くように設定されます。
ローンチ時のカーブ
カーブには二つの領域があり、Tokenomicsコントラクトに三つのパラメーターがあります。固定レートのしきい値F = $500,000、固定レートR = ドルあたり100 BACK、テールのスケールS = $120,000,000です。カーブは二つの状態変数に従います。
T:記帳上のLP(支払能力とキュー)。マイナスになることもあります。H:テールの進み。これまでにテールで値付けされた発行ベースの累計で、増えるだけです。
rate = R while T < F (the flat region, including any negative T)
rate = R · (S / (S + H))² otherwise (the tail)
発行ベースは、確定した損失のうち対象となる部分(下記)で、記帳上のLPに加算される額と常に一致するわけではありません。精算では、ベースを二つの領域に分け、レートの積分を発行します。そのため、損失を分割しても、丸めによる数weiを超えて多く発行されることはありません。
T −= wins paid in the batch
flat = T < F ? min(basis, F − T) : 0 (a negative T leaves more flat room)
tail = basis − flat
r1 = S · 1e18 / (S + H)
r2 = S · 1e18 / (S + H + tail)
minted = flat · R / 1e18 + ((R · r1 / 1e18) · r2 / 1e18) · tail / 1e18
H += tail
T += what the LP received
一方向にしか進まないテール
Hは決して下がらない最高水準です。分配でLPのうち$500,000を超える価値がステーカーに渡されるとTは下がりますが、Hはそのままです。テールが一度進むと、レートはその分だけずっと低いままです。テールでの損失がSに等しくなると、その間にLPが何度ステーカーに払い出されていても、レートはRの四分の一になります。上のカーブをLPではなくHに対して描いているのはこのためです。
そのため、初期のトレーダーは後から来るトレーダーよりはるかに高いレートで発行を受けます。これは意図的なものです。
切り替え後:供給量の一定割合
切り替え後は、記帳上のLPがどうであれ、対象となる損失はすべて、発行ベースのドルあたりトークン供給量の一定割合を発行します。
c36 = R_now · 1e36 / supply_at_switch fixed once (R_now: the curve's marginal rate)
x = c36 · g / 1e36 g: the effective basis, below
minted = supply · (e^x / (1 + 1e−15) − 1) supply: the token supply before this mint
e^xはwad(小数点以下18桁)として計算され、結果はwadの1000 wei分、つまり約1e15分の一の余裕を取って少なめにされます。Hは増えなくなります。どのドルも、その時点の供給量の同じ割合を発行するので、供給量に上限はありません。累計の損失とともに増え、既存の保有分は同じ割合で希薄化します。
債務超過ボーナス
切り替え後は、ゼロを下回った記帳上のLPを埋め戻す損失が、多めに数えられます。
g_below0 = min(credit, −T) the part of what the loss adds to T that lands below zero
m = 1 + 4u(2 − u), u = min(1, t / 3 days)
g = basis + (m − 1) · g_below0
tは、記帳上のLPがゼロを下回ってからの時間です。mは3日をかけて一から5×まで上がり、Tがゼロを下回っている間はその値にとどまります。計時は、精算でTがゼロ未満になったときに始まり、精算でTがゼロ以上になったときにリセットされます。そのため、次にTがゼロを下回ったときは、ボーナスはまた一から始まります。損失の残りの部分は一回分として数えられます。
「損失」として数えるもの
- 負け決済、残高で建てたポジション、キューが空: 損失から2%の損失手数料を引き、決済した鍵が承認済みのビルダーを指定していればビルダー手数料も引いた額です。どちらもLPが受け取る額から差し引かれます。記帳上のLPも同じ額だけ増えます。
- 負け決済、キューに請求あり: 手数料はかからず、損失は別枠に入ります。ベースは損失の全額で、記帳上のLPも損失の全額だけ増えます。別枠が決めるのは、その現金がキューで待つ勝ちに先に支払われることだけです。
- 清算: キューの状態にかかわらず、失った証拠金の全額です。記帳上のLPは、清算手数料がかかる場合はそれを引いた証拠金の額だけ増えます。破産価格かそれより先で執行された決済は、同じベースで清算として精算されます。
- キューの請求で建てたポジション: 負け決済では、請求のうち消滅した部分から、損失手数料がかかる場合はそれを引いた額に対して発行します。清算では請求全体が消滅し、手数料はかからず、その全額に対して発行します。記帳上のLPも同じ額だけ動きます。
バッチと遅延した発行
複数のポジションをまとめて決済すると、発行はバッチ全体で一度だけ行われます。発行量は、各ポジションのベースに比例して最大剰余法で配分され、同点の場合は先のポジションに割り当てます。清算はポジションごとに発行します。
ExchangeはTokenomicsを固定のガス枠で呼び出します。この呼び出しが失敗しても決済は完了し、発行の入力が保存され、以降の発行はすべてその後ろで待ちます。そのため、元の順序で再実行すれば、直接実行した場合とまったく同じ量が発行されます。再実行は誰でも起動でき、当社のキーパーも実行します。