Skip to main content
Intention не использует внешний комитет оракулов. Оракул — это сам набор валидаторов. Каждый валидатор строит собственное представление о цене каждого инструмента, подписывает его, а сеть сертифицирует результат в том же событии консенсуса, которое фиксирует транзакции, рассчитываемые по этой цене. Шага здесь два, и отвечают они на разные вопросы. Агрегация спрашивает, сколько стоит этот инструмент, и происходит у каждого валидатора отдельно, вне пути консенсуса. Сертификация спрашивает, о какой стоимости в этом раунде сеть договорилась, и происходит внутри консенсуса.
У каждого валидатора — вне пути консенсуса
Внутри консенсуса
Торговые площадки
Оракульный sidecarу каждого валидатора
Валидатор проверяет и подписывает
Gossip между валидаторами
Сертификация по эпохам и раундам
Переносятся в блок
Ядро — маркировочная цена · маржа · ликвидация · расчёт финансированиярассчитывает по ценам, зафиксированным в том же событии консенсуса

Получение индексной цены

Каждый валидатор запускает собственный оракульный sidecar, который собирает данные с нескольких торговых площадок и сводит их к одной индексной цене на инструмент. Свёртка намеренно устроена не как простое среднее: среднее сдвигается одним плохим источником без всякого труда.
Фильтрнеконечные и некорректные значения
Медианапо источникам
Зажимкаждый источник: медиана ± полоса
Веспо спреду и стабильности
Потолокпо уровню площадки
Индексная цена
Порядок и есть замыселФильтр идёт первым: одно бесконечное значение, дожившее до медианы или взвешенной суммы, портит всё дальше. Зажим вместо отбрасывания сохраняет каждый источник в счёте, ограничивая, насколько далеко любой из них может утянуть.
Не простое среднее — среднее легко сдвинуть одним плохим источником
Фильтр. Неконечные и некорректные значения отбрасываются раньше, чем успеют попасть куда-то дальше. Порядок здесь важен: одно бесконечное значение, дожившее до медианы или взвешенной суммы, портит весь результат. Зажим к медиане. По источникам берётся медиана, а затем каждый источник зажимается в полосу вокруг неё. Полоса задаётся по инструменту и тем уже, чем глубже рынок: Источник, котирующий вне своей полосы, не отбрасывается — его подтягивают к краю полосы. Различие существенное: отбрасывание позволяет атакующему сузить выборку, а при зажиме учитываются все источники, но ограничено, насколько далеко любой из них может утянуть результат. Вес по качеству, затем потолок. Зажатые источники сводятся взвешенным средним, а не поровну. Вес растёт с качеством котировки — чем уже спред, тем больше вес — и со стабильностью, которую измеряют сравнением недавнего объёма с более длинным дневным средним: нетипичный всплеск объёма не должен давать площадке лишнего влияния. Затем веса ограничиваются потолком по уровню источника, чтобы ни одна площадка не могла в одиночку определять результат, как бы хорошо ни выглядели её котировки: Инструменты, котируемые в разных валютах, приводятся к общей валюте котировки ещё до всего этого, чтобы медиана бралась по сопоставимым числам, а не по смеси номиналов.
Каждая константа здесь — вопрос политики, а не природная постоянная. Полосы отклонения, назначение уровней и потолки весов — это конфигурация, и именно эти рычаги подкручивают, когда меняется поведение площадки или добавляется новый источник.

Сертификация

Индексная цена, которую выдаёт sidecar, — мнение одного валидатора. В то, по чему сеть может вести расчёты, она превращается уже в консенсусе. Валидатор забирает цену из собственного sidecar и проверяет её до подписи — в том числе на свежесть относительно настроенного порога, так что зависший sidecar не отправляет устаревшую цену: он не отправляет ничего. Затем он подписывает данные о цене и рассылает их другим валидаторам через gossip как сообщение сети консенсуса. Сертифицированные цены собираются по эпохам и раундам и переносятся в предложение блока. Поэтому подписи, фиксирующие транзакции блока, фиксируют и цены, по которым эти транзакции рассчитаны: отдельной оракульной транзакции нет, и нет окна между публикацией цены и её использованием. Валидатор не может предложить блок без валидных наблюдений цен за раунд. Доступность цены — предусловие производства блока, а не входные данные, которые исполнение надеется найти.

Индексная цена и маркировочная цена

Сертифицированная цена — это индексная цена, взгляд сети на внешний рынок. Это не та цена, по которой исполняются сделки. Ядро выводит из неё маркировочную цену — сглаженную и ограниченную, чтобы краткий сбой в индексе не обернулся каскадом ликвидаций. Именно маркировочная цена и используется в марже, ликвидации и расчёте финансирования. Взгляд со стороны торговли — см. Маркировочная цена и Индексная цена.

Что это гарантирует и чего не гарантирует

Гарантируется, что цена, по которой рассчитана транзакция, была сертифицирована кворумом валидаторов в том раунде, который зафиксировал транзакцию, и что ни один путь исполнения не мог прочитать другую. Не гарантируется, что цена была верной. Если сами площадки, из которых собран индекс, ошибаются — из-за согласованного движения на нескольких сразу или общерыночного сбоя, — зажим и взвешивание ограничивают, насколько далеко один источник может утянуть результат, но взять информацию, которой у рынка не было, они не могут.
Цена — самый весомый внешний вход торговой системы. Устойчивость к манипуляциям здесь — вопрос степени, а не бинарное свойство. Что остаётся уязвимым — см. Раскрытие рисков.

Что дальше

IntentionBFT

Как сертификация вшивается в те же подписи, что фиксируют блок.

Клиринговая палата

Что маржа, ликвидация и расчёт финансирования делают с ценой.

Маркировочная цена

Как индекс превращается в число, которое двигает позиции.

Раскрытие рисков

Где остаётся ценовой риск и во что он может обойтись.