2018年5月6日ビットコインや仮想通貨を支える技術のブロックチェーン(Blockchain)、聞いたことはあるけど正しく理解できていない人も多いのではないでしょうか。この記事では、ブロックチェーンの仕組みについて図解を交えて徹底的に解説します。ブロックチェーン=ビットコインという誤解ブロックチェーンはビットコインであるという誤解がよくありますが、これは間違いで、ビットコインはブロックチェーン技術を使っているというのが正しいです。ビットコインを発明したサトシナカモト氏は、ビットコインを実現するために革新的なブロックチェーン技術を考案しました。そのためか、ビットコインとブロックチェーンは同じものと考えられることがまだ多いです。ブロックチェーンには色々なタイプがあり、仮想通貨以外の色々な分野に使われる可能性を秘めています。本記事では、ブロックチェーン技術の中でも、ビットコインで使われているブロックチェーンにフォーカスして、ブロックチェーンの仕組みを徹底的に説明したいと思います。ブロックチェーンとはみんなで共有する巨大な台帳(Excel)ブロックチェーンはすごく乱暴に説明すると、世界中の人たちで共有する巨大なExcel(エクセル)ファイルです。世界中の人たちが、自分たちのPCの中に持っているExcelに、ビットコインの取引情報を書き込んで、書き込んだ内容をみんなで共有していることをイメージしてください。全ての情報をみんなで共有しているため、みんなが持っているExcelの中身は全て同じ内容になります。※変更内容が反映されるまでの時間差はあります。世界中の人たちが「分散」して保有している「台帳(≒Excel)」ということです。台帳には取引が記録されている世界中の人たちが共有している、台帳には、世界中の人たちの取引が記録されています。これも、Excelの表のイメージで、概念を説明してみましょう。以下を例として考えてみましょう。Aさんが10BTC(ビットコイン)保有していて、Bさんに7.0BTC送ったとします。Bさんは受け取った7.0BTCをCさんに全額送ることを考えましょう。この場合、分散台帳は以下のように取引の情報が書き込まれます。(あくまでイメージです)ここで、注意して欲しいのは以下の2点です。送金が全額で無い場合は、残額(おつり)を自分に送る必要があるAさんは保有10BTCのうち、7.0BTCのみをBさんに送りたいので、のように記録すればいいと思うかもしれませんが、ブロックチェーンでは、おつり分は自分宛に送る(AさんがAさんに2.9BTCを送金)という取引情報を書き込む必要があります。ビットコインアドレスの残高を使って取引しようと思ったら、そのインプットとなる残高は使い切らなければいけないという制約があるということです。このような変わった仕組みにしているのでしょうか?それは、ずばり取引情報と残高を1つの台帳で一元管理するためです。比較として、一般の銀行口座を考えてみましょう。銀行は、「残高情報」と「取引情報」を別々に管理しています。100万円の残高があるところに、10万円を出金(取引)すると、残高情報が90万円に更新されます。一方で、ブロックチェーンでは、残高情報のデータがなく、取引の情報しかありません。ところが、上図の表のような取引構造にしておくと、取引情報の中から、未使用分の取引を合計すると、それがビットコインで利用可能な残高であることが分かるのです。(上図だと、Aさんの2.9BTC、Cさんの6.9BTCが未使用=使える残高になります。Output)と呼びます。手数料が必要ビットコインは手数料無料という誤解している人もいるかもしれませんが、実は手数料がかかります。上記の例では、AさんやBさんが送金する際に、0.1BTCが手数料として引かれています。この0.1BTCは、後述するマイニングに成功した人の報酬として、マイナーに支払われます。取引は上記のような構造で記録されますが、それではブロックチェーンとしての構造はどのようになっているのでしょうか。ブロックチェーンは、その名前から分かるように、ブロックがチェーンで繋がっている構造をしています。Excelの例で言うと、ブロックはExcelのシート、さらにExcelシートが複数チェーン上に繋がって、1つのExcelファイルが出来上がっていると考えるとイメージしやすいかもしれません。最初のブロック(Genesisブロックと言います)が作られてから、10分ごとに今日現在までの取引情報が全て繋がって1つの巨大な台帳が出来上がっています。そのため、2018年3月現在では、この台帳は約145GBの容量まで膨れ上がっています。次に、ブロックの中身をもう少し詳細に見てみましょう。ブロックには取引データの他に、それがハッシュ値とナンス値と呼ぶ、とても重要な要素があります。取引データは、上で説明した通りですが、次にハッシュ値とナンス値について説明しましょう。Value)とナンス値(Nonce)を説明するにあたっては、まずハッシュ値を説明します。ハッシュ値とは、あるインプットデータを、ハッシュ関数で異なる値に変換したときに得られる値のことですが、以下の特徴があります。Once(一度だけ使われる数字)の略称で、ただの使い捨てのランダムな数字であって、これだけでは特別な意味はありません。ハッシュ値とナンス値を組み合わせることで、ブロックとブロックを繋ぐ高度な接着剤を作り上げています。ブロックとブロックを繋ぐために、前のブロックのハッシュ値を接着剤として次のブロックの情報として持たせます。一定の条件「ハッシュ値の最初に一定以上のゼロが続く」を満たすハッシュ値のみが接着剤として認められるようになっています。「前のブロックのハッシュ値+取引情報+ナンス」のハッシュ値が、最初に一定以上のゼロが続く(例えば、0000000000afda2c79aa)ことが求められます。条件を満たすハッシュ値を得るためにはどのようにすればよいでしょうか?取引データと前のブロックのハッシュ値は変更ができないので、変えることができるのはナンスのみです。ナンスが変わるとブロックの値が変わる、ブロックの値が変わるとハッシュ値が変わることを利用して、一定以上のゼロが続くハッシュ値を探します。なったときのハッシュ値が000000000afd3とハッシュ値の最初に一定以上のゼロが続くナンスを発見しました!このような、一定以上のゼロが続くハッシュ値を探す作業はとても大変です。ハッシュ関数は一方通行の関数(ハッシュ値の特徴2)のため、ナンス値を色々な値に変更しながら総当りでハッシュ値を確認する以外に、一定以上のゼロが続くハッシュ値を探す方法がないからです。そこまで面倒なハッシュ値を接着剤としてルール化しているのでしょうか?結論から言うと、悪意のある人の改ざんを防ぐためです。そこで、重要になってくるのが、ハッシュ値から元の数字を探すのがとても大変(ハッシュ値の特徴2)ということに加えて、インプットを少しでも変えるとハッシュ値は全く異なるものになるという特徴(ハッシュ値の特徴3)です。仮に、悪意のある人が、不正な取引(自分への送金額に、100万ビットコインをセットするなど)で台帳の取引情報を書き換えようとしたとします。すると、何が起きるかを例にあげると、100番目のブロックの取引情報を改ざんする(書き換える)と、ブロックとブロックを接着するために101番目のブロックのハッシュ値を変える必要があります。101番目のブロックのハッシュ値が変わると、その次の102番目のブロックのハッシュ値も変える必要が出てきます。102番目のブロックのハッシュ値が変わると、その次の103番目のブロックのハッシュ値も変える必要が出てきます。このように、1箇所の取引を変えたことが後続に波及してしまい、全体を書き換える必要がでてきますが、一定の条件「ハッシュ値の最初に一定以上のゼロが続く」を満たすハッシュ値を見つけるのは非常に難しく、膨大な計算時間が必要な作業なので、台帳の改ざんが実質的にできない仕組みになっているのです。Work:POW)とマイニング前で説明した、ブロックとブロックを繋ぐためのハッシュ値を計算する作業は、ブロックチェーンを作り上げるのにとても重要な要素です。このハッシュ値を求めるには膨大な計算量が必要です。(計算量が少ないと、簡単に改ざんできてしまうため、あえてそのようなルールにしています。)つまり、ブロックチェーンはそのような膨大な計算をすることで、取引の承認をしているということになります。Work:PoW)と呼びます。最後の疑問は、このような膨大で手間のかかるハッシュ値を、いったい誰が見つけてくれるのか?という点です。ビットコインでは、ハッシュ値を見つける作業を承認レースとすることで、この疑問を解決しています。ビットコインでは、一定の条件「ハッシュ値の最初に一定以上のゼロが続く」を満たすハッシュ値を見つけた人に報酬として、新たなビットコインが新規発行される仕組みになっています。このように、作業を通じて、新規通貨が発行されることから、この承認レースの作業をマイニング(Mining)、承認レースに参加してお金を稼いでいる人たちをマイナー(Miner)と呼ぶのです。まとめ本記事では、ビットコインを支えるコア技術のブロックチェーンについて解説しました。他の仮想通貨(アルトコイン)で使われているブロックチェーン技術も、基本的な概念は今回紹介したビットコインと同様ですが、コンセンサスアルゴリズム、参加者の権限など、違いもあります。ビットコインのブロックチェーンの仕組みをしっかりと理解した上で、他のアルトコインはどのようにビットコインと異なるのかを理解していくようにするといいでしょう。この記事がためになったら、ぜひTwitterのフォローをお願いします。記事作成の励みになります。@coincityjp【完全版】図解!わかりやすいブロックチェーン技術の仕組み〜仮想通貨を支える技術ビットコインや仮想通貨を支える技術のブロックチェーン(Blockchain)、聞いたことはあるけど正しく理解できていない人も多いのではないでしょうか。