前端调用web3区块链转账方法

动动 2024-1-22 470 1/22

前端调用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 -

动动

1月29日03:31

最后修改:2024年1月29日
2

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论