仮想通貨のココがヤバい

銘柄選定のタネ

ビットコイン論文を読んでみた(前半)

はじめに

 はじめて公開されたsatoshi nakamoto氏によるビットコインに関する論文とそれを日本語に翻訳してくださったものを照らし合わせながら読ませていただきました。本記事は私の備忘録として書いたものです。他書籍等を参考にしながら情報を付加したものなので、もし本記事に曖昧な点や分かりにくい点がありましたら、以下の元記事、論文をお読みいただくことを強くお勧めします。また、タイトルに「前半」と書きましたが、後半を書くかどうかは未定です。

Bitcoin: A Peer-to-Peer Electronic Cash System

https://bitcoin.org/bitcoin.pdf

・日本語で読むビットコイン原論文

coincheck.com

 

ビットコイン(暗号通貨)はなぜ有用なのか

インターネット上での商取引は、ほぼ例外なく第三者機関を仲介して行われているのが現状です。このシステムは各取引者と第三者機関の信用によって成り立つモデルですが、ビットコインによる取引は個人間で直接取引を行うことができ(これをPeer-to-Peerと言います)、かつ信用によって担保されたものではなく、暗号技術によって担保されたモデルと言えます。詳細を以下に示します。

 

トランザクション(取引)

ビットコインによる取引では過去の所有者がコインを二重使用していないかどうかをどのように確かめるかが問題になります。過去に使用していないことを明確にするには第三者機関が必要になりますが、ビットコインは前述したようにそれを持ちません。これを解消するために全取引を公開し、大多数のノードがそのコインが初めて使用されたことに賛同したという証明を各取引において行います。

 

タイムスタンプ・サーバー

取引履歴をより確かなものにする為にタイムスタンプという技術を用います。これはその取引がその時刻に行われたという存在証明を行うためのものです。タイムスタンプは一方向的に増えて行き、タイムスタンプが増えれば増えるほど以前の取引履歴は改ざんしにくくなります。

 

PoW(プルーフ・オブ・ワーク)

全ノード(CPU)において、無作為に数値を選びながらひたすら計算を行います。正解の値をノンスと呼び、この発見競争のことをPoWと呼びます。このPoWは多数決で意思決定をする際の代表をどうするかという問題を解決します。もし1IPアドレスにつき一票としたならば、多くのIPアドレスを取得できるものは誰でもシステムを乗っ取ることが出来てしまいます。しかしPoWは原則的に1CPUにつき一票である為、攻撃の為には大きなCPUパワーを必要とします。

 多数の良心的なノードと、少数の攻撃的なノードについて考えてみましょう。多数派のチェーンはCPUパワーが大きい為、PoWによって作られたチェーンは少数派によって作られたチェーンよりも長くなります。チェーンが分岐した際、それらは両方とも一時的に保持されますがチェーンの伸びが遅いものは自動的に破棄される仕組みです。ゆえに攻撃的なノードが少数派である限り取引を改ざんすることはできない仕組みになっています。

 また一度ブロック(複数取引履歴のまとまり)が出来ると、それを書き換えるためには再度PoWをやり直さなければいけません。

 

ネットワーク

 各ノード間の通信は以下の順で行われます。

・新しい取引は全ノードに送信される

・各ノードが新しい取引をブロックに取り入れる

・各ノードがそのブロックへのPoWを算出する

・PoWを発見次第、各ノードはそれを全ノードに告知する

・ノードはブロックに含まれるすべての取引が有効であり、以前に使われていない場合のみ、それを承認する。

・ノードは常に最長のチェーンを正しいものと判断し、それをさらに延長しようとする。もし二つのノードが同時に異なる二つのパターンのブロックを次のブロックとして告知した場合、両方のブロックを保持し、次のPoWが発見され、どちらかのチェーンが伸びたとき、それを正しいチェーンとする。

 

インセンティブ

インセンティブとはブロック作成者たちへの報酬のようなものです。ブロック内の最初の取引は新しくコインを発行する特別な取引とされています。ブロック作成者は新たなコインを得ることが出来ます。これはネットワークをより良心的なものであるように保つとともに、コインの流通量を安定的に増やす役割も担っています。インセンティブは取引手数料としても得ることが出来ます。コインの流通量が規定の値に達した時、取引手数料をインセンティブとして扱うことが出来る為、コインは規定以上に発行する必要がなく、インフレがおこることはありません。

 インセンティブはノードが良心的であり続ける動機となります。もし攻撃者が良心的なノードの総CPUパワーを超えるCPUパワーを作り出すことが出来たとしても、そのパワーを使って自分の支払った金額を取り戻すか、インセンティブを受け取るかの選択をすることしかできません。ビットコイン全体のシステムを損なうよりも、インセンティブを受け取ることの方が自分の利益になると考えるでしょう。