Web3.0 на Python, часть 1: основы

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Привет, Хабр! Начиная знакомиться с Web3, было сложно найти в одном месте понятные примеры базовых операций на Web3Py. Например: просмотр баланса, отправка транзакций, минтинг NFT, взаимодействие с контрактами и тд. В этой статье я попытался собрать примеры, которые покрывают > 90% потребностей для разработки бэкенда для web3 приложений. Кстати, все примеры будут применимы и для Web3.js с поправкой на название методов и синтаксис.

Анонс второй части статьи, в которой речь пойдет о более продвинутых примерах с оптимизацией запросов к нодам и сокращении числа этих самых запросов, будет у меня в канале.

А здесь же рассмотрим следующие темы:

  • Подключение к блокчейну

  • Просмотр баланса для адреса

  • Транзакции с нативной валютой сети

    • Создание и отправка транзакции

    • Статус транзакции

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

    • ERC20 токены

      • Просмотр баланса, allowance, название токена

      • Отправка токена, выдача allowance

    • NFT

      • Получение цены и названия NFT

      • Minting/покупка/выпуск NFT

Все эти примеры удобно воспроизводить в jupyter-notebook. Предварительно нужно установить Web3Py и завести себе кошелёк, например, MetaMask, чтоб у вас был ваш адрес.

Подключение к блокчейну ⛓️

Подключиться к блокчейну не значит, что нужно локально выкачивать себе все данные с него, нужно всего лишь подключиться к одной из его нод (копий). Можно сделать это 3 способами с помощью специального URL к ноде:

  • HTTP

  • WebSocket

  • RPC

Где взять URL?

Существует отличный сервис, который собрал все бесплатные ссылки на бесплатные ноды в одном месте — chainlink. Очевидный минус этих нод, что их используют все кому не лень. Из-за этого они не всегда выдерживают нагрузку и могут отвечать дольше нужного или не отвечать вовсе.

Если хотите свою приватную ноду за $, то стоит посмотреть на сервисы Infura и Ankr, во втором намного больше сетей.

Будем испытывать Web3 на сети Testnet Binance Smart Chain (BSC).

from web3 import Web3

binance_testnet_rpc_url = "https://data-seed-prebsc-1-s1.binance.org:8545/"
web3 = Web3(Web3.HTTPProvider(binance_testnet_rpc_url))
print(f"Is connected: {web3.isConnected()}")  # Is connected: True
# С подключением вас 						
Источник: https://habr.com/ru/post/674204/


Интересные статьи

Интересные статьи

Привет, Хабр! Я расскажу о трех опциональных, но довольно полезных инструментах фреймворка dash, которые сделают ваш dashbord показательным и интерактивным.
В первой части статьи мы прояснили 3 момента: 1. ISO на самом деле означает усиление (gain); 2. Нативное ISO означает 0 дБ усиления, вне зависимости от камеры и профиля; 3. Повышение усиления не меняе...
К началу XIX века учёные имели обширные знания о живой природе, однако знания эти носили отрывочный характер и не были объединены в какую-либо систему. Независимо друг от друга учёные приходили к идее...
В прошлой части мы в общих чертах рассмотрели, как устроен REST API на DRF при работе на чтение. Едва ли не самый сложный для понимания этап — сериализация. Вооружившись исходным кодом, п...
Вторая часть поста про то, как сделать, чтобы продуктовая agile-команда выполнила задачу к определенному сроку, но при этом не изменила принципам работы по потоку. П...