July 19, 2023

Провалившийся тест LayerZero Protocol V2

В репозитории @layerzerolabs/lz-evm-oapp-v2, между версией 1.5.20 (та которая до EndpointV2), и версией которая была с EndpointV2 (с 1.5.21 по текущую 1.5.27), появилась папка. Она называется standards. В этой папке лежит OFT токен нового образца, с поддержкой EndpointV2.

OApp является шаблоном для приложений, которые будут общаться между сетями. Не бриджи, и прочие DeFi штуки, а, например, OmniCounter, "приложение которое увеличивает счетчик, но с изюминкой, увеличивает оно счётчик в другой сети" (следует из документации).

И OApp, и теперь уже стандарт OFT, который лежит в репозитории, работают с EndpointV2, и поддержка в них токена для оплаты комиссии представлена явно (см. OApp, см. OFTCore), конечно, при условии включенного LZToken.

Да, кстати, я попытался спарсить ключевые репозитории в git, чтобы закоммитить историю изменений, и чтобы было удобнее смотреть изменения, просто сравнивая коммиты (репозиторий, если кому надо).

В этот момент я понял, что по сути за всё скажет развернутый EndpointV2 в сети. И перешел к разведке on-chain.

Далее будет блок, в котором я опишу последовательность действий. Кому не интересно, можно пролистать до следующего логического блока (👉🏼).

Из репозиториев, а конкретно @layerzerolabs/lz-definitions, взял адрес stargate bridge развернутого в тестнете BSC.
Stargate Bridge

Далее перешёл к создателю контракта, им оказался некий кошелек (0xc13..). На данный момент, я могу сказать одно - это единственный или один из ключевых кошельков Layer Zero, он явно принадлежит разработчику. Возможно какому-то Teamlead/инженеру по интеграции.
Все свои забеги на различные контракты, я приходил к этому кошельку. Очевидно, что этот кошелек не будет в соло всё это дело настраивать, но большинство конфигураций существующих Endpoint/Light Node/Trasury/Relayer и прочих контрактов происходят с этого кошелька. Blockscan видит его на 27 сетях (я таких цифр за карьеру solidity разработчика не встречал еще), он развернул на BSC Testnet >103 токенов (ERC20 + ERC721). Так же, он разворачивал LayerZeroTokenMock.
Таких заглушек много у него, есть на любой вкус LZTEST ($lzt), LayerZeroTokenMock ($LZTM), LayerZero ($ZRO).

19 дней назад (в момент выхода EndpointV2), этот кошелек на абсолютно всех тестовых сетях развернул по 3-4 контракта и отправил множество транзакций. Анализ одной из транзакций привел меня по трассировке к этому контракту (его создатель не 0xc13, он не такой тестнетер, но у него тоже есть заглушки LZ токена). Что интересного в этом контракте, а интересно в нём то, что 222 дня назад были вызовы "Set Layer Zero Token", там же "Set Layer Zero Treasury" и т.д.
Сам токен

Декомпиляция байт-кода не дала ничего интересного. Похоже это на обычный ERC-20 токен, это заглушка, ничего удивительного.
К чему я это - такие же заглушки у нашего "главного" тестнет-кошелька разрабов 0xc13.

Вполне вероятно, что 0xc13 разворачивал 19 дней инфраструктуру V2 версии протокола (это скорее всего будет вторая версия протокола полноценно), и гонял по ней тестовые транзакции. Первое тестирование, и судя по тому, что с этого момента транзакции остановились, но почти ежедневно выходят апдейты в репозиториях npm - это было полезное тестирование, много нового узнали, первая обкатка прошла комом.

Так же, в догоночку, чекнул 0xc13 на Base Testnet, относительно молодой блокчейн. Там он развернул единственную заглушку - 141 дней назад (почти 5 месяцев назад). По сравнению с олдами тестнетами, где заглушки были выпущены им год и более назад, в больших количествах, здесь он развернул правильную заглушку сразу, в единственном экземпляре, и относительно недавно. Именно этот фактор даёт мне понимание, что этот кошелек будет как-то связан со всему интеграциями протокола с возможным токеном.

И еще одно, заметив в @layerzerolabs/lz-sdk, что там хранятся адреса, я их по дефолту осмотрел. Но заметил, что LZ_ULTRA_LIGHT_NODE_V2 установлены в малом количестве, для остальных сетей они пусты, даже для майннетов. Т.е, подумал я, это какие-то непростые ноды. Конечно же, первое что мне пришло в голову, это ноды, которые годны для второй версии протокола, т.е. с установленным токеном. Начав проверку имеющихся тестнетов, я обнаружил только один тестнет, где код апрувнут, а соответственно мы можем через интерфейс пообщаться с контрактом. БИНГО! В ноде установлен контракт layerZeroToken. Сам токен, как и нода, 8 месячной давности. Комиссия ZRO установлена в 0. Токен опять же, создан нашим 0xc13.


👉🏼 Выводы, которые лично я могу сделать:
1. 19 дней назад LayerZero, вместе с выпуском V2 в npm репозитории, провели первую иттерацию тестирования протокола второй версии. Развернуто 3-4 контракта, сделано >25 транзакций в большинстве сетей. Первая иттерация тестов провалилась, но судя по активности разработчиков, метрики были собраны, спринты составлены, и идёт полноценное исправление багов во всех контрактах.
2. Говоря про Stargate V2, и про токен, они не будут выпущены пока не выйдет вторая версия протокола LayerZero.
3. Ключевой кошелек, за которым лично я буду следить - 0xc13. Выглядит это как адресс тимлида, который собрав в кучу все данные от разработчиков контрактов и разворачивал инфраструктуру.
4. Сейчас идёт стадия обработки первой иттерации тестов. Ждём вторую иттерацию, после которой уже будет что-то более понятно.
5. Я смещаю свой прогноз по выходу токена до 2-3 месяцев. Это временно, пока я не увижу вторую иттерацию тестирования, и косвенных признаков, по которым можно будет понять, удовлетворительно ли прошло тестирование.

Внимание: всё что сказано мною в посте, является моими личными домыслами.