20 октября 2021

Как сделать DeFi безопаснее: объясняем работу примитива Timelock в Tezos

Безопасность блокчейна строится на том, что все данные публичны и открыты. И вот разработчики Tezos планируют внедрить примитив Timelock, с помощью которого пользователи будут скрывать транзакции до определенного времени. Парадоксально, но это только повысит безопасность сети. Объясняем, как будет работать Timelock и от чего он защитит пользователей.

Мы написали этот материал на основе статьи команды Nomadic Labs. 

Боты извлекают прибыль из транзакций пользователей

Для начала вспомним механизм выполнения транзакций:

  1. Пользователь транслирует транзакцию в сеть.
  2. Транзакция попадает в мемпул — «прихожую» блокчейна.
  3. Бейкер заполняет блок транзакциями в порядке уменьшения комиссий.
  4. Бейкер добавляет блок в блокчейн, и сеть по очереди выполняет транзакции.
  5. Если две транзакции в блоке обращаются к одному смарт-контракту, то сначала сеть выполнит транзакцию с большей комиссией. 

Недобросовестные бейкеры могут извлечь из этого механизма выгоду. Допустим, бейкер Алиса создала бота, который ищет в мемпуле вызовы смарт-контрактов биржи Quipuswap. Он находит транзакцию Боба на покупку $10 000 kUSD за tez. Алиса создает транзакцию на покупку такого же количества kUSD, но с большей комиссией, и включает оба обращения в блок.

Сеть сначала выполняет запрос Алисы. Она получает $10 000 kUSD по цене $1 за токен. Контракт Quipuswap пересчитывает баланс монет и устанавливает новый обменный курс — $1,01. Затем сеть выполняет запрос Боба. Контракт повторно пересчитывает токены и повышает курс до $1,02. После этого Алиса продает свои kUSD по новой цене и извлекает 2% прибыли. 

В сети Ethereum подобные боты регулярно атакуют пользователей децентрализованных бирж. Они даже получили собственное название — флешботы. Один из ярких инцидентов произошел в 2020 году: флешбот на глазах у пользователя извлек $12 000 из контракта Uniswap.

Timelock на примере детской игры

Представьте, что флешбот играет с пользователем в камень, ножницы, бумагу. Какой бы жест не показал человек, бот успеет среагировать и показать выигрышный жест, то есть создать встречную транзакцию до публикации блока в блокчейн. 

Простой способ нивелировать преимущество флешбота в скорости реакции — сделать так, чтобы бот не увидел жест пользователя до последнего момента. В игре это можно реализовать с помощью таймера, коробки с тремя кнопками для каждого жеста внутри и экрана. Человек засовывает руку в коробку и жмет нужную кнопку. Бот видит, что пользователь сделал ход, но не может узнать, какой именно. По правилам он должен также сделать ход или отказаться. По истечении времени на экране появляются жесты игроков.

Timelock — аналог коробки с кнопками. Пользователь транслирует транзакцию в мемпул в зашифрованном виде. Флешбот не может ее прочесть и сделать ответный ход для извлечения прибыли. Затем пользователь публикует ключ дешифровки и открывает содержание транзакции для выполнения. Раскрытие происходит за мгновение до подписания блока, чтобы у бота не было времени создать транзакцию для извлечения прибыли.

Нюансы реализации Timelock

В описанном механизме Timelock есть уязвимость: пользователь может заспамить сеть Timelock-транзакциями и предоставить ключи дешифровки только к тем, которые принесут ему выгоду. Чтобы такого не случилось, разработчики планируют реализовать возможность подобрать ключ вручную и обязать пользователей вносить страховые депозиты.

При создании Timelock-транзакции пользователь выбирает время обязательного выполнения транзакции. От выбора зависит стойкость шифра: транзакцию с временем выполнения в следующем блоке участники сети самостоятельно расшифруют за 30 секунд, а с временем выполнения через 3000 блоков — за сутки.

За каждую Timelock-транзакцию пользователь вносит страховой депозит. При публикации ключа дешифровки сеть возвращает ему часть депозита и сжигает остаток. Если пользователь не отдал ключ, другие участники могут расшифровать транзакцию самостоятельно, опубликовать ключ и забрать ту же часть депозита. 

Так механизм депозитов сделает спам Timelock-транзакциями болезненным для кошелька недобросовестных пользователей и выгодным для остальных участников сети. 

Подписывайтесь на социальные сети Tezos Ukraine, чтобы ничего не пропустить:

  1. Telegram-канал
  2. Facebook.
  3. Twitter на русском и украинском языках
  4. Twitter на английском языке
  5. YouTube-канал
  6. Instagram
  7. LinkedIn
  8. hub на ForkLog

Изначально мы опубликовали этот материал в блоге Tezos Ukraine.

Обсудить в Discord!