[英]buy and sell in one transaction in Web3, to check for honeypots
我怎样才能把这个购买 function 变成一个在单一交易中买卖的交易?
这背后的原因是检查令牌是否是蜜罐并且不允许我出售令牌,但我不知道如何从这里开始 go。 也许有更好的方法来检查地址是否是蜜罐( www.honeypot.is效果不佳),但是可以用 web3 完成吗?
contract = web3.eth.contract(address=uniswap_factory, abi=uniswap_factory_abi)
contractbuy = web3.eth.contract(address=panRouterContractAddress, abi=panabi)
def buy(token, wbnb_amount):
spend = web3.toChecksumAddress("0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c") # wbnb contract address
tokenToBuy = web3.toChecksumAddress(token)
nonce = web3.eth.get_transaction_count(sender_address)
pancakeswap2_txn = contractbuy.functions.swapExactETHForTokens(
0, # set to 0, or specify minimum amount of token you want to receive - consider decimals!!!
[spend, tokenToBuy],
sender_address,
(int(time.time()) + 10000)
).buildTransaction({
'from': sender_address,
'value': web3.toWei(wbnb_amount, 'ether'), # This is the Token(BNB) amount you want to Swap from
'gasPrice': web3.toWei('5', 'gwei'),
'nonce': nonce,
})
signed_txn = web3.eth.account.sign_transaction(pancakeswap2_txn,
private_key=privatekey)
tx_token = web3.eth.send_raw_transaction(signed_txn.rawTransaction)
transaction_tx = web3.toHex(tx_token)
return transaction_tx
总之,您无法实现这一目标。 原因是你通过web3从合约中调用的函数会被编码为字节码并放入交易的数据字段中,并且基本上字节码可以一次交互一次联系人的一个函数。 当然,您可以将买卖功能包装到您的自定义合约中,但是您不能检查蜜罐。
我不确定我是否理解您的问题,但您可以检查与 Web3 的蜜罐合同。 您可以在github中找到代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.