Как сделать свой OFT-токен
Ранее я уже рассказывал о протоколе LayerZero. Также упоминал, что по программе lzCatalyst выделяются большие средства на разработку омничейн-решений. Если взглянуть на экосистему LayerZero, то самым популярным таким решением являются OFT-токены. Пример такого токена — USDT0.
Мы с командой решили по косточкам разобрать OFT-токен и, конечно же, сделать свой. Статья получилась большая, поэтому для удобства она разбита на три части + отдельная часть по архитектуре LayerZero.
Важная ремарка — это не пересказ документации, а скорее дополнительные детали, которые там плохо разобраны или вообще не упомянуты.
🔨 Простой OApp в Remix
Все начинается с OApp (Omnichain Application) — омничейн-приложения, имеющего все необходимые интерфейсы для отправки и получения сообщений. Перед тем как создать свой OFT, стоит попрактиковаться в отправке простого сообщения из одного блокчейна в другой, например, "Hello, World" или что-то более оригинальное.
Для простоты сделать это лучше всего в онлайн-IDE Remix. Для этого даже не нужно быть разработчиком — справится любой, кто внимательно прочитает гайд. Это позволит понять самые основы омничейн-взаимодействия: например, расчёт стоимости газа для отправки, специфику формата адресов, которые используются в экосистеме LZ, а также устройство элементарного OApp.
А для тех, кто совсем не хочет заморачиваться, я развернул контракты в мейннете Arbitrum и Polygon — можете воспользоваться ими для отправки сообщений (через Remix).
🪙 OFT-токен
Тут самое мясо 🥩. Чтобы создать свой OFT-токен, лучше всего подойдёт готовый проект от LayerZero, который можно развернуть одной командой: npx create-lz-oapp@latest. Он включает в себя все необходимые инструменты:
▫️ базовый контракт OFT-токена;
▫️ тесты на Foundry и Hardhat;
▫️ скрипты деплоя и профилирования газа;
▫️ конфигурацию стека безопасности для LayerZero.
Чтобы понять, из чего состоит OFT-токен и что ещё с ним можно сделать, нужно разобрать, как работают основные функции: send и lzReceive. В процессе выполнения они делают много интересного, например, конвертируют amount в shared decimals для отправки и обратно в local decimals при получении, а также удаляют «пыль».
Для самых искушённых есть Foundry-скрипт для отправки токенов и объяснение того, как профилировать расход газа в сети назначения.
🎛 Параметры (options), особенности, PreCrime
Одна из важных составляющих омничейн-взаимодействия в протоколе LZ — работа с опциями. Опции отвечают за то, как сообщение будет обрабатываться в сети назначения. Поэтому необходимо понимать, как они устроены и какие бывают.
Ⓜ️ OFT-токен MetaLamp
Для тех, кто разобрался в теории отправки омничейн-сообщений, но не хочет писать свой токен, а просто хочет посмотреть живой пример, есть токен MetaLampOFTv1, развёрнутый в Ethereum Sepolia и Polygon Amoy. Чтобы получить 100 токенов, можно вызвать функцию claim контракта через Etherscan или Polygonscan. Сам проект лежит здесь.
Клеймить MetaLamp-токен можно сколько угодно, ни в чем себе не отказывайте 😉
Мы с командой регулярно пишем в Telegram-канале. Если вам близки темы, о которых здесь говорим, то заходите.