web3py 简单使用

文档:
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))

更推荐前两种使用方式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容