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

如何在Hedera中从Key对象获取公钥?前端多签设置遇阻

从Hedera Key对象中提取公钥(前端场景)

Hedera JS SDK里的Key是抽象父类,实际拿到的实例会是具体的公钥类型(比如Ed25519PublicKey、ECDSAsecp256k1PublicKey)或者多签用的KeyList,得先判断类型再提取公钥,具体操作如下:

单个公钥的提取

如果你的Key对象是单个公钥实例,直接调用SDK提供的方法即可获取字符串格式的公钥:

// 假设key是从查询或其他方式拿到的Key对象
import { Ed25519PublicKey, ECDSAsecp256k1PublicKey } from "@hashgraph/sdk";

if (key instanceof Ed25519PublicKey || key instanceof ECDSAsecp256k1PublicKey) {
  // 获取DER编码的公钥字符串(多签配置常用格式)
  const publicKeyStr = key.toString();
  
  // 若需要原始字节数组,用toRawBytes()
  const publicKeyBytes = key.toRawBytes();
}

多签KeyList的处理

如果Key是KeyList类型(对应多签账户的密钥集合),遍历集合里的每个子Key提取即可:

import { KeyList } from "@hashgraph/sdk";

if (key instanceof KeyList) {
  const publicKeys = key.keys.map(subKey => {
    if (subKey instanceof Ed25519PublicKey || subKey instanceof ECDSAsecp256k1PublicKey) {
      return subKey.toString();
    }
    throw new Error("KeyList中包含不支持的密钥类型");
  });
  // publicKeys数组就是多签配置所需的所有公钥字符串
}

常见误区

  • 不要直接用JSON.stringify()序列化Key对象,SDK的Key内部结构无法通过普通序列化保留有效信息,必须用上述SDK提供的方法转换。
  • 从AccountInfo/ContractInfo中获取密钥时,务必先判断类型再处理,避免类型错误。

内容的提问来源于stack exchange,提问作者Mulders Michiel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:45:19