Я пытался продать все свои Axies и создал для этого Python-скрипт, взгляните:



После продажи некоторых никто не хочет покупать по текущей цене, поэтому мне нужно снизить цену, но сначала нужно отменить текущую продажу. Вы можете отменить один за другим, но это утомительно, если у вас более 50 осей. Эта статья должна показать вам, как я это сделал.

Если мы перейдем к Ronin Explorer, мы увидим четкую запись «Отменить продажу NFT» в последней строке в столбце «Действие».

Нажав на эту транзакцию, мы можем увидеть представление сведений о транзакции.

Есть много интересной информации. Давайте сосредоточимся на поле «Входные данные». Вызывается функция cancelAuction, и в качестве параметра ей требуется целое число без знака размером 32 байта (8 * 32 байта = 256 бит). Это «индекс листинга», который выдается контрактом Marketplace при создании аукциона.

Когда аукцион создан, генерируется событие с именем AuctionCreated, и одним из возвращаемых аргументов является _listingIndex. См. поле данных на рисунке.

Это должно быть записано вашей программой каждый раз, когда создается продажа. Этого можно добиться за счет сохранения стандартного вывода при вызове скрипта продажи.

python3 sell_axie_all_auction.py > output_listing.txt

После этого вы можете обработать .txt с помощью grep или sed.

grep -Eo "'_listingIndex': [0-9]+" output_listing.txt |grep -Eo "[0-9]+" > cancel_sell.txt

Файл cancel_sell.txt следует использовать, если вы хотите отменить все продажи.

Скрипт Python

Вернувшись к представлению «Сведения о транзакции» «Отменить продажу NFT» в поле «Кому:», мы можем скопировать адрес смарт-контракта, а затем мы можем создать наш обработчик контракта следующим образом:

ABI создается сигнатурой метода отмены и таким событием:

Остальная часть кода выглядит следующим образом:

Строка 1, чтобы получить адрес продавца.

Строка 4 получает обработчик файла, содержащего список «Listing Index».

Строка 6 запускает цикл for для каждой строки файла, то есть для каждого индекса.

Строки 8–10, за исключением индексов в списке строки 3.

Строка 12 Получить одноразовый номер.

Строки 14–18 Создайте транзакцию.

Строка 20–21 Подпишите транзакцию с помощью закрытого ключа, хранящегося в config.STAKE_PK.

Строки 22–24 Отправьте транзакцию и дождитесь получения.

Строка 25 Отфильтруйте квитанцию ​​по событию AuctionCancelled.

Строки 26–28 Выведите соответствующую информацию и подождите 1 секунду.

Весь код

Вы можете разветвить код здесь: https://github.com/decentralfarm/crypto-playground/blob/main/axie/selling/cancel_sell.py

Полный код:

Заключение

Я только что протестировал Отмену Аукциона для Axies, но не вижу причин, по которым его нельзя использовать для других NFT для продажи на Axie Infinity Marketplace, таких как Земля или Предметы.

Если вы найдете ценность в этой статье, рассмотрите возможность подписаться и похлопать в ладоши. Спасибо!