Skip to main content
3 of 3
added 73 characters in body

Cannot send USDT on Polygon : Error happened while trying to execute a function inside a smart contract

//token_address is the adress of the contract : 0xc2132D05D31c914a87C6611C10748AEb04B58e8F
//because USDT on polygon is a Proxy contract, minABI is the abi of the contract where it redirect : https://polygonscan.com/address/0x7ffb3d637014488b63fb9858e279385685afc1e2#code

let contract = new web3.eth.Contract(minABI, token_address);

//Calculate the amount to transfer. In this example I want to transfer 5.44 usdt
let decimals_bn = await contract.methods.decimals().call();
const base = new BigNumber(10);
const amount_to_transfer = base.pow(decimals_bn).times(balance);//this gives 5440000 which seems correct

//Transaction count for nonce
let transaction_count = await web3.eth.getTransactionCount(account_from.address);

//Get gas price 
let gas_price = await web3.eth.getGasPrice();

//Estimate gas 
let estimated_gas = await web3.eth.estimateGas({from: account_from.address});

const createTransaction = await web3.eth.accounts.signTransaction(
{
    from: account_from.address,
    nonce: web3.toHex(transaction_count),
    gasPrice: web3.utils.toHex(gas_price),
    gas: web3.utils.toHex(estimated_gas),
    //gasLimit: web3.utils.toHex(estimated_gas),//I tried with gas , gasLimit or both         
    to: token_address,
    value: "0x0",
    data: contract.methods.transfer(adress_to, web3.toHex(amount_to_transfer)).encodeABI(),
    },
account_from.privateKey
);

//this is when the error trigger
await web3.eth.sendSignedTransaction(createTransaction.rawTransaction);

//Error : 'Error happened while trying to execute a function inside a smart contract'

48 hours on this matter and still no solution. I don't know if the problem is related to gas value or to something else.

Please advise, any help is appreciated.