使用自带方法或web3js或ethersjs三种方式实现转账、查余额等原生币

文章详细对比了Metamask、Web3.js和Ethers.js在获取gasPrice、estimateGas、发送交易时对16进制和10进制处理的不同,以及如何使用它们获取合约方法的ABI编码和账户余额。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

metamask获取的etherum,使用etherum自带方法实现,etherum参数都是16进制。web3js参数为10进制。

获取gasPrice

metamask:结果返回16进制

async getGasPrice() {
   
   
    let ret;
    await ethereum.request({
   
   "method": "eth_gasPrice"}).then(res => {
   
   
      ret = res;
    }).catch(err => {
   
   
      errorHandlerOfMetaMaskRequest(err)
    });
    return ret + "";
  }

web3js:结果返回10进制bignumber,Number(num)默认十进制

  async getGasPrice() {
   
   
    let ret;
    await web3.eth.getGasPrice().then(res => {
   
   
      ret = Number(res);
    }).catch(err => {
   
   
      errorHandlerOfMetaMaskRequest(err)
    });
    return ret + "";
  }

ethersjs:结果返回16进制bignumber,Number(num)默认十进制

  async getGasPrice() {
   
   
    let ret;
    let provider = new ethers.providers.Web3Provider(ethereum);
    await provider.getGasPrice().then(res => {
   
   
      ret = Number(res);
    }).catch(err => {
   
   
      errorHandlerOfMetaMaskRequest(err)
    });
    return ret + "";
  }

获取gasLimit

metamask:结果返回16进制

async estimateGas(param) {
   
   
    let ret;
    const myContract = this.getContract(param.abi, param.address);
    await ethereum.request({
   
   
      "method":"eth_estimateGas",
      "params":[{
   
   
        "form":param.from,
        "to":param.address,
        "value": toHex(param.amount * Math.pow(<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值