Ончейн-матчинг
Книга ордеров NeutronX хранится в состоянии сети, а сводят её валидаторы в каждом блоке. Правила сведения одинаковы для всех участников и проверяются каждым валидатором.
Где происходит сведение
Пропозер берёт новые ордера из мемпула и сводит их с книгой. Получившиеся сделки он кладёт в первую транзакцию блока. Остальные валидаторы повторяют сведение и отклоняют блок при расхождении. Сделки рассчитываются в начале исполнения блока.
Подробнее - в «Архитектуре».
Приоритет
- Цена. Лучшая цена исполняется первой.
- Блок. На одном уровне цены раньше идёт ордер из более раннего блока.
- Порядок в блоке. Внутри одного блока раньше идёт ордер, который раньше стоит в блоке. Полями ордера, включая
client_id, очередь не сдвинуть.
Цена сделки
| Случай | Цена |
|---|---|
| Лимитные ордера пересеклись при сведении в блоке | Цена ордера, который раньше стоял в книге, если она в коридоре исполнения, иначе цена второго ордера |
| Рыночный ордер | Цена ордера в книге, с которым он сводится |
| Системные ордера: ликвидации, SL/TP, TWAP, POV, закрытие позиции | Цена ордера в книге, с которым он сводится |
Цена оракула и mark-цена никогда не задают цену сделки. Они нужны только для маржи, ликвидаций и срабатывания условных ордеров.
Следствие первой строки: ордер, который пересёк книгу позже, получает цену стоявшего в ней ордера, как на любой непрерывной книге.
Ценовые коридоры
| Коридор | Значение | Что ограничивает |
|---|---|---|
| Размещение | 50% от цены оракула | Как далеко от оракула можно выставить ордер |
| Исполнение | 1% от цены оракула, 0.5% для BTC и ETH | По какой цене сделка может пройти |
Ордер за коридором исполнения стоит в книге и исполнится, когда цена оракула приблизится. Коридоры задаются governance для каждого рынка.
Самоторговля и post-only
- Самоторговля. Ордер не сводится со встречным ордером того же владельца. Такой ордер пропускается, и сведение идёт дальше по книге.
- Post-only. Post-only никогда не забирает ликвидность. Если он исполнился бы сразу при размещении или позже из-за движения цены оракула, он отменяется.
Если расчёт сделки не прошёл
Каждая сделка рассчитывается отдельно. Если расчёт не проходит, например у одной стороны не хватает маржи, сделка отменяется целиком. Ордер стороны, из-за которой расчёт не прошёл, снимается с книги. Вторая сторона остаётся в книге.
Лимиты
| Лимит | Значение |
|---|---|
| Минимальный размер ордера | 10 USDC |
| Открытых ордеров на субаккаунт | 500 |
| Размещений и замен на адрес за блок | 30, каждый ордер пакета считается отдельно |
| Активных ордеров во всей сети | 500 000 |