ビットコインアドレスについて
3つの領域がある
プレフィックス
ペイロード
チェックサム
プレフィックス
バージョン情報を記載する
table:プレフィックス
種類 プレフィックス base58エンコーディング
ビットコインアドレス(main) 0x00 1
ビットコインアドレス(test) 0x6F mまたはn
P2SH アドレス(main) 0x05 3
P2SH アドレス(test) 0xCF 2
チェックサム
情報に間違いがあるか検証する!
転写ミスとか
SHA256(SHA256(プレフィックス + 512ビットの公開鍵))
この計算結果の先頭4バイトをチェックサムとする。
ペイロード
データとしての実体
RIPEMD160(SHA256(公開鍵))
<非圧縮型の公開鍵>
計算した256ビットのx座標とy座標を16進数文字列で連接し先頭に''0x04'と云う1バイトのプレフィックスをつける
(529ビットのサイズになる)
code:pubkey = "04" + x + y;
<WIF(Wallet import format)>
秘密鍵バックアップやワレット間の移行を行うときに間違いを少なくする工夫。
256ビットの秘密鍵の16真表現にプレフィックスと4バイトのチェックサムをつけbase58エンコードしたもの。
WIFにも圧縮形式と非圧縮形式がある。
ビットコインワレットのバックアップをとるときは原理的には秘密鍵だけ取り出せば良い。
(公開鍵は秘密鍵からできるから)
→サイズ節約のために圧縮する
→WIFも圧縮する
ビットコインアドレスと公開鍵の対応が誰でも簡単に検証できる必要がある。
...つまり。圧縮形式の公開鍵をトランザクションサイズ削減技術として使うためにはUTXOの送金先が圧縮形式の公開鍵から作成されたビットコインアドレスになっていることが必須。
ペイロードの最後に0x01をつけるので圧縮形式の方がデータサイズが1バイト大きい点に注意
table:WIF
種類 プレフィックス base58エンコーディング 備考
WIF形式の秘密鍵(main) 0x80 5
圧縮WIF形式の秘密鍵(test) 0x80 K または L 圧縮形式の公開鍵とペアになる秘密鍵であることを表示するために
ペイロードの最後に0x01をつけてエンコードする。
WIF形式の秘密鍵(main) 0xef 9
圧縮WIF形式の秘密鍵(test) 0xef c 圧縮形式の公開鍵とペアになる秘密鍵であることを表示するために
ペイロードの最後に0x01をつけてエンコードする。