ビットコインではビットコインアドレスを生成するのに、「Base58Checkエンコード」が使用されます。
「Base58Checkエンコード」とは何でしょうか?Base58Checkエンコードについて解説します!
Base58Checkエンコードとは
「Base58Checkエンコード」は58種類の文字に対応したエンコード方式です。
エンコードとは、「変換する」という意味です。Base58Checkエンコードは58種類の文字に変換するという意味です。
58種類の文字
- 数字・・・1~9(0がない)
- 文字列・・・A~Z(Oがない)、a~z(l,iがない)
数字は0以外は対応しています。文字列は大文字の「O」、小文字の「l」「i」以外の文字は対応しています。このような見間違えやすい文字列は排除しています。
この58種類の文字列は人間が見て認識しやすい文字です。記号がたくさん入っている文字列だと人間が認識するのは大変です。
こんなときには、「Base58エンコード」を使って読みやすい文字列に変換してしまえばいいのです。
58種類の英数字文字列に変換することを「Base58エンコード」といいます。
「Base58エンコード」はこのように人間がわかりやすい文字にするために使います。
チェックサム
「Base58Checkエンコード」の「Check」というのはチェックサムのことで、入力ミス防止機能がついています。
つまり、「Base58Checkエンコード」とは、入力ミス防止機能つきで、58種類の文字列に変換することです。
Base58Checkエンコードの使い方
それではBase58Checkエンコードはどのようなときに使うのでしょうか?ビットコインでみていきましょう!
ビットコインアドレス
ビットコインでは「ビットコインアドレス」があります。ビットコインを送金するときは、このビットコインアドレスに送ります。
このビットコインアドレスは自分で作る必要があります。このビットコインアドレスを生成する最後の方で「Base58Checkエンコード」は使われます。
ビットコインアドレス生成手順
- 公開鍵をSHA-256でハッシュ値にする
- 1のハッシュ値をRIPEMD-160でハッシュ値にする
- 2の頭にVersion Prefixをつけたものを、Base58Checkエンコードするとビットコインアドレスとなる
公開鍵をSHA-256でハッシュ値にする
例えば、公開鍵が「1234」だとします。(わかりやすくるため簡単な文字列にします)
ハッシュ値は「03ac6742・・・以下省略256ビット」となります。(長いので省略します)
RIPEMD-160でハッシュ値にする
SHA-256のハッシュ値をRIPEMD-160にかけます。得られたハッシュ値は「1d40cf・・・以下省略160ビット」となります。
Version Prefixを頭につける
Version Prefix とはBase58Checkエンコードのデータ種類を区別する先頭文字のことです。ビットコインのアドレスは「00」と決められています。
Version Prefix「00」はBase58Checkエンコード後は「1」となります。
「00」+「1d40cf・・・以下省略160ビット」をBase58Checkでエンコードします。
これで出来上がる文字列がビットコインアドレスになります。
以上、ビットコインアドレスを生成する「Base58Checkエンコード」の解説でした。
コメント