A library for simplified interaction with web3.From sybils for sybils.
Project description
Документация к библиотеке web3automatization
web3automatization — это библиотека для упрощения взаимодействия с блокчейн-сетями на основе EVM через web3py. Она предоставляет удобные методы для управления аккаунтом, отправки транзакций, работы с токенами ERC-20 и получения информации из сети.
Возможности
- Подключение к различным блокчейн-сетям через RPC.
- Управление аккаунтом на основе приватного ключа.
- Отправка ETH и ERC-20 токенов.
- Выполнение операций
approveдля токенов ERC-20. - Получение балансов и информации о токенах.
- Автоматическая оценка газа для транзакций.
Установка зависимостей
pip install -r requirements.txt
Использование
Импорт клиента
from client import Client
Инициализация клиента
private_key = "ваш приватный ключ"
rpc_url = "URL RPC-сервера"
client = Client(private_key, rpc_url)
Параметры:
private_key(str): Приватный ключ вашего аккаунта в шестнадцатеричном формате (с или без префикса '0x').rpc_url(str): URL RPC-сервера блокчейн-сети.proxy(str, необязательно): URL прокси-сервера, если требуется подключение через прокси.
Пример:
client = Client(
private_key="0xc55af4055f19f388765840edee4e929efa333fb3b6a728979d1234567112c556",
rpc="https://ethereum-rpc.publicnode.com"
proxy="123.123.12.23:8080"
)
Получение баланса аккаунта
balance = client.get_native_balance()
print(f"Баланс аккаунта: {balance} ETH")
Параметры:
address(str, необязательно): Адрес для проверки баланса. Если не указан, используется публичный ключ клиента.
Отправка нативного токена
to_address = "адрес получателя"
amount = 0.1 # ETH
tx_hash = client.send_native(to_address, amount)
print(f"Транзакция отправлена. Хеш: {tx_hash.hex()}")
Параметры:
to_address(str): Адрес получателя.amount(float): Сумма для отправки в нативном токене сети.
Отправка ERC-20 токенов
token_address = "адрес токена ERC-20"
to_address = "адрес получателя"
amount = 50 # Количество токенов
tx_hash = client.transfer_token(token_address, to_address, amount)
print(f"Транзакция отправлена. Хеш: {tx_hash.hex()}")
Параметры:
token_address(str): Адрес смарт-контракта токена ERC-20.to_address(str): Адрес получателя.amount(float): Количество токенов для отправки.
Выполнение операции approve
token_address = "адрес токена ERC-20"
spender_address = "адрес, которому разрешено тратить токены"
amount = 1000 # Количество токенов для одобрения
tx_hash = client.approve(token_address, spender_address, amount)
print(f"Транзакция approve отправлена. Хеш: {tx_hash.hex()}")
Параметры:
token_address(str): Адрес смарт-контракта токена ERC-20.spender(str): Адрес, которому разрешено тратить токены.amount(float): Количество токенов для одобрения.
Получение информации о токене
Получение количества десятичных знаков (decimals)
token_address = "адрес токена ERC-20"
decimals = client.get_decimals(token_address)
print(f"Decimals токена: {decimals}")
Параметры:
token_address(str): Адрес токена.
Получение одобренного лимита токенов (allowance)
token_address = "адрес токена ERC-20"
spender_address = "адрес, которому разрешено тратить токены"
allowance = client.get_allowance(token_address, spender_address)
print(f"Allowance токенов: {allowance}")
Параметры:
token_address(str): Адрес токена.spender(str): Адрес, которому разрешено тратить токены.
Получение номера транзакции(nonce) аккаунта
nonce = client.get_nonce()
print(f"Nonce аккаунта: {nonce}")
Параметры:
address(str, необязательно): Адрес учетной записи. Если не указан, используется публичный ключ клиента.
Получение информации о транзакции
tx_hash = "хеш транзакции в HexBytes"
receipt = client.get_transaction_receipt(tx_hash)
print(f"Статус транзакции: {receipt['status']}")
Параметры:
transaction_hash(HexBytes): Хеш транзакции.
Полная структура класса Client
class Client:
def __init__(self, private_key: str, rpc: str, proxy: str = None):
# Инициализация клиента
def __del__(self) -> None:
# Деструктор клиента
def __str__(self) -> str:
# Строковое представление клиента
def get_nonce(self, address: str = None) -> int | None:
# Получение nonce для адреса
def send_transaction(self, transaction: dict) -> HexBytes:
# Подписание и отправка транзакции
def send_native(self, to_address: str, amount: float) -> HexBytes:
# Отправка ETH на указанный адрес
def get_transaction_receipt(self, transaction_hash: HexBytes) -> dict:
# Получение информации о транзакции
def get_native_balance(self, address: str = None) -> float | None:
# Получение баланса в ETH для адреса
def get_decimals(self, token_address: str) -> int | None:
# Получение decimals для токена ERC-20
def get_allowance(self, token_address: str, spender: str) -> float | None:
# Получение allowance для токена ERC-20
def approve(self, token_address: str, spender: str, amount: float) -> HexBytes | None:
# Выполнение операции approve для токена ERC-20
def transfer_token(self, token_address: str, to_address: str, amount: float) -> HexBytes | None:
# Отправка токена ERC-20 на указанный адрес
Пример полного использования
from client import Client
# Инициализация клиента
client = Client(
private_key="0xc55af4055f19f388765840edee4e929efa333fb3b6a728979d1234567112c556",
rpc="https://ethereum-rpc.publicnode.com"
proxy="123.123.12.23:8080"
)
# Получение баланса
balance = client.get_native_balance()
print(f"Баланс: {balance} ETH")
# Отправка 0.05 ETH на другой адрес
to_address = "0xRecipientAddressHere"
tx_hash = client.send_eth(to_address, 0.05)
print(f"ETH отправлен. Хеш транзакции: {tx_hash.hex()}")
# Получение информации о токене
token_address = "0xTokenAddressHere"
decimals = client.get_decimals(token_address)
print(f"Decimals токена: {decimals}")
# Отправка 100 токенов на другой адрес
tx_hash = client.transfer_token(token_address, to_address, 100)
print(f"Токены отправлены. Хеш транзакции: {tx_hash.hex()}")
# Выполнение approve на 500 токенов
spender_address = "0xSpenderAddressHere"
tx_hash = client.approve(token_address, spender_address, 500)
print(f"Approve выполнен. Хеш транзакции: {tx_hash.hex()}")
# Получение allowance
allowance = client.get_allowance(token_address, spender_address)
print(f"Allowance для spender: {allowance}")
Заключение
Библиотека предоставляет простой и интуитивно понятный интерфейс для взаимодействия с EVM чейнами. Она упрощает выполнение часто используемых операций и может быть расширена для поддержки дополнительной функциональности в соответствии с вашими потребностями.
Если у вас есть предложения по улучшению или вы нашли ошибку, пожалуйста, создайте issue или pull request в репозитории проекта.
От сибилов - для сибилов
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file web3automatization-0.0.1.tar.gz.
File metadata
- Download URL: web3automatization-0.0.1.tar.gz
- Upload date:
- Size: 16.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cef18e3551e7ab3841dc69718de3428dfb1ff9343425f15dfa6ac2c6cdec1331
|
|
| MD5 |
6f467eda7b04bfe39a4bbe2a81d5d159
|
|
| BLAKE2b-256 |
c46dbfadd65e5715bb5564c26c11352d790cfa9af2793676a88707f762943cc6
|