Python工具

Python为以太坊开发提供了强大的库,适用于简单脚本和复杂应用程序。

请注意!
嘿!友情提示:此页面旨在为您提供使用 Python 请求的全面概述。有关实际代码示例,请查看我们的 API Methods documentation ,那里有所有支持语言的即用型示例!

# Web3.py

官方Python以太坊库。

from web3 import Web3
from eth_account import Account
import json

# Initialize web3
web3 = Web3(Web3.HTTPProvider('YOUR_ETHEREUM_NODE_URL'))

# Get balance
def get_balance(address):
    balance_wei = web3.eth.get_balance(address)
    balance_eth = web3.from_wei(balance_wei, 'ether')
    return balance_eth

# Send transaction
def send_transaction(private_key, to_address, value_eth):
    account = Account.from_key(private_key)
    transaction = {
        'nonce': web3.eth.get_transaction_count(account.address),
        'to': to_address,
        'value': web3.to_wei(value_eth, 'ether'),
        'gas': 21000,
        'gasPrice': web3.eth.gas_price
    }
    signed_txn = account.sign_transaction(transaction)
    tx_hash = web3.eth.send_raw_transaction(signed_txn.rawTransaction)
    return web3.eth.wait_for_transaction_receipt(tx_hash)
  • GitHub: web3.py
  • 文档: web3py.readthedocs.io
  • 特性:
    • 完整的以太坊API支持
    • 同步和异步接口
    • 类型提示
    • 中间件支持
    • ENS支持

# Eth-brownie

以太坊开发的Python框架。

from brownie import *

# Deploy contract
def deploy_contract():
    account = accounts[0]
    return MyContract.deploy({'from': account})

# Interact with contract
def interact_with_contract(contract_address):
    contract = MyContract.at(contract_address)
    return contract.myFunction({'from': accounts[0]})

# Test contract
def test_contract(Contract):
    account = accounts[0]
    contract = account.deploy(Contract)
    assert contract.myFunction() == expected_value

# 异步支持

Web3.py提供异步支持以获得更好的性能:

from web3.auto import w3
import asyncio

async def get_latest_blocks(count):
    latest = await w3.eth.get_block_number()
    blocks = []
    for i in range(count):
        block = await w3.eth.get_block(latest - i)
        blocks.append(block)
    return blocks

# Usage
blocks = asyncio.run(get_latest_blocks(10))

# 类型提示

Web3.py包含全面的类型提示,以获得更好的IDE支持:

from web3.types import TxParams, Wei, Address
from typing import Optional

def prepare_transaction(
    to: Address,
    value: Wei,
    gas_price: Optional[Wei] = None
) -> TxParams:
    return {
        'to': to,
        'value': value,
        'gasPrice': gas_price or web3.eth.gas_price
    }

另请参阅

帮助我们变得更好!
分享此页面并帮助我们为您创建更好的产品。