[Solved] How to send ERC20 token from Moralis Backend on Polygon?

I’m planing to send ERC20 token from Moralis Backend.
Here is what I did so far.

  1. To generate ERC20 token on Polygon
  2. To save private key into Moralis backend config
  3. Execute below code from Cloud Function.

Result => I can see a transaction. But it’s not sending Token. Just wasting gas fee…

Does anyone know how to send ERC20 token? For example 20 tokens to send someone.

Moralis.Cloud.define("Hello", async (request) => {
  const web3 = Moralis.web3ByChain("0x13881");
  const config = await Moralis.Config.get({useMasterKey: true});
  const abi = config.get("ABI");
  const private_key = config.get("PRIVATE_KEY");
  const contract = new web3.eth.Contract(abi, '0x2553463BDEcf7BC19Dc390107f99F7Dd8D7d6a0b');
  const user_address = "0x607228c6C95C8ddbd8115c15ab10E5C4B1Fab439";

  web3.eth.accounts.wallet.add(private_key);

  const tx = contract.methods.transfer(user_address, 20);
  const gas = await tx.estimateGas({from: user_address});
  const gasPrice = await web3.eth.getGasPrice();
  const data = tx.encodeABI();
  const nonce = await web3.eth.getTransactionCount(user_address);
  const txData = {
    from: user_address,
    to: "0xBB7EC39255E8d651CdC530D5a9e0F56BC500d6eC",
    data,
    gas,
    gasPrice,
    nonce,
    chainId: "0x13881",
  };
  const receipt = await web3.eth.sendTransaction(txData);

  return `Done! ${receipt.transactionHash}`
});

I can see the transaction here. Token does not moved.

Solved.

I copied the code from here. It works.

1 Like