本文へスキップ
ecdsa.com

BIP-137(署名メッセージ形式)

公開鍵を復元できる 65 バイトの ECDSA 署名を使う Bitcoin のメッセージ署名形式で、ヘッダーバイトがリカバリ ID とアドレスの種類の両方を表します(27〜30 は非圧縮の P2PKH、31〜34 は圧縮の P2PKH、35〜38 は P2SH-P2WPKH、39〜42 は P2WPKH)。
別表記BIP-137BIP137Bitcoin signed messagesignmessage

メッセージには「Bitcoin Signed Message」のプレフィックスと長さのバイトが付けられ、SHA-256 を 2 回適用してハッシュ化したうえで secp256k1 で署名されます。検証者は署名から公開鍵を復元し、ヘッダーが示す種類のアドレスを導出して、主張されたアドレスと比較します。署名は base64 でやり取りされます。

BIP-137 は、P2PKH にしか対応していない Bitcoin Core の signmessage に由来します。SegWit 用のヘッダー範囲は一貫して実装されたことがなく、Electrum や Trezor を含む一部のウォレットは、SegWit アドレスにも P2PKH の範囲を使っていました。BIP-137 は Taproot、マルチシグ、スクリプトのアドレスをまったく表現できず、そのため BIP-322 に置き換えられつつあります。Bitcoin メッセージ検証ツールは両方の形式に対応しています。

規格と参考文献

すべての用語