Estaba haciendo una transacción de USDC en la red de Ropsten pero en la documentación de Metamask no vi ningún lugar donde se tocaran directamente las transacciones con tokens, estaba probando algunas cosas que encontré sin éxito. Un ejemplo de lo que encontré lo tomé de ¿Cómo enviar algunos tokens personalizados con la API de MetaMask?
ethereum.request({ method: "eth_sendTransaction", params: [ { from: ethereum.selectedAddress, to: "0x07865c6E87B9F70255377e024ace6630C1Eaa37F", data: tokenContract.methods .transfer("My Wallet", "0.0001") .encodeABI(), } ] });El problema aquí es que tokenContract no está definido y no tengo idea de cómo definirlo.
También encontré respuestas MUY antiguas y realmente obsoletas, donde se usa principalmente web3js (y MetaMask ya no permite trabajar con web3js, según tengo entendido, ya lo probé).
En el ejemplo anterior, tokenContract es la dirección del token que desea transferir. Cada contrato de token se implementa en alguna dirección, consulte, por ejemplo, USDT o DAI .
Además, web3js es compatible con MetaMask, consulte esta respuesta para ver un ejemplo de implementación. Pero MetaMask ya no inyecta web3js , por lo que debe importar web3js a la aplicación web por separado (anteriormente, era posible usar web3 inyectado por MM).