Все, что вы должны знать о Polygon. Обзор
![]()
Polygon — это “Интернет блокчейнов” в мире Ethereum, децентрализованная платформа, предназначенная для масштабирования Ethereum и позволяющая разработчикам создавать масштабируемые удобные приложения с низкой комиссией за транзакции без потери безопасности.
2. Как Polygon масштабирует Ethereum?
Polygon предлагает ряд решений для масштабирования. Три из них уже работают, включая Polygon PoS (Matic Network), Polygon Hermez и Polygon Edge.
Самым популярным решением Polygon для масштабирования является Polygon PoS Chain. В ней зарегистрировано более 1,3 млрд транзакций, 130 млн. уникальных кошельков и
2,7 млн. ежемесячных активных пользователей. Polygon PoS обеспечивает беспрецедентную скорость транзакций (до 7 000 т/с, что означает экспоненциально более высокую производительность, чем у Ethereum при 15 т/с) и экономию средств за счет использования побочных сетей для обработки транзакций. В то же время PoS обеспечивает безопасность активов с помощью надежного мостового механизма Plasma и децентрализованной сети валидаторов Proof-of-Stake (PoS).
3. Какова архитектура Polygon?
Сеть Polygon PoS имеет трехуровневую архитектуру:
- Уровень Ethereum — набор контрактов в основной сети Ethereum.
- Уровень Heimdall — набор Proof-of-Stake нод Heimdall, работающий параллельно с сетью Ethereum. Он отслеживает работу контрактов, развернутых в сети Ethereum, и фиксирует контрольные точки сети в сети Ethereum. Heimdall основан на Tendermint.
- Уровень Bor — набор нод, производящих блоки, перемешиваемый нодами Heimdall. Bor основан на Go Ethereum.
4. Для каких целей используется токен MATIC?
MATIC — это нативный ERC-20 токен Polygon.
MATIC применяется для:
- оплаты комиссий за транзакции
- управление сетью и обеспечения ее безопасности за счет стейкинга
Кроме того, MATIC — это валюта экосистемы приложений Polygon, которая позволяет пользователям взаимодействовать с сотнями dApps.
5. Что известно об экосистеме Polygon?
В сети работает более 19 000 децентрализованных приложений. Polygon PoS является домом для некоторых из крупнейших проектов Web3 — от протоколов DeFi, таких как Aave и Uniswap V3, до торговых площадок NFT, таких как OpenSea.
Web3-приложения, созданные на Polygon, предлагают низкие комиссии, высокую масштабируемость и высокую безопасность.
Ознакомиться с работой экосистемы dApps можно здесь: polygon.technology/ecosystem
6. Расскажите, пожалуйста, о Polygon и о том, как он развивается?
Polygon был запущен под названием Matic Network в 2017 году. Его основателями стали Джайнти Канани, Сандип Найлвал, Михайло Бьелич и Анураг Арджун. Первоначальная идея принадлежит Джайнти Канани, который работал в Housing.com в качестве специалиста по анализу данных.
Основная сеть, включающая Plasma Chain и PoS Chain, была запущена в 2020 году.
В феврале 2021 года Matic провела ребрендинг и получила название Polygon.
Что такое Polygon?

Но Polygon, фреймворк для создания совместимых с Ethereum блокчейнов, призван это решить.
Что такое Polygon (MATIC)?
Polygon адресует основные проблемы, с которыми сегодня сталкивается Ethereum: высокие комиссии, неудовлетворительный пользовательский опыт и низкая пропускная способность.
Идея платформа состоит в создании «Интернета блокчейнов Ethereum», то есть многоцепочечной экосистемы блокчейнов, совместимых с Ethereum. Главным инструментом на пути к этому становится простой в использовании фреймворк, который позволяет разработчикам запускать свой собственные совместимые с Ethereum блокчейны одним щелчком мыши.
Polygon надеется создать мир, в котором отдельные блокчейны смогут свободно и легко обмениваться деньгами и информацией между собой, не обращая внимания на технологические и идеологические различия, которые сегодня разделяют большинство из них.
Первоначально проект назывался Matic Network, но позже был переименован в Polygon по мере роста амбиций. В то время как Matic был простым решением для масштабирования второго уровня для Ethereum, Polygon — это инфраструктура для сети массово масштабируемых совместных блокчейнов, которые сохраняют свою независимость.
Кто создаёт Polygon?
В настоящее время его разрабатывает многопрофильная команда во главе с четырьмя основателями: Джейнти Канани (Jaynti Kanani), Сандипом Наилвалом (Sandeep Nailwal), Анурагом Арджуном (Anurag Arjun) и Михайло Бжеличем (Mihailo Bjelic). Канани — генеральный директор Polygon и опытный разработчик, увлеченный системами масштабирования, в то время как остальные члены команды владеют богатым опытом создания, управления и развития технологических компаний.
Как работает Polygon?
Polygon поддерживает два типа цепочек: автономные цепи и защищенные цепи. Автономные цепочки — это самодостаточные блокчейны, которые напрямую совместимы с Ethereum, тогда как защищенные цепочки усиливают безопасность, полагаясь на сеть профессиональных валидаторов.
Сначала все автономные цепочки экосистемы Polygon будут PoS цепочками Matic, но другие сайдчейны и корпоративные блокчейны будут поддерживаться в более позднем обновлении.
Платформа предназначена для поддержки широкого спектра различных механизмов масштабирования блокчейнов, включая Matic Plasma, zk Rollups, Optimistic Rollups и Validum Chains, — все они предназначены для повышения пропускной способности связанных блокчейнов без ущерба для безопасности или удобства пользователей.
На момент написания Polygon поддерживает только решение для масштабирования Matic Plasma. По сути транзакции выгружаются из основной цепочки Ethereum в цепочку Matic PoS от Polygon пока не финализируются в основной цепочке. В ближайшие месяцы и годы Polygon добавит поддержку различных альтернативных решений для масштабирования, чтобы предоставить разработчикам свободу выбора того, что лучше всего соответствует их потребностям.
Что особенного в Polygon?
Для рынка он уникален в том смысле, что это единственное решение для масштабирования, которое поддерживает виртуальную машину Ethereum (EVM) и позволяет подключенным цепочкам сохранять независимость с точки зрения безопасности, при этом гарантируя совместимость как друг с другом, так и с основной цепью Ethereum.
В отличие от других платформ, цепочки в системе экосистемы Polygon не обязаны задействовать его уровень безопасности в качестве собственного сервисного уровня, но все же могут обмениваться сообщениями между собой благодаря встроенной возможности произвольной передачи сообщений. Это гарантирует, что разработчики смогут создавать действительно универсальные децентрализованные приложения, которые могут использовать уникальные свойства нескольких цепочек в любом масштабе.
Поскольку разработка на Polygon очень похожа на разработку на Ethereum, платформа сразу доступна для крупнейшего в мире сообщества блокчейн-разработчиков. Теперь они могут создавать высокомасштабируемые приложения, которые могут в полной мере воспользоваться всеми преимуществами сети Ethereum без каких-либо компромиссов.
Как уже ранее упомянуто, Polygon необычен тем, что поддерживает нескольких различных механизмов масштабирования, которые проекты могут применять по своему усмотрению. При такой стратегии Polygon в любом случае остается в выигрыше, даже если какое-то одно решение для масштабирования станет доминирующим или наоборот будет ликвидировано.
В чем проблема с масштабированием Ethereum?
Если вы пользовались сетью Ethereum в пиковые периоды в последние месяцы, то вы возможно заметили, что комиссия за транзакции может варьироваться от более-менее терпимой до почти невыносимой.
На это есть несколько основных причин. Во-первых, сеть Ethereum может обрабатывать одновременно только ограниченное количество транзакций. Это называется пропускной способностью. Согласно текущим оценкам, сеть Ethereum может обрабатывать около 15 транзакций в секунду (tps) при пиковой нагрузке, но текущий спрос обычно намного превышает этот объем.
В результате у пользователей есть два варианта. 1. Они могут заплатить больше газа, т.е. увеличить комиссию за транзакцию, чтобы их транзакции были приоритетными для майнеров и были быстрее подтверждены. 2. Они могут установить низкую комиссию и подождать, пока сеть не станет менее нагруженной. При этом появляется риск, что газ может закончится или завершение транзакции займет очень много времени.
Решениям для масштабирования обычно удается увеличить число транзакций, которые могут быть вписаны в каждый блок, путем выноса обработки логики транзакций вовне основной цепочки Ethereum для уменьшения размера каждой транзакции, или объединяя несколько переводов в одну оптимизированную транзакцию.
Что такое сеть Polygon и ее особенности

Многие сегодня слышали о блокчейнах второго уровня и об одной из самых популярных сетей — Polygon. Но не все представляют, как именно устроен Polygon и зачем он нужен. В данной статье нам предстоит узнать, что такое сеть Polygon, а также его преимущества.
Что такое сеть Polygon?
Сеть Polygon — это блокчейн второго уровня, изначально создававшийся как надстройка для блокчейна первого уровня Ethereum. Однако впоследствии направление развития сети было изменено.
Про блокчейны второго уровня я рассказывал в предыдущей статье. Но если коротко, то это сети, которые имеют схожий функционал и прикрепляются к определенному блокчейну первого уровня (например, Ethereum). Такие сети нужны для того, чтобы загруженность сети 1 уровня была перенаправлена на дополнительный блокчейн, таким образом повысив его пропускную способность и скорость транзакций.
Изначальная задумка Polygon и итоговый результат
Изначально у сети Polygon было другое название — Matic. Планировалось, что данная сеть будет блокчейном второго уровня исключительно для сети Ethereum. Однако позже произошла смена названия, и сеть получила имя Polygon. Это было обусловлено тем, что разработчики проекта решили расширить функционал своего блокчейна и сделать его мультичейн. Это значит, что данная сеть в будущем будет поддерживать и связывать между собой разные блокчейны. Однако сейчас Polygon в первую очередь работает с эфиром.
В чем преимущества сети Polygon?
Как уже было сказано выше, блокчейн Polygon помогает работать сети Ethereum и забирает часть мощностей данной сети на себя. Это значит, что если вы будете пользоваться Polygon, то, по сути, это практически тоже самое, если бы вы пользовались самой популярной сетью эфира. Однако ввиду устройства блокчейна Polygon, вы будете платить минимальную или практически нулевую комиссию за транзакции, а также проводить их гораздо быстрее.
Многие популярные децентрализованные приложения и платформы на Ethereum поддерживают сеть Polygon. Например, самый популярный маркетплейс NFT OpenSea. До недавнего времени вы могли загрузить свое NFT на платформу только за огромную комиссию сети Ethereum.
Теперь вы можете выбрать сеть Polygon и практически бесплатно создавать свои коллекции и зарабатывать на этом. Выкладывая свое NFT на OpenSea, советую присмотреться именно к сети Polygon!
2000000$ за найденную уязвимость

Эксперт в области информационной безопасности Гехард Вагнер получил рекордное вознаграждение в размере 2000000$ от команды блокчейн проекта Polygon. Найденная исследователем уязвимость угрожала потерей 850000000$. Вознаграждение стало рекордным в истории DeFi. Гехард Вагнер обратил внимание на баунти-программу, которую Polygon запустил сентябре. Он отметил, что Polygon использует для защиты транзакций между своими сетями и Ethereum систему защиты Plasma, которую, по его мнению, сложно надежно реализовать. Вагнер подробно рассказал о том, как обнаружил уязвимость в «мосте» Plasma Bridge. С помощью ошибки в коде злоумышленник мог бы вывести сумму, в 223 раза превышающую первоначальную стоимость токенов. Внесение каждых $200 тыс. могло бы принести потенциальному хакеру $44,6 млн. В случае эксплуатации уязвимости потери протокола могли составить $850 млн. Вагнер предположил, что проблема возникла «из-за использования стороннего кода без его полного понимания».
Вагнер отметил, что ранее уже работал над системами защиты от мошенничества, в частности над «Плазмой» и знал основные сложности, с которыми сталкиваются разработчики. Поэтому сразу начал проверять опубликованные контракты, чтобы найти тот, который блокирует средства на L1, когда пользователи переводят средства в сеть Polygon и из нее. Он быстро нашел нужный контракт Deposit Manager Proxy, и на момент написания он содержал токены стоимостью около миллиарда долларов США.
Далее разберем найденную уязвимость.
Что такое Polygon и Plasma

Прежде чем анализировать ошибку, важно понять, как работает Plasma и Polygon, по крайней мере, на высоком уровне.
Сначала немного терминологии, кто знаком может пропустить:
Дерево Меркла — полное двоичное дерево, в листовые вершины которого помещены хеши от блоков данных, а внутренние вершины содержат хеши от сложения значений в дочерних вершинах. Корневой узел дерева содержит хеш от всего набора данных, то есть хеш-дерево является однонаправленной хеш-функцией.
Решения второго уровня/слоя (L2-решения) — это проекты, приложения и технологии инфраструктурного программного обеспечения, развернутые поверх базовых блокчейнов.
Сайдчейны — технология, позволяющие токенам и другим цифровым активам одного блокчейна безопасным образом использоваться в другом блокчейне и затем (в случае необходимости) быть возвращенными в оригинальный блокчейн. Изначально концепция сайдчейнов (side chain) была описана в 2014 году в «белой бумаге» (white paper), который написали разработчики компании Blockstream. Сайдчейн (side chain) представляет собой отдельный блокчейн с двусторонней привязкой к родительскому блокчейну. Это обеспечивает взаимозаменяемость активов. Родительский блокчейн обычно называется «основной (главной) цепью» (master chain), дополнительные цепи — сайдчейнами (side-chain). Пользователь родительского блокчейна должен сначала отправить монеты на выходящий адрес, где они «запираются» участниками так называемой «федерации», что призвано исключить возможность их траты в другом месте. По завершении транзакции ее участники получают подтверждение, однако для дополнительной безопасности это происходит после некоторого периода ожидания. После этого эквивалентное количество монет переводится в сайдчейн (side chain), и у пользователя появляется возможность их потратить. При отправке монет из сайдчейна (side chain) в основной блокчейн происходит обратный процесс.
Fraud proof — модель безопасности для решений второго уровня, в которых для повышения скорости из транзакций формируются пакеты и отправляются в Ethereum за одну транзакцию. Они считаются валидными, но могут быть оспорены по определенным правилам. Этот метод увеличивает количество возможных транзакций при сохранении достаточного уровня безопасности.
Plasma — решение второго уровня для масштабирования сети Ethereum, изначально предложенное Джозефом Пуном и Виталиком Бутериным. Технология предусматривает использование смарт-контрактов и деревьев Меркла для создания неограниченного числа дочерних цепей — копий родительской сети Ethereum. Они разгружают основной блокчейн, открывая возможность осуществления быстрых и недорогих транзакций. По принципу работы Plasma похожа на Lightning Network: набор умных контрактов, позволяющий множеству сайдчейнов фиксировать свое состояние в сжатом виде в корневом блокчейне. Plasma применяет экономические стимулы, включая наказание отвергнутого сетью создателя блока для предотвращения мошенничества. В июне 2020 года работающая над масштабированием Ethereum компания OMG Network запустила бета-тестирование OMG Network V1, базирующейся на спецификациях последней версии Plasma — More Viable Plasma (MoreVP). MoreVP масштабирует Ethereum, группируя транзакции и отправляя их через набор смарт-контрактов. Сгруппированные данные проходят верификацию и валидацию в децентрализованной сети хранителей. Группирование позволяет увеличить пропускную способность сети до тысяч транзакций в секунду и значительно сократить их стоимость. Это отдельный блокчейн, который привязан к основной цепочке Ethereum и использует fraud proofs (Optimistic rollups) для разрешения споров.
Matic Network (теперь Polygon) — решение второго уровня с поддержкой фреймворка Plasma и децентрализованной сети PoS-валидаторов. Проект использует сайдчейны (side chain) для офчейн-вычислений. В начале 2021 года состоялся ребрендинг проекта. Сменилось название на Polygon, изменилась стратегия в сторону создания мультичейн-системы, похожей на Polkadot. Команда проекта работает над созданием решений второго уровня на базе Ethereum. Polygon — это протокол и платформа для создания и подключения блокчейн-сетей, совместимых с Ethereum. Платформа предлагает «надежный двусторонний канал транзакций» между Polygon и Ethereum. Этот «блокчейн-мост» использует сеть под названием Plasma для аутентификации и обработки вывода средств. Именно в контракте на Plasma, доверенном лице управляющего депозитами, был обнаружен недостаток.
Архитектура Polygon Network
В архитектуре протокола содержатся 3 абстрактных слоя:
Polygon Ethereum смарт-контракты — набор смарт-контрактов на Ethereum, которые обрабатывают:
Стейкинг (Staking) для поддержания Proof-of-Stake;
Управление делегированием, включая общие ресурсы валидатора;
Plasma контракты для MoreVP, включающие checkpoints/snapshots для сайдчейна (side chain).
Heimdall (Proof of Stake layer) – PoS валидатор, который работает на основе Ethereum-контрактов для реализации PoS механизма в Polygon. Он отвечает за проверку блоков, продюсер (block producer).
Bor (Block producer layer) – ответственный за объединение транзакций в блоки. В настоящее время это базовая реализация Geth с некоторыми изменениями, внесенными в алгоритм консенсуса.
На приведенной ниже диаграмме показан поток пользовательских средств через Polygon network (source):
Пользователь вносит средства в контракт моста в L1 (основной сети Ethereum);
После подтверждения транзакции депозита в сети Ethereum, токены доступны в сети Plasma, чтобы пользователи могли их передавать;
Когда пользователь решает вывести средства обратно на L1, токены необходимо сжечь в Plasma. Нужно дождаться контрольной точки. Затем контрольная точка отправляется в мастер-чейн (master chain);
Когда контрольная точка пройдена, выпускаются Exit NFT (ERC721);
Далее необходимо подождать 7 дней;
После 7-дневного периода проверки средства могут быть выведены обратно пользователю на L1.
Такой механизм типичен для fraud proof систем, поскольку они предполагают, что определенные действия являются действительными, и отменяют их только в том случае, если другой пользователь может доказать, что они были недействительными.

Разбор уязвимости

Логика вывода средств обратно в блокчейн Ethereum реализована, в частности, в контракте ERC20PredicateBurnOnly. Выход можно запустить, вызвав функцию startExitWithBurntTokens из данного контракта. В контракте WithdrawManager, также отвечающего за вывод средств, в функции verifyInclusion в строке 115 происходит проверка, включена ли квитанция в дерево. Уязвимость в том, как Polygon WithdrawManager проверяет включение и уникальность в предыдущих блоках.

Одним из параметров, который содержит доказательство выхода, является branchMask. branchMask должна быть уникальной, так как она используется для генерации идентификатора выхода (Exit ID). Важное свойство — одна транзакция есть один идентификатор выхода, но это свойство может быть нарушено. Если проверки пройдены, то идентификатор выхода (Exit ID) создается на основе метки времени, номера блока контрольной точки и branchMask, см. строку 158.

Идентификатор выхода возвращается и сохраняется в приоритетной очереди, которая упорядочивает все выходы в зависимости от их возраста. Когда выход находится в очереди приоритетов не менее 7 дней с момента транзакции, на которую он ссылается, он может быть обработан, и средства возвращаются пользователю в L1.
Идентификатор выхода частично состоит из branch mask, которая поступает непосредственно из пользовательского ввода, что является слабым местом. Если бы было возможно создать альтернативную branch mask, которая каким-то образом способна создать более одного идентификатора выхода, относящегося к одной и той же транзакции. Более пристальный взгляд на функцию в библиотеке MerklePatricaProof показывает, что что-то происходит с путем до того, как будет пройден цикл из строки 40. В строке 35 branch mask передается в функцию _getNibbleArray.

Проверка функции _getNibbleArray показывает, что branch mask (аргумент функции encodedpath) закодирована (Hex Prefix encoded).

Функция _getNibbleArray проверяет с какого значения начинается переданный набор. Если первая часть байта (цифра) 1 или 3, то учитывается вторая часть первого байта и декодируются все оставшиеся значения, иначе первый байт игнорируется. Давайте рассмотрим на примере и предположим, что branch mask равна 0x00819c. Первый байт отбрасывается, так как он – 0, и его первая часть не равна 1 или 3, а остальные фрагменты расширяются до 0x0801090c.
Также в функции verifyInclusion преобразуется branchMask в uint256.

Так как getNibbleArray отбрасывает часть информации, то получаем, что одному значению декодирования getNibbleArray соответствуют несколько uint256 значений. В общей сложности можно создать 14×16 = 224 различных кодировок для одного и того же пути. Злоумышленник может использовать эту проблему для создания альтернативных выходов для одной и той же транзакции и выполнения двойных трат в сети Polygon.

Влияние

Для успешной атаки существуют требования к капиталу, но они минимальны по сравнению с потенциальным вознаграждением злоумышленника. Давайте рассмотрим пример и поймем, сколько мог бы получить злоумышленник по сравнению со средствами, необходимыми для атаки.
депонирует токены на сумму 200 000 долларов США в контракт DepositManager;
запускает процесс вывода выхода (withdrawal);
ожидает семидневный период проверки;
запускает вывод, переиспользуя предыдущие данные с модифицированным параметром branch mask.
С помощью описанной выше техники генерируются 223 альтернативных выходных полезных нагрузки, и для каждой из них инициируются выходы. Все выходы получают уникальный идентификатор и добавляются в очередь. После того, как все выходы были запущены и обработаны, злоумышленник получает сумму, в 223 раза превышающую сумму первоначального депозита или токенов на сумму 44,6 миллиона долларов.
Исправление

Уязвимость была устранена путем отклонения любой кодировки, которая не начинается с 0x00. Это не очень элегантно, но исправляет ошибку с двойными расходами, жестко кодируя метасимвол кодировки.