问题描述
当我发送交易以批准令牌花费时,它会要求登录用户的 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 (将#修改为@)