Глава 6 День 2 - Взаимодействие с нашим контрактом в Testnet
Теперь, когда мы развернули наш контракт в testnet, мы можем взаимодействовать с ним в терминале с помощью Flow CLI. Ух ты! Дальше будет только сложнее. Надеюсь, вы не запутаетесь!
Сегодня все будет немного по-другому. Мы будем делать что-то вместе. Я не собираюсь давать вам все ответы ;)
Взаимодействие с нашим контрактом
Теперь, когда мы развернули наш контракт в testnet, мы можем взаимодействовать с ним в терминале с помощью Flow CLI.
Чтение общего Total Supply
Давайте прочитаем общий Total Supply нашего смарт-контракта!
Шаг 1: Создайте скрипт, который считывает значение totalSupply нашего контракта и возвращает его.
Шаг 2: Вставьте этот скрипт в папку scripts и назовите его
read_total_supply.cdc
.
Шаг 3: Откройте терминал в базовом каталоге проекта и запустите:
flow scripts execute ./scripts/read_total_supply.cdc --network=testnet
Если все работает правильно, вы должны увидеть общий запас в консоли (он должен быть равен 0, если вы еще ничего не чеканили).

Настройка нашей коллекции
Давайте выполним транзакцию для настройки нашей коллекции NFT в Testnet.
Шаг 1: Если вы еще не сделали этого, выполните транзакцию для настройки коллекции пользователя для хранения его NFT.
Шаг 2: Добавьте файл
setup_collection.cdc
в папку транзакций с кодом Cadence.
Шаг 3: Откройте терминал в базовом каталоге проекта и выполните:
flow transactions send ./transactions/setup_collection.cdc --network=testnet --signer=testnet-account
Если все работает правильно, вы должны увидеть, что транзакция (завершена) и работает!

Мы успешно установили нашу коллекцию NFT в testnet. Это так круто.
Как передавать аргументы с помощью Flow CLI
До сих пор мы не показали вам, как передавать аргументы в сценарий или транзакцию с помощью Flow CLI.
Для этого их нужно просто поместить после путей к файлам транзакции или скрипта.
Пример №1:
flow transactions send ./transactions/mint_nft.cdc 0xfa88aefbb588049d --network=testnet --signer=testnet-account
Если ваша транзакция mint_nft.cdc
принимала recipient: Address
, то в данном случае это был бы 0xfa88aefbb588049d
.
Пример №2:
flow scripts execute ./scripts/read_nft.cdc 0xfa88aefbb588049d 3 --network=testnet
Если ваш скрипт read_nft.cdc
принял сообщение recipient: Address, id: UInt64
, то в данном случае это было бы 0xfa88aefbb588049d
и 3
.
Пример №3:
flow transactions send ./transactions/mint_nft.cdc 0xfa88aefbb588049d "Jacob the Legend" --network=testnet --signer=testnet-account
Если бы ваша транзакция mint_nft.cdc
принимала recipient: Address, name: String
, то в данном случае это были бы 0xfa88aefbb588049d
и Jacob the Legend
.
Заключение
Сегодня было много информации, но как же это здорово! Мы развернули наш собственный контракт в Flow Testnet, запустили скрипт для чтения нашего totalSupply
, а затем запустили транзакцию для установки нашей коллекции. Вы все делаете потрясающе!
Квесты
- Разберитесь, как создать NFT для себя, отправив транзакцию с помощью Flow CLI, как мы делали сегодня, когда создавали коллекцию. Скорее всего, вам также придется передать аргумент.
Полезный совет: Помните, что только владелец контракта имеет доступ к ресурсу Minter
. Это работает в нашу пользу, потому что signer
транзакции будет тем, кто развернул контракт, поэтому у нас есть доступ к Minter
.
Полезный совет №2: Также помните, что для создания коллекции вы должны подписать транзакцию, чтобы транзакция имела доступ к вашему AuthAccount
. В данном случае, поскольку у нас есть только 1 созданный аккаунт testnet (тот, кто развернул контракт), мы будем чеканить NFT для себя, чтобы сделать это проще.
Запустите скрипт для чтения нового значения
totalSupply
с помощью Flow CLIЗапустите скрипт для чтения идентификаторов NFT в чьей-либо коллекции с помощью Flow CLI
Запустите скрипт для чтения метаданных конкретного NFT из чьей-либо коллекции с помощью Flow CLI.
Запустите скрипт, чтобы считать GoatedGoats
totalSupply
на Flow Mainnet. Их контракт живет здесь: https://flow-view-source.com/mainnet/account/0x2068315349bdfce5/contract/GoatedGoats
Полезный совет №1: Чтобы запускать скрипты на Mainnet, просто поменяйте флаг --network=testnet
на --network=mainnet
.
Полезный совет №2: Поскольку вы будете запускать скрипт из локального файла, вам придется ввести в скрипт адрес основной сети контракта GoatedGoats, например:
import GoatedGoats from 0x2068315349bdfce5
К сожалению, теперь вы будете получать ошибки компиляции (расширение VSCode не сможет понять импорт), но это все равно будет работать.
- Разберитесь, как прочитать чьи-то GoatedGoats NFTs из их коллекции, и запустите для этого скрипт с помощью Flow CLI.