Mastering Bitcoinを読む Chapter4 公開鍵、ビットコインアドレス
はじめに
前回は秘密鍵の作成まで読みました。今回は公開鍵、ビットコインアドレス作成までを読みます。
目次
- 公開鍵作成
- ビットコインアドレス作成
公開鍵作成
公開鍵(Public Key)は楕円曲線公開鍵暗号(ECC)を使用して作成します。楕円曲線公開鍵暗号についてはよく分かってません。ECCは鍵長が短くて済みCPUの負荷を低減させる効果があり、トランザクションが頻発するような環境には有効らしいです。
Kenji Urushimaさんのスライドがすごい詳しいです。(私はこれを読んでもまだ理解できてませんが)
K(公開鍵) = k(秘密鍵) * G(Generator point)
この公式で秘密鍵を特定できない公開鍵が作成できる。とりあえず今はそれだけの理解です。
ちなみにこの本を読みましたが私には易しくありませんでした..
トコトンやさしい暗号の本 (B&Tブックス―今日からモノ知りシリーズ)
- 作者: 伊豆哲也,佐藤証,田中実,花岡悟一郎,岩田哲,今井秀樹
- 出版社/メーカー: 日刊工業新聞社
- 発売日: 2010/04
- メディア: 単行本
- クリック: 4回
- この商品を含むブログ (3件) を見る
ビットコインアドレス作成
公開鍵を元にしていくつかの処理を行いビットコインアドレスが作成されます。
1. 公開鍵を"Double Hash"してハッシュ済公開鍵(20bytes)を作成します。
A = RIPEMD160(SHA256(K))
Kenji Urushimaさんのスライドによると、ビットコインで利用されるハッシュ関数はSHA256(32バイト)とRIPEMD160(20バイト)の2種類だそうです。
2. Base58Checkエンコードしてdataを作成します。
data = Base58CheckEncode(A)
Base58 alphabetは以下です。
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
3. dataに対してversion prefixを付けます。
prefix+data = prefix + data
prefixはタイプにより複数あります。
例) Bitcoin Address 0x00(1) Bitcoin Testnet Address 0x6F(m or n)
4. prefix+dataに対してSHA256を2回実行してチェックサムを作成します。
checksum = SHA256(SHA256(prefix+data))
5. checksumの最初の4bytesを追加します。
Bitcoin Address = prefix + data + checksumの最初の4bytes
以上がビットコインアドレスの作成の流れです。(間違いありそうですが..)
まとめ
次回も引き続きChapter4を読みます。