ERC 20 批准支出代币

问题描述

当我发送交易以批准令牌花费时,它会要求登录用户Metamask 对其进行签名,但我希望 1inch dex 作为花费者获得批准,但我在 localhost 上的测试网站获得了此许可。我的代码看起来像:

approvetokenSpent = async () => {
    console.log("Approve v1");
    const user_address = await checkEthereumAddress();
    console.log(user_address);
    const selected_coin = document.getElementById("select_coin1").value;
    var amount = document.getElementById("amount1").value;
    amount = amount * 1000000000000000000;
    console.log("SELECTED COIN " + selected_coin + " AMOUNT " + amount);
    
    let url = "https://api.1inch.exchange/v3.0/56/healthcheck";
    answer = await urlSend(url);
    console.log("1inch status: ");
    if(answer.status === "OK") {
        console.log(answer.status);
        let url1 = "https://api.1inch.exchange/v3.0/1/approve/spender";
        let url2 = "https://api.1inch.exchange/v3.0/1/tokens";

        console.log(url1);

        const address_spender = await fetch(url1)`enter code here`
        .then( res => res.json() )
        .then( data => {
            console.log(data);
            return data 
        });

        console.log(url2);

        const tokens = await fetch(url2)
        .then( res => res.json() )
        .then( data => {
            console.log(data);
            return data
        });
        console.log(tokens.tokens["0x0a50c93c762fdd6e56d86215c24aaad43ab629aa"]);
        address_spender_new = address_spender["address"]
        console.log(address_spender["address"]);
        console.log(typeof(address_spender_new));
        let url3 = "https://api.1inch.exchange/v3.0/1/approve/calldata?amount="+amount+"&tokenAddress="+selected_coin;
        console.log("URL3 before tp");
        console.log(url3);
        const transactionParameters = await fetch(url3)
        .then( res => res.json() )
        .then( data1 => {
            console.log("url3 ");
            console.log(data1);
            const transactionParameters = {

                to: data1['to'],// required except during contract publications.
                from: user_address[0],// must match user's active address.
                
                value: "0",data: data1['data']
                 
            };
            return transactionParameters
        });
        try {
            const txHash = await ethereum.request({
            method: 'eth_sendTransaction',params: [transactionParameters],});
            let data = txHash.data;

        } catch (error) {
            if (error.code === 4001) {
                alert("User denied transaction signature.")
            } else {
                alert(error)
            }
        }

        return address_spender
    } else {
        console.log(answer.status);
    }

    
}

Metamask 中的消息:

允许 http://localhost:1234 花费你的 PPAY? 你相信这个网站吗?通过授予此权限,您将允许 Http://localhost:1234 提取您的 PPAY 并为您自动进行交易。

那么如何获得批准,而不是我的网站,而是地址在 address_spender 中的 1inch 交换

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)