Web3 за час
Я сделал неплохое решение для web3 разработчиков, особенно, для начинающих
P.s А вообще, я писал это решение чисто для себя, его использую в реальных проектах, AUTOSOFT например :)
Что такое Web3 чтобы было проще понять
Вообще, тут нет ничего особенного, к Web3 - можно относиться как к большой структуре данных, с которой можно взаимодействовать. Взаимодействие происходит через ноды, по сути, мы работаем с api, но с рядом особенностей
Уже существуют неплохие гайды, для тех, кто в первый раз - советую к полному прочтению:
Первые шаги
Я выпустил свою либу, на гите и pypi уже прописал простые примеры использования, но тут опишу все детальней
GitHub - https://github.com/langeth123/Web3Account PyPI - https://pypi.org/project/web3-account/
Для начала работы, необходимо:
1. Установить: Visual C++ (необходимо для web3 библиотеки)
2. Установить последнюю версию моего творения: pip install web3-account
Сделаем простой перевод денег:
from web3_account import * account = Web3Account( "", # your secret key "avalanche", after_tx_sleeping=False # after_tx_sleeping - sleep random timing after submitted tx ) tx_status = account.send_money("0x54C32309b67e72bD44899e46EC630d14Eb96125f", 0.001) logs.info(f'Tx status: {tx_status}. If it is True - tx complited, else: failed')
Мы создаем класс Web3Account, в него передаем переменные: приватник, название сети в которой хотим работать и доп. параметр: after_tx_sleeping (чтобы после трансфера скрипт сразу закончил работу)
По дефолту, скрипт подключается к нодам ANKR
ethereum bsc fantom polygon arbitrum avalanche optimism celo gnosis polygon_zkevm zksync
Вызываем функцию send_money, указываем получателя и сумму которую хотим отправить и вуаля, транза отправилась
Давайте напишем софт на Holograph
Для того, чтобы понять что нужно делать, сначала зайдем на сам сайт и руками сминтим нфт
Нас интересует исключительно транза что прошла
Мы сразу обращаем внимание, что кроме стандартных комиссий, мы отдали еще 0,11$ за саму нфт, смотрим какие параметры передали в транзу, нажимаем на Click to see More
Видим название функции: purchase, теперь прожимаем Decode Input Data
И видим один единственный параметр: _price, со значением: 1.
Далее дело за логикой:
Нам нужно всего 2 параметра, это:
1. Какое кол-во матика нужно прописывать в value транзакции?
2. Что значит параметр в контракте: _price?
Чтобы получить value, нам нужно взять 2 константы: MINT_PRICE и MATIC_PRICE MINT_PRICE = 0.11 MATIC_PRICE = 0.68 (актуальный на момент написания статьи) value = MINT_PRICE / MATIC_PRICE
Если попробовать еще раз сминтить руками, но уже не 1 нфт, а 2, то в параметрах транзы увидим что значение _price поменялось на: 2. Из этого следует, что _price - это кол-во нфт которое мы хотим сминтить
Так же, для каждого контракта есть свое ABI, если контракт верифнут - его можно легко достать, например: https://polygonscan.com/address/0x3b2d8bb062d121619acff4e01ece2690789e919f#code
И спускаемся в самый низ, находим Contract ABI, копируем значение
И если все совместить, мы получим такой код:
Если что, весь код есть на гите проекта
По сути, весь Web3 кодинг это просто убийство времени, его нужно немного понять и все будет гораздо легче