【ビットコイン】 アドレス生成方法について調べてみた。

公開日: : 最終更新日:2020/11/19 仮想通貨 , , ,

仮想通貨の1つであるビットコインを送金するときは、送付側と受け手側のそれぞれのアドレスが必要になります。

ビットコインのアドレスは、1 または 3 から始まる 27~34 文字の英数字で構成されています。

アドレスは、送付側と受け手側それぞれの秘密鍵を元にして作られた公開鍵から生成されます。

アドレス生成手順

秘密鍵から公開鍵を生成する手順については以前まとめましたので参考にしてみてください。
※下記ページはイーサリアムの例ですが、ビットコインでも同じ楕円曲線「secp256k1」が使われています。
【イーサリアム】 公開鍵暗号について調べてみた。

アドレスは、以下の手順で公開鍵をハッシュ化して生成されます。
ハッシュ化する際に使われるハッシュ関数「SHA-256」と「RIPEMD-160」については以前にまとめました。
【ビットコイン】ハッシュ関数(SHA-256・RIPEMD-160)について調べてみた。

  1. 公開鍵をハッシュ関数 SHA-256 でハッシュ化する。
  2. そのハッシュ値の先頭に「00」もしくは「05」を付ける。
  3. 付与した値に対して2回ハッシュ関数 SHA-256 を通してハッシュ値を得る。
  4. 2. の末尾に、3. の先頭4バイトを付与する。
  5. 4. を Base58 エンコードする。

Base58エンコードとは?

Base58エンコードとは、2進数で表されたバイナリデータを文字列のデータに変換するためのエンコード方式です。

Base58では、見間違いやすいアルファベット(O、l、I)・数字(0)と記号(+、/)は使用しません。

また、手順2で先頭に付与する「00」もしくは「05」は Version Prefix といい、Base58エンコードするデータの種類を特定するものです。

「00」の場合は、公開鍵ハッシュ(P2PKH)を表し、「05」の場合は、スクリプトハッシュ(P2SH)を表します。

「00」をBase58エンコードすると先頭が「1」になり、「05」をBase58エンコードすると先頭が「3」となります。

ビットコインのアドレスの先頭が以下の例のように「1」または「3」になるのはこのような理由があるからです。

ビットコインアドレスの確認

以下のサイトから実際のビットコインのアドレスを確認することができます。

https://www.blockchain.com/explorer?view=btc

アドレスの先頭が「1」となっているものは「フォーマット」が「BASE58(P2PKH)」となっています。

一方、アドレスの先頭が「3」となっているものは「フォーマット」が「BASE58(P2SH)」となっていることが確認できます。

参考書籍

関連記事

【イーサリアム】 ハッシュ関数(Keccak-256)について調べてみた。

仮想通貨の1つであるイーサリアムで用いられているハッシュ関数「Keccak-256」について

記事を読む

【イーサリアム】 チューリング完全性について調べてみた。

仮想通貨の1つであるイーサリアムについて調べていると、チューリング完全性(Turing co

記事を読む

【仮想通貨】時価総額のランキングを円(JPY)で見る方法。

ビットコインやイーサリアムなどの仮想通貨の時価総額のランキングを 円(JPY)で見れる分かり

記事を読む

【ビットコイン】ハッシュ関数(SHA-256・RIPEMD-160)について調べてみた。

ビットコインなどの仮想通貨で使用されているハッシュ関数(hash function)という技

記事を読む

【ビットコイン】1ブロックに含まれる情報について調べてみた【マークル木】

ビットコインなどの仮想通貨では、トランザクション(取引)の束を「ブロック」という単位で扱い、

記事を読む

【Solidity】 イーサリアムでコントラクトを生成してみた。

スマートコントラクトプログラミングの高級言語の1つである Solidity を使って、イーサ

記事を読む

【仮想通貨】トランザクションについて調べてみた【ブロックチェーン】

ビットコインなどの仮想通貨では、取引をトランザクションで記述されます。 そのトランザク

記事を読む

【イーサリアム】クライアントソフト geth を使ってみた。

イーサリアムのクライアントソフト geth をインストールして使ってみました。 クライ

記事を読む

【イーサリアム】日本円のチャートで比較する方法【イーサリアム・クラシック】

イーサリアム(Ethereum)は、2020年時点で、時価総額がビットコインに次ぐ第2位の仮

記事を読む

【イーサリアム】 公開鍵暗号について調べてみた。

仮想通貨の1つであるイーサリアムでは、公開鍵暗号という技術が使われています。 公開鍵暗

記事を読む

【転移学習】学習済みVGG16 による転移学習を行う方法【PyTorch】

今回は、PyTorch を使って、学習済みのモデル VGG16 を用い

【PyTorch】畳込みニューラルネットワークを構築する方法【CNN】

今回は、PyTorch を使って畳込みニューラルネットワーク(CNN)

【PyTorch】ニューラルネットワークを構築する方法【NN】

今回は、PyTorch を使って、ニューラルネットワーク(NN)を構築

【OpenCV】検出した顔画像部分を切り出す方法【Python】

OpenCV を使って、Python で画像の中から顔部分を切り出した

【Fashion-MNIST】ファッションアイテムのデータセットを使ってみた【TensorFlow】

今回は、機械学習用に公開されているデータセットの1つである「Fashi

→もっと見る

PAGE TOP ↑