Skip to main content
Эти страницы раз за разом делают четыре утверждения: что маржинальный расчёт проверяется изолированно, что отбор для автоделевериджа может пересчитать кто угодно, что ставка финансирования выводится, а не назначается, и что два честных узла дают побайтно одинаковый результат. Утверждение такой формы ничего не стоит, пока кто-то вне протокола не выполнил его сам. Эта страница — о том, как. Каждая проверка называет входные данные, откуда они берутся и — что не менее важно — что она не доказывает.
Одна арифметика
Публичные данные, любой узел
Собственный полный узел
Маржинальное требование
Цена ликвидации
Отбор для автоделевериджа
Платёж финансирования
Блок, побайтно
Двум из пяти сеть не нужна вовсе: это чистые функции над опубликованной записью ступеней.

1 · Маржинальное требование

Что нужно: запись ступеней плеча и размер позиции. Больше ничего. Ни узла, ни сети, ни счёта. Начальная и поддерживающая маржа — чистые функции номинала и записи ступеней; формулы и точное округление приведены на странице Плечо: IM=номинал×im_leverage×10exponent\text{IM} = \text{номинал} \times \text{im\_leverage} \times 10^{\text{exponent}} MM=max⁡ ⁣(номинал×mm_leverage×10exponent−вычет,  0)\text{MM} = \max\!\left(\text{номинал} \times \text{mm\_leverage} \times 10^{\text{exponent}} - \text{вычет},\; 0\right) Записи ступеней публикуются в группе DEX Config справочника API — im_leverage, mm_leverage, общий exponent и deduction для каждой ступени. Возьмите номинал, вычислите оба выражения на бумаге и сравните с тем, что площадка берёт с такой же позиции. Что доказывается: требование — опубликованная функция от публичных параметров, а не решение по каждому счёту отдельно. Что не доказывается: что сама запись ступеней выбрана удачно. Это вопрос управления, а не арифметики.
Округление — часть спецификации, а не допуск. Если ваше целое расходится с площадкой на единицу, одно из двух неверно; прежде чем решать какое, посмотрите правила округления на странице Клиринговая палата.

2 · Цена ликвидации

Что нужно: та же запись ступеней плюс ваш баланс и позиция. Порог — это коэффициент, определённый на странице Ликвидации: коэффициент=поддерживающая маржачистое обеспечение\text{коэффициент} = \frac{\text{поддерживающая маржа}}{\text{чистое обеспечение}} Чистое обеспечение — это баланс плюс нереализованный P&L минус то, что зарезервировали стоящие ордера. Решите относительно маркировочной цены, при которой коэффициент достигает порога, и вы получите цену, на которой протокол сработает, — до того, как он сработает. Что доказывается: порог выводится заранее из ваших собственных чисел. Что не доказывается: цену, по которой вас действительно закроют: она зависит от стакана в тот момент и ограничена ценой банкротства.

3 · Отбор для автоделевериджа

Что нужно: открытые позиции и маркировочные цены по одному рынку — с любого полного узла. Отбор — это балл, определённый на странице Автоделеверидж: ADL-балл=нереализованная прибыль, %×фактическое плечо\text{ADL-балл} = \text{нереализованная прибыль, \%} \times \text{фактическое плечо} Возьмите позиции рынка из группы Accounts, удостоверенную цену из группы Oracle, посчитайте балл для каждой позиции на прибыльной стороне и отсортируйте. Этот порядок и есть очередь. Сравните голову вашей очереди с индикатором ADL, который показывает интерфейс. Что доказывается: очередь — функция публичного состояния. Никто не выбирает, и в ней нет позиции, которую не нашла бы ваша собственная арифметика. Что не доказывается: что автоделеверидж до вас не дойдёт. Очередь, которую вы умеете посчитать, — всё ещё очередь, в которой вы можете стоять.

4 · Платёж финансирования

Что нужно: стакан и удостоверенный индекс на раунд расчёта плюс ваша позиция. Ставка собирается в три шага на странице Финансирование — премия, взвешенная по глубине, масштабирование под интервал рынка, затем зажим: P=max⁡(0,  DW-бид−индекс)  −  max⁡(0,  индекс−DW-аск)индексP = \frac{\max(0,\; \text{DW-бид} - \text{индекс}) \;-\; \max(0,\; \text{индекс} - \text{DW-аск})}{\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 · Блок, побайтно

Что нужно: собственный полный узел. Запустить его может кто угодно — см. Запуск узла.
Это единственная проверка на странице, недоступная сегодня. До открытия публичного доступа сеть работает на приватном тестнете, так что первые четыре можно выполнить уже сейчас, а эта станет выполнимой тогда. Она здесь потому, что остальные четыре стоят ровно столько, сколько стоит она.
На этой проверке держатся остальные четыре. Возьмите зафиксированный блок и предшествующее состояние, исполните его и сравните свой результат с сетевым. Детерминизм здесь обеспечен, а не понадеян: путь исполнения не читает ни часов, ни энтропии времени выполнения, ни плавающей точки, ни рандомизированного хешем порядка обхода, поэтому расхождение — это дефект, а не допуск. См. Почему результат воспроизводим. Два свойства делают это настоящей проверкой, а не церемонией. Порядок — объект, зафиксированный консенсусом, поэтому последовательность, которую вы повторяете, подписана кворумом, а не выведена вашим узлом. А цены зафиксированы теми же подписями, так что нет окна, в котором можно было бы повторить исполнение против цены, которую сеть не удостоверила. Что доказывается: что состояние, которое вам отдают, получено по опубликованным правилам на входных данных, зафиксированных сетью. Что не доказывается: что сами правила без дефектов. Точно воспроизвести баг — значит всё равно воспроизвести баг; поэтому рядом с этим существуют аудиты и программа вознаграждений.

Что всё это не покрывает

Проверка ограничивает то, что приходится принимать на веру, но не устраняет этого. Что остаётся — набор валидаторов, кворум по ценам, досягаемость управления до параметров и мост — перечислено на странице Допущения о доверии. Читайте её следующей, если пришли за границами, а не за гарантиями.

Что дальше

Допущения о доверии

Что остаётся, когда проверено всё проверяемое.

Запуск узла

Железо, синхронизация и то, что валидатор действительно запускает.

IntentionKernel

Четыре замыкания, которые придают повтору смысл.

Справочник API

Детали на уровне полей для каждого названного выше входа.