Sending a custom token with web3 + metamask

Viewed 984

I'm trying to send USDT (custom token) with the metamask API using web3. I'm developing on ReactJS and I could detected correctly the user account from metamask.

My code:

const web3 = new Web3(window.web3.currentProvider);
const contractInstance = new web3.eth.Contract(abiUSDT, addressUSDT);
const amount = 200;
const tx = {
from: 'PERSON_SENDER',
to: contractInstance._address,
data: contractInstance.methods.transfer('PERSON_RECIPIENT', web3.utils.toWei( amount.toString() ) ).encodeABI(),
        }
        web3.eth.sendTransaction(tx).then(res => {
            console.log("res",res)
        }).catch(err => {
            console.log("err",err)
        });

obviously, I replace the fields called: PERSON_SENDER and PERSON_RECIPIENT with:

PERSON_SENDER: The user account

PERSON_RECIPIENT: My personal account (I want to deposit in this account)

Using this config, the transaction doesn't send to my account when I check in etherscan (and the amount was sent to the address of the contract), and a user communicate that if he uses real values for him real account, metamask doesn't touch his amount.

1 Answers

I made the same code and it works. But check the correct ABI, and adrresses format. The address "FROM" must be tha same address that your metamask is conected.

My code:

 var contractABI = [{"YOUR TOKEN ABI HERE"}]

addressUSDT = "0xf80e1C5e28226cAfc7B0Ee6729E553ef54A7774F"; //IT'S OTHER CONTRACT              
const web3 = new Web3(window.web3.currentProvider);
const contractInstance = new web3.eth.Contract(contractABI, addressUSDT);
const amount = 200;
const tx = {
from: '0x2acd4F50ee814d5092d9FC892d2BDEab91f5594d',
to: contractInstance._address,
data: contractInstance.methods.transfer('0xe54356F4e1aD4215973E7180BeBb4644a07DF508', web3.utils.toWei( amount.toString() ) ).encodeABI(),
        }
        web3.eth.sendTransaction(tx).then(res => {
            console.log("res",res)
        }).catch(err => {
            console.log("err",err)
        });
Related