Соединение NFT между Layer 1 и Layer 2
Проблема
Проблема, с которой сталкивается блокчейн Ethereum, а также Layer 2 — это сегментация активов, особенно NFT. Когда NFT создается на Layer 2, NFT застревает на этом слое. Это приводит к проблеме разрозненности NFT, когда ресурсы NFT на Layer 2 не могут быть выведены на Layer 1. Наличие способа создания и передачи NFT на нескольких уровнях важно для внедрения приложений NFT на Layer 2.
Решение
Создайте способ легко переносить NFT между уровнями и снизить потребность в газе, создавая NFT на Layer 2. Это позволяет пользователю решать самостоятельно, когда они хотели бы вывести свои NFT на Layer 1 (Основная сеть ETH).
Обзорная диаграмма
Инициализация NFT контрактов
- Владелец предоставит L1_NFT_Collection развернутую L2_NFT_Collection, указав:
— Адрес L2_NFT_Collection
— Идентификатор цепочки L2_NFT_Collection
— Расположение NFT, сопоставление идентификатора цепочки с идентификатором NFT
— Диапазон выделенных NFT, например №1-100, 60-61 и др.
Диапазон равен 1000 NFT… rangeid 0 означает NFT # 0 до NFT # 999.
Структура данных
mapping(chainid => address) addresses;
mapping(rangeid => chainid) range_loc;
Claim NFT на Layer 2
Пользователь будет клеймить NFT, указав NFT ID. Контракт L2_NFT_Collection на Layer 2 будет проверять назначение идентификатора (т.е. этот Layer 2 владеет NFT) и соответствующим образом вводит NFT в этот roll up. Пользователи могут свободно передавать NFT в пределах rollup как обычно.
Вывод NFT
- Пользователь отправляет транзакцию в смарт-контракт L2_NFT_Collection, инициируя вывод средств целевому получателю на уровне 1.
- NFT помещается в контракт L2_Deposit, который блокирует NFT для последующего вывода, если это необходимо.
- Заблокированный NFT запускает перекрестное сообщение для L1_NFT_Collection, которое позволяет назначенному получателю чеканить / отзывать NFT на уровне 1
- Новая запись в L1_NFT_Collection будет добавлена для обновления цепочки владения этим конкретным NFT, структура данных: отображение (id => chainid) nft_loc; nft_loc всегда переопределяет range_loc. Чтобы определить фактическое владение цепочкой NFT, логика должна сначала проверить nft_loc, а затем range_loc, если nft_loc [id] возвращает 0.
- Если NFT уже ранее был отчеканен на уровне 1, то есть это не первый раз, когда этот NFT был выведен на уровень 1, пользователь получит этот NFT с обновленными метаданными с обновленным nft_loc.
- Получатель заклеймит NFT, указав идентификатор NFT.
(Повторный) депозит NFT на Layer 2
7. Пользователь отправляет транзакцию в смарт-контракт L1_NFT_Collection, инициируя переход к целевому получателю на целевом свертке уровня 2.
8. NFT депонируется в контракт L1_Deposit, который блокирует NFT для последующего извлечения, если это необходимо.
9. Заблокированный NFT запускает перекрестное сообщение для L2_NFT_Collection, что позволяет пользователю чеканить / клеймить существующий NFT на уровне 2 по идентификатору NFT.
- Если NFT уже был создан и помещен в целевой roll up, пользователь получит NFT с обновленными метаданными.
- L1_NFT_Collection будет обновлен nft_loc, чтобы отразить обновленное владение цепочкой NFT.
Диаграммы последовательности
Плюсы и минусы
Плюсы
- Позволяет любому пользователю клеймить NFT на другом Layer 2.
- Пользователь может отозвать NFT на уровне 2 и создать эквивалентный NFT на уровне 1 без возможности дублирования.
- Пользователь имеет возможность перенести созданный NFT в любое время с уровня 1 на уровень 2 и наоборот.
- Позволяет расширить один проект NFT до нескольких накопительных пакетов.
- Простая и недорогая первоначальная установка.
Минусы
- Владелец должен создать эквивалентный контракт NFT на поддерживаемых слоях.
- NFT могут перемещаться только со уровня 2 в цепочку координаторов (в данном случае — с уровня 1) и обратно, они не могут перемещаться напрямую с уровня 2 на уровень 2.
- Более высокая стоимость при перемещении NFT между свертками из-за задействования двух транзакций уровня 1 (снятие и депозит)
- Техническая сложность подключения обоих слоев
Расширения
Использование roll up для отслеживания владения цепочкой для снижения стоимости транзакции
Rollup можно использовать для управления владением цепочкой. Таким образом, стоимость транзакции может быть значительно снижена. Уровень 1 в этом случае можно до некоторой степени обрабатывать так же, как и другие rollupы.
Оригинал: https://ethresear.ch/t/bridging-nfts-across-layers/10799
Metis Сайт: Metis.io