Skip to Content
dApp 接入
本页目录

签名

下方签名示例使用快速开始中的 connectSuiAccount(),获取 Wallet Standard 账户及其当前链。示例使用 @mysten/[email protected];在 @mysten/[email protected] 中,即使旧版 *TransactionBlock 方法也声明接收 Transaction。

签名前请求权限、选择已连接账户,并读取当前链。这些示例使用 @mysten/[email protected],与当前 provider 接受的 @mysten/[email protected] 匹配。

了解如何签署消息用于身份验证。

运行下方示例前,先初始化账户上下文:

const { account, chain } = await connectSuiAccount()

签署个人消息

签署任意消息用于身份验证:

const message = new TextEncoder().encode('Hello, Sui!') const result = await provider.signPersonalMessage({ account, chain, message, }) console.log({ signature: result.signature, // Base64 encoded signature bytes: result.bytes, // Signed message bytes })

签署消息(旧版)

const message = new TextEncoder().encode('Hello, Sui!') const result = await provider.signMessage({ account, message, }) console.log({ signature: result.signature, messageBytes: result.messageBytes, })

验证签名

import { verifyPersonalMessageSignature } from '@mysten/sui/verify' const message = new TextEncoder().encode('Hello, Sui!') const { signature } = await provider.signPersonalMessage({ message, account, chain }) const signerKey = await verifyPersonalMessageSignature(message, signature) const isExpectedSigner = signerKey.toSuiAddress() === account.address console.log('Expected signer:', isExpectedSigner)

错误处理

try { await provider.requestPermissions() } catch (error) { if (error.code === 4001) { console.log('User rejected the connection request') } else { console.error('Connection error:', error.message) } }

常见错误码

错误码描述
4001用户拒绝请求
4100未授权
-32603内部错误
最后更新于