Концепция

Архитектура

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 общего стейка, нода может распространять мастер-блоки с подписями клиентам сети (например, лайт-нодам).