Изображение сгенерировано нейросетью ruDALL-E по запросу "проблема мостов в блокчейне"
Изображение сгенерировано нейросетью ruDALL-E по запросу "проблема мостов в блокчейне"

В начале апреля 2022 г. криптовалютная сеть Ronin обнаружила в своей системе брешь, через которую хакеры вывели токенов эфира (Ethereum) и стейблкойна USDC на сумму 540 миллионов долларов. Вне всяких сомнений, это одно из крупнейших ограблений в истории криптовалют. К нему привела уязвимость в службе Ronin Bridge. Причем это далеко не только проблема сети Ronin, ведь есть и другие случаи атак на блокчейн-мосты. Например, чуть раньше, в феврале 2022 г., злоумышленник вывел из Solana токенов на 326 миллионов долларов. Помогла ему в этом уязвимость в Wormhole (червоточина), блокчейн-мосте Solana. Что такое блокчейн-мосты и какими они бывают? Почему мост стал "ахиллесовой пятой" для многих блокчейнов? Как решается проблема их уязвимости ? Этим вопросам посвящена данная статья.

Блокчейн-мосты (Blockchain Bridge), также известные как кроссчейн-мосты (Cross-chain Bridge), или сетевые мосты, — это приложения, позволяющие перемещать цифровые активы из одного блокчейна в другой. В документации эфира сказано, что мосты необходимы, потому что все блокчейны имеют свою изолированную экосистему, специфические правила и собственный механизм консенсуса. Без мостов блокчейны не могут взаимодействовать друг с другом. В блокчейне эфира нельзя платить биткойнами, а в блокчейне биткойна - токенами эфира. Мосты решают эту проблему, обеспечивая кроссчейновые транзакции, но порождают многие другие.

Виды кроссчейновых транзакций

Мосты делают возможными кроссчейновые транзакции, к основным видам которых относятся lock-and-mint, burn-and-release и burn-and-mint.

Lock-and-Mint

Транзакция Lock-and-Mint (заблокировать и выпустить) — это вид транзакции, предполагающий блокировку токенов в исходящем блокчейне и создание/ выпуск новых токенов равной стоимости в принимающем блокчейне. Для осуществления этой транзакции практически всегда необходим посредник, который бы асинхронно обеспечивал блокировку криптовалюты, принимал согласие отправителя на создание новых токенов в принимающей сети и, собственно, создавал их.

Транзакция Lock-and-Mint в документации Ren Bridge
Транзакция Lock-and-Mint в документации Ren Bridge

На рисунке выше все стрелки пронумерованы в соответствии с последовательностью действий Алисы. Сначала ей необходимо осуществить транзакцию, блокирующую часть биткоинов (1), затем уведомить приложение Ren (2), которое проверит блокировку токенов (3) и даст разрешение на выпуск новых токенов в сети эфира (4), что Алиса и сделает (5). Точнее за неё всё это сделает мост (в данном случае, Ren), кроме первого шага.

Burn-and-Release

Транзакция Burn-and-Release (сжечь и отпустить) является дополнением к транзакции Lock-and-Mint, позволяя пользователям и смарт-контрактам отправлять активы обратно в исходный блокчейн. Название транзакции прямо отражает суть: токены, созданные ранее и имеющие своих двойников в исходном блокчейне, уничтожаются, а исходные активы перестают быть заблокированными, т.е. отпускаются или освобождаются. На картинке ниже представлены действия Алисы, не требующие дополнительных разъяснений.

Алиса хочет свои биткойны назад
Алиса хочет свои биткойны назад

Burn-and-Mint

Транзакция Burn-and-Mint (сжечь и выпустить) также служит продолжением транзакции Lock-and-Mint. Используя этот вид транзакции, пользователи и смарт-контракты могут «сжигать» привязанные активы в принимающем блокчейне и создавать такое же количество привязанных активов в другом блокчейне, не трогая при этом активы, заблокированные в исходном блокчейне. Другими словами, если капризная Алиса захочет иметь активы, эквивалентные её исходным токенам, в третьем по счету блокчейне (на рисунке - Polkadot), мост просто ликвидирует её токены в эфире и выпустит новые токены в полкадоте.

Алиса хочет биткойны, переведенные в эфир, использовать в полкадоте
Алиса хочет биткойны, переведенные в эфир, использовать в полкадоте

Немного о сложности мостов

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

Возможно, год назад это действительно было так, но с тех пор многое изменилось. Крупные фреймворки привлекают программистов к разработке новых простых кроссчейновых приложений, создавая для них платформы, документацию и исходные протоколы. Например, так выглядит контракт SimpleBridge, разработанный в Connext.

pragma solidity ^0.8.15;

import {IConnext} from "@connext/nxtp-contracts/contracts/core/connext/interfaces/IConnext.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";

/**
 * @title SimpleBridge
 * @notice Example of a cross-domain token transfer.
 */
contract SimpleBridge {
  // The connext contract on the origin domain.
  IConnext public immutable connext;

  constructor(IConnext _connext) {
    connext = _connext;
  }

  /**
   * @notice Transfers funds from one chain to another.
   * @param recipient The destination address (e.g. a wallet).
   * @param destinationDomain The destination domain ID.
   * @param tokenAddress Address of the token to transfer.
   * @param amount The amount to transfer.
   * @param slippage The maximum amount of slippage the user will accept in BPS.
   * @param relayerFee The fee offered to relayers. On testnet, this can be 0.
   */
  function xTransfer(
    address recipient,
    uint32 destinationDomain,
    address tokenAddress,
    uint256 amount,
    uint256 slippage,
    uint256 relayerFee
  ) external payable {
    IERC20 token = IERC20(tokenAddress);
    require(
      token.allowance(msg.sender, address(this)) >= amount,
      "User must approve amount"
    );

    // User sends funds to this contract
    token.transferFrom(msg.sender, address(this), amount);

    // This contract approves transfer to Connext
    token.approve(address(connext), amount);

    connext.xcall{value: relayerFee}(
      destinationDomain, // _destination: Domain ID of the destination chain
      recipient,         // _to: address receiving the funds on the destination
      tokenAddress,      // _asset: address of the token contract
      msg.sender,        // _delegate: address that can revert or forceLocal on destination
      amount,            // _amount: amount of tokens to transfer
      slippage,          // _slippage: the maximum amount of slippage the user will accept in BPS
      ""                 // _callData: empty because we're only sending funds
    );  
  }
}

Как видно из представленного кода, класс моста имеет всего одну функцию - xTransfer. В функцию предаются адрес (recipient), id блокчейна назначения (destinationDomain), адрес токена (tokenAddress), количество токенов для передачи (amount), максимальная цена фактического исполнения контракта (slippage), а также relayerFee (плата посреднику).

Примеры популярных блокчейн-мостов

Сейчас существует огромное количество всевозможных блокчейн-мостов. Мы коснемся только наиболее известных для того, чтобы у читателя не сложилось впечталение будто бы речь идет только о межсетевом протоколе. Современные блокчейн-мосты - это еще фреймворки, обладающие собственным стеком технологий. Компании, обеспечивающие кроссчейновые транзакции заинтересованы в сохранении мостов между блокчейнами, поэтому они делаю все возможное для повышения доверия к ним и оптимизации этой технологии.

  1. Connext

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

  2. Synapse

    Synapse - это фреймворк, позволяющий создавать мосты для блокчейнов. Разработчики Synapse уверяют пользователей, что именно их продукт абсолютно безопасен для использования. Впрочем, трудно найти хотя бы одну компанию, поставляющую кроссчейновые решения, которая призналась бы в уязвимости её приложений.

  3. Wormhole

    Wormhole V1 был создан в 2020 г. и задумывался как традиционный блокчейн-мост между Ethereum и Solana. Однако, система Wormhole быстро вышла за пределы Solana и передачи токенов. Уже в августе 2021 г. был запущен Wormhole V2 как децентрализованный общий протокол взаимодействия для нескольких блокчейнов с первоначальной поддержкой Solana, Terra, Ethereum и Binance Smart Chain. Сейчас Wormhole вырос в полноценную экосистему и обзавелся собственной платформой для разработчиков.

  4. Ren Bridge

    Ren Bridge - одна из немногих технологий, разработчики которой в собственной документации признают невозможность обеспечить полную безопасность кроссчейновых переводов. Сама же технология представлена приложением для универсальной передачи цифровых активов между любыми блокчейнами. При этом разработчики утверждают, что их приложение работает с любыми типами кроссчейновых транзакций.

  5. Polygon PoS Bridge

    Polygon PoS Bridge - это блокчейн-мост, входящий в систему Polygon. Polygon обладает собственной экосистемой, в которую входят кошелек, несколько видов мостов и другие блокчейн-продукты. К отличительным особенностям моста Polygon следует отнести способность переводить в другой блокчейн (а именно в эфир) не только токены, но и NFT.

Уязвимости блокчейн-мостов

Первый блокчейн-мост появился в 2018 г. Всего лишь 4 года назад! Если блокчейн - это молодая технология, то блокчейн-мост совсем юная. "Неокрепшая" архитектура блокчейн-мостов таит в себе проблемы, некоторыми из которых пользуются злоумышленники. Конечно, мы не сможем описать все уязвимости в этой статье, но коснемся атак, связанных с описанными ранее кейсами.

  1. Атака 51 %

    В 2022 г. Виталик Бутерин опубликовал пост с объяснением своего пессимизма относительно будущего блокчейн-мостов. Главным препятствием в использовании мостов он назвал необратимость негативных последствий при атаке 51 %. Так он пишет:

"Теперь представьте, что произойдет, если вы переместите 100 ETH в Solana, чтобы получить 100 Solana-WETH, а затем Ethereum подвергнется атаке 51%. Злоумышленник вложит кучу своих собственных токенов ETH в Solana-WETH, а затем отменит эту транзакцию на стороне Ethereum, как только сторона Solana подтвердит это. Контракт Solana-WETH больше не будет поддерживаться полностью, и, возможно, ваши 100 Solana-WETH теперь превратятся всего в 60 ETH. Даже если существует идеальный мост на основе ZK-SNARK, который полностью подтверждает консенсус, он все равно уязвим для кражи из-за подобных атак 51%".

  1. Атака на смарт-контракт

    Есть мнение, что большая часть взломов блокчейнов, проводится с помощью уязвимостей в смарт-контрактах, используемых мостами для обеспечения транзакций Lock-and-Mint. Например, в упомянутом в самом начале выводе средств из Solana c помощью Wormhole, злоумышленникам удалось создать 120000 токенов WETH без заморозки их в Solana. Создание токенов осуществляется через смарт-контракт, т.е. без атаки на него выпуск токенов не представлялся бы возможным.

  2. Атака на сеть

    В службе Ronin Bridge, также упомянутой в самом начале статьи, хакер получил контроль над пятью из девяти узлов-валидаторов, обрабатывающих транзакции. Отчасти успех хакера был обусловлен архитектурой блокчейн-моста: у одного из сотрудников компании-разработчика был доступ к четырем из девяти узлов. Хакерам не понадобилось знание машинного языка или какие другие хардовые навыки: они получили контроль над этими узлами с помощью социальной инженерии. Сотрудник, имевший доступ к узлам, заинтересовался предложением работы в LinkedIn и открыл документ, содержащий шпионское ПО.

Сжигать или не сжигать блокчейн-мосты?

В вопросе будущего блокчейн-мостов нет единого мнения. Тем не менее большинство медийных лиц криптоэкономики дает негативный прогноз. Бутерин считает, что наиболее оправдано сосуществование разных блокчейнов без мостов между ними. Если есть токены в Solana, или в Bitcoin, или в Ethereum, то там они и должны храниться. Мосты разрушают изолированность экосистемы блокчейнов, делают их беззащитными перед атаками хакеров.

Техножурналист Томио Герон высказал мнение, что проблема мостов является основным препятствием для развития технологии блокчейна. По его мнению, дело даже не в уязвимости блокчейн-мостов для хакерских атак: механизм взаимодействия таит много подводных камней. Одна небольшая ошибка в смарт-контракте может оставить пользователя без его криптосбережений и никто их не вернет. Если мосты и должны быть, то пользователи не должны замечать их.

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

Источники:

  1. Blockchain bridges

  2. Buterin V. The fundamental security limits of bridges

  3. Geron T. Crypto bridges are coming under attack

  4. RenVM

  5. Simple bridge

  6. Wormhole

Комментарии (0)