我正在使用 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);
});