Skip to main content
這些頁面反覆給出四條主張:一次保證金計算可以脫離環境驗證、任何人都能重算一次自動減倉的選擇、資金費是推導出來的而不是定出來的、兩個誠實節點會產出逐位元組相同的結果。這種形狀的主張,在協議之外有人真的跑過一遍之前,一文不值。 這一頁講的就是怎麼跑。每一項檢查都寫明需要哪些輸入、輸入從哪來,以及同樣重要的:它不能證明什麼。
只需算術
公開資料,任一節點
你自己的全節點
一次保證金要求
一個強平價格
一次 ADL 選擇
一筆資金費
一個區塊,逐位元組
五項裡有兩項完全不需要連網:這些公式是對公開級距紀錄的純函式。

1 · 一次保證金要求

你需要什麼: 一份槓桿級距紀錄,加一個部位規模。沒有別的了。不需要節點,不需要連網,也不需要帳戶。 起始保證金和維持保證金都是名目價值與級距紀錄的純函式,公式和確切的捨入規則見槓桿: 起始保證金=名目價值×im_leverage×10exponent\text{起始保證金} = \text{名目價值} \times \text{im\_leverage} \times 10^{\text{exponent}} 維持保證金=max⁡ ⁣(名目價值×mm_leverage×10exponent−扣減額,  0)\text{維持保證金} = \max\!\left(\text{名目價值} \times \text{mm\_leverage} \times 10^{\text{exponent}} - \text{扣減額},\; 0\right) 級距紀錄發布在 API 參考的 DEX Config 分組裡——im_leverage、mm_leverage、共用的 exponent,以及每一級的 deduction。挑一個名目價值,在紙上把兩個式子算出來,再跟場所對同一個部位實際收的數對一下。 它證明了什麼: 這個要求是公開參數的一個公開函式,不是逐帳戶的判斷。 它沒有證明什麼: 級距紀錄本身定得好不好。那是治理問題,不是算術問題。
捨入是規範的一部分,不是容差。如果你的整數和場所的差一個單位,那麼兩者之中必有一個是錯的——先看清算所那頁的捨入規則,再判斷錯的是哪一個。

2 · 一個強平價格

你需要什麼: 同一份級距紀錄,加上你的餘額和部位。 門檻是一個比率,定義見強平: 保證金使用率=維持保證金淨擔保品\text{保證金使用率} = \frac{\text{維持保證金}}{\text{淨擔保品}} 淨擔保品是餘額加未實現損益,再減去掛單已經預留的部分。解出這個比率達到觸發點時的標記價,你就拿到了協議將會動手的那個價格——在它動手之前。 它證明了什麼: 觸發點可以提前從你自己的數字裡推出來。 它沒有證明什麼: 你實際會被平在什麼價。那取決於那一刻的訂單簿,並以破產價格為界。

3 · 一次自動減倉的選擇

你需要什麼: 某個市場的未平倉部位和標記價,從任何一個全節點都能取。 挑選依據是一個分數,定義見自動減倉: 排序分=未實現獲利百分比×有效槓桿\text{排序分} = \text{未實現獲利百分比} \times \text{有效槓桿} 從 Accounts 分組取某個市場的部位,從 Oracle 分組取認證價格,對獲利那一側的每個部位算出分數,然後排序。這個順序就是佇列。把你算出來的隊首跟介面上顯示的 ADL 指示燈比一比。 它證明了什麼: 佇列是公開狀態的函式。沒有人在挑,佇列裡也不存在你自己的算術找不到的部位。 它沒有證明什麼: 減倉不會輪到你。一個你能算出來的佇列,仍然是一個你可能身在其中的佇列。

4 · 一筆資金費

你需要什麼: 結算那一輪的訂單簿和認證指數價,加上你的部位。 費率在資金費率裡分三步搭出來——深度加權溢價,按該市場的結算間隔縮放,再箝制: P=max⁡(0,  深度加權買價−指數價格)  −  max⁡(0,  指數價格−深度加權賣價)指數價格P = \frac{\max(0,\; \text{深度加權買價} - \text{指數價格}) \;-\; \max(0,\; \text{指數價格} - \text{深度加權賣價})}{\text{指數價格}} F=F8h×週期秒數28,800Ffinal=clamp⁡ ⁣(F,  Fmin⁡,  Fmax⁡)F = F_{8h} \times \frac{\text{週期秒數}}{28{,}800} \qquad F_{\text{final}} = \operatorname{clamp}\!\left(F,\; F_{\min},\; F_{\max}\right) 然後是這筆費用本身: 資金費=部位數量×標記價格×資金費率\text{資金費} = \text{部位數量} \times \text{標記價格} \times \text{資金費率} 訂單簿來自 Markets 分組,認證指數來自 Oracle,協議實際扣的那筆錢來自 Accounts 分組裡的資金費支付介面。重算一遍,對一下。 它證明了什麼: 費率是從訂單簿和指數推導出來的,不是營運方定的。 它沒有證明什麼: 指數本身是對的。見預言機保證什麼、不保證什麼。

5 · 一個區塊,逐位元組

你需要什麼: 一個你自己的全節點。任何人都可以跑一個——見運行節點。
這是本頁唯一目前還跑不了的檢查。在公開存取開放之前,網路運行在一個私有測試網上,所以前四項現在就能跑,這一項到那時才能跑。把它列在這裡,是因為另外四項的價值全部壓在它上面。
其餘四項都壓在這一項上。取一個已提交的區塊和它的前置狀態,執行一遍,把你的結果和網路的比對。這裡的確定性是被強制的,不是被指望的:執行路徑讀不到牆鐘、執行期熵、浮點數,也讀不到雜湊隨機化的迭代順序,所以出現分歧就是缺陷,不是容差。見為什麼結果是可重現的。 有兩條性質讓這件事是真的檢驗而不是走過場。定序是共識提交的物件,所以你重放的次序是法定人數簽過名的那一份,不是你的節點自己推斷出來的。而價格由同一批簽名提交,所以不存在一個窗口,能讓你對著網路沒有認證過的價格去重放。 它證明了什麼: 你被餵到的狀態,是按已公布的規則、在網路提交過的輸入上產出的。 它沒有證明什麼: 規則本身沒有缺陷。逐位元組重現一個 bug,重現出來的仍然是那個 bug——這正是稽核和漏洞獎金要和這件事並存的原因。

這些都覆蓋不到的部分

驗證為「必須交給信任的東西」封頂,但它消不掉信任。剩下的部分——驗證者集合、價格法定人數、治理對參數的觸及範圍,以及跨鏈橋——列在信任假設那一頁。如果你來這裡是想找邊界而不是找保證,下一頁就讀那個。

後續閱讀

信任假設

所有能查的都查完之後,還剩下什麼。

運行節點

硬體、同步,以及一個驗證者實際在跑什麼。

IntentionKernel

讓重放這件事有意義的那四重封閉。

API 參考

上面點到的每一項輸入的欄位級細節。