3

我正在使用 0x API 制作 dex。我进行了交换并允许使用 web3 进行代币消费,但我遇到了一个问题。每当我交换代币时,我都需要每次都允许代币消费,但是当你查看 PancakeSwap 他们只要求消费一次时,我想在我的 dex 中实现这一点。

  const BscABI = await axios.get(`https://api.bscscan.com/api`, {
     params: {
          module: 'contract',
          action: 'getabi',
          address: receipt.sellTokenAddress,
        }
    })
    const TokenAbi = JSON.parse(BscABI.data.result);
    const Tokencontract = new web3.eth.Contract(TokenAbi, receipt.sellTokenAddress);
    const maxApproval = new BigNumber(2).pow(256).minus(1);
    await Tokencontract.methods.approve(receipt.allowanceTarget, maxApproval).send({from: metaMaskAddress, chainId: 56})
    .then((data: any) => {
      alert("Token Spend Allowed");
    })
    .then(async () => {
      const txHash = await web3.eth.sendTransaction({
        from: metaMaskAddress,
        data: receipt.data,
        gas: receipt.gas,
        to: receipt.allowanceTarget,
        chainId: 56
      });
    )
    .catch(() => {
        setMessage("Token Spend Allowance Failed");
        setError(true);
    });
4

0 回答 0