メインコンテンツへスキップ

ブロックチェーン101:視覚的なデモ

ハッシュ化、ブロック、チェーン、分散型台帳、トークンなどを取り上げ、ブロックチェーンの概念を具体的かつ直感的に理解できるようにするための、ブロックチェーン技術の仕組みのデモ。

Date published: 2016年11月13日

アンダース・ブラウンワースによるブロックチェーン技術の仕組みの視覚的なデモ。SHA-256のハッシュ化、ブロック、マイニング、ブロックチェーン、分散型台帳、トークンなどの解説が含まれています。

このトランスクリプトは、アンダース・ブラウンワースが公開した元のビデオのトランスクリプト (opens in a new tab)のアクセシブルなコピーです。読みやすさのために軽く編集されています。

SHA-256ハッシュ (0:01)

これはブロックチェーンのデモです。非常に視覚的な方法で行います。ブロックチェーンを構成する重要な要素を一つずつ確認することで、非常に理解しやすくします。

始める前に、SHA-256ハッシュと呼ばれるものを見ておく必要があります。ハッシュはランダムな数字の羅列のように見えますが、本質的にはデジタルデータの指紋のようなものです。ここでは、私がこのボックスに入力したものの指紋になります。このボックスに私の名前「Anders」と入力すると、ハッシュが変化したことがわかります。実際、文字を入力するたびに変化しています。

つまり、これがすべて小文字の「Anders」という名前のハッシュであり、19eaで始まります。これを削除してもう一度「Anders」と入力すると、19eaで始まることがわかります。つまり、まったく同じハッシュです。その意味で、これはこのデータのデジタル指紋なのです。ここにあるデータが何であれ、まったく同じデータを入力するたびに、まったく同じハッシュが得られます。

好きなものを何でも入力できます。何も入力しなくても構いません。e3b0は、何もない状態のハッシュです。あるいは、大量のデータを入力することもできます。実際、米国議会図書館の全データをここに入力しても、1つのハッシュが得られます。興味深いのは、ごくわずかな情報であっても、情報がなくても、米国議会図書館の全データであっても、常にこの長さのハッシュが得られるということです。これが何になるかを事前に推測することはできません。ハッシュが何であるかを知るにはデータを入れるしかありませんが、まったく同じ情報を何度入力しても、常にまったく同じハッシュが得られます。

ブロック (2:10)

次に、このハッシュのアイデアを拡張して、ブロックと呼ばれるものにします。ブロックはハッシュとまったく同じですが、データ部分が3つのセクションに分かれています。「ブロック」と呼ばれる単なる数字(これはブロック番号1です)、「ナンス」と呼ばれる別の数字、そして先ほどと同じデータです。

これらすべての情報のハッシュはここにあり、4つのゼロで始まっています。これは比較的珍しいハッシュです。ほとんどのハッシュはそのように4つのゼロで始まることはありません。しかし、これはそうなっているので、完全に恣意的ですが、このブロックは「署名されている」と呼ぶことにします。

もしこの情報のいずれかの部分を変更したらどうなるでしょうか?ここに何か入力したとします。ハッシュは変化しますが、それが4つのゼロで始まる確率はどれくらいでしょうか?かなり低いです。試しに「hi」と入力してみます。見てください、このハッシュは4つのゼロで始まっておらず、背景が赤くなりました。これで、この情報が含まれたこのブロックは、有効なブロック、つまり署名されたブロックではないことがわかります。

そこでナンスの出番です。ナンスは、ハッシュが再び4つのゼロで始まるような値を見つけるために設定できる単なる数字です。一日中ここに座って数字を入力し続けることもできますが、ここには小さな「Mine(マイニング)」ボタンがあります。これを押すと、1から順にすべての数字を試して、ハッシュが4つのゼロで始まるものを見つけ出します。このプロセスはマイニングと呼ばれます。

59,396で止まりました。そして、この数字のハッシュはたまたま4つのゼロで始まるものになりました。これで、私が定義した署名されたブロックの条件を満たしました。

ブロックチェーン (5:16)

では、ブロックチェーンとは何か説明できますか?おそらく、これらのブロックのチェーン(連鎖)にすぎません。これが私のブロックチェーンです。ブロック番号1には先ほどと同じようにナンスとデータ領域がありますが、さらにゼロの羅列である「previous(前)」フィールドがあります。先に進むと、これがブロック2、ブロック3、ブロック4です。このブロックチェーンには5つのブロックがあります。

各ブロックの「previous」フィールドは、その前のブロックのハッシュです。各ブロックが前のブロックを後ろ向きに指していることがわかります。最初のブロックには前がないため、単なるゼロの羅列になっています。

ここの情報を少し変更するとどうなるでしょうか?このブロックのハッシュが変わり、無効になります。では、もっと前のブロックの何かを変更したらどうなるでしょうか?そのハッシュが変わりますが、そのハッシュは次のブロックの「previous」フィールドにコピーされるため、両方のブロックが壊れます。過去の任意の時点までさかのぼってそのブロックを壊すことができ、そうするとそれ以降のすべてのブロックが壊れます。それより前のものはすべて緑色のままですが、それ以降のものはすべて赤くなります。

最後のブロックを変更した場合、その1つのブロックを再度マイニングするだけで済みます。しかし、ずっと過去に戻って変更を加えた場合、これと、これと、これと、これをマイニングしなければなりません。ブロックが経過すればするほど、変更を加えるのはどんどん難しくなります。これが、ブロックチェーンが変異、つまり変更に耐性を持つ仕組みです。

分散型ブロックチェーン (9:18)

では、自分のブロックチェーンが再マイニングされたかどうかをどうやって知ることができるでしょうか?ここで分散型ブロックチェーンの登場です。先ほどのブロックチェーンとまったく同じに見えますが、これはピアAです。下に行くとピアBがあり、ブロックチェーンの完全なコピーを持っています。ピアCもあります。これは無限に続く可能性があります。インターネット上には多くのピアが存在し、それらはすべてブロックチェーンの完全なコピーを持っています。

このハッシュを見ると、e4bです。次のものを見ると、それもe4bです。これらは同一であるはずです。ここで何かを入力し、このブロックを再マイニングして、次のブロックもマイニングしたとします。すべてのチェーンは緑色です。しかし、このチェーンの最後のハッシュはe4bであり、一番下のものもe4bですが、この真ん中のものは4caeとなっています。

したがって、この小さなハッシュをちらっと見ただけで、このブロックチェーンの何かがおかしいことがわかります。すべてのハッシュが4つのゼロで始まっているにもかかわらず、これだけが違います。基本的には2対1です。ここでは小さな民主主義が働いています。そのため、e4bが勝ちます。このように、多くの異なるコンピュータ上に完全に分散されたコピーを持つことで、すべてのブロックが同一であるかどうかをすばやく確認できるようになります。

ブロックチェーンは簡単に40万や50万のブロックを持つことができます。それらすべてをチェックするのではなく、最新のブロックのハッシュを見るだけで、過去の何かが改ざんされたかどうかを確認できます。

トークン (12:17)

これが全体像です。これ以上のことはありません。しかし、データ領域に意味のあるものがないため、これではあまり役に立ちません。私たちが本当に求めているのはトークンです。

ここにトークンがあります。完全に恣意的ですが、これをドルと呼ぶことにします。DarcyからBingleyへ25ドル、ElizabethからJaneへ4ドル27セント、といった具合です。これらすべてのトランザクションが発生しており、データをこれらのトランザクションに置き換えただけです。先ほどと同じように、下に行くと、同じブロックチェーンの他のコピーがすべて存在することに気づきます。

ここでイミュータブル(不変性)が重要になります。ここで過去の何かを変更すると、ハッシュは他のコピーにあるものとは異なるものになります。過去に戻って何かの値を変更した場合、それに気づくことができるというのは非常に重要です。お金に関しては、記録を見失わないことが非常に重要であり、それこそがブロックチェーンを使用する最大の目的です。つまり、過去に起こったことに対するいかなる変更にも耐えるということです。

1つ言及しておきたいのは、「Darcyは100ドル持っていて、Bingleyに25ドル渡す」というリストを作っているわけではないということです。私たちは資金の移動だけを記録しており、銀行口座の残高を記録しているわけではありません。ここで疑問が生じます。Darcyは本当に25ドル持っているのでしょうか?

コインベース・トランザクション (14:34)

このバージョンのブロックチェーンには問題があります。Darcyが25ドル持っているかどうかが実際にはわからないのです。そこで、コインベース・トランザクションを見てみましょう。ブロックにコインベース・トランザクションを追加します。これは、何もないところから100ドルを作り出し、それをAndersに与えるというものです。これ以前には誰もお金を持っていなかったため、このブロックには他のトランザクションはありません。

次のブロックでは、さらに100ドルがどこからともなく現れ、Andersに渡されます。これでいくつかのトランザクションが発生します。現時点でお金を持っているのは私だけなので、すべてAndersからのものです。私は自分の10ドルをSophieに送ります。私は10ドル持っているでしょうか?はい。過去を振り返ると、コインベース・トランザクションで100ドル受け取っているので、少なくとも10ドルは持っています。

これらをすべて足し合わせても100ドルを超えることはありません。これは通貨の基本的なルールに従っています。つまり、何もないところからお金を作り出すことはできず、その分散は制御されているということです。

時間を少し進めると、JacksonがAlexaに2ドル渡しているのがわかります。Jacksonは本当に2ドル持っているのでしょうか?1つ前のブロックに戻ると、EmilyがAndersから10ドル受け取り、Jacksonに10ドル渡していたことがわかります。したがって、Jacksonはお金を持っています。過去にさかのぼってそれを確認できるのです。これが「previous」フィールドを持つことの利点の1つです。

終わりに (16:30)

これが、その上で通貨を稼働させている基本的なブロックチェーンです。ご存知のように、ブロックチェーンには多くのコピーがあり、誰もがコピーを持っています。何かを変異させて6ドルに変更すると、ブロックは無効になり、他のコピーと一致しなくなります。これにより改ざんに耐えることができますが、これは通貨に求められる性質です。小規模でトランザクションベースのものに非常にうまく機能します。

ブロックチェーンは、過去に何が起こったかについての合意を処理するための非常に効率的な方法です。これは時間とともに記録されていくイミュータブルな履歴です。いくつかの重要なポイントは省略していますが、デモを掘り下げてこれらの項目をクリックし、いろいろ試してみれば、これがどのように機能するかがどんどんわかってくるでしょう。

このページは役に立ちましたか?