You need to enable JavaScript to run this app. Web端如何通过MetaMask API发送自定义代币及USDT?
优惠活动
大模型
产品
解决方案
定价
更多

Web端如何通过MetaMask API发送自定义代币及USDT?

实现ERC20代币(含USDT)发送的实现步骤

你贴的原始代码是原生ETH转账的逻辑,自定义代币/USDT属于ERC20标准代币,转账不需要转ETH,而是调用对应代币合约的transfer方法,所以核心要修改交易参数里的to、value、data三个字段,具体实现流程如下:

第一步:提前准备必要参数

  • 要发送的代币的合约地址:比如以太坊主网USDT的合约地址是0xdAC17F958D2ee523a2206206994597C13D831ec7,测试网要使用对应链的测试ERC20合约地址
  • 接收方的钱包地址:比如0x开头的接收方地址字符串
  • 转账金额:要注意乘以代币的小数位,比如USDT是6位小数,转1个USDT的话实际数值是1 * 10^6 = 1000000,最后要转成十六进制格式
  • 如果不知道代币的小数位,可以去对应链的区块浏览器搜代币合约地址,详情页会展示decimals参数

第二步:实现代码修改参考

// 1. 先配置自定义参数
const ERC20_TRANSFER_METHOD_ID = "0xa9059cbb"; // ERC20 transfer方法的固定函数选择器,不用改
const TOKEN_CONTRACT_ADDRESS = "0xdAC17F958D2ee523a2206206994597C13D831ec7"; // 替换成你要发送的代币合约地址
const RECEIVER_ADDRESS = "0x替换成接收方的钱包地址";
const TRANSFER_AMOUNT = 1 * 10 ** 6; // 转账金额,USDT是6位小数所以这里1代表1USDT,其他代币替换成对应小数位计算结果

// 自动编码转账参数,不用手动修改逻辑
const amountHex = TRANSFER_AMOUNT.toString(16).padStart(64, '0');
const receiverHex = RECEIVER_ADDRESS.slice(2).padStart(64, '0');
const transferData = ERC20_TRANSFER_METHOD_ID + receiverHex + amountHex;

// 2. 构造交易参数
const transactionParameters = {
  gasPrice: '0x09184e72a000', // 也可以留空让MetaMask自动计算实时Gas价格
  gas: '0x186A0', // ERC20转账建议设为100000(对应十六进制0x186A0),或者留空让MetaMask估算
  to: TOKEN_CONTRACT_ADDRESS, // 注意:这里填代币合约地址,不是接收方地址
  from: ethereum.selectedAddress,
  value: '0x00', // 转ERC20代币时value字段固定为0,不需要转ETH
  data: transferData, // 拼接好的transfer方法调用数据
  chainId: '0x1', // 以太坊主网是0x1,测试网要改成对应链的ID,和代币所在链保持一致
};

// 3. 发起交易逻辑和原始代码一致
try {
  const txHash = await ethereum.request({
    method: 'eth_sendTransaction',
    params: [transactionParameters],
  });
  console.log("交易发起成功,交易哈希:", txHash)
} catch (err) {
  console.error("交易发起失败:", err.message)
}

注意事项

  • 必须确保当前MetaMask连接的链和你代币所在的链一致,不然交易会直接失败
  • 测试阶段建议先用测试网的测试代币调试,不要直接在主网操作避免资产损失
  • 如果发起交易提示Gas不足,把gas参数调大即可

内容的提问来源于stack exchange,提问作者Laravel dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 21:30:05