本页面的翻译由 LLM 生成。如果你发现翻译有误,请在 GitHub 上提交 issue 告诉我们。
状态变量
本页按功能模块整理永续合约状态变量,便于查阅。
| 变量 | 类型 | 说明 |
|---|---|---|
PAIRS | Map<(TokenIndex, MarketIndex), BorrowingData> | 交易对借贷数据 |
PAIR_GROUPS | Map<(TokenIndex, MarketIndex), Vec<BorrowingPairGroup>> | 交易对组归属历史 |
PAIR_OIS | Map<(TokenIndex, MarketIndex), OpenInterest> | 交易对 OI |
GROUPS | Map<(TokenIndex, GroupIndex), BorrowingData> | 组借贷数据 |
GROUP_OIS | Map<(TokenIndex, GroupIndex), OpenInterest> | 组 OI |
INITIAL_ACC_FEES | Map<(TokenIndex, Addr, UserTradeIndex), BorrowingInitialAccFees> | 交易初始累计费用 |
借贷状态追踪杠杆费用和风险敞口。
PAIRS和GROUPS:保存费率、累计费用等借贷参数。这里的GROUPS保存BorrowingData,与交易模块保存一般组信息的GROUPS不同。PAIR_GROUPS:保存归属历史,准确处理持仓期间不同费率结构。PAIR_OIS和GROUP_OIS:追踪两层 OI,用于限制敞口和按偏差动态计费。INITIAL_ACC_FEES:记录开仓时的累计费用,作为平仓总费用的基准。
| 变量 | 类型 | 说明 |
|---|---|---|
FEE_TIERS | Item<[FeeTier; 8]> | 费用等级结构 |
PENDING_GOV_FEES | Map<TokenIndex, Uint128> | 待分配治理费用 |
VAULT_CLOSING_FEE_P | Item<Decimal> | 金库平仓费比例 |
TRADER_DAILY_INFOS | Map<Addr, HashMap<u64, TraderDailyInfo>> | 每日交易信息 |
PAIR_VOLUME_MULTIPLIERS | Map<MarketIndex, Decimal> | 交易对交易量乘数 |
TRADER_INFOS | Map<Addr, TraderInfo> | 交易者一般信息 |
| 变量 | 类型 | 说明 |
|---|---|---|
REFERRER_CODES | Map<String, Addr> | 推荐码到推荐人地址 |
REFERRER_CODES_REVERSE | Map<Addr, String> | 推荐人地址到推荐码 |
USER_REFERRERS | Map<&Addr, Addr> | 用户到推荐人 |
REFERRER_FEES | Map<(TokenIndex, &Addr), Uint128> | 推荐人费用收益 |
REFERRER_FEE_PERCENTAGE | Item<[Decimal; 4]> | 推荐人各等级分成比例 |
REFERRER_FEE_TIER | Map<Addr, u8> | 推荐人到费用等级 |
REFERREE_BASE_FEE_MULTIPLIER | Item<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_MARKETS | Map<MarketIndex, MarketInfo> | 交易对信息 |
GROUPS | Map<GroupIndex, Group> | 交易组信息 |
FEES | Map<FeeIndex, Fee> | 交易对费用信息 |
PAIR_CUSTOM_MAX_LEVERAGE | Map<MarketIndex, Decimal> | 交易对自定义最高杠杆 |
AFTER_HOURS_LEVERAGE | Item<Decimal> | 全局非交易时段有效杠杆上限 |
AFTER_HOURS_MARKETS | Map<MarketIndex, bool> | 非交易时段杠杆控制市场 |
ORACLE_ADDRESS | Item<Addr> | 预言机合约地址 |
VAULT_ADDRESSES | Map<(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 作为结算价。
价格影响与未平仓量
Section titled “价格影响与未平仓量”| 变量 | 类型 | 说明 |
|---|---|---|
OI_WINDOWS_SETTINGS | Item<OiWindowsSettings> | OI 窗口设置 |
WINDOWS | Map<(WindowDuration, MarketIndex, WindowIndex), PairOi> | 各窗口 OI |
PAIR_DEPTHS | Map<MarketIndex, PairDepth> | 交易对市场深度 |
TRADE_LAST_WINDOW_OI | Map<(Addr, TradeInfoIndex), Uint128> | 交易最近窗口的 OI |
该模块管理市场动态,防止过大价格影响。
OI_WINDOWS_SETTINGS:追踪时间窗口 OI,计算动态影响。WINDOWS:历史 OI 用于累计影响,时间窗口机制防止操纵。PAIR_DEPTHS:大额价格影响所需的流动性数据,防止突然价格变化。TRADE_LAST_WINDOW_OI:记录交易对最近活跃窗口的贡献,准确处理平仓和修改。
| 变量 | 类型 | 说明 |
|---|---|---|
COLLATERALS | Map<TokenIndex, CollateralInfo> | 抵押资产类型信息 |
USER_TRADE_INDEX | Map<Addr, UserTradeIndex> | 用户下一交易索引 |
TRADES | Map<(User, UserTradeIndex), Trade> | 各交易信息 |
TRADE_INFOS | Map<(User, TradeInfoIndex), TradeInfo> | 交易附加信息 |
TRADER_STORED | Map<User, bool> | 交易者信息是否已保存 |
USER_LIVE_TRADE_COUNTS | Map<User, u64> | 用户交易数 |
MINIMUM_POSITION_SIZE_USD | Item<Decimal> | USD 最低仓位规模 |
TRADING_ACTIVATED | Item<TradingActivated> | 当前交易启用状态 |
交易模块构成协议核心功能。
交易管理:
COLLATERALS:名称、启用状态和 denom,支持多资产。USER_TRADE_INDEX:追踪下一可用 ID,防止冲突。TRADES和TRADE_INFOS:保存规模、杠杆、价格和时间等费用计算数据。
优化与控制:
TRADER_STORED和USER_LIVE_TRADE_COUNTS:降低 Gas 成本,高效分配交易 ID。MINIMUM_POSITION_SIZE_USD:设最低规模,保证经济可行性并防止尘埃交易。TRADING_ACTIVATED:支持正常、仅平仓、暂停等紧急状态。