ブロックチェーンをちゃんと学ぼうと改めて思いましたので、その記録を残しておこうと筆を執ってみました。技術よりというよりか思想や社会実装に向けて学びたいので、そのつもりで、読んでください。
ブロックチェーンの参考書と言えば…、ちょっと古いですが、DMMの加嵜さん、篠原さんが書いたこれがうちにあるので、この辺から歴史を含めて、おさらいしていこうと思います。
暗号通貨(仮想通貨)の価値を支えるブロックチェーン技術。 トランザクション、Proof of Work、データ構造。 Ethereum(イーサリアム)におけるスマートコントラクト。 独自トークンの発行、Solidityによるアプリケーション開発。 仕組みから実践までわかる、エンジニアのための解説書。と書いてあります^^。
電子書籍だと改訂されたやつが読めるよと篠原さんに教わったのですが、既にリアル本購入済み😢だったので、ググりながら記事にはしていくつもりです。昔はこうだったが今ではこうだという流れが学べるので、あえて古い本(2018年初版)をベースにしてみました。
なので「この解釈は間違ってる」とか、「ここは今ではこうだ」とかありましたら、バシバシ突っ込んでいただけると学びになるので嬉しいです。よろしくお願いします。
改めて、ブロックチェーンについておさらいです。
ブロックチェーンとは、「管理者不在でも自立的に動作するビットコインの特性を可能にした技術の総称」です。通貨の取引履歴をブロックと呼ばれる単位でまとめ、そのブロックのハッシュ値を別のブロックに含めることで、ブロック連鎖(チェーン)を作るところが特徴です。
ビットコインの登場以来、ブロックチェーン技術をさまざまな分野に応用する研究が盛り上がり、一部には管理者が存在するシステムやブロックを使用しないシステムも存在しています。現在での利用方法は、別な機会に書きますので、ここでは、生い立ちの部分を深ぼっていきたいと思います。
ざっと年表にしてみました。この年表順に説明していきます。
1962年9月、ポール・バランが核攻撃に対して耐久性を持つネットワークの研究として、分散型コミュニケーションネットワークを考案しました。
上図で説明をしていて、(A)CENTRALIZED(=中央集権型)では、中央から端末(ノード)に向かって情報が拡散します。(B)DECENTRALIZED(=分権型)では、いくつかの小さなハブが小集団を形成して、中央から小集団に、小集団内も中央から端末へと情報が拡散します。これは日本における国と地方自治体の構造と同じです。そして、(C)DISTRIBUTED(=分散型)では、中央はなく、ノード同士が相互接続された構造をしています。脳の神経回路網が部分的な障害でも全体が機能不全に陥ることがないことを参考にしています。また、核攻撃に対する耐性を持つためには、各ノードが3,4の接続冗長性を備えていればよいことも確認しています。このネットワークでは伝送速度が異なる通信手段を相互接続する方法として、メッセージをメッセージ・ブロックに分割して、ホップ数(ブロックを経由したノード数)を共有しながら、メッセージを最短経路(最小ホップ数)ですぐに送信する方法を採用しています。これは、伝送ルートが利用可能かに関係なく、メッセージを受信するたびに近い相互接続地点でルーティングする方式で「ホット・ポテト・ルーティング」といい、光ネットワークで一般的に使用されています。
ちょっと本筋から外れてきたので、話を戻します。
1979年、公開鍵暗号の研究者ラルフ・マークルが発明した二分木のことで、ツリー内のデータの整合性を検証するためにハッシュを利用しています。もともとはランポート署名を効率よく処理するために開発されたもので、一つのカギを複数のメッセージに対して利用できるので効率的なデジタル署名ができるようになりました。
上図はビットコインのツリーですが、各トランザクション(Tx0~Tx3)のハッシュ(Hash0+Hash1、Hash2+Hash3)をつなげたハッシュ(Hash01、Hash23)を利用して、最上位のRootHash(マークルルート)を作ります。この二分木構造の利点は、検証にあります。複数のデータを1つのブロックにまとめることができるのですが、そのデータが破損していないか?改ざんされていないか?を検証する際に、ルートのハッシュをチェックするだけでブロック内に変更が加わっていないことを証明できます。
1991年、スチュアート・ヘイパーとスコット・ストルネッタによってタイムスタンプに関する論文が発表されています。文章や音楽、写真、動画などのデジタル化が進んだときに、データの作成・変更を証明する必要があるということで研究が行われていました。タイムスタンプとは、「ある時刻において、その電子データが存在していたことと、それ以降改ざんされていないことを証明する技術」です。二人が考案したタイムスタンプは、TIMESECによってマークルツリーを使って情報を効率よく格納したブロックの順番を知る方法として利用されて、ビットコインの基礎技術となっていきます。
タイムスタンプを誰が発行するか?チェックはどうするか?といった信頼の一つの解として、ヘイパーとストルネッタは、信頼性の問題を解決するために、リンキングと分散型トラストという方法を考案します。以下に解説があります。
ヘイパーとストルネッタは、信頼性の問題を解決するために、リンキングと分散型トラストという方法を考案します。
リンキングは以下のように一つ前のタイムスタンプを含めることで順番を示す方法をいいます。
ブロックチェーンぽくなってきました。そして、分散型トラストで、無作為に選んだノードがタイムスタンプを発行する際にデジタル署名を行うことで、無関係なもの同士を信頼しなくてもいい仕組みを考案しました。
さらに、TIMESECというベルギーのタイムスタンプ研究プロジェクトでは、もう一歩進んで、一定期間の間に送られてきたリクエストをまとめて処理する(一定期間後の処理をラウンドと呼ぶ、ラウンド方式)ために、マークルツリーによるブロック化を利用しています。
ラウンド・ルート・バリューからさらにハッシュを算出してラウンド・バリューを作るのですが、このとき、自身のラウンド・ルート・バリューと一つ前のラウンド・バリューで、自身のラウンド・バリューを生成します(リンキング)。ほぼ、ブロックチェーンの形になってきました。
注意点としては2つ。このランド方式で保障されるのは、ラウンド同士の順番ですが、ラウンド内のデータの順番は分からないということと、TIMESECは分散型トラストは採用していなかったので、タイムスタンプを発行するのは、信頼できる第3者機関であることです。しかし、信頼できる第3者機関自体が不正をしていないことを検証する仕組みを取り入れました。それは、ラウンド・バリューを新聞などのメディアに掲載することで、他のタイムスタンプに対する信頼の根拠としたことです。新聞は広く大勢に配られるので改ざんが困難であるということだそうです。
だんだん、難しくなってきます。 次回はお待ちかね?PoWについてです。 こうご期待👍