Ethereumのウォーレットの鍵ペアを使って、ブラウザ内で任意のデータに署名することができる。 アドレスの持ち主だという証明になるので、たとえばアドレスに紐づくラベルの編集とか、ログイン時にセッションキーに署名するとかに使えそう。 これは手元の秘密鍵を使ってデータに署名するだけなので、トランザクションは発生せず、残高に影響はない。
署名には、EIP-712: Ethereum typed structured data hashing and signingで規定されているeth_signTypedData
を使うことになる。
ブラウザの機能拡張MetaMask では、マニュアルによると、このEIP-712 が策定される当初から実装を行っていたらしく、現在の仕様の呼び出しを行うにはメソッド名にバージョンをつけて eth_signTypedData_v4
と指定する必要があった。
このページでは、実際に署名を行う動作デモを展示する。
このデモは外部のJavaScriptライブラリを使わず、MetaMask と直接やり取りするようになっている。
Connect ボタンを押してMetaMaskと接続したあと、Sign で署名できる。
なお、結果の署名はeth-sig-util
を使えばサーバサイドで検証できそう。
Connect結果:
Sign結果: