Ваш первый COIN
Это руководство рассказывает о том, как скомпилировать, развернуть и заминтить собственный coin, названный MoonCoin.
Шаг 1: Выберите SDK
Установите предпочтительный SDK из приведенного ниже списка:
Шаг 2: Установите CLI
Установите предварительно скомпилированный двоичный файл для Aptos CLI.
Шаг 3: Запустите пример
Клонируйте репозиторий aptos-core
:
Перейдите в каталог Typescript SDK:
Установите необходимые зависимости:
Запустите пример Typescript your_coin
Шаг 3.1: Сборка пакета
Выполнение примера приостановится со следующим результатом:
В этот момент откройте другой терминал и смените каталог на каталог пакета MoonCoin:
Затем соберите пакет с помощью CLI:
Параметр --named-addresses
представляет собой список отображений адресов, которые должны быть переведены для того, чтобы скомпилированный пакет хранился на учетной записи Alice. Обратите внимание, что MoonCoin
установлен на адрес Alice, указанный выше. Также --save-metadata
требуется для публикации пакета.
Шаг 3.2: Завершение примера
Вернувшись к предыдущему окну, нажмите ENTER, так как пакет теперь готов к публикации.
Приложение будет завершено, выполняется:
Шаг 4: MoonCoin в деталях
Шаг 4.1: Создание и публикация пакета MoonCoin
Контракты Move фактически представляют собой набор модулей Move, известный как пакет. При развертывании или обновлении нового пакета компилятор должен быть вызван с параметром --save-metadata
для публикации пакета. В случае с MoonCoin важны следующие файлы:
build/Examples/package-metadata.bcs
: Содержит метаданные, связанные с пакетом.build/Examples/bytecode_modules/moon_coin.mv
: Содержит байткод для модуляmoon_coin.move
.
Они считываются примером и публикуются в блокчейне Aptos:
Шаг 4.2: Понимание модуля MoonCoin
Модуль MoonCoin определяет структуру MoonCoin
, или отдельный тип типа coin. Кроме того, он содержит функцию init_module
. Функция init_module
вызывается при публикации модуля. В этом случае MoonCoin инициализирует тип coin MoonCoin
как ManagedCoin
, который обслуживается владельцем учетной записи.
ФРЕЙМВОРК MANAGEDCOIN
ManagedCoin
- это простой фреймворк для управления coins, которыми управляют непосредственно пользователи. Он предоставляет удобные оболочки вокруг mint
(минта) и burn (сжигания)
.
Шаг 4.3: Понятия coins
Coins имеют несколько примитивов:
Минт: Создание новых coins.
Сжигание: Удаление coins.
Замораживание: Запрет на хранение coins в
CoinStore
.Регистрация: Создание ресурса
CoinStore
на учетной записи для хранения coins.Передача: Вывод и ввод coins в
CoinStore
.
ПОДСКАЗКА Организация, создающая новую coin, получает возможности для минта, сжигания и замораживания.
Для того чтобы переводить, выводить или вносить coins, необходимо иметь CoinStore
, зарегистрированный для конкретного coin. В данном руководстве это CoinStore<MoonCoin>
.
Шаг 4.3.1: Инициализация coin
После публикации типа coin в блокчейне Aptos организация, опубликовавшая этот тип coin, может инициализировать ее:
Это гарантирует, что данный тип coin никогда не был инициализирован ранее. Обратите внимание на проверку в строках 10 и 15, чтобы убедиться, что вызывающий initialize
является тем же самым пользователем, который фактически опубликовал этот модуль, и что на его учетной записи не хранится CoinInfo
. Если оба эти условия выполняются, то CoinInfo
сохраняется, и вызывающая сторона получает возможности для сжигания, замораживания и минта.
ПОДСКАЗКА MoonCoin вызывает эту функцию инициализации автоматически при публикации пакета.
Шаг 4.3.2: Регистрация coin
Чтобы использовать coin, организация должна зарегистрировать для нее CoinStore на своей учетной записи:
Поскольку это public fun
, а не public entry fun
, coins должны будут предоставить свои собственные средства для регистрации или пользователи могут создать scripts
Move для вызова функции.
MoonCoin использует ManagedCoin
, который предоставляет оболочку функции входа: managed_coin::register
.
Шаг 4.3.3: Минт coin
Для минта coins требуется возможность минта, которая была создана во время инициализации. Функция mint
(см. ниже) принимает эту возможность и сумму и возвращает структуру Coin<T>
, содержащую это количество coins. Если coins отслеживает предложение, она будет обновлена.
ManagedCoin
облегчает эту задачу, предоставляя функцию входа managed_coin::mint
.
Шаг 4.3.4: Передача coin
Aptos предоставляет несколько структурных блоков для поддержки переводов coin:
coin::deposit:<CoinType>
Позволяет любому субъекту внести coin на учетную запись, которая уже вызвалаcoin::register<CoinType>
.coin::withdraw<CoinType>
: Позволяет любому пользователю снять сумму coin со своей учетной записи.coin::transfer<CoinType>
: Использует функции withdraw и deposit для выполнения передачи из конца в конец.
ВАЖНО Aptos не эмитирует события перевода, вместо этого он использует события вывода и ввода средств.
Last updated