You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用wagmi.sh的useSendTransaction钩子发送ERC20代币?

用wagmi的useSendTransaction发送ERC20代币的正确方式

要发送ERC20代币,你之前的思路有误——不能把合约地址放在data字段里,正确的逻辑是:

  • to字段填ERC20代币的合约地址(交易要发给合约,触发它的transfer方法完成代币转账)
  • value字段设为0(转ERC20不需要附带原生代币)
  • data字段填编码后的transfer方法调用数据(包含接收地址和转账数量这两个核心参数)

完整示例代码

import { useSendTransaction, usePrepareSendTransaction, encodeFunctionData } from 'wagmi'
import { parseUnits } from 'viem' // 处理代币小数位,也可用ethers的工具函数替代

// ERC20合约核心ABI片段,仅需transfer方法的定义
const erc20Abi = [
  {
    inputs: [
      { internalType: 'address', name: 'to', type: 'address' },
      { internalType: 'uint256', name: 'value', type: 'uint256' },
    ],
    name: 'transfer',
    outputs: [{ internalType: 'bool', name: '', type: 'bool' }],
    stateMutability: 'nonpayable',
    type: 'function',
  },
] as const

function App() {
  // 替换成你实际的参数
  const tokenContractAddress = '0x...' // ERC20代币合约地址
  const recipientAddress = 'moxey.eth' // 代币接收地址
  const amount = '10' // 要转账的代币数量(比如10个USDT)
  const decimals = 6 // 代币小数位,USDT为6,多数ETH系代币为18

  const { config } = usePrepareSendTransaction({
    request: {
      to: tokenContractAddress, // 交易目标是ERC20合约
      value: 0n, // 原生代币转账金额设为0
      // 编码transfer方法的调用数据
      data: encodeFunctionData({
        abi: erc20Abi,
        functionName: 'transfer',
        args: [
          recipientAddress,
          parseUnits(amount, decimals), // 把人类可读数量转成合约要求的uint256格式
        ],
      }),
    },
  })

  const { data, isLoading, isSuccess, sendTransaction } = useSendTransaction(config)

  return (
    <div>
      <button disabled={!sendTransaction} onClick={() => sendTransaction?.()}>
        发送ERC20代币
      </button>
      {isLoading && <div>请在钱包中确认交易</div>}
      {isSuccess && <div>交易成功:{JSON.stringify(data)}</div>}
    </div>
  )
}

关键细节说明

  1. ABI的作用:erc20Abi是ERC20合约transfer方法的接口定义,用来让wagmi正确编码交易调用数据。
  2. 数量转换:parseUnits会把带小数的人类可读数量(比如"10")转换成合约能识别的整数格式(比如10个USDT会转成10000000)。
  3. 交易目标逻辑:必须把to设为ERC20合约地址,因为只有合约能处理代币的转账逻辑,直接给用户地址发交易只会失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:05:19