本頁面為社群翻譯版本,僅供參考;內容以英文原版為準。
查看英文原版 ↗

帳戶抽象模式

用戶的帳戶抽象模式決定了現貨和永續合約餘額如何交互,以及各種資產是否用作永續合約交易的抵押品。

支持的模式有:

  1. 統一帳戶(推薦大多數用戶使用):每種資產單一餘額。該餘額爲該資產的所有全倉倉位提供抵押,並與該資產的現貨餘額統一。例如,USDC 餘額是驗證者運營的永續合約、XYZ 永續合約以及以 USDC 爲計價資產的現貨交易的唯一來源。USDT 現貨餘額是 CASH 永續合約以及以 USDT 爲計價資產的現貨交易的唯一來源。
  2. 投資組合保證金(資金效率最高):統一所有合格資產(目前爲 HYPE、BTC、USDC、USDT)的單一投資組合。更多詳情請參見投資組合保證金。
  3. 手動 / 標準(推薦做市商、高頻自動化用戶以及部署者/Builder 使用):永續合約和現貨餘額分開,各 DEX 餘額分開。全倉保證金分別適用於每個 DEX。

還有一種已停用的模式,爲完整起見在此列出:

  1. DEX 抽象(已停用):USDC 餘額預設爲永續合約餘額,所有其他抵押品預設爲現貨餘額。重要提示:對於 DEX 抽象用戶,HIP-3 DEX 上的全倉保證金行爲並不直觀。

重要細節:

  1. Builder Code 地址必須處於標準模式才能累積 Builder 費用
  2. 投資組合保證金和統一帳戶每天限 5 萬次用戶操作。標準模式沒有此類限制。
  3. 對於 API 用戶,統一帳戶和投資組合保證金會在現貨清算所狀態中顯示所有餘額和持有量。各個永續合約 dex 的用戶狀態不再有意義。

有關切換帳戶抽象模式的代理籤名和用戶籤名操作的示例,請參見 Python SDK 和 API 文件。

統一帳戶比率

用於監控清算風險的精確統一帳戶比率的計算方法如下:

function computeUnifiedAccountRatio(
    multiverse: Record<string, { index: number; collateralToken: number }>,
    perpDexStates: Array<{
      clearinghouseState: {
        crossMaintenanceMarginUsed: number;
        assetPositions: Array<{
          position: { leverage: { type: string }; marginUsed: number };
        }>;
      };
    }>,
    spotBalances: Array<{ token: number; total: number }>,
  ): number {
    const indexToCollateralToken: Record<number, number> = {};
    for (const meta of Object.values(multiverse)) {
      indexToCollateralToken[meta.index] = meta.collateralToken;
    }

    const crossMarginByToken: Record<number, number> = {};
    const isolatedMarginByToken: Record<number, number> = {};

    for (let index = 0; index < perpDexStates.length; index++) {
      const dex = perpDexStates[index];
      const token = indexToCollateralToken[index];
      if (dex === undefined || token === undefined) continue;

      crossMarginByToken[token] =
        (crossMarginByToken[token] ?? 0) +
        dex.clearinghouseState.crossMaintenanceMarginUsed;

      for (const ap of dex.clearinghouseState.assetPositions) {
        if (ap.position.leverage.type === "isolated") {
          isolatedMarginByToken[token] =
            (isolatedMarginByToken[token] ?? 0) + ap.position.marginUsed;
        }
      }
    }

    let maxRatio = 0;
    for (const [tokenStr, crossMargin] of Object.entries(crossMarginByToken)) {
      const token = Number(tokenStr);
      const spotTotal = spotBalances.find((b) => b.token === token)?.total ?? 0;
      const isolatedMargin = isolatedMarginByToken[token] ?? 0;
      const available = spotTotal - isolatedMargin;
      if (available > 0) {
        maxRatio = Math.max(maxRatio, crossMargin / available);
      }
    }

    return maxRatio;
  }
英文官方來源: https://hyperliquid.gitbook.io/hyperliquid-docs/trading/account-abstraction-modes
原文擷取日期: · 鏡像建置日期: · 社群翻譯,以英文原版為準
非官方社群鏡像與翻譯,內容版權歸 Hyperliquid 所有,以英文原版為準。 來源: https://hyperliquid.gitbook.io/hyperliquid-docs/trading/account-abstraction-modes