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

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

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

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

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

Contents

アドレス生成手順

秘密鍵から公開鍵を生成する手順については以前まとめましたので参考にしてみてください。
※下記ページはイーサリアムの例ですが、ビットコインでも同じ楕円曲線「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)」となっていることが確認できます。

参考書籍

関連記事

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

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

記事を読む

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

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

記事を読む

【ビットコイン】承認されたブロックを見てみる【ブロックチェーン】

ビットコイン(BitCoin)の公開台帳であるブロックチェーンについて、新たに承認されたブロ

記事を読む

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

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

記事を読む

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

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

記事を読む

初心者でも分かるビットコインの仕組みについてまとめてみた。

ビットコインは,時価総額が1位で最も有名な仮想通貨です. 仮想通貨の時価総額の見方について

記事を読む

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

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

記事を読む

【イーサリアム】 ホリエモンが2014年当時にイーサリアムの可能性に気付いていた!?

ホリエモンこと堀江氏が、2014年の自身のブログで「イーサリアムやべぇ。。。」というタイトル

記事を読む

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

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

記事を読む

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

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

記事を読む

【Cubase】イヤホンから音がでないときの対処方法。

Cubase でイヤホンから音がでなくなったときの対処方法のメモです。

【Cubase】特定のトラックを無効にする方法。

今回は、Cubaseで特定のトラックのみを無効にする方法について紹介し

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

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

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

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

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

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

→もっと見る

PAGE TOP ↑