NFT
September 23, 2021

ENVELOP: работа с протоколом в BSC (Binance Smart Chain). Часть IV. Добавление нативных токенов в обеспечение обёрнутого NFT

Итак, краткое содержание предыдущих серий:

  1. https://teletype.in/@menaskop/envelop-bsc-part-1: создаём NFT на стороннем ресурсе.
  2. https://teletype.in/@menaskop/envelop-bsc-part-2: выдаём разрешение Протоколу.
  3. https://teletype.in/@menaskop/envelop-bsc-part-3: оборачиваем NFT посредством Протокола.

А теперь? Теперь попробуем в wNFT (обёрнутый NFT) положить нативные токены. Поехали?

Дисклеймеры

Первое: в данном случае вам придётся работать с боевой сетью (mainet), поэтому, если вы не чувствуете за собой достаточного опыта / понимания / знания, то делайте всё на страх и риск собственный.

Второе: в любом случае вам придётся действовать самостоятельно, используя свои средсства, навыки, кошельки и всё прочее. Мы нести ответственность за это не можем никаким образом.

Третье: блокчейн-технологии всё ещё молоды и уж мы точно не можем отвечать за стабильность сети, её обновления и прочие объективные моменты.

Четвёртое: помните, что главный принцип любого теста: "не навреди".

Удачи!

Добавление нативных токенов в обеспечение обёрнутого NFT

Шаг №27. На странице контракта в bscscan.com заходим на вкладку Contract, далее Write Contract. Находим метод addNativeCollateral:

Шаг №28. Заполняем входные параметры:

  1. payableAmount (BNB) - укажем значение 0.001: так мы добавляем обёрнутому NFT обеспечение нативным токеном BNB в размере 0.001. Разделитель дробной части - точка.
  2. _wrappedTokenId - указываем значение 2. Это id обёрнутого NFT.
  3. Нажимаем кнопку Write. MetaMask предложит нам подтвердить транзакцию. Важно! У вас на кошельке должно быть достаточно нативных токенов для внесения его в обеспечение и оплаты транзакции сети.
  4. На вкладке Read Contract находим метод getTokenValue. Передаём ему номер нашего обёрнутого NFT. В нашем случае это 2.
  5. Нажимаем кнопку кнопку Query.

Шаг №29. Метод вернёт массив из двух значений:

  • Первое значение - количество накопленных нативных токенов обеспечения.
  • Второе значение - количество накопленных токенов комиссий.

Но это ещё не всё: теперь попробуем обернуть BEP-20 токены.

Добавление обеспечения в виде BEP-20 токенов

В Протоколе существует белый список адресов контрактов, чьи токены принимаются Протоколом в обеспечение обёрнутого NFT. На текущий момент у пользователя возможности посмотреть весь список разрешённых токенов и их адресов нет: в следующей версии Протокола такая возможность у пользователя появится.

Продемонстрируем, как принимается обеспечение в виде BEP-20 токенов на примере DAI. Внимание! Для проведения теста на кошельке в MetaMask должен быть необходимый остаток токенов DAI.

Шаг №30. Адрес контракта токенов DAI в главной сети BSC 0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3. Проверим, что этот адрес включен в белый список. На вкладке Read Contract находим метод partnersTokenList. Вводим адрес, указанный выше. Нажимаем кнопку Query:

Шаг №31. Значение параметра (должно быть) enabledForCollateral = true, что означает, что данный токен может приниматься в обеспечение обёрнутого NFT .Для того чтобы мы могли положить DAI в обеспечение обёрнутого NFT, необходимо дать разрешение контракту протокола управлять нашими токенами.

Шаг №32. Для этого перейдём на страницу контракта DAI на сайте-сканере: https://bscscan.com/address/0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3#writeContract. Находим метод approve. Указываем методу адрес контракта протокола 0xc2571eBbc8F2af4f832bB8a2D3A4b0932Ce24773 и количество токенов 1000000000000000000 (число уже указано в переведенном формате), которыми разрешаем управлять. Нажимаем Write. MetaMask попросит нас подтвердить транзакцию. Подтверждаем:

Шаг №33. Теперь мы можем добавить обеспечение нашему обёрнутому NFT в DAI. Для этого возвращаемся на страницу контракта протокола (https://bscscan.com/address/0xc2571eBbc8F2af4f832bB8a2D3A4b0932Ce24773#writeContract). Находим метод addERC20Collateral. Указываем значения входных параметров:

  • _wrappedTokenId - id обёрнутого NFT. В нашем случае 2.
  • _erc20 - адрес контракта DAI, чьи токены мы закладываем в обеспечение. В нашем случае это 0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3.
  • _amount - количество токенов DAI. В нашем случае 1000000000000000000.
  • Нажимаем Write.

MetaMask предложит нам подтвердить транзакцию. Подтверждаем:

Шаг №34. Проверим, что обеспечение у обёрнутого NFT в виде BEP-20 токенов DAI теперь есть. Для этого переходим на вкладку Read Contract. Находим метод getERC20Collateral. Передаём методу номер нашего обёрнутого NFT. В нашем случае это 2. Нажимаем кнопку Query. Метод вернёт нам массив адресов токенов обеспечения и количество токенов:

Шаг №35. Обратите внимание, что владеет токенами DAI теперь контракт протокола. Баланс токенов DAI в MetaMask должен (у вас) уменьшиться от начального.

Что ж, и эта часть подошла к концу. В следующей (последней) разберём перевод wNFT новому владельцу, а пока -

До!

P.S. Все вопросы можете задавать в нашем общем чате, а ещё лучше - чате bounty-кампании (у Александра Агаджанова под ником alexamuek).