Краткое руководство по экспериментированию с этой программой

Эта статья является продолжением предыдущей статьи Как инициализировать учетные записи Mint и токены Mint с помощью Anchor Framework, которую я написал по следующей ссылке. Я настоятельно рекомендую прочитать эту статью, чтобы лучше понять предысторию этого урока.

Эта статья покажет вам, как использовать «макросы извлечения» в фреймворке Anchor для сжигания уже выпущенных токенов. Прежде чем мы начнем, я хочу рассказать вам, что такое фреймворк Anchor и как он поможет таким разработчикам, как мы, использовать сеть Solana. В отличие от экосистемы Ethereum, разработка на основе Solana немного отличается, в основном потому, что это два типа сетей блокчейнов.

Если у вас есть предыдущий опыт разработки в сети Solana, вы должны знать, что сериализация и десериализация — это две концепции, о которых вы всегда должны помнить при разработке на Solana. Здесь на помощь приходит фреймворк Anchor. Этот фреймворк упрощает сериализацию/десериализацию структур, поэтому разработчикам не нужно об этом беспокоиться. Это делается с помощью «получения макросов».

Согласно официальной документации, которую можно найти здесь, производные макросы могут обеспечивать дополнительную функциональность за счет использования атрибутов и инструкций.

В этой статье давайте посмотрим, как платформа Anchor упростила для разработчиков процесс сжигания токенов из определенной связанной учетной записи токена (ATA).

Шаг 1. Предпосылки

  • VS Code — Редактор кода
  • Якорная версия — 0.24.2
  • Часть 1 этого урока находится здесь
  • Предыдущие знания фреймворка Anchor

Шаг 2. Утвердить токены для чеканки владельцем ATA

Это код Rust для передачи разрешения другой стороне на сжигание токенов, принадлежащих кому-то другому.

Давайте погрузимся в этот код и посмотрим, как это работает:

  • Структура ApproveToken — это то, что передается в функцию approve_token.
  • Строка 31 указывает, какие токены ATA мы должны одобрить.
  • Строка 34 указывает, кому должно быть дано разрешение на сжигание. Важно отметить, что эта транзакция должна быть подписана текущим владельцем ATA, где сейчас находятся токены.
  • signer в строке 35 должен быть владельцем ATA, упомянутого в строке 31.

Затем эта структура будет передана функции approve_token вместе с количеством токенов, которым должно быть предоставлено одобрение, указанному как amount. Затем будет выполняться межпрограммный вызов (CPI) для подтверждения сжигания токенов.

Теперь давайте посмотрим на код JS для предоставления разрешения на сжигание токенов.

Как вы можете видеть в приведенном выше фрагменте кода, функции подписаны fromWalletB, который в настоящее время владеет ATA и токенами внутри него. Поскольку fromWalletA указан как delegate, после выполнения этой транзакции одобрение 100 токенов в данном ATA будет передано fromWalletA для сжигания.

Важно отметить, что даже после выполнения транзакции указанное количество токенов все еще будет находиться внутри того же ATA. Только его разрешение на сжигание передается fromWalletA.

Еще одна важная вещь, которую следует помнить, это то, что если вы хотите, чтобы ваши токены были сожжены, разрешение должно быть возвращено первоначальному владельцу учетной записи монетного двора. Несмотря на то, что вы передали одобрение на какой-то случайный кошелек, их нельзя будет потом сжечь и удалить из вашего ATA. Сжечь их может только владелец монетного двора, откуда пришли токены.

Шаг 3. Сжечь токены из ATA

Предполагая, что разрешение на создание токенов было возвращено владельцу учетной записи монетного двора, давайте посмотрим, как мы можем написать код для сжигания токенов из определенного ATA.

Этот код аналогичен коду, используемому для чеканки токенов в предыдущем руководстве. Поэтому я не буду углубляться в этот код, чтобы объяснить, как он работает. Это должно быть довольно очевидно для вас сейчас. Важно отметить, что в строках 34 и 35 from счет помечен как mut, потому что функция изменит баланс счета. Точно так же учетная запись mint также помечена как mut. После сжигания общий запас токенов уменьшится.

Теперь давайте посмотрим, как взаимодействовать с этим кодом Rust из JS:

Это также очень похоже на код JS для чеканки токенов. Поэтому я не буду тратить ваше время на объяснение кода. Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь оставлять комментарии.

Вот и все. Вот как вы сжигаете токены с помощью фреймворка Anchor. Вы можете видеть, как фреймворк Anchor сильно облегчил жизнь разработчикам Solana.

Я продолжу с некоторыми другими учебниками из мира блокчейна.

До тех пор,

Ваше здоровье!!

Ресурсы

  1. Документ Anchor Lang — https://docs.rs/anchor-lang/latest/anchor_lang/derive.Accounts.html
  2. Часть 1 руководства — https://betterprogramming.pub/how-to-initialize-mint-accounts-and-mint-tokens-using-the-anchor-framework-c989d1ba4f97