アカデミック

【初学者向け】ブロックチェーンをキャッチーに詳しく理解する。

この記事では,ブロックチェーンとは何かについて,胡散臭さを抜きにして真面目にキャッチーにお伝えしていこうと思います。深くまで突っ込んだ話まではできませんが,みなさんが周りの方々に

ブロックチェーンってこういう技術やねん!

と堂々とお話し(自慢)できることを目標に執筆していきます。分かりやすさを重視しているため,正確性に欠ける表現もありますが大目にみてください。

間違えている箇所がございましたらご指摘ください。随時更新予定です。他のサーベイまとめ記事はコチラのページをご覧ください。

本記事の流れ

1.ブロックチェーンをフワッと理解
2.利用される技術と用語のおさらい
3.ブロックチェーンをしっかり理解

フワッと理解

ブロックチェーンは

「情報をやり取りするための全く新しい方法」

です。トランザクションとか分散型台帳とか,小難しい話は一旦聞かなかったことにしてください。とにかく,ブロックチェーンは「情報のやり取り」を実現するための技術であることを忘れないでください。

どんな情報のやり取りを行うの?

もっともな質問です。ほとんどの皆さんは,ふと気が付いた時点で世の中ではブロックチェーンという言葉が飛び交っていたと思います。そもそも,この社会ではすでに「情報のやり取り」を行う仕組みは溢れるほど整備されています。クレジットカード決済や,メールの送受信など,私たちのご先祖様が,超賢い知恵を限界まで振り絞って考え抜かれた,合理的なルールが存在します。こんな状況で,なぜブロックチェーンが注目を集めているのかが重要です。

その答えは

「安全・安心の守り方が斬新な発想だったから」

です。

ここでいう「安心・安全」とは,情報のやり取りが「正確(改ざんされない)で」「なりすましができずに」「悪い人にバレない(盗聴されない)」ことを指します。今までの安心・安全の守り方は,信頼できる機関を中心とする暗号化技術に頼っていました。しかし,ブロックチェーンを用いた情報のやり取りでは,情報を「分散」させると同時に,人間を「競争させる」ことで,安心・安全を守ります。

どうすればこんな方法を思いつくのでしょうか。安心・安全を守るために私たちを「競争させる」なんて思いつくのが不思議でたまりません。ここまでをまとめます。

ここまでのまとめ

ブロックチェーンは私たちの「安心・安全を守りながら情報をやり取りする全く新しい方法」です。

技術と用語

さて,ブロックチェーンをフワッと理解したところで,技術と用語の確認に入っていこうと思います。まずは確認する技術・用語を箇条書きで列挙します。

●P2P
●分散型台帳
●電子署名
●ハッシュ関数
●ナンス
●ブロック
●マイニング
●Proof of Work(PoW)
●コンセンサス
●ジョイント
●ビザンチン障害
●Public型/Permissioned型

もうダメ!!!

まあまあ。落ち着きましょう。用語や技術は一見難しそうに思えますが,新しい概念について知ろうとするときには,用語・技術を使うことで効率的に理解を促すことができます。というわけで,簡単に1つずつ見ていこうと思います。

P2P

「みんなが直接情報をやり取りしよう!」

という情報のやり取りの仕方をP2P(Peer to Peer)と呼びます。Peerとは「立場が対等なもの」という意味です。情報をかじったことがある型であれば,P2Pは「クライアント↔︎サーバ」とは対になる方式だというように理解すれば分かりやすいでしょう。ブロックチェーンで「分散」という言葉がよく用いられる背景には,こちらの「P2P」が根底にあったのです。

分散型台帳

「情報のやり取りに関するアレコレを記録しておこう!」

というモチベーションで作られたメモ帳です。実際には,メモ帳とは言えないほど厳密に保管される金庫のようなものです。アイディアとしては,P2Pとほとんど同じ概念と思ってもらってもOKです。

電子署名

「暗号を使って自分の正当性を示すぞ!」

というモチベーションで利用される技術です。電子署名によって,暗号化技術を使って自分の持ち物が「自分のもの」であることを示すことができます。電子署名を使うことで「安心・安全」をお互いにチェックしながら実現することができるようになります。

ハッシュ関数

「証拠を一瞬で隠滅する装置」

ハッシュ関数に何かしらの値を入れると,一瞬でぐちゃぐちゃな値が出力されます。しかし,出力された値からは元の入力を当てることはできません。まさに「証拠隠滅装置」です。ハッシュ関数から出力された値は「ハッシュ値」と呼ばれます。ハッシュを用いることで,改ざんや盗聴を防ぐことができます。

ナンス

「一期一会な乱数」

ナンスは私たちがブロックチェーンの枠組みの中で,競争を行うために利用する武器です。ナンスをひたすら使いまくることで,勝負の決着はつきます。

ブロック

「ハッシュ値+取引情報(トランザクション)+ナンス」

ブロックチェーンの「ブロック」を構成しているのは,証拠隠滅装置で作られた「ハッシュ値」と,やり取りしたい「取引情報(トランザクション)」と,競争で利用する「ナンス」の3要素です。これらの要素をひとまとめにしたものを「ブロック」と呼び,それらを「チェーン状に」繋いでいくとブロックチェーンが完成します。

マイニング

「お金稼ぎのための仁義なき争い」

マイニングは「採掘」という意味で,ブロックチェーンの原理でもある「競争」のことを指します。採掘は,お宝探しとでも置き換えてもらえれば分かりやすいと思います。マイニングが行われることで,ブロックチェーンの「安心・安全」が守られます。具体的には,ハッシュ値が非常に小さな値となるようなナンスを見つける操作がマイニングです。

Proof of Work(PoW)

「超大変な仕事は誰も積極的にしないし,できないよね」

と信じることで「安心・安全」を守るシステムや作業のことを指します。「仕事量による証明」という日本語訳がありますが,こんなに大変な仕事は誰もできないよねという信念に基づいて,情報の正しさを証明するという意味を表しています。ブロックチェーンでは「長いチェーン」ほど正しいとされますが,その根拠がPoWです。長いチェーンほど,その情報は長い時間をかけて築き上げられたものであるから,それだけ信頼性が高いよねというお話です。

コンセンサス

「PoWを信じるよね?ん?」

のように,P2Pの参加者みんなでPoWを信じて同意を取ること,もしくはその同意のことを指します。実際には,合意を取るシステムはPoWとは限らず,通貨の保有量を基準にする「PoS」や取引の活発さを基準にする「PoI」などがあります。

ジョイント

「競争が難しくなるようにハッシュを調整すること」

をジョイントと言います。競争が簡単であれば,PoWに基づく「安心・安全」も信じられなくなってしまいます。具体的には,ハッシュ値が非常に小さいという条件を与えることで,競争を難しくします。そして,条件に合うハッシュ値を出力するナンスを見つけられれば,新しいブロックを生成することができます。言い換えれば,ブロックを繋げる(ジョイント)ことができます。マイニングとはブロックをジョイントすることが目的なのです。

ビザンチン障害

「(みんなで協力してPoWを破壊しようぜ…)」

悪者が力を合わせてコソコソと協力することをビザンチン障害と言います。東ローマ帝国(ビザンチン)の逸話が由来となっています。ちなみに,ブロックチェーンではビサンチン問題は解決できず,「そんなにたくさんの悪者はいないっしょ」という性善説に立った信念を前提にしています。性善説が崩れた状況は「51%攻撃」なんて言ったりします。

Public型/Permissioned型

「情報のやり取りの目的とか範囲とか違くね?」

ブロックチェーンを時と状況に応じて使い分ける時の分類が「Public型」や「Permissioned型」という括りです。

しっかり理解する

さて,準備は整いました。ここからは,ブロックチェーンをしっかりと理解していくための時間としましょう。以下のような流れでブロックチェーンを理解しましょう。

1.情報のやり取りのしかた
2.安心・安全の守り方
3.よくある質問

情報のやり取りのしかた

①前のハッシュ値を受け取る
②署名を確認する
③マイニングでナンスを見つける
④ハッシュ値に電子署名する

安心・安全の守り方

先ほどから「競争をすることで安心・安全を守る」と言ってきましたが,なぜ競争が安心・安全に繋がるのでしょうか。それは,「小さなハッシュ値を出力するためのナンスを発見する(マイニング)のが非常に難しい」ことが理由です。データを書き換えればハッシュ値はまた大きな値となってしまい,「また大変なナンス探しの旅(マイニング)」に時間がかかってしまいます。

「書き換えたら後続するデータ全てのナンスを計算し直しだよ」

「そんなことできないよね」

という理論です。また,電子署名を確認することで送り主の正しさを確認し,マイニングの難しさでデータの改ざんがないことを保証することで,安心・安全を守ったやり取りが実現できます。

よくある質問

ビットコインと何が違うの?

ほぼほぼ同じです。ビットコインは,ブロックチェーンという技術を使ってお金をやり取りする技術です。

よくある質問集は随時充実させていきます。

ABOUT ME
zuka
京都大学で機械学習を学んでいます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

※ Please enter your comments in Japanese to prevent spam.