【发布时间】:2021-10-18 17:11:49
【问题描述】:
我想制作一个 Python 脚本(用于 BSC)来跟踪钱包中特定代币的余额。我需要 python 脚本非常快。目前使用以下代码,脚本检测到进入钱包的令牌大约需要 6 秒。有没有更快、更有效的方法来做到这一点? (我添加了 sleep 函数来充当某种缓冲区。不知道这是否是个好主意?) 编辑:删除了睡眠功能,但仍然需要 6 秒。
from web3 import Web3
import json
bsc = "https://bsc-dataseed.binance.org/"
web3 = Web3(Web3.HTTPProvider(bsc))
print(web3.isConnected())
main_address = "wallet to be tracked"
contract_address = "token contract address"
abi = json.loads('the abi')
contract = web3.eth.contract(address=contract_address, abi = abi)
balanceOfToken = contract.functions.balanceOf(main_address).call()
print(web3.fromWei(balanceOfToken, 'ether'))
while(True):
balanceOfToken = contract.functions.balanceOf(main_address).call()
if(balanceOfToken > web3.fromWei(0.5, 'ether')):
break
time.sleep(1.1)
x+=1
print(f"Still looking {x}")
continue
second_address = "the other wallet address"
main_key = "private key of first wallet"
nonce = web3.eth.getTransactionCount(main_address)
token_tx = contract.functions.transfer(second_address, balanceOfToken).buildTransaction({
'chainId':56, 'gas': 90000, 'gasPrice': web3.toWei('5', 'gwei'), 'nonce':nonce
})
signed_tx = web3.eth.account.signTransaction(token_tx, main_key)
web3.eth.sendRawTransaction(signed_tx.rawTransaction)
print(contract.functions.balanceOf(my_address).call() + " " + contract.functions.name().call())
【问题讨论】:
-
“我添加了 sleep func 来充当某种缓冲区。” 什么 中的缓冲区?是什么让你相信你需要添加这个?
-
要避免脚本重载?还是某种溢出?就像我说的我不太确定。我对大部分这些东西还是陌生的。我应该删除它并且它会运行良好吗?除此之外,我还缺少什么让它运行得更快?
标签: python ethereum web3 cryptocurrency