このページの内容
署名
以下の署名例では、はじめにで説明する connectSuiAccount() を使用します。この関数は Wallet Standard アカウントと有効なチェーンを返します。例では @mysten/[email protected] を使用します。従来の *TransactionBlock メソッドも、現在は @mysten/[email protected] で定義された Transaction を入力として宣言しています。
署名前に権限を要求し、接続済みアカウントを選択して、有効なチェーンを読み取ってください。これらの例では、現在のプロバイダーが受け入れる @mysten/[email protected] の形式に合う @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 | 内部エラー |
最終更新日