本页目录
签名
下方签名示例使用快速开始中的 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 | 内部错误 |
最后更新于