Skip to Content
dApps
このページの内容

personal_sign

指定されたアカウントでメッセージに署名します。署名前にメッセージに "\x19Ethereum Signed Message:\n" というプレフィックスを付加することで、メッセージ署名を生トランザクションへの署名と区別します。


パラメーター

インデックス型説明
0string署名するメッセージ (16 進数エンコード)
1string署名に使用するアドレス

戻り値

string - 署名 (65 バイトの 16 進数文字列)


例

const message = 'Hello, OneKey!' const hexMessage = '0x' + Array.from(new TextEncoder().encode(message), byte => byte.toString(16).padStart(2, '0')).join('') const signature = await window.$onekey.ethereum.request({ method: 'personal_sign', params: [hexMessage, accounts[0]] }) console.log('Signature:', signature)

ethers.js の使用

import { hashMessage, recoverAddress } from 'ethers' const message = 'Hello, OneKey!' const hexMessage = '0x' + Array.from(new TextEncoder().encode(message), byte => byte.toString(16).padStart(2, '0')).join('') const signature = await window.$onekey.ethereum.request({ method: 'personal_sign', params: [hexMessage, accounts[0]] }) // Verify signature const recoveredAddress = recoverAddress(hashMessage(message), signature) console.log('Verified:', recoveredAddress.toLowerCase() === accounts[0].toLowerCase())

エラー

コードメッセージ説明
4001ユーザーがリクエストを拒否ユーザーが署名リクエストを拒否
-32602無効なパラメーター無効なメッセージまたはアドレス

注意事項

  • メッセージは 16 進数エンコードし、0x プレフィックスを付ける必要があります
  • 実際に署名されるメッセージ: "\x19Ethereum Signed Message:\n" + len(message) + message
  • 型付きデータの署名には eth_signTypedData_v4 を使用してください
  • 次で規定されています: EIP-191 

認証には、意図したドメイン、アカウント、有効期限、サーバーが発行する 1 回限りのチャレンジを検証してください。固定された例のメッセージに対する有効な署名だけでは、完全なサインインフローにはなりません。

最終更新日