2018年02月02日
いちばんやさしいブロックチェーンの教本
本日は杉井靖典 氏の
いちばんやさしいブロックチェーンの教本
です。
本書はブロックチェーンの実装の実務経験が
豊富な著者によるブロックチェーンの基礎の本です。
仮想通貨やブロックチェーンの本は多いですが、
本書の特徴は「少し」技術に入っているところです。
この手の本は、技術にはほとんど立ち入らず、
ブロックチェーンによって世の中がどう変わるか、
ということにフォーカスした本か、
技術的な本だとエンジニア向けの高度な内容となり、
一般読者が読めるものではありません。
一方、本書ではあまり細部に立ち入ることなしに、
ブロックチェーン技術の理解に必要な暗号の技術を始め、
ハッシュ値、電子署名、PKIなどの
技術の必要性や概要が丁寧に解説されています。
これから、ブロックチェーンを学ぼうという
エンジニアにとっても、
専門書との橋渡しができる良書だと思います。
個人的には、
ビットコインのブロックチェーンは堅牢度が高い反面、
トランザクションの処理に時間がかかってしまう、
冗長性が高いのでリソースを無駄食いしてしまうといった、
問題点を正しく理解できたことが大きな収穫でした。
ブロックチェーンを理解したい
(他分野の)エンジニアにお勧めの一冊です。
無理なくブロックチェーン技術の全体像を
つかむことができるでしょう。
いちばんやさしいブロックチェーンの教本
です。
本書はブロックチェーンの実装の実務経験が
豊富な著者によるブロックチェーンの基礎の本です。
仮想通貨やブロックチェーンの本は多いですが、
本書の特徴は「少し」技術に入っているところです。
この手の本は、技術にはほとんど立ち入らず、
ブロックチェーンによって世の中がどう変わるか、
ということにフォーカスした本か、
技術的な本だとエンジニア向けの高度な内容となり、
一般読者が読めるものではありません。
一方、本書ではあまり細部に立ち入ることなしに、
ブロックチェーン技術の理解に必要な暗号の技術を始め、
ハッシュ値、電子署名、PKIなどの
技術の必要性や概要が丁寧に解説されています。
これから、ブロックチェーンを学ぼうという
エンジニアにとっても、
専門書との橋渡しができる良書だと思います。
個人的には、
ビットコインのブロックチェーンは堅牢度が高い反面、
トランザクションの処理に時間がかかってしまう、
冗長性が高いのでリソースを無駄食いしてしまうといった、
問題点を正しく理解できたことが大きな収穫でした。
ブロックチェーンを理解したい
(他分野の)エンジニアにお勧めの一冊です。
無理なくブロックチェーン技術の全体像を
つかむことができるでしょう。
・ブロックチェーンを簡単にいうと
正しい記録しかできない、変更できない、消せない、改ざんできない、壊れても自動修復される、落ちない、みんなに合意された情報だけが有効と認識される、ネットワーク共有型のデータベース
ブロックチェーンはデータベースを機能強化する仕組み
ブロックチェーン技術は、
分散型台帳技術の一種と考えられます。
普通のお金は国家が発行するが、
ブロックチェーンのなかで流通するお金は
国家が発行したものではない
ブロックチェーンのネットワークには
リーダーの役割を担うノードが存在しません。
ウォレットアドレスが自分の個人情報とは
いっさいリンクしない
ブロックチェーンは『ウォレットアドレスの現在の残高』を
データとして記録していない
現在の残高が知りたければ、
『そのウォレットアドレスが関与した過去の取引履歴』そ
すべて抽出して合算すればわかるはず
ノードを運用してくれる人
(一般に「マイナー」と呼ばれます)に対して、
運用報酬として仮想通貨を直接与える仕組みになっていて、
正しい選択をするほうが経済的に得をするようになっています。
ブロックチェーンのネットワークには
特権管理者が存在しません。
そのため、いったんブロックチェーンに記録された情報は、
登録者自身であっても消すことはもちろん、
変更することさえできません。
ビットコインは、設計当初から発行可能総数が決められています。
その数は、20,999,999.9769ビットコインです。
ビットコインは、発行計画の通りならば、約130年後には、
マイニングをしても報酬が得られなくなってしまいます。
(中略)
しかしその頃には、マイニング報酬よりも取引量が、
現在より大幅に増えているはずなので、
マイニングによって得られた報酬以上に
取引手数料の合計額のほうが
上回るはずだと考えられています。
通常のウォレットの場合、
秘密鍵は自分で管理するのが基本です。
よって、万が一、鍵を紛失してしまうと、
中身は永遠に失われてしまいます。
ビットコインのウェレットがなにかの機能ではなく、
単なる「鍵」を指しているのに過ぎない
ビットコインを送金するときは、
「自分のウォレットの秘密鍵」と
「送金先のウォレットアドレス(公開鍵)」が必要です。
小売店などでビットコイン決済を行う場合は、
ブロックチェーンへのトランザクションは
書き込みを待ちません。
現代暗号の方式には、大きく分けて
「共通鍵暗号方式」と「公開鍵暗号方式」の
2種類が存在します。
スーパーコンピューターを用いてフル回転で計算しても、
解の発見には何万年もかかると見積もられている問題が、
公開鍵暗号のアルゴリズムとして採用されています。
公開鍵暗号は共通鍵暗号に比べて
桁違いに計算に時間がかかるので、
大きなデータの暗号化には向いていない
電子署名を使うと、
インターネットを通じてやりとりされる文書が、
目的の本人によって作成されたものであることを検証できます。
電子署名がついていただけでは、
公開鍵に対応する秘密鍵を持っている人だけが
電子署名を施したとはいえるものの、
それが本当に本人によるものなのかを
証明するには不十分なのです。
「電子認証局」が「本人確認」を行い、
その「電子証明書」の発行をもって、
その有効性を管理する仕組みのことを、
まとめて「Public Key Infrastructure」略して「PKI」と呼びます。
ネットワークの遅延などの影響もあって、
各ノードのタイムスタンプを厳密に揃えるのは、
意外と難しいのです。
ブロックチェーンのコミュニティ界隅では、
暗号技術のなかでもPKIのような中央集権的な機構は
敬遠される傾向があります。
「ハッシュ値」「電子署名」「PKI」に
「タイムスタンプ」が揃って、
ようやくブロックチェーンの特徴を語るために
必要な暗号関連の基礎知識が揃いました。
ブロックチェーンに保持されるデータは、
全ノードが保有しているため、
冗長性が高いのが特長です。
これは利点でもある反面、
長い目で見ると欠点にもなりかねません。
「なにがあっても止まらずに稼動を続ける」
というメリットは、
「システムを止めたくても気軽に止められない」
というデメリットにもなります。
ブロックチェーンの場合、可用性と分断耐性を保証する代わりに、
一貫性を少し犠牲にしています。
瞬時に手続きが終わることが期待される業務には、
ブロックチェーンは不向きです。
絶対に内容を改ざんされては困るような
契約書や履歴事項全部証明書などを
P2P分散データストレージに保存する、
といった使い方が考えられます。
母集団の人数が決まらない分散システムにおける合意形成は、
単純に多数決で決めることができません。
ビットコインのネットワークにおいては
「ビットコイン」を得られることが、
経済的なインセンティブになります。
つまり、正しい選択をした者が
この経済インセンティブの行使権を獲得でき、
そうでなければ、その行使権が得られないという
仕組みが発明されたのです。
ノードは、トランザクションプールに蓄積されている
取引データを、何十、何百と取り出しながら、
前のブロックのハッシュ値と、
タイムスタンプとを「ブロック」に詰め、
さらに「ノンス」と呼ばれる適当な数を入れながら、
そのブロックのハッシュ値の先頭に所定の数だけ
「0」が並ぶのを発見するまで、ひたすら計算をします。
Proof of Work は大量のコンピューティングリソースと
それを駆動させるために無駄に電力消費を要するため、
エコロジーではないという大きな問題があります。
どんなに重要と考えられる仕様変更であっても、
意見が1つにまとまらなければ、
ハードフォーク(恒久的な分岐)という手段を
とらざるを得ない事態も出てきます。
「公開鍵アドレス」は160ビットの情報量を
それそれがもっていて、
これを作るための秘密鍵はさらに大きな256ビット分の
情報量を持っています。
ウォレットアドレスや暗号キーペア衝突の心配をする人は、
数字の大きさを想像できていない人に多いように思います。
ウォレットアプリはブロックチェーンの中身をくまなく漁って、
自分のウォレットアドレスに関係する
取引データをかき集めてきて
未使用分の残高を集計して見せている
1つのウォレットアプリがたくさんのウォレットアドレスを持つ
お金の出入りが激しいウォレットアドレスは
狙われやすいだけでなく、犯罪性収益移転に
利用されているのではないかと疑われやすく、
第三者機関によるウォレットアドレスの安全性評価が
低くなるという側面もあります。
「決定性ウォレットアドレス」では、
まず「シード」と呼ばれる乱数から「マスター秘密鍵」を作ります。
仮想通貨の取引所では、お客様から預かったビットコインなどの
仮想通貨はコールドウォレットに分別保管されることが
義務づけられています。
コールドウォレットの運用ならハードウェアウォレットが便利
ブロックチェーンの世界で「トランザクション」
という言葉が出てきたら、それは「取引」を意味します。
「どのトランザクションを取り込むか」は、
マイナーが自由に決めていいことになっています。
(中略)
経済的合理性を考えると、手数料の高いものを
優先的に取り込むのが当たり前ということになります。
「ブロックチェーンはファイナリティ
(決済があとから取り消されないこと)がないから
つかいものにならない」
という点が議論のやり玉にあがることがよくあります。
ブロックチェーンでは、先に送信された
トランザクションだからといって、
必ずしも先にブロックチェーンに記録されるとは限りません。
正等なトランザクションであっても、
それを格納する順番が1つでも狂うと
そのブロック以降に含まれるハッシュ値が
すべて不整合を起こすことになります。
お金のコピーを防ぐというアプローチを捨て、
「お金のコピーは自由にできるが、
それを利用できる権利をコントロールできるようにした」
という点が、まさに、
コロンブスのたまご的な発想ですね。
実際の店頭では、直接、仮想通貨を
決済に使えることは稀なので、
仮想通貨交換業者のペイメントサービスを通じて、
そこがリスクをとることで、即時支払いを承認しています。
不正による被害の確率を事前に算出可能であれば、
すべてを技術でまかなう必要はなく
「被害が出れば保険でまななう」という
考え方もできるわけです。
複数の人が合意した内容(契約)を、
人がいないところでも自動的に実行する仕組みを、
ニック・スザボは「スマートコントラクト」と呼んだのです。
不特定多数が参加するパブリックチェーンでは、
仕様を改定したい際の合意形成が難しいという点も
忘れてはいけません。
スマートコントラクトでは、全員が正しく評価できる情報
(ワールドステート)を用いて評価を行わないと、
自律分散ネットワークのなかで正しい判断ができず、
協調的な動作ができなくなってしまいます。
もし、法定通貨がブロックチェーン上に発行されると、
本当に革命的なことが起こります。
デジタル的な価値の取引の
DVP(Delivery Versus Payment:配達と支払いの同時履行)を
確実に行えるようになるためです。
24時間365日落ちないという点は、逆にいうと、
「いざというときに容易に止められない=
止めてじっくりとメンテナンスできない」
というデメリットでもあります。
インターネットが普及して以来、
これまで何度も検討されては実現できなかった
電子投票選挙システム。
その課題としてクリアが難しかったところはおそらく、
「有権者の管理」と「匿名投票」という相反する要件を
両立しなければならなかった点と「投票券の複製ができてしまう」
という点が大きかったのだろうと思います。