文档:
https://web3py.readthedocs.io/en/latest/quickstart.html
Github:
https://github.com/ethereum/web3.py
连接节点
from web3 import Web3
w3 = Web3(Web3.HTTPProvider('https://exchainrpc.okex.org'))
print(w3.isConnected())
查询地址余额
from web3 import Web3
w3 = Web3(Web3.HTTPProvider('https://exchainrpc.okex.org'))
print(w3.eth.get_balance('0x9361077d2925f9be20eC8Bd53E48cb8455A0AD43'))
调用合约读方法
可以只传部分abi
from web3 import Web3
w3 = Web3(Web3.HTTPProvider('https://exchainrpc.okex.org'))
abi = '[{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}]'
contract = w3.eth.contract(address=Web3.toChecksumAddress('0x5fac926bf1e638944bb16fb5b787b5ba4bc85b0a'), abi=abi)
print(contract.functions.decimals().call())
或者
from web3 import Web3
from web3.contract import ConciseContract
w3 = Web3(Web3.HTTPProvider('https://exchainrpc.okex.org'))
# with open('erc20_abi.json') as erc20_abi:
# abi = json.load(erc20_abi)
abi = '[{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}]'
contract = w3.eth.contract(address=Web3.toChecksumAddress('0x5fac926bf1e638944bb16fb5b787b5ba4bc85b0a'), abi=abi)
concise_contract = ConciseContract(contract)
print(concise_contract.decimals())
或者
from web3 import Web3
w3 = Web3(Web3.HTTPProvider('https://exchainrpc.okex.org'))
call = w3.eth.call(
{"from": "0x0000000000000000000000000000000000000000",
"to": Web3.toChecksumAddress('0x5fac926bf1e638944bb16fb5b787b5ba4bc85b0a'),
"data": "0x313ce567"})
print(Web3.toInt(call))
更推荐前两种使用方式。
网友评论