【BitCoin】ビットコインの仕組み(ブロックチェーンの構造) [ビットコイン]
【BitCoin】ビットコインの仕組み(ブロックチェーンの構造)
●前提知識
■ビットコインの仕組みを知る上で最も重要なハッシュという前提知識があります。
ハッシュとは、ハッシュ関数という計算方法を実行することにより任意のデータを一定の短い長さの値に変換したもののことです。
●ハッシュの特徴
①元のデータに戻せない
②元のデータが少しでも変わると変換後のハッシュが全く異なる値になる
③原則として元のデータは何でも良い
少しでも元データが変わると変換後のハッシュが完全に異なるものになる特徴を生かして、
ファイルが破損していたり改ざんされてないかを調べるのに利用されたり、
ハッシュから元データを復元できないという特徴を生かして、パスワード等の重要な
データを安全に保管する方法として利用されたりしています。
※ビットコインにおいてはSHA-256やRIPEMD-160というハッシュ関数が利用されており、これらのハッシュ関数を利用してあらゆるところでハッシュ化が行われています。
■P2P分散型仮想通貨
●電子データでもあるビットコインのデータはP2P型に分散して保存されています。
P2P型に保存されているというのは特定のサーバーに保存されているのではなく、
世界中の多くのコンピュータがそれぞれ保存して共有しているということです。
P2P型にすることにより例えば一か所のコンピュータが攻撃されてダウンしても、
他の多数のコンピュータが同じデータを保存しているので影響を受けないというメリットがあります。
※例え政府から規制されても世界の中にビットコインのデータを保存しインターネット上で 共有する人がいる限りビットコインは永遠になくならないと言われています。
■ブロックチェーンの仕組み
●ビットコインとはブロックチェーンと呼ばれる取引台帳です。
上図はブロックチェーンを模式的に表したものです。
正確に言えば、ビットコインは電子的なコインそのものが実際に存在しているわけではなく、
「AさんからBさんへ7BTCを送った」というような取引記録の集合なのです。
取引データを効率的に保管するためにブロックチェーンは複数の取引を含む
ブロック(上図の黒四角部分)という一定の単位に分かれています。
ブロック同士を時系列順に繋ぐために取引データ以外にも前のブロックのハッシュが含まれています。
このようにブロックが鎖状につながっているために文字通りブロックチェーンと呼ばれているのです。
※※前のブロックの取引を改ざんすると、そのブロックのハッシュが変わって0が連続しない値に
なってしまい、その後ろのブロックのハッシュも連鎖的に0が連続しないランダムなものになってしまうので後ろのブロックもすべて無効になるというわけです。
■ブロックの仕組み
●上図左の黒四角部分はブロック内に含まれるデータを模式的に表したものです。
実際には他のデータも含まれていますが簡単のため省略しています。
これまで「ブロック」のハッシュと説明してきたものは実際にはブロック全体ではなく
ブロックヘッダー(上図左,茶色四角部分)と呼ばれるブロックの中の一部分のハッシュです。
このブロックヘッダーには前のブロックヘッダーのハッシュ、取引データをまとめたもの
(マークルルート)、nonceという任意の値などが主に含まれています。
■マークル木
●ブロックには取引の生データも含まれていますが、この生データは膨大な容量になり
毎回参照するのは非常に非効率で大変なためマークル木(ハッシュ木)(上図右部分)というデータ構造にまとめられています。
一定長の短い値に変換できるハッシュの特徴を生かしてブロック内の取引をツリー状に
ハッシュ化して最終的に一つのハッシュにまとめたものです。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
最終的にまとめたハッシュはマークルルート(マークル根)と呼ばれます。
※これによって取引を検証するのにすべてのブロックチェーンをダウンロードする必要がなくなっています。
■nonce
ブロックヘッダーに含まれるもう一つの重要なデータがnonce(ナンス, ノンス)です。
そしてこのnonceがブロックヘッダーのハッシュを「0が一定数連続する」値にしているキーとなっています。
nonceは一定の長さであること以外は特定のルールのない任意の値です。
このnonceを変化させることによりブロックヘッダーのハッシュを0が一定数連続する値にするのです。
ハッシュの元のデータというのは復元できないためブロックヘッダーのハッシュが連続する0から始まる値になるようなnonceを総当たり的に探すしかありません。
↓↓↓↓↓↓↓↓↓↓↓↓
nonceを総当たり的に探すことを採掘(マイニング)と呼びます。
※このnonceを導入することにより取引の改ざんが難しくなります。
例えば上図の取引Aを改ざんすると、それに合わせてハッシュA,ハッシュAB,
ハッシュABCD(マークルルート)が連鎖的に変化し結果的にブロックヘッダーの
ハッシュも変わり0が連続する有効なハッシュでは無くなってしまいます。
つまりnonceを再度探さないといけないということです。
※一つのブロックならまだ良いのですが前半で見たようにブロックは鎖状に つながってブロックチェーンを形成しているため改ざんしたブロックより後の ブロックに含まれるnonceをすべて再計算しなければなりません。
※※再計算された後のブロックチェーンは元のブロックチェーンとは異なるため
改ざんしたブロックから「分岐」することになりますがブロックチェーンには
最も長いブロックチェーンのみを有効とする、というルールがあるため昔のブロックの 改ざんほど難しいということがいえます。
引用元
Bitcoin日本語情報サイト
http://jpbitcoin.com/abouts
画像引用
http://jpbitcoin.com/img/about/block.png
http://jpbitcoin.com/img/about/p2p.png
2017-02-08 18:05
nice!(0)
コメント(0)
トラックバック(0)
コメント 0