Мы закончили этап исследований и разработки по задаче ускорения операций в блокчейне TON.
Цель — сделать так, чтобы операции занимали меньше одной секунды, не жертвуя масштабируемостью, безопасностью и децентрализацией.
В результате мы нашли три направления, которые вместе дают нужный эффект.
1. Базовый уровень (L1)
Главное изменение — новый консенсус Catchain 2.0.
Он заменяет текущую связку Catchain + BCP и основан на современных протоколах Simplex и Alpenglow, адаптированных под TON.
Проще говоря, это то, как валидаторы договариваются между собой и принимают новые блоки.
С новым консенсусом финализация блока занимает 200–400 миллисекунд вместо ~2.5 секунд раньше — при том же уровне безопасности.
Говоря о безопасности — дополнительный плюс этих протоколов в том, что они хорошо известны, а значит их проще аудировать.
Второе важное изменение — новый сетевой протокол рассылки блоков (two-step broadcast).
Мы сократили время доставки блока между узлами по сети примерно с 700 миллисекунд до ~100 миллисекунд.
Также были сделаны дополнительные оптимизации в C++ реализации узла TON:
— сжатие блоков при передаче,
— параллельная валидация,
— обмен данными между валидаторами не только через RLDP2, но и по TCP или QUIC. По результатам тестов возможен переход на один из этих протоколов.
Параллельно мы доработали внутренние инструменты статистики, бенчмарков и замеров для блокчейна и API.
2. API
Оптимизировали Toncenter API. Теперь статус операции через Streaming API V2 приходит с задержкой 30–100 миллисекунд.
Кроме того, появилось больше статусов операций:
confirmed — блок появился в шардчейне,
finalized — блок принят в мастерчейне.
Раньше был только один статус — finalized.
3. UX
Операция со статусом confirmed имеет менее 1% вероятности отката, поэтому приложения могут показывать её пользователю сразу, не заставляя ждать.
Пользователь сразу может продолжать делать следующие операции, а позже приложение просто отметит, что операция окончательно финализирована.
По сути, это аналог подтверждений блоков в других блокчейнах: операция видна после первого блока, а полная финализация наступает позже.
Это хорошее дополнение к моментальным pending-операциям, которые мы сделали в UX-обновлении прошлого года.
Все части по отдельности уже готовы. Сейчас мы собираем их воедино и далее начинаем тестирование в тестовой сети TON.