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

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

ビットコインは,時価総額が1位で最も有名な仮想通貨です.
仮想通貨の時価総額の見方については以前にまとめました.
【仮想通貨】時価総額のランキングを円(JPY)で見る方法。

ビットコインは知っているけど,どんな仕組みで動いているか,どんな技術が使われているのかはあまり知られていないと思います.

そこで、ビットコインの仕組みや技術的なことについて,できるだけ初心者でも分かるように詳しく解説していきたいと思います.

ビットコイン(BitCoin)の概要

ビットコインは,Peer to Peer 型のコンピュータネットワークにより運営される決済網および暗号資産のことをいいます.

ビットコインは「Satoshi Nakamoto」と称する人物が 2008年に論文を発表し,この論文をもとにして 2009年にソフトウェアがオープンソースとして公開されました.

ビットコインの論文は公開されているのでリンクを貼っておきます。
※原文は英語ですが日本語に翻訳されたものもあります。
●英語
https://bitcoin.org/bitcoin.pdf
●日本語
https://bitcoin.org/files/bitcoin-paper/bitcoin_jp.pdf

ビットコインは,中央機関が存在することなく(Decentralized),Peer to Peer で個人間の取引(トランザクション)が可能であるため,送金手数料が安い等のメリットがあります.

ビットコインの重要な特徴として以下の2つが挙げられます.

  • 中央機関のいない環境で取引の合意形成を行う(Decentralized)
  • 信頼性のないオープンなネットワーク上での透明性の高い取引を実現(Trustless)

これらを実現するためにブロックチェーンと呼ばれる技術が用いられています.

ビットコインでは送金などの取引をトランザクション(Transaction)で記述します.
ブロックチェーンは,その名のとおり,トランザクションのまとまりを「ブロック」とし,「ブロック」がチェーン状に連なった分散型台帳のことをいいます.

基本的に,仮想通貨ではブロックチェーン技術が用いられており,この技術が画期的であるといわれています.また,ブロックチェーン技術が理解できればビットコインの仕組みも理解できると思います.

これから,ブロックチェーンについて,なぜ中央機関がなくても取引が安全に行えるか,仕組みや技術について,ビットコインでの送金を例にして解説していきます.

「ビットコインをAさんからBさんに送金すること」を想定します.
ビットコイン送金のおおまかな流れは以下のとおりになります.

  1. トランザクションデータを作成する
  2. トランザクションを他の参加者に通知する
  3. マイニング(採掘)を行う
  4. 参加者がトランザクションを承認する
  5. 承認されたトランザクションを参加者が自身のブロックチェーンに追記する

 

これを実現するための用語・技術の解説を1つずつしていきます。

トランザクション(Transaction)

トランザクションデータとは,「ある所有者の所有権を別の誰かに譲渡する行為」を記述することです.
今回の例だと,Aさん(ある所有権)のビットコイン(所有権)をBさん(別の誰か)に送金(譲渡する行為)となります.

トランザクションデータについては,以前にまとめました.
【仮想通貨】トランザクションについて調べてみた【ブロックチェーン】

ハッシュ関数(hash function)

ブロックチェーンを構築していく際に,トランザクションや各ブロック間の参照を簡単に比較できるようにするためなど,様々なところでハッシュ関数(hash function)というものが用いられています.

ビットコインで使われているハッシュ関数については、以前にまとめました。
【ビットコイン】ハッシュ関数(SHA-256・RIPEMD-160)について調べてみた。

公開鍵暗号方式(Public-key cryptography)

ビットコインでは,公開鍵暗号方式が用いられており,ECDSA(Elliptic Curve Digital Signature Algorithm,楕円曲線 DSA)が使われています.

公開鍵暗号方式は、

  • アドレス生成
  • トランザクションのデジタル署名

で使われます。

公開鍵暗号方式では,まず,秘密鍵を作り,秘密鍵から公開鍵を作成します.
さらに,公開鍵を基にしてアドレスを生成します.その際に,公開鍵は一般に公開されてしまう情報であるため,公開鍵から秘密鍵を推測できないようにする必要があります.そのために,ECDSA が使われています.

秘密鍵の生成方法

秘密鍵は,「ランダムに抽出された数字」であり,ビットコインの場合は,秘密鍵の長さに厳格な制限はありません.

公開鍵の生成方法

公開鍵の生成方法については、以前にまとめました。記事では「イーサリアム」となっていますが、秘密鍵から公開鍵を生成する方法は、ビットコインもイーサリアムも同じです。
https://www.think-self.com/money/cryptocurrency/secp256k1/#i-2

アドレス生成

公開鍵からビットコインアドレスを生成する方法については、以前にまとめました。
【ビットコイン】 アドレス生成方法について調べてみた。

トランザクションのデジタル署名

トランザクションへのデジタル署名(digital signature)の技術については、以前にまとめました。
【仮想通貨】デジタル署名について調べてみた【ブロックチェーン】

ブロック(Block)

トランザクションの束をブロックという単位で扱い,ブロックをつなげたものがブロックチェーンであり1つの公開台帳として管理されていいます。

ビットコインにおける、1つのブロックの構造については、以前にまとめました。
【ビットコイン】1ブロックに含まれる情報について調べてみた【マークル木】

ブロック生成・マイニング(Mining)

新たなブロックを生成してブロックチェーンに取り込むときに、ビットコインでは,ブロックの生成時間が 10分間に1回(1つ)になるように,調整されています。その際、マイニング(Mining)とよばれるものが使われています。

新たなブロック生成方法やマイニング(Mining)については、以前にまとめました。
【仮想通貨】新しいトランザクション(取引)の追加方法【ブロックチェーン】

承認されたブロック

以上の流れで、ビットコインの取引がブロックチェーン(公開台帳)に取り込まれ、承認されていきます。

実際のビットコインのブロックチェーン、ブロック、トランザクションの情報は公開されており、誰でも見ることができます。

以前の記事にそのあたりのことをまとめたので、もしよかったらご覧下さい。
【ビットコイン】承認されたブロックを見てみる【ブロックチェーン】

関連記事

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

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

記事を読む

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

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

記事を読む

【仮想通貨】デジタル署名について調べてみた【ブロックチェーン】

ビットコインなどの仮想通貨のブロックチェーンで用いられているデジタル署名(Digital s

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

【仮想通貨】新しいトランザクション(取引)の追加方法【ブロックチェーン】

仮想通貨で用いられているブロックチェーン技術において、新しいトランザクション(取引)をどのよ

記事を読む

【TensorFlow】GPUを認識しない時の対処方法【Python】

TensorFlow で GPU を認識させようとしたときにハマってし

【耳コピ】音楽ファイルを楽器ごとに分離する方法【Spleeter:フリー】

今回は、mp3 などの音楽ファイルをボーカル、ベース、ドラムなどの楽器

【Chainer】手書き数字認識をしてみた【Deep Learning】

Chainerを用いて、ニューラルネットワークを構築し、手書き数字認識

【Spyder】引数のあるスクリプトを実行する方法。

Python の統合開発環境(IDE)である Spyder では、簡単

【Anaconda】Prompt 上で Git コマンドを実行する方法。

Anaconda のコマンドプロンプト(Anaconda Prompt

→もっと見る

PAGE TOP ↑