from datetime import datetime
from time import time
from web3 import Web3
from web3.middleware import geth_poa_middleware # Needed for Binance
from config import PANCAKE_ROUTER_V2_ADDRESS, WBNB_ADDRESS, PANCAKE_ROUTER_V2_ABI, ACCOUNT_PK, ACCOUNT_ADDRESS
web3 = Web3(Web3.HTTPProvider('https://bsc-dataseed1.binance.org:443'))
web3.middleware_onion.inject(geth_poa_middleware, layer=0) # Again, this is needed for Binance, not Ethirium
def buy(bnb_amount, amountOutMin, token_address, router, gwei, gas):
token_address = web3.toChecksumAddress(token_address)
router = web3.toChecksumAddress(router)
bot = web3.eth.contract(address=router, abi=PANCAKE_ROUTER_V2_ABI)
path = [WBNB_ADDRESS, token_address]
print("path", path)
tx = bot.functions.swapETHForExactTokens(amountOutMin, path, ACCOUNT_ADDRESS, (int(time()) + 1000)).buildTransaction({
'gas': gas,
'gasPrice': web3.toWei(gwei, 'gwei'),
'from': token_address,
'nonce': 1
})
print("buy tx-------->>>", tx)
signPromise = web3.eth.signTransaction(tx, ACCOUNT_PK)
web3.eth.sendRawTransaction(signPromise.rawTransaction)
if __name__ == '__main__':
CAKE_ROUTER_V2 = Web3.toChecksumAddress(PANCAKE_ROUTER_V2_ADDRESS)
token_address = web3.toChecksumAddress('0x26193c7fa4354ae49ec53ea2cebc513dc39a10aa')
router = web3.toChecksumAddress(PANCAKE_ROUTER_V2_ADDRESS)
buy('100000000000000000', '600000000000000000000', token_address, router, 330000, 5000000000)
目前报错:
ValueError: {'code': -32602, 'message': 'invalid argument 0: json: cannot unmarshal non-string into Go struct field SendTxArgs.chainId of type *hexutil.Big'}
1、bnb_amount bnb购买数量如何传入 2、报错是什么原因,目前看感觉是返回的tx的json格式不对
buy tx-------->>> {'value': 0, 'chainId': 56, 'gas': 5000000000, 'gasPrice': 330000000000000, 'nonce': 1, 'to': '0x10ED43C718714eb63d5aA57B78B54704E256024E', 'data': '0xfb3bdb4100000000000000000000000000000000000000000000002086ac3510526000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000aa18b438a62c6878335a17f60bf17bc7e56b72c500000000000000000000000000000000000000000000000000000000627777800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c00000000000000000000000026193c7fa4354ae49ec53ea2cebc513dc39a10aa'}