0

I am trying to recreate swap with 0x API. I am trying to swap WETH, which I have in my wallet

Here is my swap code

async function getQuote(account){
console.log("Getting Quote");
// if only "from" , "to", and "amount" are filled, then we continue
if (!currentTrade.from || !currentTrade.to || !document.getElementById("from_amount").value) return;
// we set "amount" to be the value we enter transformed to the decimal version
let amount = Number(document.getElementById("from_amount").value * 10 ** currentTrade.from.decimals);

// Take constants of smart contracts and amounts
const params = {
    sellToken: currentTrade.from.address,
    buyToken: currentTrade.to.address,
    sellAmount: amount,
    takerAddress: account,
}

// Fetch the swap price
const response = await fetch(
    `https://api.0x.org/swap/v1/quote?${qs.stringify(params)}`
    );
swapQuoteJSON = await response.json();
console.log("Quote: ", swapQuoteJSON);

document.getElementById("to_amount").value = swapQuoteJSON.buyAmount / (10 ** currentTrade.to.decimals);
document.getElementById("gas_estimate").innerHTML = swapQuoteJSON.estimatedGas;

return swapQuoteJSON;

}

And here is allowance code I looked here https://docs.0x.org/0x-api-swap/advanced-topics/how-to-set-your-token-allowances. However I can't execute these imports: import { ERC20TokenContract } from '@0x/contract-wrappers'; import { BigNumber } from '@0x/utils';

Because I receive an error while compiling file into bundle.js version enter image description here

async function trySwap(){

let accounts = await ethereum.request({ method: "eth_accounts"});
let takerAddress = accounts[0];

console.log("takerAddress: ", takerAddress);

const swapQuoteJSON = await getQuote(takerAddress);

const web3 = window.web3;
const SellTokenAdress = currentTrade.from.address;

const erc20abi = [{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}];
const ERC20TokenContract = new web3.eth.Contract(erc20abi, SellTokenAdress);
const SellTokenContract = new ERC20TokenContract(SellTokenAdress, web3.eth.currentProvider);

const maxApproval = new BigNumber(2).pow(256).minus(1);
const chainId = 1;

const approvalTxData = SellTokenContract
    .approve(quote.allowanceTarget, maxApproval)
    .getABIEncodedTransactionData();
await web3.eth.sendTransaction(approvalTxData);

But i reveive such errors. enter image description here

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Browse other questions tagged or ask your own question.