Skip to Content
dApps

署名

以下の署名例では、はじめにで説明する 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内部エラー
最終更新日