web3py - 检查钱包是否被批准使用令牌
问题描述
我想知道是否有办法检查令牌是否已被批准用于支出。我不是在问如何批准用于支出的代币,我已经通过参考了解了这部分:如何批准用于支出的代币(Uniswap 路由器合同)。我希望我的脚本在出售代币之前先进行检查,然后根据结果决定是先运行批准还是跳过它。这样一来,它就不会在每次买卖同一个代币时批准已经批准的代币。感谢您的所有帮助期待。
解决方案
我在别处得到了帮助。无论如何,对于任何寻求解决方案的人来说,这是一个示例:
import json
import sys
from web3 import Web3
bsc = 'https://bsc-dataseed.binance.org/'
web3 = Web3(Web3.HTTPProvider(bsc))
print(web3.isConnected())
contract = '0x40619dc9F00ea34e51D96b6EC5d8a6aD75457434'
contract = web3.toChecksumAddress(contract)
abi = [{"constant":True,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":False,"stateMutability":"view","type":"function"},]
contract = web3.eth.contract(address=contract, abi=abi)
_owner = web3.toChecksumAddress("0x29cdf45A1cda9Fd722108b05BaaA5785DF5E98aF")
_spender = web3.toChecksumAddress("0xb5C2c0A73f59508731b915c646615089e1517628")
x = contract.functions.allowance(_owner, _spender).call();
print(x)
推荐阅读
- generics - 如何在 F# 中创建类型参数抽象类型?
- sql - Postgres upsert 使用冲突 - 冲突条件下的多个字段
- git - 如何使用 `pkg.tar.gz` 文件安装旧的 Gitkraken?
- d3.js - 图例在 d3.js 饼图中不可见
- java - 在 Release 中未找到 void com.organization.app.Activity.a() 的实现
- javascript - 从 shadowDOM 内部加载链接时不加载外部字体
- reactjs - 无法在 Chrome 中跟踪 react-hook 调用堆栈
- jasper-reports - 文本很长时如何换行
- c++ - 为什么编译器不能用 0 优化浮点加法?
- reactjs - 在运行 Saga 之前,您必须使用 applyMiddleware 和 redux 工具在 Store 上挂载 Saga 中间件