ブロックチェーンの基本的な話

今、話題のブロックチェーンですが、一部ではAIが出た時のように、なんでもブロックチェーンが解決してくれるといった妄想を抱く人が多くいます。
もちろん、否定はしませんが、今回はそもそもブロックチェーンとは、なんだっけ?どうして出来たんだっけ?というところを頑張って調べてみました。
ブロックチェーンを語る時に、俗にいうblockchain1.0,blockchain2.0, blockchain3.0などを同じ土俵に並べて論じて、結局その正体をつかめないまま議論が終わることが多いので、今回は、いわゆるblockchain1.0の初歩、基本の  のみにスコープを当てて見ていきたいと思います。

画像12


なので、イーサリアムなどは一旦横に置いておきます。もちろんスマートコントラクトなどは出てきません、今回はビットコインのみです。

画像1

ブロックチェーンの誕生

まず、ブロックチェーンは、何故できたのかというところです。
これは、もともとサトシナカモトが、ビットコインを実現させるための基幹技術として開発したとされています。

ふむふむなるほど。ビットコインを実現させるためか。よしよし。と思ったけど、
ん?そもそも、ではなんでビットコインを作りたかったの??って疑問が湧いてきました。

諸説ありますが、基本的に現在の通貨、金融に対して、問題を感じていて価値というものを人々のものへと返すことだった言われています。

この辺は、少し難しい話なので、金融のプロにお任せしたいところですが、
通貨というのは、相対的な価値と信用に裏付けられて我々は使うことができます。

何も考えず使っていますが、円やドルの価値というのは、誰が決めているのでしょうか?
そもそも 誰か が決めることはできるのでしょうか?

それは、NoでもありYesでもあると思います。
例えば、日銀の秘密会議でもっと多くお金を刷ろうといったことが決定した場合、インフレになり相対的に円の価値は下がります。
これって、すごい困ります。でも今は、中央方式で価値を決めることができる(極論すぎますが)ので、可能といっちゃー可能なんです。

画像7

そういった、一部の権力者、国家がどうにかできちゃう通貨って信用できます?

画像9

そこで、サトシナカモトは、中央集権的支配の通貨ではなく、非中央集権運用の通貨を作り出すことで、お金を万人に取り戻そうとしたのではないでしょうか?

では非中央集権を実現するために、ビットコインはブロックチェーンに何を求めたのかを見ることでブロックチェーンがどのようなものなのかわかってくると思います。

ブロックチェーンとは

ブロックチェーンを検索すると、日本語で分散型台帳と出てきます。
分散型台帳とは、分散型と台帳に言葉としては、わかれます。

台帳とは

では、みなさん知っているように台帳とは、どのようなものでしょうか?今度は、台帳を調べて見ましょう。
台帳とは、売買の金額などを記しておく帳簿となっています。ということは、誰が誰にお金を渡したか、誰から誰がお金をもらったかを書いているものです。語弊がありますがexcelのようなものです。これを知らない方も結構いて、ビットコインというコインがあると思っている人がいますが、コインなど、どこにも存在しません。これまでの台帳の売買記録をもとにあなたの残高を割り出しているだけです。
1000円札や100円玉など存在しないのです。

これは、特段驚く話ではありません。現在でもクレジットカード決済やpaypayなどもお金を誰かが移動しているわけではなく、最終的に帳簿の差分をとって差分のみ資金を移動しているにすぎません。

画像2

分散型とは

次に分散型とは、上記の台帳が分散管理されていますよということです。逆に中央管理だとどうなります?
さっきから、名前を出して申し訳ないですが、日銀が管理していたら、みなさん信用できますか?改竄されてないかどうやって確認しますか?そもそも閲覧できますか?1000円札とか100円玉を持っているわけではないので、自分が持っていたと主張できません。

なので、ブロックチェーンでは、まずだれでも台帳を見ることをできるようにしました。googleのスプレッドシートをみんなで閲覧して、編集しているような感じです。
でも、勝手に過去の分まで修正されちゃうと帳簿がくるってしまうので、追記のみOKといった感じにしました。
もちろんみんなが見れるスプレッドシートなので、台帳の一行目から最終行までみて、残高が0円の僕が、どこかのお店に1000円分のビットコインを支払いしようとしても、帳簿の整合性が取れないことは、だれでも明白になります。
また、常に見えるので取引記録を見返すこと取引の追跡が可能になります(トレーサビリティ)

スクリーンショット 2020-02-22 23.19.38

さらにいうとgoogleスプレッドシートの場合は、googleのサーバにあります。これだと分散になりません。
もしgoogleが管理者権限でスプレッドシートを削除してしまうと大変なことになります。
通貨を謳うなら永続性が求められます。絶対に消されない場所はどこに保存しておくのがいいのでしょうか?

考えた結果、一つの場所ではなく、みんなで管理すればいいじゃないかという結論になり、みんなで台帳をもつこと、それを同期しながら、常に全員が最新の台帳を持つことで、僕が持っている台帳を削除してしまっても、同じ台帳が無数にあることで、永続性や耐障害性を高めることができると考えました。
技術的にいうとp2pによってデータ同期し分散管理するということです。今日は、基礎編なのでp2pまでは深堀しません。

画像11

まとめ

すごく簡単にまとめると、お金の流れを記載した帳簿台帳を、みんな閲覧できて、みんなで持つことでどこかに依存せず台帳を管理できるようになりました。

:

:

これからが本番

ここまでは、ブロックチェーンの概要について、話してきました。これからは、上記を実現するための裏側の仕組みについて説明していきます。

というのも、ブロックチェーンというブロックなチェーンである意味について話します。

ブロックなチェーン

今までの話のどこにもブロックなチェーンの話が出てきませんでした。ブロックチェーンと言うからにはブロックなチェーンであるはずです。しかし、分散管理台帳をみんなで管理しましょう。そうすることで、非中央集権的な通貨の誕生です。って終わってしまいました。
でもお話的にはここからが大事です。技術的な面も含めて説明していきます。

ブロック化するとは

ブロックチェーンというからには、ブロック化しないといけません。なぜブロック化するのでしょうか?ブロック化とはどうゆうことなのでしょうか?

上記の説明で、新しい取引があった場合には、台帳に追記していきますと話ましたが、単純にだれでも勝手に追記していくと、データとして正しいものかわからなくなってしまいます。なので誰かが、追記した取引(トランザクション)を「正しい!」と言って確定しなければなりません。ビットコインでは、その確定を10分間隔で行っております。エクセルや、スプレッドシートで言えば、どんどん追記されるものを、10分おきにグレーにしてロックします。そして、また新しく白いセルに追記して、10分後にそれがグレーになってロックされて。といった具合です。

スクリーンショット 2020-02-22 23.39.25

その10分おきにグレーにした部分をブロックといってそのブロックが数珠のようにずっと繋がっているのでブロックチェーンと言われます。

画像3

合意形成(コンセンサスアルゴリズム)

では、10分経ちました。だれがグレーにしてロックするのでしょうか?ビットコインの場合、非中央集権なので、誰か特定の管理者がいるわけではありません。10分1回誰かが代わる代わる確定(グレーに)していかなければなりません。

そのためにビットコインではPoW(proof of work)と言ったコンセンサスアルゴリズム(合意形成)を用いています。今日は話しませんが、ブロックチェーンの種類によってはこのコンセンサスアルゴリズムをPoWではなくPoSなど他のアルゴリズムで行っているものもあります。

目的は、確定する人が偏らないこと と 誰でもできる と 仕組み的に不利益になることはしない ということです。その目的が、PoWの仕掛けによって実現します。

PoW(proof of work)


では、実際にPoWとはなんぞやってところを見ていこうかと思います。ビットコインでは、基本的に10分ごとの確定する権利を出題された問題を一番早く解いた人が勝ち取るルールになっています。10分ごとになるように、問題の難易度は、調整されながら運用されています。問題とは、単純にコンピュータの計算を行いある値(ナンス)を見つけ出すことです。よくマイナーと言った言葉をニュースなどで耳にする事もあるかと思いますが、このマイナーというのは、この問題を解き確定権利を得ようとする人のことを言います。

画像5

マイナーは、コンピュータをたくさん用意して、誰よりも早く問題を解き確定します。確定権利を得ると最後の帳簿に自分への報酬分をのせてブロック化します。 

  (半減期とか騒いでいるのは、この報酬分のビットコインが減っていく設計になっている事)


整理してみますと、

* いろんな取引が追記されます
* マイナーは問題を解きます
* 勝ち取ったらまだ確定されていない取引の整合性検証します
* 最終行に自分への報酬分を追記
* ブロック化
* ブロック化したことを他のノード伝播して伝えます
* 他のノードは、正常であり、整合性がとれているかを検証します
* 問題なければ自分のノードに取り込みます
* 次の問題へGo!

と言った流れになります。

これが基本的な流れになります。

同時の場合は

もちろん、同時に複数のマイナーが問題を解き終わるケースはあります。問題ないのでしょうか? 

答えは問題ないです。
これは、ブロックチェーンがあるルールによって、チェーンは一つに収斂していきます。そのルールとは、長いチェーンが優先されるというルールです。
どうゆうことでしょうか?

仮にブロック10001番の次のブロックでAさんとZさん同時にナンスを見つけ権利を得ました。
伝播の状況もあり、Aさんが確定したブロック10002(Aさん)とブロック10002(Zさん)の二つが10001番の後に積み上がります。
これは10001の後二つに分岐するという意味です。よく耳にすると思いますが、forkという意味でもあります。

ただ、この時マイナー達は、Aさんの次のブロックの問題を解いても良いし、Zさんの次のブロックの問題を解いても問題ありません。

では次にBさんがAさんの後の問題を解き10003(Bさん)を積み上げます。
そうすると、先ほどのルールにより、長い方が優先され、短い方は捨て去られるので、次にマイナー等は、Bさんのあとのブロックの問題を解くか、Zさんの後の問題を解くか明白です。
なぜなら、マイナーは、Zさんの後のブロックを解いたとしても、そのチェーンが採用されなければ、報酬はもらえず、無駄な働きで終わってしまうからです。なので、マイナーは、なにも言わなくても、自身が報酬をもらえそうなチェーンを選択し、それがチェーンが別れても一つのチェーンに収斂していくという状態になります。

画像4


10分って長くない?

これはよく議論されている話題ですね。例えばビックカメラでお会計しても、確定するまで最低で10分かかります。 

先程の話のようにフォークする可能性があるので、普通の企業は確定とするのは、何個かブロックが続いて、これが本流間違いなしって状態になったことを持って確定とすることが多いです。となると10分かける5ブロックだとしても、50分かかるということになり、決済で使えないんじゃないかってのが話題になりました。この問題自体は、別の方法で解決しそうですが今回ははなしません。

で、みなさんは、単純に1分とかにしちゃえばいいんじゃない?って思ったかと思います。
そんなこと言ったら、「1分にするとセキュリティ的にだめだ。だから10分なんだ」とビットコインの開発コミュニティに怒られます。

これはどうゆう意味なんでしょうか?説明してみます。
仮にAさんから・・・・・Zさんまでマイナーがいたとします。
Aさんが今回権利を勝ち取り、ブロック化に成功しました。
Aさんは、ブロック化したことをBさんに伝え、その後次の問題に取り掛かります。Bさんは、自分のノードにブロックを取り込みCさんに伝えて、CさんはDさんに伝えて・・・・Zさんに伝わるまで10秒かかりました(わかりやすく10秒とかにしてます。)

画像6

そうすると、Zさんが取り込んで、次の問題に着手する時点でAさんは、すでに10秒は使って計算しています。
なのでおそらくあと50秒で問題を解き終わるでしょう。
すると、次に解き終わるのはAさんでしょうかZさんでしょうかといった時に、Aさんになる確率が高くなります。
つまり、連続してAさんあるいはBさんなどが権利を得続けてしまい。
合意の分散化が損なわれてしまいます

損なわれるとAさんが悪いことがしやすくなってしまいます。
なので伝播の速度と回答の分散化など計算し、10分がセキュリティ的に現在はちょうど良いということで決まっています。
もちろん技術の進歩で変わるかもしれませんが、基本的には、分散化してセキュリティ担保できる形で合意形成の設計がなされています。

以上

これ以上話すとさらにわかりにくくなるので簡単でありますが一旦説明はこの辺で終わります。
まとめると、ブロックチェーンによってもたらされた革命的なものは個人的に下記のものだと思っています。

* 知らない人同士の取引を知らない人が正しい取引であると確定してくれる
* だれでも取引履歴を見ることができトレーサビリティがある
* 耐障害性、改竄耐性がある
* 誰かがどうにかできるものではない
* 永続的である

この考えを持った時に、ブロックチェーンのプライベートやコンソーシアムは、本当にブロックチェーンの良さを発揮できているのか、また会社など独自の主体が、管理するブロックチェーンは、ブロックチェーンである必要があるのかなど、考える必要があり、そこをうまく組み合わせることが今後の発展につながると思っています。  

画像9

また、パブリックチェーンで問題になっている機密情報などの隠蔽の面で、暗号化匿名化技術がどこまで発展するか注目していきたいと思っております。

簡単にと言いつつ、詰め込みすぎた感があるので、またちゃんと調べてまとめていこうかと思います。
今度は、エンジニア向けに技術面フォーカスした記事を書いてみようかと思います。

この記事が気に入ったらサポートをしてみませんか?