精度與數學約定
統一 Token、native18、external6、bps 與定點數口徑,避免把連續模型和合約整數執行混為一談。
先區分「金額」與「原始整數」
合約並不儲存浮點 USDC 或 Token。本文中的 人類單位範例 會寫 1,000 USDC;標記為 整數實作 的公式使用鏈上原始整數。
| 記號 | 整數公式中的單位 | 範例 |
|---|---|---|
T、a、b | Token18 | 1 Token = 10¹⁸ |
Q、N、C、A | native18 USDC | 1 USDC = 10¹⁸ |
E、R | external6 USDC | 1 USDC = 10⁶ |
σ | 精度轉換係數 10¹² | 不是貨幣匯率 |
BPS | 比例分母 10,000 | 100 bps = 1% |
PPM | 比例分母 1,000,000 | 10 ppm = 0.001% |
原始碼中的 ether 是 Solidity 的 10¹⁸ 數量後綴,不表示本協議以 ETH 作為報價資產。目前適配把原生 Arc USDC 與 ERC-20 USDC 介面按 18/6 位處理;該特性不可直接推廣到任意 EVM 網路。
USDC 雙精度轉換
從 external6 到 native18:
從 native18 向下轉換:
ε 是 native18 dust。精確轉換要求:
例如 1.234567890123456789 USDC 向下轉換得到 1.234567 USDC,餘數為 0.000000890123456789 USDC。如果呼叫的是精確轉換路徑,這個輸入會被拒絕,而不是靜默捨入。
捨入符號
| 符號 | 含義 | 常見用途 |
|---|---|---|
floor(x) / ⌊x⌋ | 向下取整 | 比例進度、部分分配、指數累計 |
sqrtFloor(x) | 向下取整的整數平方根 | 風險模型理論儲備 |
sqrtCeil(x) | 向上取整的整數平方根 | 風險容量中的保守剩餘儲備 |
標準 V2 精確輸出輸入量使用 floor(ratio) + 1。當 ratio 恰好為整數時,它仍加 1,因此不能無條件替換為 ceil(ratio)。Quoter 的最大可執行額度也為此保留了嚴格邊界。
不能交換的運算順序
一般而言:
定點指數
TWAP 累計價格使用 2¹¹² 縮放;Funding 與 Legacy 使用 2¹²⁸ 縮放。以 Funding 為例:
指數把全域累計率與單倉份額分開,使部位不必每秒寫入儲存。兩次向下取整可能使結果與浮點近似有極小差異;Legacy 還單獨保留高精度餘數。
市值的固定供應口徑
協議內部市值基於 曲線供應 S = 10 億 Token:
它不是以總供應 1,199,861,071 Token 計算的 FDV,也不是已流通供應口徑。對外展示時應區分原始 spot 市值與夾緊後的風險市值,避免把不同指標互換。