August 12, 2023

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 кодинг это просто убийство времени, его нужно немного понять и все будет гораздо легче