BigShort Docs

精度と数学上の規約

一貫したトークン、native18, external6、bps、および固定点の合意は、契約全体実行から継続的なモデルを区別します。

まず「金額」と「生の整数」を区別する

コントラクトは浮動小数点の USDC や Token を保存しません。本文の 人間向け単位の例 では 1,000 USDCと記載し、 整数実装 と明記した数式ではオンチェーンの生の整数を用います。

記号整数式での単位例
T、a、bToken181 Token = 10¹⁸
Q、N、C、Anative18 USDC1 USDC = 10¹⁸
E、Rexternal6 USDC1 USDC = 10⁶
σ精度変換係数 10¹²通貨の為替レートではない
BPS比率の分母 10,000100 bps = 1%
PPM比率の分母 1,000,00010 ppm = 0.001%

ソースコードの ether は Solidity の数量接尾辞 10¹⁸ であり、本プロトコルが ETH をクォート資産に使うことを意味しません。現在のアダプテーションでは、ネイティブ Arc USDC と ERC-20 USDC インターフェースを 18/6 桁として扱います。この特性を任意の EVM ネットワークへそのまま一般化することはできません。

USDC の二つの精度間の変換

external6 から native18 への変換:

Q=Eσ,σ=1012

native18 からの切り捨て変換:

E=⌊Qσ⌋,ε=Qmodσ

ε は native18 dust です。正確な変換には次を満たす必要があります。

Qmodσ=0

例えば 1.234567890123456789 USDC を切り捨て変換すると 1.234567 USDCとなり、余りは 0.000000890123456789 USDCです。正確な変換パスを呼び出した場合、この入力は暗黙的に丸められず、拒否されます。

丸め記号

記号意味主な用途
floor(x) / ⌊x⌋切り捨て比率の進捗、部分分配、指数の累積
sqrtFloor(x)切り捨てた整数平方根リスクモデルの理論準備金
sqrtCeil(x)切り上げた整数平方根リスク容量における保守的な残存準備金
feeUp(A,f)=⌈Af10,000⌉

標準 V2 の正確な出力量に対する入力量は floor(ratio) + 1を用います。ratio がちょうど整数でも 1 を加えるため、無条件に ceil(ratio)へ置き換えることはできません。Quoter の最大実行可能枠も、このため厳密な境界を保持しています。

入れ替えられない演算順序

一般に:

⌊ab⌋c≠⌊acb⌋

固定小数点指数

TWAP の累積価格は 2¹¹² 、Funding と Legacy は 2¹²⁸ でスケーリングします。Funding の例:

ΔI=⌊rΔt2128106⋅86,400⌋,F=⌊NΔI2128⌋

指数は全体の累積率と個別ポジションの持分を分離するため、ポジションを毎秒ストレージへ書き込む必要がありません。二度の切り捨てにより、浮動小数点近似との差がごくわずかに生じ得ます。Legacy は高精度の余りも別途保持します。

時価総額の固定供給量基準

プロトコル内部の時価総額は カーブ供給量 S = 10 億 Token:

M=⌊QST⌋

総供給量 1,199,861,071 Token による FDV でも、流通供給量による指標でもありません。外部表示では、生の spot 時価総額と制限適用後のリスク時価総額を区別し、異なる指標を入れ替えないようにしてください。

BigShort Protocol · ARC発行 · 取引 · 空売り