前端调用web3转账方法,封装成的一个方法
代码中有些提示信息代码 可自行删除,需要注意的是 不同的币种,合约地址不同,需更改对应的合约地址,以下是 USDT币种转账方法
import Web3 from 'web3'
import abi from './ERC20.json'
// 创建web3对象
const web3 = new Web3(window.ethereum);
export async function usdttransfer2(data) {
let { receive, number } = data; //接收账户 金额数量
const contractAddress = '0x55d398326f99059ff775485246999027b3197955'; // USDT合约的地址
const contract = new web3.eth.Contract(abi, contractAddress); // 加载USDT合约
// 转账方法的参数
const recipientAddress = receive; // 接收者地址
const amount = number; // 要转账的金额,以wei为单位
// 构造转账方法的调用数据
const transferData = contract.methods.transfer(recipientAddress, amount).encodeABI();
try {
if (web3) {
const accounts = await web3.eth.getAccounts();
const senderAddress = accounts[0];
const gasPrice = await web3.eth.getGasPrice(); //当前网络的平均 gas 价格
// 构造交易对象
const transactionObject = {
from: senderAddress, //发送者
to: contractAddress, //合约地址
data: transferData,
gas: 200000, // 设置gas限制
gasPrice: gasPrice, // 使用当前网络的平均 gas 价格
};
// 发送交易
const receipt = await web3.eth.sendTransaction(transactionObject);
console.log('转账成功!交易哈希:', receipt.transactionHash);
Toast.fail('充值成功');
return {
success: true,
receipt,
};
}
} catch (error) {
console.error('转账失败:', error);
Toast.fail('充值失败');
return {
success: false,
error,
};
}
}
- THE END -
最后修改:2024年1月29日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://dd69.top/?p=17
共有 0 条评论