提问人:Đỗ Văn Thắng 提问时间:7/24/2023 更新时间:10/30/2023 访问量:359
如何在以太坊的 web3 python 中使用地址余额的代币 USDT 进行转账
How to get transfer with token USDT of address balance in web3 python in ethereum
问:
嗨,我正在尝试从1个代币持有者的USDT代币获得所有转账,并提供以下信息:
- 代币合约:0xdAC17F958D2ee523a2206206994597C13D831ec7
- 代币持有者:0x28C6c06298d514Db089934071355E5743bf21d60
'从 web3 导入 Web3,HTTPProvider
实例化 Web3 远程提供程序
w3 = Web3(HTTPProvider('https://ethereum-mainnet.s.chainbase.online ...'))
Tether (USDT) 代币合约地址
token_contract_address = “0xdAC17F958D2ee523a2206206994597C13D831ec7”
替换为要查询的令牌持有者地址
token_holder_address =“0x28C6c06298d514Db089934071355E5743bf21d60”
从 web3 导入eth_abi
def get_transactions_with_token(web3, token_contract_address, token_holder_address): 合约 = web3.eth.contract(address=token_contract_address, abi=ERC20_ABI)
transfer_topic = web3.keccak(text="Transfer(address,address,uint256)")
transfer_events = web3.eth.getLogs({
"address": token_contract_address,
"topics": [transfer_topic, None, token_holder_address],
"fromBlock": 0,
"toBlock": "latest",
})
transactions = []
for event in transfer_events:
decoded_event = eth_abi.decode_log(contract.abi, event.data, event.topics)
tx_hash = event.transactionHash.hex()
quantity = decoded_event[2]
transactions.append({"tx_hash": tx_hash, "quantity": quantity})
return transactions
将 ERC20_ABI替换为 ERC-20 代币合约的 ABI(应用程序二进制接口)。
您可以从代币合约的官方文档或以太坊区块浏览器中获取 ABI。
ERC20_ABI = [{“constant”:True,“inputs”:[],“name”:“name”,“outputs”:[{“name”:“”,“type”:“stri”type“:”event“}] # 替换为实际的 ABI
调用函数以获取具有指定代币合约和代币持有者的交易
事务 = get_transactions_with_token(W3, token_contract_address, token_holder_address) 打印(交易)'
答:
您可以使用区块链数据索引器获取它,而无需联系 ABI。
Bitquery 有一个转账 API 和代币持有者 API。对于您提到的地址,您可以使用此查询获取来自该地址的所有转账。有一个自动代码生成器可以为您生成 Python 代码。
{
ethereum(network: ethereum) {
transfers(
options: {desc: "block.height", limit: 10, offset: 0}
sender: {is: "0x28C6c06298d514Db089934071355E5743bf21d60"}
amount: {gt: 0}
) {
block {
timestamp {
time(format: "%Y-%m-%d %H:%M:%S")
}
height
}
sender {
address
annotation
}
receiver {
address
annotation
}
currency {
address
symbol
}
amount
amount_usd: amount(in: USD)
transaction {
hash
}
external
}
}
}
在这里运行它
评论