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

如何使用MultiversX JavaScript/TypeScript SDK签名任意字节消息并验证签名?

使用MultiversX JavaScript/TypeScript SDK签名任意字节消息并验证签名

前置准备

先安装所需的SDK依赖:

npm install @multiversx/sdk-core @multiversx/sdk-wallet

一、对任意字节消息进行签名

步骤说明

  1. 初始化钱包(支持助记词、PEM文件两种方式)
  2. 准备要签名的字节序列(可以是UTF8字符串转字节,也可以是自定义二进制字节)
  3. 创建可签名消息对象并完成签名

代码示例

import { Wallet, SignableMessage } from "@multiversx/sdk-wallet";
import { fromUtf8 } from "@multiversx/sdk-core";

// 1. 从助记词初始化钱包(也可以用PEM文件加载)
const mnemonic = "your-mnemonic-phrase-here";
const wallet = Wallet.fromMnemonic(mnemonic);

// 方式A: 字符串转字节作为消息
const rawTextMessage = "自定义的任意消息内容";
const messageBytes = fromUtf8(rawTextMessage);

// 方式B: 直接使用自定义二进制字节
// const messageBytes = new Uint8Array([0x01, 0x02, 0x03, 0x04]);

// 2. 创建可签名消息并执行签名
const signableMsg = new SignableMessage({ message: messageBytes });
await wallet.sign(signableMsg);

// 获取签名结果和发送方地址
const signatureHex = signableMsg.getSignature().hex();
const senderBech32Addr = wallet.getAddress().bech32();

console.log("生成的签名:", signatureHex);
console.log("签名者地址:", senderBech32Addr);

注意:SignableMessage会自动按照MultiversX规范添加签名前缀(\x19Elrond Signed Message:\n + 消息长度),避免签名被恶意重用到交易等其他场景。


二、验证签名的有效性

步骤说明

  1. 准备验证所需的三个核心参数:签名者的Bech32地址、原始消息的字节序列、签名的十六进制字符串
  2. 使用SDK内置的验证方法完成校验

代码示例

import { Address, verifyMessageSignature } from "@multiversx/sdk-core";
import { fromUtf8 } from "@multiversx/sdk-core";

// 1. 准备验证参数
const senderBech32Addr = "erd1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
const originalMessageBytes = fromUtf8("自定义的任意消息内容"); // 和签名时的原始消息一致
const signatureHex = "生成的十六进制签名字符串";

// 2. 执行签名验证
const address = new Address(senderBech32Addr);
const isValid = verifyMessageSignature({
  address: address,
  message: originalMessageBytes,
  signature: signatureHex
});

console.log("签名是否有效:", isValid); // 返回true/false

额外说明

  • 如果签名时用的是自定义二进制字节,验证时要传入完全相同的Uint8Array,不能修改字节顺序或内容
  • 验证方法会自动处理签名前缀,无需手动添加
  • 若从PEM加载钱包,可替换初始化代码为:const wallet = await Wallet.fromPemFile("./wallet.pem");

内容的提问来源于stack exchange,提问作者turdus-merula

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:49:54