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

Hedera原生地址与EVM地址互转方法及转账场景咨询

Hedera原生地址与EVM地址互转实现方法

一、原生地址(shard.realm.account)转EVM地址

转换逻辑:

  • 将原生地址拆分为shard、realm、account三个数值部分
  • 分别将三个部分转为十六进制字符串,按规则补零:shard补至8位、realm补至8位、account补至24位
  • 拼接三个十六进制字符串并添加0x前缀,得到标准EVM地址

手动实现代码(JavaScript)

function hederaNativeToEvm(nativeAddress) {
  const [shard, realm, account] = nativeAddress.split('.').map(Number);
  
  const shardHex = shard.toString(16).padStart(8, '0');
  const realmHex = realm.toString(16).padStart(8, '0');
  const accountHex = account.toString(16).padStart(24, '0');
  
  return `0x${shardHex}${realmHex}${accountHex}`;
}

// 测试:0.0.12345 → 0x00000000000000000000000000003039
console.log(hederaNativeToEvm('0.0.12345'));

Hedera SDK简化实现(JavaScript)

import { AccountId } from '@hashgraph/sdk';

function nativeToEvmWithSdk(nativeAddress) {
  const accountId = AccountId.fromString(nativeAddress);
  return accountId.toSolidityAddress();
}

// 测试
console.log(nativeToEvmWithSdk('0.0.12345'));

二、EVM地址转原生地址(shard.realm.account)

转换逻辑:

  • 移除EVM地址的0x前缀
  • 将十六进制字符串拆分为三部分:前8位对应shard、中间8位对应realm、最后24位对应account
  • 每部分转为十进制整数,用.拼接得到原生地址格式

手动实现代码(JavaScript)

function evmToHederaNative(evmAddress) {
  const hex = evmAddress.replace('0x', '');
  
  const shardHex = hex.slice(0, 8);
  const realmHex = hex.slice(8, 16);
  const accountHex = hex.slice(16, 40);
  
  const shard = parseInt(shardHex, 16);
  const realm = parseInt(realmHex, 16);
  const account = parseInt(accountHex, 16);
  
  return `${shard}.${realm}.${account}`;
}

// 测试:0x00000000000000000000000000003039 → 0.0.12345
console.log(evmToHederaNative('0x00000000000000000000000000003039'));

Hedera SDK简化实现(JavaScript)

import { AccountId } from '@hashgraph/sdk';

function evmToNativeWithSdk(evmAddress) {
  const accountId = AccountId.fromSolidityAddress(evmAddress);
  return accountId.toString();
}

// 测试
console.log(evmToNativeWithSdk('0x00000000000000000000000000003039'));

注意事项

  • 转换前需校验地址格式有效性:原生地址需为数字.数字.数字格式,EVM地址需为带0x前缀的42位十六进制字符串
  • 生产环境推荐使用Hedera SDK实现,可避免手动处理字节序、补零环节的潜在错误

内容的提问来源于stack exchange,提问作者Ryan Arndt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:40:18