ビットコインの仕組み~ちょっと詳しく~

ビットコインのやり取りは実際どういう仕組みなのでしょう。

ビットコインの仕組み

ビットコインは電子マネーや銀行のようにサービス提供者が取引データを一括管理している仕組みではありません。ノードと呼ばれるパソコンが接続しあって、網の目のようにネットワークを構成しています。ちなみに、このノードには誰でもなることができます。

台帳=ブロックチェーン

さて、AさんがBさんにビットコインを送金したいとしましょう。

この時の送金は、「AさんのノードからBさんのノードへコインが移動した」というわけではありません。AさんもBさんもノードである必要はないのです。

AさんがBさんに1BTC送金したいとき、Aさんのアドレス(口座番号のようなもの)の署名を添えて「AからBへ1BTC送金。手数料は0.0001BTC。」と書いて、それをどこかのノードに向けて送信します。Aさんのアドレスの署名を添える理由は、送金を依頼しているのはAさん本人であるという証明をするためです。ここで証明しないと、第三者のCさんが勝手に「AからCへ送金」ってことができちゃいますからね。

この時の、「Aさんのアドレスの署名」と「AからBへ1BTC送金。手数料は0.0001BTC。」を書いたものを「トランザクション」と呼びます。

ノードはあちこちから送られてきた大量のトランザクションをある程度まとめて「ブロック」にします。そしてこのブロックをそれぞれのノードが共有している「台帳」の最後に付け足すための計算をします。計算は複雑なので少し時間がかかるのですが、計算が解けたらブロックは無事に台帳の末尾に追記されます。

この台帳のことを「ブロックチェーン」と言います。

つまり、私たちがビットコインとは何かと言われるとビットコインとはこの膨大な台帳そのものなのです。台帳には過去から今までの全ての送金内容が暗号化されて記載されています。

全ノードで台帳を共有

この台帳はそれぞれのノードが隣のノードにコピーする仕組みになっています。先程の「AさんがBさんに1BTC送金した」という記録も、台帳のバケツリレーにより全ネットワークで共有されるようになるのです。

ここで疑問が出てきます。コピーされた台帳の最後に違う2つのノードがそれぞれ別のブロックを追記してしまうことはないのでしょうか?

これは、頻繁に起こります。

ノードは無数に存在するので、台帳のコピーが間に合わないことも良くあることなのです。

長い方のチェーンだけが生き残る

このように異なる2種類の台帳が存在することは当然のように起こるのですが、ビットコインには「送信されてきたチェーンと自分の持っているチェーンとの長さを比べて、長い方のチェーンを採用する」というルールが敷かれているのでこの問題は一時的なものになります。

こうして2つの異なる台帳は、より長い方だけが残されてもう片方はネットワーク上から消滅します。この時、消滅した台帳の方に記録されている送金履歴はなかったことになるルールになっています。

ごくまれに「ビットコインを受け取ったはずなのに改めて見たら無くなっていた」ということがあります。これは送金されたという事実そのものが消滅したことによる巻戻りです。

これは、あなたに送られたビットコインがすぐに違う人により大きな手数料で送金された場合には、後者の取引が優先されてしまい、あなたの取引が承認されることなくもう一方の取引がブロックチェーンに載っていってしまいあなたの取引は消去されてしまうのです。

しかし、気軽に送金履歴を消されてしまったら大変です。送金時に既に商品やサービスと交換されているかもしれませんからね。受け取ったつもりの売上が後で見たら消えていたなんてことが発生してはお店側は困ってしまいます。

つまり、このような現象が起きた場合、

・受け取った二つの承認ブロックどちらも各ノードは保存をする
・次にブロックが承認されるまで各ノードはどちらかのブロックで計算をしておく
・誰かがどちらかのブロックの次のブロックの承認をしたらそれを受け取り二つに分かれていたブロックの繋がらなかったブロックを破棄する

という方法でこの問題を解決します。

つまり、ブロックがもし二分してしまってもいずれ一つになっていくようにできているのです。

このように、自分の送金を記録した台帳が確実に生き残るかどうか、しばらく待つという方法が一般的になっています。

承認は6段階

承認された取引の載ったブロックの後に新たなブロックが生成されると1段階の承認を得たということで「1承認」と呼びます。

これが6段階までいくとその取引が消える事がほぼなくなり安全な状態になったと言われます。1つのブロックが確定するのには約10分かかるので6段階承認を得るまでは1時間かかります。1時間たてばその送金は確定となります。

仮に誰かが不正承認をしたとしても、ずっと同じような不正承認を続けなくてはならない為、計算に必要な多大な出力消費をしてまで不正を働く理由が無い、というモチベーション不在の方法を利用してビットコインは中央管理者不在のシステムを作り上げたのです。