
Проверка баланса криптокошелька напрямую через Python позволяет получать актуальные данные о состоянии средств без использования сторонних сервисов. Для работы с Ethereum и совместимыми сетями используется библиотека Web3.py, которая обеспечивает подключение к узлам блокчейна через RPC и позволяет считывать баланс любого адреса.
Для начала потребуется установить Web3.py и настроить доступ к публичному или приватному узлу. Адрес кошелька передается в формате строки, а функция web3.eth.get_balance() возвращает сумму в минимальных единицах криптовалюты (wei для Ethereum), что требует конвертации в более привычный формат, например, в ETH.
При запросах к API блокчейна важно обрабатывать ошибки, связанные с сетевыми задержками или некорректными адресами. Использование конструкций try/except позволяет получать точный баланс без прерывания выполнения скрипта и автоматически повторять запросы при временных сбоях.
Автоматизация проверки баланса с помощью Python полезна для мониторинга нескольких адресов одновременно. Скрипты могут сохранять результаты в файлы CSV или базы данных, что упрощает отслеживание поступлений и расходов, особенно при работе с большим количеством кошельков.
Установка библиотек для работы с криптокошельками

Для взаимодействия с блокчейнами через Python необходима библиотека Web3.py. Ее установка выполняется командой pip install web3. Версия библиотеки должна соответствовать версии Python: начиная с Python 3.8 рекомендуется использовать Web3.py 6.x или новее.
Для работы с Bitcoin и совместимыми сетями используют библиотеку bitcoinlib, устанавливаемую через pip install bitcoinlib. Она предоставляет функции генерации адресов, проверки баланса и отправки транзакций.
Дополнительно может понадобиться requests для взаимодействия с REST API блокчейнов: pip install requests. Это позволяет запрашивать баланс через публичные API без прямого подключения к узлу.
Рекомендуется создать виртуальное окружение с помощью python -m venv venv и активировать его, чтобы библиотеки для криптокошельков не конфликтовали с другими проектами и версиями пакетов.
Получение адреса кошелька и настройка подключения

Адрес криптокошелька представляет собой строку фиксированной длины. Для Ethereum это 42 символа, начинающиеся с 0x, для Bitcoin – от 26 до 35 символов, начинающиеся с 1, 3 или bc1. Адрес можно получить из существующего кошелька или сгенерировать программно.
Для подключения к блокчейну через Python используется объект Web3. Наиболее распространены следующие варианты подключения:
| Тип подключения | Описание | Пример |
|---|---|---|
| HTTP | Подключение к публичному или приватному узлу через RPC | Web3(Web3.HTTPProvider(‘https://mainnet.infura.io/v3/YOUR_PROJECT_ID’)) |
| WebSocket | Подключение для отслеживания событий в реальном времени | Web3(Web3.WebsocketProvider(‘wss://mainnet.infura.io/ws/v3/YOUR_PROJECT_ID’)) |
| IPC | Локальное соединение с узлом на компьютере | Web3(Web3.IPCProvider(‘/path/to/geth.ipc’)) |
После настройки подключения рекомендуется проверить его работоспособность командой web3.isConnected(). Для Bitcoin и аналогичных сетей подключение часто реализуется через REST API провайдеров, таких как BlockCypher или Blockchain.com, с использованием requests.get() для получения баланса адреса.
Использование API блокчейна для запроса баланса

API блокчейна позволяет получать баланс адреса без прямого запуска узла. Для Ethereum популярны сервисы Infura и Alchemy, предоставляющие доступ через HTTP или WebSocket. Для работы достаточно зарегистрироваться и получить API key.
Пример запроса баланса через REST API Ethereum:
import requests
url = «https://api.etherscan.io/api»
params = {«module»: «account», «action»: «balance», «address»: «0xАдресКошелька», «tag»: «latest», «apikey»: «ВАШ_API_KEY»}
response = requests.get(url, params=params)
balance_wei = int(response.json()[«result»])
Для Bitcoin и совместимых сетей используются провайдеры вроде BlockCypher или Blockchain.com. Запрос выполняется через HTTP GET, а баланс возвращается в минимальных единицах (satoshi), что требует конвертации в BTC делением на 108.
При регулярных запросах рекомендуется учитывать ограничения API: лимиты по количеству запросов в минуту и необходимость обработки кодов ошибок, таких как 429 Too Many Requests, чтобы избежать блокировки.
Чтение баланса через библиотеку Web3.py

Для получения баланса Ethereum через Python используется метод web3.eth.get_balance(address). Адрес кошелька передается в виде строки, начинающейся с 0x. Функция возвращает сумму в wei – минимальных единицах эфира.
Для перевода значения в ETH используют Web3.fromWei(balance, ‘ether’). Например:
from web3 import Web3
web3 = Web3(Web3.HTTPProvider(«https://mainnet.infura.io/v3/YOUR_PROJECT_ID»))
address = «0xАдресКошелька»
balance_wei = web3.eth.get_balance(address)
balance_eth = web3.fromWei(balance_wei, ‘ether’)
Если адрес некорректен, Web3.py генерирует ValueError. Рекомендуется использовать проверку web3.isAddress(address) перед запросом баланса, чтобы избежать ошибок и лишних сетевых запросов.
Для массовой проверки нескольких адресов стоит применять циклы и сохранять результаты в списки или словари. Это упрощает дальнейшую обработку и экспорт данных.
Обработка ошибок при запросе баланса

При работе с криптокошельками через Python возможны ошибки, связанные с сетью, некорректными адресами или ограничениями API. Их необходимо обрабатывать, чтобы скрипт не прерывался и возвращал корректные данные.
Основные типы ошибок:
- ValueError – возникает при передаче некорректного адреса в Web3.py.
- ConnectionError – ошибки сетевого соединения при использовании HTTP или WebSocket.
- HTTPError 429 – превышен лимит запросов к API блокчейна.
Рекомендуемые подходы:
- Проверка адреса перед запросом с помощью web3.isAddress(address) или регулярных выражений для Bitcoin-адресов.
- Использование конструкций try/except для перехвата исключений и повторного запроса через паузу.
- Логирование ошибок в файл или базу данных для последующего анализа.
- Добавление задержки между последовательными запросами к API, чтобы не превышать лимиты.
Пример обработки ошибок в Web3.py:
try:
balance = web3.eth.get_balance(address)
except ValueError:
print(«Некорректный адрес»)
except ConnectionError:
print(«Ошибка подключения к узлу»)
Баланс криптокошелька, полученный через Web3.py, возвращается в минимальных единицах (wei для Ethereum). Для удобного отображения его необходимо конвертировать в более привычный формат:
from web3 import Web3
balance_wei = web3.eth.get_balance(address)
balance_eth = web3.fromWei(balance_wei, ‘ether’)
Для улучшения читаемости рекомендуется ограничить количество знаков после запятой с помощью функции round():
print(f»Баланс: {round(balance_eth, 6)} ETH»)
balances = {address1: balance1, address2: balance2}
for addr, bal in balances.items():
print(f»{addr}: {round(Web3.fromWei(bal, ‘ether’), 6)} ETH»)
Для Bitcoin и других сетей применяется аналогичная логика: баланс в сатоши делится на 108 для получения значения в BTC. Рекомендовано сохранять результаты в CSV или JSON для дальнейшего анализа.
Автоматизация проверки баланса в скриптах Python

Автоматизация проверки баланса позволяет регулярно отслеживать состояние нескольких кошельков без ручного вмешательства. Для этого используют циклы, функции и планировщики задач, такие как cron на Linux или Task Scheduler на Windows.
Пример функции для получения баланса Ethereum через Web3.py:
def get_balance(address, web3):
balance_wei = web3.eth.get_balance(address)
return web3.fromWei(balance_wei, ‘ether’)
Для мониторинга нескольких адресов можно хранить их в списке и проходить циклом:
addresses = [«0xАдрес1», «0xАдрес2»]
for addr in addresses:
print(f»{addr}: {get_balance(addr, web3)} ETH»)
Результаты удобно сохранять в CSV или JSON для последующего анализа или интеграции с другими сервисами. При частых проверках рекомендуется добавлять задержки между запросами и обрабатывать исключения для предотвращения блокировки API.
Вопрос-ответ:
Какие библиотеки Python нужны для проверки баланса Ethereum?
Для Ethereum используется библиотека Web3.py, которая позволяет подключаться к узлам через HTTP, WebSocket или IPC. Для отправки запросов к REST API блокчейнов можно дополнительно использовать requests. Эти библиотеки устанавливаются через pip install web3 requests и обеспечивают возможность получать баланс адреса в wei и конвертировать его в ETH.
Как получить баланс нескольких адресов одновременно?
Для мониторинга нескольких адресов создайте список с адресами и пройдите его циклом, используя функцию запроса баланса. Например, через Web3.py: for addr in addresses: balance = web3.eth.get_balance(addr). Для удобного хранения результатов можно использовать словарь, CSV или JSON. Также рекомендуется добавлять задержки между запросами, чтобы не превышать лимиты API.
Как правильно конвертировать баланс из wei в ETH?
Метод web3.eth.get_balance() возвращает баланс в wei. Для преобразования используют Web3.fromWei(balance_wei, ‘ether’), что переводит число в ETH. Для вывода удобно ограничивать количество знаков после запятой с помощью round(), например: round(Web3.fromWei(balance_wei, ‘ether’), 6), чтобы получить значение в привычном формате.
Какие ошибки могут возникнуть при запросе баланса и как их обработать?
При запросах возможны ошибки: ValueError — некорректный адрес, ConnectionError — проблемы с сетью, HTTPError 429 — превышен лимит запросов API. Рекомендуется проверять адрес с помощью web3.isAddress(address), использовать конструкции try/except для перехвата исключений и повторять запрос через паузу. Логирование ошибок помогает анализировать сбои и корректно сохранять данные.
