みなさん、ブロックチェーンに興味はありますか?
ブロックチェーンというと
「ビットコインとブロックチェーン、なにがちがうの?」という疑問だったり、
「なんだかすごいとみんな言ってるけど、正直良くわからないしなんだか怪しそう……」という疑念が先行したり、
新しい技術なだけに今ひとつ掴みどころがなく、難しく感じてしまいますよね。
そこで今回は初心者の方にもわかりやすいよう、図解を多用してブロックチェーンの入門記事を作成しました。
これを読めばブロックチェーンについて基礎的な理解を得ることができるはずです。
さっそくいってみましょう!
ブロックチェーンとは?
歴史的な変遷
まずはブロックチェーンの歴史についてちょっとふりかえってみます。
歴史と言ってもここ10年のことなので、ブロックチェーンがどれだけ新しい技術なのかがうかがえますね。
ブロックチェーンと一緒に語られることの多い仮想通貨のビットコインですが、実は、世の中に登場した順番としてはビットコイン→ブロックチェーンの順番なのです。
さかのぼること2009年。
ネット上にサトシ ナカモトなる人物の論文が投稿されました。
名前的にはすごく日本人っぽいのですが、どうやらこれは偽名で、とある国の数学教授だとか、どこぞの研究所のチームだとか、いろいろな噂がとびかっており、2018年現在も正体は明らかになっていません。
そのサトシ ナカモト論文に記載されていたのが、P2Pを使った電子マネーシステム、すなわちビットコインを実現するための方法でした。
そして、そのビットコインの通貨としての信用を担保する手段がブロックチェーンだったのです。
言い方を変えると、ブロックチェーン技術を用いた仮想通貨の第1号がビットコインだった、ともいえます。
そのため、ブロックチェーンとビットコインは密接に関係し、ときに同時に語られるわけなんですね。
なお、サトシ ナカモト論文は英語の原文と日本語版を読むことができます。
英語版がこちら
Bitcoin: A Peer-to-Peer Electronic Cash System
日本語版がこちら
日本語で読むビットコイン原論文 [by Satoshi Nakamoto] – Coincheck blog
そこまで前提知識を必要とせず、内容も超絶難しいわけではないので、興味のある方はぜひご一読をおすすめします。
まず、なにをしたいのか?
では、ブロックチェーンの中身に入っていきましょう。
ブロックチェーン、及びビットコインはなにをしたいのか?
これがわかると、それぞれの技術の必要性がわかり、理解がしやすくなるので、まずはここからいってみましょう。
ビットコインがブロックチェーンをつかってやりたかったことを端的にいうと
「P2Pをつかってお金のやり取りをしたい!」
ということにつきます。
これだけではピンとこないと思うので、細かくみていきましょう。
まず、P2Pについて。
これはあとで詳しく説明しますが、下の図のように個人同士がそれぞれつながったネットワークのことを指します。
個人のことをピア、もしくはノードとよびます。
図中の○がピア、ノードを表し、それぞれが繋がってネットワークが形成されていますね。
ピア(Peer)同士が直接つながるのでPeer to Peer,ピア トゥ(2) ピア、略してP2Pなわけです。
これの対極にあるのが、下の図のような中央に総合処理センターのようなものをつくり、各ピアとの通信は中央を介さないとできない仕組み。
これはネットワーク用語でクライアント・サーバモデル、また、その形から中央集権型などと呼ばれています。
さて、現在、インターネット上でのお金のやり取りは中央集権型が基本になります。
インターネット通販を利用する場合で考えてみましょう。
例えばあなたが、ネット通販で何かを買ったとします。
支払いはクレジットカードをつかったとしましょう。
このとき、通販会社はクレジットカード会社にお金を請求し、クレジットカード会社はあなたの銀行口座からお金を引き落とすことで支払いとします。
つまり、クレジットカード会社という「中央」がなければお金のやり取りができない仕組みになっているのです。
代引き、銀行振込でもそれぞれ運送会社、銀行がお金のやり取りをする「中央」になっていますね。
この方式のメリットは
・信頼できる中央であればお金を確実にやりとりできること
一方デメリットは
・取り立ての手数料などはすべて「中央」で決定されてしまうこと
・取り立てに無駄なコストが発生していること
・中央が何らかの機能不全に陥った場合、活動が止まってしまうこと
といえます。
だったら、ピア・ノード同士で直接やり取りできれば手数料も安くなるし、中央をなくしてしまえば中央が原因の機能不全の心配もないよね、ということで考え出されたのがビットコインとそれを支える仕組みとしてのブロックチェーンだったのです。
では、この新しいお金の決済システムをどのように作るのか。
次節以降でその核心部分である仕組みについてみていきましょう。
分散型台帳とはなんだろう?
前節でもお話しましたが、ブロックチェーンはP2P型のネットワークを採用しています。
つまり、お金を統括的に管理する、「中央」が存在しないわけです。
では、どうやってその信頼性つまり、お金のやり取りが正しいことを証明するのでしょうか?
答えは意外に原始的で、「ネットワークに参加している全員が、今までに行われたすべての記録を持てばいい」のです。
例えば、A,B,Cの3人で構成されたビットコインネットワークで考えてみましょう。
1/1 AがBに1.0BTC(1ビットコイン)を送りました。
1/3 BがCに3.0BTCを送りました。
このとき、全員が持っている取引記録は次のようになります。
取引日時 | 送信者 | 受信者 | 金額 |
---|---|---|---|
1/1 | A | B | 1.0 |
1/3 | B | C | 3.0 |
この取引記録を全員が持っている、というのがポイントです。
この取引記録はビットコインが始まってから今に至るまでの、すべての記録が記録されています。
そして、過去にさかのぼって改ざんする、ということができない仕組みになっています。
すべての記録が正しいこと(改ざんされないこと)が保証され、それらが検証可能であること。
このことをもってブロックチェーンは信頼性を担保しています。
これによって、管理者不在でもお金のやり取りが可能になり、P2P上でお金のやり取りができるようになった、ということなのです。
ブロックチェーンは日本語で「分散型台帳技術」と紹介されることもあります。
台帳、つまり取引記録を全員が所有するため、分散しており、信頼が担保できるよね、ということなんですね。
次節では分散台帳の中身、ブロックチェーンを構成するブロックについてみていきます。
ブロックとはなにか?
この節ではそれぞれのノードが所持している台帳の中身についてみていきます。
ブロックチェーンの核心部分でもありますので、気合を入れていきましょう。
ブロックチェーンの台帳は次のようにブロック同士がつながる形で構成されています。
用語の解説は後回しにして、さきに結論を書いてしまうと、ブロックとはトランザクションとブロックヘッダ、それらから計算されたハッシュ値から構成されます。
それぞれ用語の意味を確認していきましょう。
トランザクション
トランザクションはビットコインにおいては取引記録を中心としたデータです。
先ほどの例で行くと、1/1 AがBに1.0BTC(1ビットコイン)を送りました、という情報に認証用の電子署名と公開鍵をくっつけたものになります。
電子署名については深入りするとなかなかややこしい部分です。
なので、ここでは電子署名と公開鍵を使うことで次の2点が証明できる、とおぼえてしまいましょう。
・この取引記録が本当にAさんから発行されたものであること。
・取引の内容が改ざんされていないこと。
ブロックヘッダ
ブロックヘッダはトランザクション以外のデータを格納する容器のようなものです。
ブロックヘッダにはひとつ前のブロックのハッシュ値、難易度、ブロックのタイムスタンプ、Nonceが格納されています。
ブロックのハッシュ値・難易度・Nonceはブロックが改ざんされていないことを示すために、ブロックに付与されるデータです。
どういったものなのか、次節で解説します。
ブロックの偽造防止技術
ブロックチェーンが信頼を担保するためには、ブロックが改ざんされないようにする対策が必要になってきます。
そのために必要になってくるのがハッシュ値と難易度、Nonceという部分です。
ハッシュ値とは
まず、ハッシュ値とは何かをみていきましょう。
ハッシュ値はファイルから計算される値のことです。
ハッシュ値を計算するための関数をハッシュ関数とよびます。
例えば、SHA256というハッシュ関数を使って、文字列「Hello World!!」のハッシュ値を求めると「096C0A72C31F9A2D65126D8E8A401A2AB2F2E21D0A282A6FFE6642BBEF65FFD9」
という値になります。
ハッシュ値は次のような特徴を持っており、暗号分野やファイルの信頼担保としてよく用いられます。
・入力したファイルサイズによらず、固定された長さの値になる
・まったく同じファイルからはまったく同じ値が生成される
・ファイルのデータが少しでも違うと、予測不可能なかたちでまったく違うハッシュ値が生成される
・ファイルからハッシュ値を作るのは容易だが、ハッシュ値から元のファイルを復元するのはほぼ不可能
・異なる2つのファイルからまったく同じハッシュ値が出現する確率はとても低い
これらの特徴からハッシュ値はデジタルファイルの指紋とも呼べるもので、ブロックの偽造を検証するのに使うことができるのです。
ブロックチェーンでの偽造防止方法
では、ブロックチェーンでの具体的な偽造防止方法をみていきましょう。
ブロックチェーンでは図のようにトランザクションとブロックヘッダをつかって、ハッシュ値を計算し、次のブロックに引き渡します。
このとき、Nonceの値を調整することで、ハッシュ値の値を操作することが可能です。
ではここで、ハッシュ値の先頭6桁が0になるようなNonceを常に選ばなければならない、というルールを設定したとしましょう。
このとき難易度が6に設定された、と表現します。
そうすると、次のブロックを作るためには毎回Nonceを調整しなければなりません。
ハッシュ値の特性、2番めの「ファイルのデータが少しでも違うと、予測不可能なかたちでまったく違うハッシュ値が生成される。」を思い出してください。
基本的にハッシュ値はハッシュ関数を適用するまで、どんな値になるか予想ができないのです。
このことから、先頭6桁が0という条件を満たしたハッシュ値をかんたんに得る方法はありません。
Nonceを1ビットずつ替えて総当たりでハッシュ関数を適用し続けるしか方法がないのです。
プログラミング経験のある方でしたら、Nonce変数をインクリメントしながら whileループを延々と回すといえば想像がつくでしょうか。
もしくは、答えのわからない数十桁もあるダイヤル錠を一個一個検証していく作業をイメージしても良いかもしれません。
つまり、次のブロックを作るためのNonceの計算はとても時間がかかるのです。
なぜこんなに面倒なことをするのか?
なんでこんな面倒くさいルールを設定したのかというと、これが偽造防止になるからなんです。
例えば画像の左のブロックを改ざんしようとした場合、それにつながる真ん中と右のブロックについても連動してNonceを再計算しなければなりません。
ブロックチェーンは隣同士が過去のハッシュ値でつながっているため、過去にさかのぼって改ざんしようとした場合、現在に至る全てのブロックのNonceを再計算しなければ辻褄が合わなくなります。
ただでさえ計算に時間がかかるNonceの計算を、さかのぼるブロック分行わなければならないのです。
仮に攻撃者が5ブロック前を書き換えようとすると、5ブロックすべてを書き換えなければいけません。
その間、他の善良なノードは総力を挙げて新しいブロックを作成しています。
P2Pの仕組み上、ネットワークに参加しているコンピュータの計算リソースの合計が新しいブロックを作るための計算能力となります。
よほどとんでもない計算速度のでるスパコンでも使っていない限り、ネットワーク全体を敵に回して計算能力で上回ることは難しいはずです。
結果、ブロックの改ざんが終わる前に新しくブロックが生成されてしまうので、改ざん者はいつまでたっても追いつけないことになります。
これがブロックチェーンが安全とされる仕組みのひとつです。
余談ですが、このハッシュ値でブロック同士がつながっているさまが鎖、すなわちチェーンのように見えるため、ブロックチェーンと呼ばれているわけです。
ブロックチェーンを支える技術・P2P
前章で、ノードレベルで行われているブロックチェーンの仕組みを学びました。
この章ではノード同士の関係である、ネットワークレベルでブロックチェーンはどんな仕組みをしているのかを見ていきましょう。
P2Pとはなんだろう?
前の章で紹介した通り、ブロックチェーンはP2Pネットワーク上でお金をやり取りしたい、という動機に基づいて考案されたものでした。
では、P2Pとはどんなネットワークなのでしょうか。
P2Pの特徴は
・誰でも参加可能であること → 好ましくない参加者を排除できない
・全員が平等なノードであること → 中心がない
・ノードはシステムを利用できるが、その見返りに計算リソースの提供=仕事をしなければならない
各ノードの仕事は2つです。
・トランザクションを集めて、検証し、新しいブロックのNonceを計算すること、つまり新しいブロックの作成
・新しくできたブロックの検証
ブロックチェーンの信頼性は、参加者全員がブロックチェーンを保持し、全員に内容が検証されることによって担保されているのでした。
ビットコインなどの仮想通貨はデジタルデータなので、コピーすればいくらでも増やせそうな気がしますが、各ノードの検証によってこういった不正ができないようになっているんですね。
ちなみに、仮想通貨をコピーしようとする試みは「二重消費問題」といってブロックチェーンにおける定番の問題だったりします。
あとで少し出てきますので、用語の名前くらいは覚えておいてください。
また、ノードはシステムを利用する見返りに仕事をしなければならないと言いましたが、これにもちょっとした工夫がしてあります。
新しいブロックのNonceを計算するのは前章でも解説した通り、計算コストや時間、電力など様々なものが消費されます。
その見返りとして、新しいブロックのNonceを1番最初に発見した人には報酬が支払われるようになっているのです。
ビットコインではNonceの計算をマイニング、計算するノードのことをマイナーとよびます。
そして、新しいブロックを発見した人は報酬として12.5BTCもらえます。
1BTC60万円で換算すると、750万円。
2017年は空前のマイニングブームでしたが、確かにこれは魅力的ですよね。
また、どれだけ早く新しいブロックを発見したとしても、内容が間違っていたならば報酬は当然もらえません。
そのための検証を行うのが、1番になれなかったマイナーたちなのです。
マイニングレースで1番になれなかったノードは1番に発見されたノードが正しいのかを検証し、間違っていたならば再度正しいNonceを見つけるレースが始まります。
結果が正しければこちらも再びトランザクションをかき集めて新しいブロックの計算がはじまるわけです。
こうしてブロックの正当性の担保とNonceの計算のモチベーションを高めているのです。
ただ、P2Pは開かれたネットワークなので、すべてのノードが善良な人たちで構成されているとは限りません。
悪意を持ったノードが参入してきた場合、次のような問題が発生することになります。
不誠実なノードの引き起こす問題
まず第1に考えられるのが、不誠実なノードが勝手に過去のトランザクションを書き換えようとする問題。
これは、前の章で説明したように、書き換えにとてつもないエネルギーが必要になるような設計になっているため、そうそうできるものではありません。
では自分に都合が良くなるような嘘のトランザクションを流すのはどうでしょうか。
これはまさに先ほど説明した二重消費問題に相当します。
こちらも多くの善良なノードに検証・排除されるため、不誠実なノードに都合のいいような改ざんはできません。
ただ、これらが成り立つには1つ条件があります。
それは、ノードの過半数が善良なノードで構成されている、ということです。
ブロックチェーンの意思決定は基本的に多数決で行われます。
新しく発見されたブロックが正しいのか、トランザクションは問題がないのか、そういった決定に多数決が用いられます。
過半数以上のノードが善良であればまったく問題ありませんが、問題は悪意を持ったノードが全体の計算能力の過半数を締めてしまった時。
こうなってしまうと、悪意を持ったノードの都合のいいように、ブロックの生成、トランザクションの改ざん、破棄が行えてしまうのです。
これを「51パーセント攻撃」とよびます。
全計算能力の51パーセントというと、なかなか非現実的な感じもしますが、例えばできたばかりの仮想通貨であったり、参加者が極端に少なくなった場合には十分起こり得る問題です。
また、ビットコインのように専門のマイニングプール数社が市場の上位60%以上を占めていたりする状況もあり、これらのプールが結託すれば決して不可能とは言えません。
実際2018年にはVerge、Bitcoin Gold、Zencash、Lightcoin cashなどの仮想通貨が51パーセント攻撃の被害にあいました。
また、51パーセントの計算能力を保持していなくても、高い計算能力をいかして「Block withholding attack」という攻撃ができることも証明されています。
2018年5月15日、国産の仮想通貨であるモナコインにBlock withholding attackが行われ、1000万円の損害を出しました。
これが史上初であり、いまのところ唯一の「ブロックチェーンへの悪意ある大規模書き換え」と言われています。
現時点でのブロックチェーンの安全性は決して万能ということでは無いことが改めて証明された形となりました。
多くの人に開かれたP2Pというネットワークである以上、こういった悪意ある参加者を排除できないのもまた事実なのです。
ブロックチェーンとビットコイン・イーサリアムの関係
最後に、ブロックチェーンの活用事例の代表格、ビットコインとイーサリアムについてみていきましょう。
ブロックチェーンを中核に据えた最初の仮想通貨:ビットコイン
ビットコインは先に説明した通り、ブロックチェーンを適用した仮想通貨の第1号です。
ビットコインが基礎となり、現在様々な仮想通貨が市場に出回っていますね。
その数は1,000種類以上、2,000種類に届きそうな勢いです。
中にはトレンドに乗っかる形でつくられた詐欺まがいの通貨もあるようで、注意が必要ですね。
また、ビットコインは非常にダイナミックな値動きから、日本では投機商品として認識されているようにも思えます。
ただ、これまでみてきた通り、ブロックチェーンとビットコインは世界を変える力をもった検証中の新技術です。
ぜひ、投機的な危ないもの、という見方以外にも技術的な側面にも興味を持っていただけたらと思います。
ブロックチェーンを仮想通貨以外に適用する試み:イーサリアム
これまでの説明で、トランザクションはビットコインにあわせて取引記録を格納したもの、としてきました。
ですが、実はブロックチェーンにおいて、トランザクションに何を入れるのかは自由です。
ブロックチェーンでビットコインのような決済システムを作りたければ取引記録が入りますし、トランザクションがさかのぼって改ざんされないことを利用して、何らかの記録を残すのにも使えます。
そこで、トランザクションでデータをやり取りし、P2Pネットワークで計算リソースを提供することを利用して、大規模な分散コンピューティングができないものか、と考えた人がいました。
それを実現したのがイーサリアムなのです。
イーサリアムは「ブロックチェーンを利用したアプリケーション作成プラットホーム」です。
アプリケーションを実行するためにはネットワークに使用料を払う必要があり、そのために使われるのが「ETH(イーサ)」という仮想通貨です。
イーサは取引量に関してビットコインに次いで、第2位と市場でもとても存在感を放っています。
ブロックチェーンの将来性
イーサリアムのように、ブロックチェーンはトランザクションに何を入れるのか、P2Pネットワークをどう使うのかで非常に多くの分野に応用可能な技術です。
たとえば、トランザクションの改ざん耐性から不動産登記や個人の証明、そこから発展して役所のサービスをパソコン1つで受けられる電子政府。
食品にQRコードを取り付けて、産地偽装を防ぐ試みやゲームのアイテムに現実的な価値をもたせる試みなどなど。
まだまだ夢物語なものから、早ければ1-2年で当たり前のように使われるであろうものまで。
今世界はブロックチェーンによる変革の真っ只中にいます。
ブロックチェーンが世界に与えるインパクトはインターネットの出現に匹敵するとすら言われています。
ブロックチェーンの未来、それはこれから来るであろう新しい世界の形と言えるのかもしれません。
まとめ
いかがでしたか?
今回はブロックチェーンの基礎的な部分について、図解を交えて説明してきました。
紙幅の関係で簡略化したり端折ったりした部分もありましたが、皆さんの中でブロックチェーンが良くわからない危なそうなものからなんとなく世界を変えそうな技術に格上げされたのであればこれ以上嬉しいことはありません。
インターネットの出現がそれ以前とそれ以降の世界をまったく違ったものにしてしまったように、ブロックチェーンも世界のあり方を根底から変えてしまう力を持ったインパクトのある技術です。
本記事がブロックチェーンと上手く付き合えるよう、そのきっかけとなることができたのであれば幸いです。