Архитектура
Tycho — высокопроизводительный протокол для построения L1/L2 TVM-совместимых блокчейн-сетей. Ключевая идея — разделение на стадии получения сообщений, исполнения и верификации. Это позволяет:
- получать согласованную очередь внешних сообщений без исполнения транзакций и загрузки состояния;
- создавать блоки параллельно на каждой ноде без ожидания сетевого подтверждения;
- проверять финальность через подписи на хэш мастер-блока.
Tycho использует DAG-подход при приёме и упорядочивании сообщений. DAG (directed acyclic graph) — ориентированный граф без циклов, вершины которого можно детерминированно упорядочить.
Компоненты и роли
1) DAG-мемпул и консенсус
DAG-мемпул (мэмпул на основе DAG) — это стадия, на которой валидаторы принимают и упорядочивают внешние сообщения (external) без исполнения транзакций.
- Пользователи отправляют внешние (external) сообщения нодам в активном сете валидаторов.
- Эти ноды публикуют сообщения в консенсус-протокол и получают одинаковую очередь внешних сообщений примерно раз в секунду.
- Для работоспособности консенсус требует, чтобы не менее 2F+1 из 3F+1 участников соблюдали требования протокола.
- На этапе консенсуса транзакции не исполняются и состояние блокчейна не изменяется, что снижает сетевые и вычислительные затраты.
- После согласования очередь дедуплицируется (удаляются дубликаты) и передаётся в коллатор.
DAG-мемпул — первая из двух фаз Tycho: на первой фазе согласуется порядок внешних сообщений, на второй фазе эти сообщения исполняются коллатором. DAG-мемпул предоставляет коллаторам общий набор внешних сообщений и выступает как буфер, устойчивый к произвольному поведению менее 1/3 участников.
2) Коллатор
Коллатор исполняет внутренние (internal) и внешние (external) сообщения, формирует блоки и изменяет состояние блокчейна. Для работы ему нужны:
- входящая очередь внешних сообщений от консенсуса (DAG-мемпула);
- текущее состояние блокчейна.
Коллатор не требует сетевого согласования, поэтому может непрерывно выпускать блоки, полностью используя вычислительные ресурсы ноды. При одинаковом входе (очередь внешних сообщений и состояние) и детерминированном исполнении каждая нода может локально построить тот же блок, поэтому для достижения финальности достаточно обмениваться хэшами и подписями, а не пересылать полное содержимое блоков на каждом шаге.
Коллатор создаёт блоки параллельно для двух связанных цепочек:
- Шард-блоки — содержат результаты выполнения транзакций.
- Мастер-блоки — служебные блоки, которые могут включать результаты выполнения. Они используются для синхронизации новых нод, финальность достигается при выпуске мастер-блока.
При достижении лимитов блока (по времени и/или размеру) происходит выпуск блока и немедленное создание следующего.
3) Верификатор
Верификатор проверяет, что хэш мастер-блока подтверждён подписями валидаторов, контролирующих более 2/3 общего стейка. Мастер-блок ссылается на последний шард-блок, поэтому отдельная проверка шард-блоков не требуется.
Особенности верификации:
- Ноды обмениваются только подписями на хэш мастер-блока.
- После получения подписей от валидаторов, контролирующих более 2/3 общего стейка, нода может распространять мастер-блоки с подписями клиентам сети (например, лайт-нодам).