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

如何向指定地址发送BSC代币?现有BNB转账代码需如何调整参数?

BSC BEP20代币转账参数修改方案

你当前的代码是BNB(BSC原生币)的转账逻辑,要支持指定BEP20代币转账,需要做以下调整:

1. 扩展转账状态字段

首先在原有状态中新增2个必填参数:代币合约地址、代币小数位,修改后的状态示例如下:

const [transferInfo, setTransferInfo] = React.useState({
  to: '0x987ffbf3f7cdabb38782b9886d257ce74f338da5', // 收款地址不变
  amount: '0.01', // 转账代币数量(人眼可读的正常单位)
  txHash: '',
  tokenContract: '0x55d398326f99059fF775485246999027B3197955', // 示例:BSC主网USDT合约地址
  decimals: 18 // 对应代币的小数位,USDT在BSC上是18位,部分稳定币为6位
})

2. 调整转账逻辑

BEP20代币是合约资产,不能直接向地址转账,需要调用对应代币合约的transfer方法,核心逻辑如下:

  • 先引入极简BEP20 ABI(仅包含转账所需的方法定义):
const BEP20_ABI = [
  "function transfer(address to, uint256 amount) external returns (bool)"
]
  • 转换转账金额为链上最小单位,避免精度损失(以ethers.js为例):
import { ethers } from 'ethers'

// 计算链上实际转账的最小单位金额
const amountOnChain = ethers.utils.parseUnits(transferInfo.amount, transferInfo.decimals)
  • 实例化代币合约发起转账:
// provider和signer为你项目中已初始化的钱包连接实例
const tokenContract = new ethers.Contract(transferInfo.tokenContract, BEP20_ABI, signer)
const tx = await tokenContract.transfer(transferInfo.to, amountOnChain)
await tx.wait()
// 交易确认后保存txHash
setTransferInfo(prev => ({...prev, txHash: tx.hash}))

3. 注意事项

  • 转账前需要确保钱包已切换到BSC对应网络(主网/测试网)
  • 钱包地址需要持有足够的BNB作为转账手续费
  • 代币小数位必须和对应合约的配置一致,否则会出现转账金额错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:24:03