コンテンツにスキップ
このページの翻訳は LLM によって生成されています。誤りに気づいた場合は GitHub で issue を開いてお知らせください。

状態変数

無期限先物コントラクトの状態変数を、参照しやすいよう機能別に整理しています。

変数型説明
PAIRSMap<(TokenIndex, MarketIndex), BorrowingData>ペアの借入データ
PAIR_GROUPSMap<(TokenIndex, MarketIndex), Vec<BorrowingPairGroup>>ペアの所属履歴
PAIR_OISMap<(TokenIndex, MarketIndex), OpenInterest>ペアのOI
GROUPSMap<(TokenIndex, GroupIndex), BorrowingData>グループの借入データ
GROUP_OISMap<(TokenIndex, GroupIndex), OpenInterest>グループのOI
INITIAL_ACC_FEESMap<(TokenIndex, Addr, UserTradeIndex), BorrowingInitialAccFees>取引の初期累積手数料

借入状態はレバレッジ手数料とリスクを追跡します。

  • PAIRS と GROUPS:料率と累積手数料などの借入パラメーター。ここでの GROUPS は BorrowingData を保存し、一般情報を保存する市場側の GROUPS とは別です。
  • PAIR_GROUPS:所属履歴。保有中の異なる手数料体系を正確に計算します。
  • PAIR_OIS と GROUP_OIS:ペア・グループのOI。上限確認と偏りに応じた動的料率に使います。
  • INITIAL_ACC_FEES:新規時の累積値。決済時の総額計算の基準です。
変数型説明
FEE_TIERSItem<[FeeTier; 8]>手数料ランク構造
PENDING_GOV_FEESMap<TokenIndex, Uint128>未分配ガバナンス手数料
VAULT_CLOSING_FEE_PItem<Decimal>ボールトの決済手数料割合
TRADER_DAILY_INFOSMap<Addr, HashMap<u64, TraderDailyInfo>>日次取引情報
PAIR_VOLUME_MULTIPLIERSMap<MarketIndex, Decimal>ペアの取引量倍率
TRADER_INFOSMap<Addr, TraderInfo>トレーダー情報
変数型説明
REFERRER_CODESMap<String, Addr>紹介コードからアドレス
REFERRER_CODES_REVERSEMap<Addr, String>紹介アドレスからコード
USER_REFERRERSMap<&Addr, Addr>利用者と紹介者の対応
REFERRER_FEESMap<(TokenIndex, &Addr), Uint128>紹介者の報酬
REFERRER_FEE_PERCENTAGEItem<[Decimal; 4]>紹介ランク別報酬率
REFERRER_FEE_TIERMap<Addr, u8>紹介者のランク
REFERREE_BASE_FEE_MULTIPLIERItem<Decimal>被紹介者の基本手数料倍率

手数料モジュールは動的なランク体系と紹介制度を実装します。

基本手数料管理:

  • FEE_TIERS:取引量に基づくランクで、大口利用者を促進します。
  • PENDING_GOV_FEES:ガバナンス手数料を累積し、透明に分配します。
  • VAULT_CLOSING_FEE_P:ボールトの保険・流動性への決済手数料配分。
  • TRADER_DAILY_INFOS と TRADER_INFOS:日次・累積データでローリング期間のランクを計算。
  • PAIR_VOLUME_MULTIPLIERS:市場別の重み付けで特定ペアや流動性の均衡を促進。

紹介制度: 紹介活動を通じた成長に報酬を支払います。

  • REFERRER_CODES と REFERRER_CODES_REVERSE:コードとアドレスの双方向対応。
  • USER_REFERRERS:利用者と紹介アドレス。
  • REFERRER_FEES:トークン別の紹介報酬累積。
  • REFERRER_FEE_PERCENTAGE と REFERRER_FEE_TIER:ランク別の割合。
  • REFERREE_BASE_FEE_MULTIPLIER:被紹介者の基本割引。
変数型説明
PERP_MARKETSMap<MarketIndex, MarketInfo>通貨ペア情報
GROUPSMap<GroupIndex, Group>市場グループ情報
FEESMap<FeeIndex, Fee>ペアの手数料情報
PAIR_CUSTOM_MAX_LEVERAGEMap<MarketIndex, Decimal>ペア固有の最大レバレッジ
AFTER_HOURS_LEVERAGEItem<Decimal>時間外の共通実効レバレッジ上限
AFTER_HOURS_MARKETSMap<MarketIndex, bool>時間外制御の対象市場
ORACLE_ADDRESSItem<Addr>オラクルアドレス
VAULT_ADDRESSESMap<(GroupIndex, TokenIndex), Addr>グループ・トークン別ボールトアドレス

取引の基盤を定義するモジュールです。

  • PERP_MARKETS:基軸・決済資産、オラクル・グループ・手数料インデックス。
  • GROUPS:似たリスクの市場をまとめる倍率上限・共通パラメーター。借入の BorrowingData を持つ GROUPS とは別です。
  • FEES:ペア別の新規・決済・トリガー手数料。
  • PAIR_CUSTOM_MAX_LEVERAGE:価格変動が大きい・流動性が薄いペアでグループ設定を上書き。
  • AFTER_HOURS_LEVERAGE と AFTER_HOURS_MARKETS:閉場をまたいだ設定市場の実効倍率を制限。
  • ORACLE_ADDRESS:約定・清算に使う価格コントラクト。
  • VAULT_ADDRESSES:グループ・トークン別アドレスで複数ボールトを管理。

MarketInfo は block_last_closed、block_last_opened、last_close_price も記録します。時間外制御はブロック値で持越しを判定し、last_close_price を時間外の決済価格には使いません。

変数型説明
OI_WINDOWS_SETTINGSItem<OiWindowsSettings>OI時間枠設定
WINDOWSMap<(WindowDuration, MarketIndex, WindowIndex), PairOi>時間枠別OI
PAIR_DEPTHSMap<MarketIndex, PairDepth>ペアの市場の厚み
TRADE_LAST_WINDOW_OIMap<(Addr, TradeInfoIndex), Uint128>取引の直近時間枠OI

市場の動きと過大な価格影響を管理します。

  • OI_WINDOWS_SETTINGS:動的影響の計算に使うOI時間枠の設定。
  • WINDOWS:期間内の累積影響を計算する過去のOI。時間枠を使い操作を防止。
  • PAIR_DEPTHS:大口影響計算に使う流動性で急変を防止。
  • TRADE_LAST_WINDOW_OI:変更・決済時に正確に更新するため、直近枠への寄与を記録。
変数型説明
COLLATERALSMap<TokenIndex, CollateralInfo>担保種類情報
USER_TRADE_INDEXMap<Addr, UserTradeIndex>利用者の次の取引インデックス
TRADESMap<(User, UserTradeIndex), Trade>個別取引情報
TRADE_INFOSMap<(User, TradeInfoIndex), TradeInfo>取引の追加情報
TRADER_STOREDMap<User, bool>トレーダー情報の保存状況
USER_LIVE_TRADE_COUNTSMap<User, u64>利用者の取引数
MINIMUM_POSITION_SIZE_USDItem<Decimal>USD建て最小ポジション
TRADING_ACTIVATEDItem<TradingActivated>現在の取引有効化状態

取引モジュールがプロトコルの主要機能を実装します。

取引管理:

  • COLLATERALS:名称、有効状態、デノムを定義して複数資産に対応。
  • USER_TRADE_INDEX:次の固有IDを追跡し重複を防止。
  • TRADES と TRADE_INFOS:サイズ、倍率、価格、時刻など手数料計算のデータ。

最適化と制御:

  • TRADER_STORED と USER_LIVE_TRADE_COUNTS:ガス代削減と効率的なID割当て。
  • MINIMUM_POSITION_SIZE_USD:経済的に成立する最低サイズと微小取引の防止。
  • TRADING_ACTIVATED:通常、決済のみ、停止の状態で緊急管理。