仕組みの詳細
支払能力とキュー
LPは一時的に債務超過になることがあります。先入れ先出しの支払いキューと、キューのために確保した資金の別枠によって、新しい取引を止めることなく、勝った人に順番どおり支払われることが保証されます。
モデル
ExchangeはLPの会計をいくつかの区分で管理しています。
- LPの現金: ExchangeのUSDCのうち、ほかの誰にも負っていない部分です。保有額の全体から、各アカウントの空き残高、保有ポジションにロックされた証拠金、未払いの手数料を差し引いた残りがLPの現金です。マイナスにはなりません。まだ受け取られていないビルダー手数料は、LPの負債としてLPの現金の中に残ります。記帳上のLPはすでに支払い済みとして数えており、ビルダーの受け取りはLPの現金から支払われ、支払えない場合はキューに入ります。
- 別枠: キューに請求がある間に入った損失による資金で、LPの現金の中でキュー用に確保されています。ハーベストは最初にここを使います。
- 支払いキュー: 未払いの勝ちを先入れ先出しで並べたリストで、それぞれがアカウントと金額を持ちます。
- ポジション内の負債: 保有ポジションの証拠金のうち、キューの請求でまかなった分です。
事前に資金を入れたLPが勝った人にその場で支払うのではなく、プロトコルは現金が足りないときに勝った人をキューに並べ、その後の損失でLPが補充されるにつれて支払います。トークンの発行レートが参照する数値である記帳上のLPは、どの操作でも保たれる恒等式によって、各区分と結びついています。
tracked LP = LP cash − queued claims − debt in positions
マイナスになることもあります。それこそが、キューが存在する理由である一時的な債務超過の状態です。
キューに入るのは、決済でLPが負う額のうち、その時点で支払えない分だけです。残高で建てたポジションなら勝ち手数料を引いた後の支払額、キューから建てたポジションなら残った請求です。次の三つはキューに入りません。
- 残高で建てたポジションの証拠金: すぐに空き残高に戻り、出金にも再利用にも使えます。
- キューで待つ勝ちより先に払われる手数料: 勝った人は全員勝ち手数料を払いますが、それがステーカーとチームに届くのは、キューが空で、LPの現金でもまかなえるときだけです。そうでなければLPに残ります。キューに何かある間は、損失手数料と清算手数料は免除されます。ビルダー手数料は勝ち手数料や損失手数料と一緒に差し引かれ、同じルールに従います。
- キューに請求がある間の損失: 自由に使えるLPの現金にはならず、別枠に確保されます。それでも精算時には、全額が記帳上のLPを押し上げます。
勝ち決済
2%の勝ち手数料は、LPの状態にかかわらず支払額から差し引かれます。その後は次のとおりです。
- キューが空のとき: 支払額を上限に、LPの現金から支払われます。手数料がステーカーとチームに回るのは、LPの現金でそれもまかなえる場合だけで、そうでなければLPに残ります。
- LPの現金で支払えなかった分、またはすでにキューに請求がある場合は支払額の全体が、あなたの名義でキューの最後尾に加わります。キューに入った分について、LPの現金は変わりません。
キューの請求で建てたポジションも同じように精算されますが、LPが負うのは残った請求の全体です。勝ちなら証拠金と支払額の合計、負け決済なら証拠金から損失を引いた額です。建てるときに使った請求は担保であって、あなたが持っていたお金ではありません。
負け決済と清算
残高で建てたポジションが損失で決済されるか、清算された場合は次のとおりです。
- キューが空のとき: 損失から手数料(決済なら2%、清算なら証拠金の2%)を引いた額が、LPの現金になります。
- キューに請求があるとき: 資金はExchangeに残りますが、キューで待つ勝ちのための別枠に入り、手数料はかかりません。それでも精算時には記帳上のLPに数えられ、その分のBACKも発行されます。
キューの請求で建てたポジションの損失は、現金をもたらしません。請求のうち消滅した部分は単に支払い義務がなくなるだけなので、LPの現金にも別枠にも何も入りません。負け決済では、残った請求は勝ちと同じように支払われるかキューに入り、損失手数料がかかるのは、キューが空で、LPの現金が請求と手数料の両方をまかなえるときだけです。清算は請求全体を消滅させ、手数料はかかりません。
ハーベスト
ハーベストは、キューの請求を先頭から支払います。
- キューを先頭からたどり、キュー用に使える現金で各請求を支払います。最後に届いた請求は一部だけ支払われることがあります。
- 支払った額は、まず別枠から引き落とします。キューが空になる前に現金が尽きたら、そこで止まります。後の損失が後のハーベストの資金になります。
- キューが空になったときに別枠に残りがあれば、その残りを通常のLPの現金に戻します。ハーベストも戻しも記帳上のLPを変えません。キューの請求はすでに差し引かれているからです。
ハーベストはパーミッションレスで、呼び出した人に報酬はありません。一回の呼び出しで支払えるのは最大64件です。当社のキーパーが、支払える現金があればいつでも32件で呼び出すので、ほかの誰かが呼ぶ必要はありません。
最も新しい請求がすでにあなたのもので、そこへあなたの別の勝ちがキューに入ると、二つは一つの請求にまとめられます。支払いの順番は変わりません。キューの請求で建てる新規建ては、あなたの最も新しい請求から順に、さかのぼって最大50件まで使います。こうして空になった請求は隙間として残り、ハーベストはそこを飛ばします。
不変条件
- LPの現金と別枠は符号なしなので、どちらもマイナスにはなりません。
- キューに何かある間は、新しい支払いに使える現金はゼロです。そのため、新しく勝った人が先に勝った人より先に支払われることは決してありません。
- 記帳上のLPは、LPの現金からキューの請求とポジション内の負債を引いたものに等しくなります。マイナスになることもあり、それは設計上の一時的な債務超過です。
- ステーカーへの分配では、常に裏付けのあるステーカーの手数料と、LPのうち$500,000を超える価値があればそれを受け取ります。その超過分は、キューが空ならLPの現金から支払われ、そうでなければステーキングコントラクト名義でキューに入ります。
インデクサーは毎ブロックの後にこれらの恒等式を確認し、どれか一つでも成り立たなければデータの提供を止めます。
ユーザーから見えるもの
通常の建玉上限と、一回の新規建てで使える請求の数の制限を除けば、ポジションを建てることはキューの影響を受けません。勝ち決済では、LPの状態に応じて、すぐに支払われるかキューに並びます。アプリには利用可能残高(支払い済み)とキューの残高(ハーベスト待ち)が表示されます。キューの請求は証拠金として使えるので、どちらも新しいポジションの資金にできます。