python - 从 ERC-20 代币地址获取有关代币的详细信息

标签 python cryptocurrency web3py

我对 Web3 开发确实很陌生,想知道是否有一种方法可以从智能合约中找到的代币地址获取有关代币的更多信息(即我有一个代币地址,但不知道是什么类型的代币)直到我在 etherscan 上查找交易哈希)。我可以直接从区 block 链/Web3 模块中提取这些信息,还是需要使用外部 API 来收集这些信息?

最佳答案

您可以使用web3py直接获取 token 详细信息

这是获取 token 名称的简单示例(在本例中为 Strong)

import json
from web3 import Web3

# Fill in your infura API key here
infura_url = "https://mainnet.infura.io/v3/YOUR_INFURA_API_KEY_GOES_HERE"

web3 = Web3(Web3.HTTPProvider(infura_url))

# Get it from Etherscan and change true => True and false => False
abi = [{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":False,"inputs":[{"indexed":True,"internalType":"address","name":"owner","type":"address"},{"indexed":True,"internalType":"address","name":"spender","type":"address"},{"indexed":False,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":False,"inputs":[{"indexed":True,"internalType":"address","name":"from","type":"address"},{"indexed":True,"internalType":"address","name":"to","type":"address"},{"indexed":False,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

address = '0x990f341946A3fdB507aE7e52d17851B87168017c'

contract = web3.eth.contract(address=address, abi=abi)

# Let's print Name of Token
print(contract.functions.name().call())

关于python - 从 ERC-20 代币地址获取有关代币的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69858039/

相关文章:

solidity - 如何检查或知道钱包在 web3 python 中有 token

python - 如何批准用于在(Uniswap 路由器合约)上花费的代币

python - 即使我安装了 Web3.py(我使用的是 venv),也没有名为 "web3"的模块

python - 取 numpy 数组中列的平均值

python - 在 Redshift 中的单独行上返回 JSON 数组列的元素

python - Plotly:如何在烛台图表中的日期之间绘制垂直线?

python - 根据 y 轴中的值对条形图中的条形进行排序

ethereum - 是否可以从 Ledger Nano S 以太坊钱包导出 Xpub Key

python - 如何列出从特定 IP 地址对维基百科进行的所有匿名(因此 IP 公开)编辑?

python-Binance api : APIError(code=-1013): Filter failure: LOT_SIZE