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

使用ethers.js向长零地址转账hbar失败,持续出现gas耗尽问题

问题:使用ethers.js向Hedera长零地址转账Hbar时Gas耗尽失败

尝试用ethers.js向Hedera长零地址转账Hbar,将账户ID(0.0.5465603)转换为Solidity地址(0x0000000000000000000000000000000000536603)后,转账持续触发Gas耗尽错误。

问题分析

  1. 金额解析错误:ethers.parseEther('2', 'wei')用法不符合API规范,parseEther仅接受金额字符串参数,单位默认为ether,传入第二个参数会导致金额计算异常,进而引发交易错误。
  2. 变量未定义:代码中accountWallet未初始化,属于无效变量,会导致运行时错误。
  3. 硬编码Gas不匹配:Hedera EVM的Gas机制与以太坊存在差异,硬编码gasLimit:200000可能不符合该转账操作的实际需求,容易触发Gas耗尽。

解决方案

关键修正点

  • 替换错误的金额解析方法:使用ethers.parseUnits指定正确单位,Hedera EVM中Hbar的最小单位是tinybar(对应1e8进制),需根据转账需求调整。
  • 修正未定义变量:将accountWallet替换为已初始化的signer。
  • 使用Gas估算:通过provider自动估算所需Gas,避免硬编码导致的Gas不足或浪费。
  • 添加错误捕获:便于排查交易失败的具体原因。

修正后的完整代码

import dotenv from 'dotenv';
import { ethers } from 'ethers';
import { Wallet } from '@ethersproject/wallet';
import { JsonRpcProvider } from '@ethersproject/providers';

async function main() {
    dotenv.config();
    const privateKey = process.env.PRIVATE_KEY;
    const rpcUrl = process.env.RPC_URL;

    if (!privateKey || !rpcUrl) {
        console.log('请在.env文件中设置PRIVATE_KEY和RPC_URL');
        process.exit(1);
    }

    const rpcProvider = new JsonRpcProvider(rpcUrl);
    const signer = new Wallet(privateKey, rpcProvider);
    const accountAddress = await signer.getAddress();
    console.log({ accountAddress, rpcUrl});

    // 示例:转账2 tinybar(Hbar最小单位),若转2 Hbar则改为ethers.parseUnits('2', 8)
    const txValue = ethers.parseUnits('2', 'wei');
    // 自动估算Gas
    const gasLimit = await rpcProvider.estimateGas({
        to: "0x0000000000000000000000000000000000536603",
        value: txValue
    });

    let tx = {
        to: "0x0000000000000000000000000000000000536603",
        gasLimit: gasLimit,
        value: txValue,
    };
    try {
        let transaction = await signer.sendTransaction(tx);
        await transaction.wait();
        console.log(`交易成功,哈希:${transaction.hash}`);
    } catch (error) {
        console.error('交易失败:', error);
    }
}

main().catch(console.error);

.env配置文件

# 创建并资助账户后,复制其私钥
PRIVATE_KEY=""

# 默认使用Hashio测试网RPC,可根据偏好更换
RPC_URL="https://testnet.hashio.io/api"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:53:09