跳转到内容
本页面的翻译由 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:名称、启用状态和 denom,支持多资产。
  • USER_TRADE_INDEX:追踪下一可用 ID,防止冲突。
  • TRADES 和 TRADE_INFOS:保存规模、杠杆、价格和时间等费用计算数据。

优化与控制:

  • TRADER_STORED 和 USER_LIVE_TRADE_COUNTS:降低 Gas 成本,高效分配交易 ID。
  • MINIMUM_POSITION_SIZE_USD:设最低规模,保证经济可行性并防止尘埃交易。
  • TRADING_ACTIVATED:支持正常、仅平仓、暂停等紧急状态。