Course Overview

Глава 6 День 2 - Взаимодействие с нашим контрактом в Testnet

Теперь, когда мы развернули наш контракт в testnet, мы можем взаимодействовать с ним в терминале с помощью Flow CLI. Ух ты! Дальше будет только сложнее. Надеюсь, вы не запутаетесь!

Сегодня все будет немного по-другому. Мы будем делать что-то вместе. Я не собираюсь давать вам все ответы ;)

Взаимодействие с нашим контрактом

Теперь, когда мы развернули наш контракт в testnet, мы можем взаимодействовать с ним в терминале с помощью Flow CLI.

Чтение общего Total Supply

Давайте прочитаем общий Total Supply нашего смарт-контракта!

Шаг 1: Создайте скрипт, который считывает значение totalSupply нашего контракта и возвращает его.

Шаг 2: Вставьте этот скрипт в папку scripts и назовите его read_total_supply.cdc.

Шаг 3: Откройте терминал в базовом каталоге проекта и запустите:

bash
		
			flow scripts execute ./scripts/read_total_supply.cdc --network=testnet
		 
	

Если все работает правильно, вы должны увидеть общий запас в консоли (он должен быть равен 0, если вы еще ничего не чеканили).

read the total supply

Настройка нашей коллекции

Давайте выполним транзакцию для настройки нашей коллекции NFT в Testnet.

Шаг 1: Если вы еще не сделали этого, выполните транзакцию для настройки коллекции пользователя для хранения его NFT.

Шаг 2: Добавьте файл setup_collection.cdc в папку транзакций с кодом Cadence.

Шаг 3: Откройте терминал в базовом каталоге проекта и выполните:

bash
		
			flow transactions send ./transactions/setup_collection.cdc --network=testnet --signer=testnet-account
		 
	

Если все работает правильно, вы должны увидеть, что транзакция (завершена) и работает!

setup collection transaction

Мы успешно установили нашу коллекцию NFT в testnet. Это так круто.

Как передавать аргументы с помощью Flow CLI

До сих пор мы не показали вам, как передавать аргументы в сценарий или транзакцию с помощью Flow CLI.

Для этого их нужно просто поместить после путей к файлам транзакции или скрипта.

Пример №1:

bash
		
			flow transactions send ./transactions/mint_nft.cdc 0xfa88aefbb588049d --network=testnet --signer=testnet-account
		 
	

Если ваша транзакция mint_nft.cdc принимала recipient: Address, то в данном случае это был бы 0xfa88aefbb588049d.

Пример №2:

bash
		
			flow scripts execute ./scripts/read_nft.cdc 0xfa88aefbb588049d 3  --network=testnet
		 
	

Если ваш скрипт read_nft.cdc принял сообщение recipient: Address, id: UInt64, то в данном случае это было бы 0xfa88aefbb588049d и 3.

Пример №3:

bash
		
			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, а затем запустили транзакцию для установки нашей коллекции. Вы все делаете потрясающе!

Квесты

  1. Разберитесь, как создать NFT для себя, отправив транзакцию с помощью Flow CLI, как мы делали сегодня, когда создавали коллекцию. Скорее всего, вам также придется передать аргумент.

Полезный совет: Помните, что только владелец контракта имеет доступ к ресурсу Minter. Это работает в нашу пользу, потому что signer транзакции будет тем, кто развернул контракт, поэтому у нас есть доступ к Minter.

Полезный совет №2: Также помните, что для создания коллекции вы должны подписать транзакцию, чтобы транзакция имела доступ к вашему AuthAccount. В данном случае, поскольку у нас есть только 1 созданный аккаунт testnet (тот, кто развернул контракт), мы будем чеканить NFT для себя, чтобы сделать это проще.

  1. Запустите скрипт для чтения нового значения totalSupply с помощью Flow CLI

  2. Запустите скрипт для чтения идентификаторов NFT в чьей-либо коллекции с помощью Flow CLI

  3. Запустите скрипт для чтения метаданных конкретного NFT из чьей-либо коллекции с помощью Flow CLI.

  4. Запустите скрипт, чтобы считать GoatedGoats totalSupply на Flow Mainnet. Их контракт живет здесь: https://flow-view-source.com/mainnet/account/0x2068315349bdfce5/contract/GoatedGoats

Полезный совет №1: Чтобы запускать скрипты на Mainnet, просто поменяйте флаг --network=testnet на --network=mainnet.

Полезный совет №2: Поскольку вы будете запускать скрипт из локального файла, вам придется ввести в скрипт адрес основной сети контракта GoatedGoats, например:

cadence
		
			import GoatedGoats from 0x2068315349bdfce5
		 
	

К сожалению, теперь вы будете получать ошибки компиляции (расширение VSCode не сможет понять импорт), но это все равно будет работать.

  1. Разберитесь, как прочитать чьи-то GoatedGoats NFTs из их коллекции, и запустите для этого скрипт с помощью Flow CLI.