Mint NFT через смарт-контракт
Хотите минтить NFT напрямую через контракт? Не вопрос, сами напросились! 😈
Зачем мне вообще нужОн ваш минт через контракт? 🤔
Если проект хайповый, то за счет большого трафика на сайт сервера не выдерживают. И во время ожидания пока сайт прогрузится умники минтят напрямую через контракт.
1. Чтобы сминтить напрямую нужно открыть смарт-контракт NFT в etherscan.io или другом EVM (Чтооо?) совместимом блокчейн эксплорере (bscscan.com, polygonscan.com).
2. Далее нажимаем на вкладку Contract.
3. Внутри этой вкладки нажимаем Write Contract.
4. Подключаем метамаск по нажатию на кнопку Connect to Web.
5. После нажатия на Write Contract эксплорер покажет нам список функций контракта. Нам нужно найти что-то в духе mint, mintNFT, buy, purchase и т.д в целом определить нужную функцию на фоне остальных по названию не сложно.
Для примера можно глянуть контракт Collectvox (https://etherscan.io/address/0xad9fd7cb4fc7a0fbce08d64068f60cbde22ed34c#writeContract) (никто не смог сминтить их через сайт). В данном случае нужная нам функция называется mintNFT. Эта функция принимает два параметра. Первый - количество эфира, второй - количество желаемых NFT (Цену и количество NFT за транзакцию можно проверить во вкладке Read Contract). Эфир рассчитывается в зависимости от цены и количества желаемых NFT. Для примера, в Collectvox максимум за транзакцию можно было сминтить 5 штук по цене 0.0888 ETH. Итого в поле с эфиром, если хотите сминтить 5 штук нужно ввести 0.444 (5 * 0.0888).
6. Далее нажимаем на кнопку сжечь бабло Write и подтверждаем транзакцию в метамаске.
Если вам это уже кажется сложно, то у меня для вас плохие новости. Это только начало! 😄Но это хорошая возможность качнуть свои знания. Так что делаем глубокий вдох и копаем дальше! 💪
Ну ок, а как понять через какой контракт минтить?
Если повезло, то команда проекта публикует контракт заранее, чтобы комьюнити знало с чем имеет дело. Вы сможете его найти в твиттере или дискорде.
Часто команда пытается сохранить контракт в тайне, чтобы такие как мы не минтили напрямую. Но это не страшно.
При достаточном упорстве номер контракта можно найти в коде сайта (Где кнопка БАБЛО? Какой код блэт?!). 😀
Чтобы посмотреть код сайта, нужно нажать F12 в Google Chrome, в открывшемся окне нажать Исходники.
В исходниках находим все файлы заканчивающиеся на `.js и в каждом ищем строку которая начинается на 0x. Иногда среди .js фалов можно заметить что-то в духе constants.js` в таком случае вам повезло. Скорее всего в нем вы найдете нужный номер контракта.
Нередко команда подгружает необходимый код за несколько часов до минта, так что не факт что вы найдете нужную информацию сразу.
Если не повезло, то есть еще одна хитрость которой разработчики пытаются скрыть номер контракта, но это уже совсем другая история. 😅
Я нашел контракт, но когда нажимаю на Write метамаск показывает ошибку!
Это не страшно, дышите ровно и не спешите тыкать все подряд. ☺️
Для того чтобы можно было сминтить, нужно чтобы выполнилось необходимое условие:
• Временное окно минта открыто.
• Владелец контракта включил минт.
Как только нужное условие выполнено метамаск выполнит транзакцию несмотря на ошибку.
С первым случаем все достаточно просто. Просто ждем пока часы покажут нужное вам время и жмем кнопку Confirm в метамаске.
Во втором случае нужно следить за тем какие транзакции запускает владелец контракта. Владельца можно проверить во вкладке Read Contract по нажатию на owner. Этот owner должен запустить транзакцию в духе flipSaleState, activatePublicSale и т.д. Чтобы облегчить работу по слежке за владельцем можно воспользоваться http://blocknative.com, чтобы понять как им пользоваться лучше всего просто потыкать все что там есть и перечитать доки.
По ошибке ясно, но метамаск показывает космические параметры по газу! 😱
На счет этого не переживайте. На минт большинства NFT нужно примерно 150 тысяч в поле Gas Limit. Если вам нужно сминтить 2 NFT, то в этом поле пишем 300 тысяч и т.д. Но учтите, что на большинство NFT хватает 150 тысяч, но есть исключения и если не хотите сжечь драгоценный эфир в пустую лучше удвоить эту цифру. Не переживайте, больше чем нужно сеть все равно не съест. Еще раз повторюсь, что 150 тысяч - это примерный минимум, который сеть заберет по факту. В метамаске надо ставить лимит газа в полтора-два раза больше. Если есть предпосылки, что вместо одной NFT вас наградят еще парочкой, то учитывайте это тоже!
С лимитом газа разобрались. Как быть с Gas Price и Priority Fee?
Тут все зависит от того насколько хайповый проект и торгуются ли NFT уже на рынке или нет. Вы можете сами регулировать Gas Price и Priority Fee, смотреть как это влияет на цену и уже в зависимости от этого принимать решение минтить или нет.
Ранее подобную технику знали немногие. Сейчас ситуация уже другая. Если проект сильно хайповый или на рынке уже есть часть NFT в продаже, то лучше минт скипнуть, иначе рискуете нарваться на супер большую комиссию за минт, а по факту получите бесполезный JPEG.
Сейчас многие проекты практикуют минт через очередь или выбирают случайным образом среди зарегистрировавшихся так было с Mekaverse и Thorguards, для подобных штук нужно мультиачить.
Если у вас есть время и нету комфортного депозита, который позволит вам сжечь несколько тысяч баксов за транзакцию, то ваш вариант - это активничать в необходимом комьюнити. Часто там проводят вайтлисты, розыгрыши, конкурсы мемов и т.д. Так можно либо получить NFT бесплатно, либо получить право на минт без конкуренции по газу.