ブロックチェーンの基礎
はじめに
ブロックチェーン技術は、データを保存し追跡しながら、そのデータを誰にでも見られるようにする画期的な方法です。過去のすべてのトランザクションを 1 つの公開リストにまとめ、誰でも閲覧できるが編集はできない形で整理します。この公開リストをまとめて、ブロックチェーンの台帳と呼びます。
ブロックチェーンの層を見ていくと、ブロックエクスプローラーというツールが表示する構造がわかります。ブロックの一覧、その中のトランザクション、そして 1 件ごとの詳細です。実際に見てみるには、Ethereum でよく使われる Etherscan を試してください。
ブロックチェーンの構造
「ブロックチェーン」という言葉は、名詞としても(Bitcoin のブロックチェーン)、形容詞としても(ブロックチェーン技術)使われます。どちらの場合も、ブロックチェーンは暗号資産が築かれている構造全体を指します。
外側から順に見ていくと、ブロックチェーンの構造は 3 つの層に分かれます。
- 全体の
ブロックチェーンは、順番につながったブロックでできています ブロックは、まとめられたトランザクションの集まりですトランザクションは、ネットワーク上のアドレスのあいだでの価値の移動、またはプログラムへの指示です
この 3 つの層が組み合わさって、暗号技術による台帳ができあがります。ネットワーク上で行われたすべてのトランザクションの、変えられない履歴です。
理解度チェック 1
ブロックチェーンとは何ですか。
-
[ ] ブロックと呼ばれる、まとめられたトランザクションの集まり
-
[ ] 誰でも見られるが、誰も編集できない共有の記録
-
[ ] 順番につながったブロック
-
[ ] 上のすべて
台帳を見る
ふつうのお金のしくみでは、誰がいくら持っているかの記録を銀行などの第三者に任せています。本当に「バンクレス」であるためには、台帳の管理を 1 つの組織に任せなくてよいしくみが必要です。
台帳は、そのブロックチェーンで行われたすべてのトランザクションの一覧です。公開のブロックチェーンなら、誰でも見られます。台帳のトランザクションを区切ってまとめたものがブロックで、それが集まってブロックチェーンになります。
新しいトランザクションが台帳に加わると、各アドレスの残高が更新されます。過去のトランザクションは変えられません。全員の銀行口座の全期間の履歴を、誰でもいつでも見られるようなものです。
台帳のトランザクション
トランザクションの例を見てみましょう。
- Alice が Bob に 5 ETH を送る
- Bob が Charlie に 2 ETH を送る
1 件ごとのトランザクションは、各アドレスの暗号資産の増減を示します。ですから、すべてのトランザクションを合計した結果が、各アドレスの保有量そのものになります。
⇒ Alice は 5 ETH 減りました
⇒ Bob は合計 3 ETH 増えました(5 受け取り、2 送金)
⇒ Charlie は 2 ETH 増えました
理解度チェック 2
公開のブロックチェーン台帳について、正しいのはどれですか。
-
[ ] すべてのトランザクションが公開で、過去のものは変更できない
-
[ ] 台帳は、各アドレスの現在の保有量を記録している
-
[ ] 新しいトランザクションが加わるたびに、台帳は伸びていく
-
[ ] 上のすべて
分散化
ブロックチェーンの台帳に載ったトランザクションは、変更できないだけでなく、多数のコンピューターのネットワークで共有され、分散して保たれます。どの組織 1 つにもデータを変える力を持たせないため、台帳の写しはネットワーク中の多くのコンピューター、つまりノードに保存されます。
このデータの共有が、ブロックチェーンの台帳を分散型にしています。データを支配する権力者も組織もありません。Ethereum のようなブロックチェーンは台帳を誰でも見られるので、公開でもあります。
このレッスンでは、台帳のデータが Ethereum ネットワークを動かす多数のコンピューターで共有されている、と覚えておいてください。
理解度チェック 3
ブロックチェーンを分散型にしているのは何ですか。
-
[ ] 1 つの組織だけが書き込めること
-
[ ] 政府が定めた分散化の要件を満たすこと
-
[ ] 多数のコンピューターに台帳が置かれ、どの組織も支配しないこと
-
[ ] 台帳を 1 台の安全なサーバーに置くこと
ブロックの構造
ブロックチェーンの大切な特徴は、ブロックに入った過去のトランザクションのデータを、後から変えられないことです。各ブロックには指紋のような固有のブロックハッシュがあり、ブロックどうしを次々につなぐのに使われます。指紋は 1 つ前のものから計算されるため、過去のトランザクションを変えると、その指紋と、後に続くすべてのブロックの指紋まで変わってしまいます。
つまり各ブロックは、トランザクションの集まりと、その中身から計算した固有の指紋(ブロックハッシュ)でできています。どのブロックも 1 つ前の指紋を参照するので、全体が 1 本のブロックのチェーンとしてつながります。
理解度チェック 4
ブロックハッシュの役割は何ですか。
-
[ ] ブロックのデータを暗号化して読めなくすること
-
[ ] ブロックをつなぎ、過去のデータを変更できなくすること
-
[ ] トランザクションが正しいアドレスに届くようにすること
-
[ ] ブロックチェーンを分散型に保つこと
ブロックの中身
ブロックのデータは、まとめられたトランザクションの集まりでした。1 つのブロックの中を見ると、トランザクションの一覧と、そのブロックを作った相手についてのデータが入っています。
先ほどの台帳の例でいえば、2 件のトランザクションが 1 つのブロックにまとまることも、時間をおいて複数のブロックに分かれることもあります。どのブロックに入っても、最終的にはすべてブロックチェーン全体の台帳に加わります。
- Alice が Bob に 5 ETH を送る
- Bob が Charlie に 2 ETH を送る
各ブロックは、ブロックチェーンをつなぐために 1 つ前のブロックのブロックハッシュも参照することを思い出してください。
理解度チェック 5
ブロックにはどんな情報が入っていますか。
-
[ ] 前のブロックに入っていた情報すべて
-
[ ] ブロックの大きさは無制限なので、関係する情報すべて
-
[ ] トランザクションのデータと、1 つ前のブロックへの参照
-
[ ] 決まった時間内に発生したトランザクションのデータすべて
1 件ごとのトランザクション
ブロックチェーンのデータはトランザクションの一覧にすぎません。利用者のあいだで通貨が動いた記録です。有効になるには、送り手のデジタル署名が必要です。
ウォレットでトランザクションを承認するとき、行っているのがこの署名です。小切手やレシート、カードの控えにサインするのと同じことを、デジタルで行っていると考えてください。
トランザクションには、暗号資産を送るような単純なものもあれば、資産を交換したり、呼び出されると動く特別なコード、つまりスマートコントラクトを置いたりする複雑なものもあります。
さらに、どのトランザクションにも トランザクションハッシュという固有の識別子があり、ほかと重なることはありません。おかげで後から 1 件ずつ参照しやすく、その内容が後から変えられないことも保証されます。
理解度チェック 6
ブロックチェーンのデータは、ブロックにまとめられたトランザクションの一覧です。その例に当てはまるのはどれですか。
-
[ ] 暗号資産を送る、または受け取る
-
[ ] ブロックの大きさを変える
-
[ ] 過去のブロックチェーンのデータを編集する
-
[ ] 上のすべて
利用者のアドレス
アドレスは、ブロックチェーン上で誰でも調べられる公開の識別子です。メールアドレスと同じで誰でも資金を送れますが、そのアドレスの資金を解錠して使えるのは秘密鍵を持つ人だけです。
Ethereum のアドレスは必ず _0x__________ で始まり、そのアドレスの公開鍵から導かれた 42 文字の数字と英字でできています。
ブロックエクスプローラーで 1 件のトランザクションを見ると、From: と To: のアドレスがわかります。そのアドレスを操作している人物まではわかりませんが、台帳全体で暗号資産の動きを誰でも追えます。
理解度チェック 7
ブロックチェーンのアドレスについて、正しいのはどれですか。
-
[ ] ブロックチェーン上のさまざまな主体の、公開の識別子である
-
[ ] Ethereum では必ず 0x で始まる
-
[ ] 秘密鍵を持つ人が、そのアドレスの資金を使える
-
[ ] 上のすべて