繁体   English   中英

在 Web3 中的一次交易中买卖,以检查蜜罐

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM