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

使用Web3.js设置交易ETH金额时0.04ETH在MetaMask显示73ETH如何解决

问题原因

你遇到的数值异常的核心原因是以太坊JSON-RPC规范要求eth_sendTransaction方法的value字段必须传入0x开头的十六进制格式的wei值,你当前直接传入了十进制字符串,MetaMask在解析时误将你输入的十进制数字40000000000000000识别为十六进制数值,换算后对应的ETH量级刚好和你看到的73ETH匹配。

修复方案

你可以直接调用web3内置的工具方法处理单位转换和进制转换,避免手动计算出错:

  • 用web3.utils.toWei()完成ETH到wei的单位转换,不需要手动数零计算数值
  • 用web3.utils.toHex()将数值转为符合RPC要求的十六进制格式

修改后的对应代码片段如下:

const transactionParameters = {
  to: contractAddress,
  from: window.ethereum.selectedAddress,
  'data': window.contract.methods.mint(window.ethereum.selectedAddress,number).encodeABI(),
  // 替换原有的value赋值逻辑
  value: web3.utils.toHex(web3.utils.toWei('0.04', 'ether'))
};

额外注意事项

你当前使用的是Rinkeby测试网络,代码中交易成功后的区块浏览器链接指向的是Ropsten网络,建议对应修改,避免后续查询交易时出现找不到记录的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:27:02