banner
leaf

leaf

It is better to manage the army than to manage the people. And the enemy.
follow
substack
tg_channel

暗号学は原因であり、ブロックチェーンは結果です。

ビットコインは、暗号学に基づいて構築された信頼のないデジタル通貨です。彼は暗号学とブロックチェーンの関係を非常に明確に説明しています。

彼らの間の因果関係をどう理解すればよいのでしょうか?おそらく、ある学生はブロックチェーンが追跡可能で改ざん不可能な特性を持つ必要があるため、中本聡が彼の構想を支えるためにいくつかの暗号学アルゴリズムを設計したと考えるかもしれません。しかし、これは完全に間違っており、真実を逆転させた考え方です。

あなたが理解する必要があるのは、2 つの基本的なアルゴリズム、すなわちハッシュアルゴリズムと非対称暗号アルゴリズムだけです。暗号学を学ぶことは他の技術を学ぶこととは少し異なり、暗号学の原理を理解するには深い数学的基礎が必要です。実際、エンジニアは暗号学をブラックボックスとして扱うことができ、技術的な原理にあまり関心を持つ必要はなく、その特性や適用シーンを理解するだけで十分です。

ハッシュアルゴリズムについて、まずは以前に多く言及されたハッシュアルゴリズムを見てみましょう。ハッシュアルゴリズムは散列関数とも呼ばれ、任意の長さのデータを短く、固定長のデータフィンガープリンとに変換することができます。

実際、ハッシュアルゴリズムは固定された実装が 1 つだけではなく、いくつかのアルゴリズムの総称です。例えば、一般的に使用されるものには MD5 と SHA-256 があります。ハッシュアルゴリズムが十分に優れているかどうかを評価するための 4 つの基準があります:正方向の速さ、逆方向の難しさ、入力の感度、衝突の回避です。

正方向の速さとは何でしょうか?これは理解しやすいです。与えられた情報とアルゴリズムのルールがあれば、限られた時間内に情報のハッシュ結果を計算できます。あなたが優れたハッシュアルゴリズムを設計したと言っても、計算プロセスに数秒かかるのであれば、それはあなたの設計が十分に優れていないと言わざるを得ません。時間が限られていても、実際のシーンで使用することはできません。より直感的な感覚を得るために、私が特別にプログラムを書いて、私たちがよく使う MD5 と SHA-256 の計算がどれほど速いかをテストしました。

// 計算結果 //md5 count: 10064932 //sha256 count: 5727246

見ての通り、最終的な結果は非常に優れたもので、約 1 秒の間に MD5 は 1000 万回計算され、SHA-256 アルゴリズムも 500 万回計算されました。ここでは普通のコンピュータを使用しただけですが、サーバー上で実行すれば、結果はさらに驚くべきものになるでしょう。このテストを通じて、正方向の速さという基準の解釈は十分に明確になったと思います。もちろん、ハッシュアルゴリズムの計算速度を単純に分析することには意味がなく、具体的なビジネスシーンに持ち込む必要があります。ここでは、ただ直感的な印象を与えるためのものです。

逆方向の難しさについて見ていきましょう。次の基準は、与えられたハッシュ結果から、限られた時間内に元の情報を逆算することがほぼ不可能であることです。つまり、優れたハッシュアルゴリズムは、暗号文から平文を逆算することができないということです。これが不可逆性の根源です。

これは私がコンピュータのコマンドラインで実行したコマンドで、「極客時間」の MD5 ハッシュ値を得ました。想像してみてください。もし私があなたに e0aac893629b048e8797800294f55004 が「極客時間」の MD5 ハッシュ結果であることを教えなければ、あなたはこの文字列からそれが表す平文が「極客時間」であると逆算できますか?あなたが困惑するだけでなく、コンピュータもこの問題を見て困惑するでしょう。なぜなら、コンピュータは結果を推測するために全探索するしかないからです。もちろん、ハッシュアルゴリズムが破られないわけではありません。逆に、MD5 ハッシュはすでに間接的に破られていると言えます。逆方向が難しいので、私はあらかじめ一般的なデータの組み合わせを全探索して保存しておき、破壊の必要があるときに戻って確認すればいいのです。シンプルで粗暴です。

入力の感度について見ていきましょう。

原始情報が少しでも変わると、再計算されたハッシュ値は以前のものと大きく異なるべきです。この基準は、原始情報が部分的に推測されるリスクを低減することを主な目的としています。新たに生成されたハッシュ値が以前のものと大差ない場合、コンピュータはその差異を利用して変化を推測できます。全探索に比べて、難易度は当然低下しますが、これは許可されていません。もう一つの例を見てみましょう。

衝突の回避#

あなたは疑問を持つかもしれません。MD5 アルゴリズムの例を挙げると、任意のデータ情報がハッシュアルゴリズムを通過すると 32 ビットのハッシュ値が得られますが、それは重複しないのでしょうか?結局のところ、32 ビットのハッシュ値が表現できるデータ量は比較的少ないのです。実際、あなたは半分だけ正しいと言えます。32 ビットはコンピュータ内で 128 ビットの 2 進数で表現されるため、実質的に MD5 ハッシュが表現できるデータ量は非常に多いのです。もしあなたがそれを計算してみれば、実際には非常に大きな数字であることがわかります。もしそれでも不十分だと考えるなら、SHA-256 や SHA-512 など、より高いビット数のアルゴリズムを選択することができます。もちろん、データ量が大きいからといって、異なるデータが同じハッシュ値を得ることがないわけではありません。これは実際に発生しています。したがって、ハッシュアルゴリズムを設計する際には、異なる平文情報が同じハッシュ値を生成しないようにする必要があります。

ブロックチェーンにおけるハッシュについて、優れたハッシュアルゴリズムの評価基準 4 つを理解した今、ハッシュアルゴリズムの特性についての認識が深まったと思います。では、ブロックチェーンではハッシュアルゴリズムがどのように適用されているのでしょうか?次に進みましょう。ハッシュアルゴリズムは情報の要約を抽出するものであり、データの指紋であるため、データの完全性の検証によく使用されます。ブロックチェーンはこの基盤の上に適切な拡張を行っています。ブロックチェーンでハッシュアルゴリズムが使用される主な場所は、取引ハッシュとブロックハッシュであり、主な機能は取引とブロックの完全性を検証し、ブロックチェーンネットワーク内の取引とブロックの唯一の識別子として機能することです。ここまで来ると、前回の講義で残した 2 つ目のディスカッションテーマを思い出しましたか?そうです、ブロックチェーンデータが落ちるとき、取引ハッシュとブロックハッシュをそれぞれ取引とブロックのデータ主キーとして使用できます。データと識別子の対応インデックス関係を保持すれば、取引とブロックを任意のデータベースに保存できます。

ブロックハッシュにはもう一つの役割があります。ブロック属性には前のブロックのハッシュが含まれており、それによってブロックハッシュに関連付けられたデータチェーンが構築されます。したがって、ブロックチェーンをハッシュチェーンと呼ぶことも過言ではありません。ハッシュアルゴリズムの入力の感度を利用して、悪意のある者がブロックチェーンデータを改ざんしようとする場合、変更された部分から始めて、すべての後続のブロックを順次変更する必要があります。ハッシュアルゴリズムの追加により、悪意のある者の改ざんコストが増加し、ハッシュアルゴリズムがブロックチェーンの単一ノードの改ざん不可能性を実現したと言えます。非対称暗号アルゴリズムについて、ハッシュアルゴリズムの内容を説明した後、非対称暗号アルゴリズムに目を向けましょう。非対称というと、対称暗号アルゴリズムがあることは明らかです。対称と非対称は、鍵の取り扱いにおいて異なります。対称は、暗号化と復号化に同じ鍵を使用することを意味します。しかし、非対称暗号は異なり、公開鍵と秘密鍵に分かれます。公開鍵で暗号化すると、対応する秘密鍵でしか復号化できず、その逆も同様です。対称暗号アルゴリズムがあるのに、なぜ非対称暗号アルゴリズムを発明する必要があるのでしょうか?ここで、宅配便の例を使って説明します。あなたは遠くで働いていて、故郷の両親に貴重な贈り物を送るために、美しい箱で包装しました。贈り物が壊れないようにするための最良の方法は、あなた自身が家に持って帰ることですが、現実的ではないため、宅配便を利用することにしました。

両親はあなたの贈り物を受け取って非常に喜び、すぐにあなたに故郷の特産品を宅配便で送ります。それもあなたが贈った箱を使っています。こうして何度も往復するうちに、元の美しい箱はボロボロになり、内部の物品が見えるほどになり、簡単に失われることもあります。この例は、対称暗号の欠点を理解するのに役立ちます。贈り物と特産品は交換する必要がある情報であり、最初の美しい箱が鍵です。対称暗号アルゴリズムが鍵の漏洩を防ぐためには、対面で協議するのが最良の方法です。そして、たとえ対面で鍵を協議したとしても、その後は何度も使用できず、使用回数が多くなるほど漏洩リスクが高まり、中途で他の人が改ざんすることがないことを保証できません。

再び宅配便の例を使うと、宅配品が失われないように、今年の正月に両親に宅配便の保険箱を買ってあげました。鍵が 2 つあり、両親が 1 つ、あなたが 1 つ持っています。これにより、今後宅配便を送る際には、物品を保険箱に入れることができ、宅配便で運ぶ場合でも、物品が取り替えられる心配はありません。なぜなら、あなたと両親以外の誰も保険箱を開けることができないからです。ここでの保険箱は公開鍵に相当し、鍵は秘密鍵に相当します。この「保険箱」プランは、実際には暗号学における非対称暗号アルゴリズムの考え方に対応しています。非対称暗号アルゴリズムの鍵は一対であり、公開鍵と秘密鍵に分かれます。公開鍵は自由に公開でき、秘密鍵は秘密に保存する必要があります。秘密鍵が漏洩しなければ、情報交換プロセスは安全です。もちろん、この例は非対称暗号とは異なります。実際の秘密鍵は 1 つだけです。

非対称暗号アルゴリズムは、対称暗号アルゴリズムの使用中に直面する問題を解決しましたが、その暗号化と復号化の効率は対称暗号アルゴリズムには及びません。したがって、使用中は混合使用の方法が一般的であり、平文データは対称暗号アルゴリズムで暗号化し、その後非対称暗号アルゴリズムで対称暗号の鍵と平文データのハッシュを暗号化します。相手は情報を受け取った後、対応するペアの別の鍵を使用してデータを復号化し、平文データのハッシュを照合します。この混合使用の方法は、安全性と効率性のバランスをうまく取ることができます。非対称暗号アルゴリズムもハッシュアルゴリズムと同様に、一群のアルゴリズムの総称です。現在よく使われているのは RSA と ECC 楕円曲線暗号アルゴリズムで、RSA はインターネット情報伝送に多く使用され、私たちがインターネットで使用する https 通信などに使われています。一方、ブロックチェーンでは基本的に ECC 系の変種、例えば ECDSA や ED25519 などが使用されています。RSA に比べて、ECC の鍵は短く、より高い安全性を持ちながら、より良い性能を発揮します。

ブロックチェーンにおける非対称暗号#

アルゴリズムの特性を理解したところで、ブロックチェーンで非対称暗号アルゴリズムがどのように使用されているかを振り返りましょう。もしあなたが以前にブロックチェーンについて学んでいれば、ブロックチェーンには非対称暗号を使用してデータを暗号化する場所がないように見えることに気づくでしょう。実際、ブロックチェーンにおける非対称暗号アルゴリズムの使用は、データの暗号化として直接使用されるのではなく、むしろその身分確認の能力、すなわちデジタル署名を利用しています。デジタル署名とは何でしょうか?言葉通り、私たちが普段手書きの署名を使う概念や役割と同じで、あなたの身分を証明し、署名した文書やデータを確認するために使用されます。

ビットコインやイーサリアムなどのパブリックチェーンには、アドレスやアカウントの概念があります。これをブロックチェーンにおける身分証明書と考えることができます。この身分証明書は、現実世界で政府が統一して発行するものとは異なり、非対称暗号アルゴリズムの公開鍵に基づく分散型の変形表現です。ここで小さな知識を引き出すと、あなたがデジタル通貨のモバイルウォレットを通じてアカウントを作成したとき、ブロックチェーンネットワークはそのことを知りません。あなたが送金を受け取ったときに初めて、ネットワークにあなたのアカウントの情報が存在することになります。では、どうやってこのアカウントがあなたのものであることを確認するのでしょうか?理由は非常に簡単です。あなたがアカウントの残高を使えることを証明できれば、それで十分です。その証明の鍵はデジタル署名にあります。アカウントが公開鍵の変形表現である以上、必ず対応する秘密鍵が存在し、あなたの手の中にしか存在しません。

image

取引構造を 2 つの部分に分けることができます。左側の部分は取引の基本属性であり、右側には署名のみが含まれています。署名を見なければ、実際には左側の部分だけで取引の内容を基本的に表現できますが、証明が欠けています。したがって、左側の部分を全体として見て、それにハッシュ計算を行い、次に手元の秘密鍵を使って取引の要約を暗号化します。その暗号化の結果が取引の署名です。取引を検証するには、逆のプロセスを実行すればよく、取引署名を対応する公開鍵で復号化して署名に含まれる取引要約を得て、平文の取引内容をハッシュアルゴリズムで再計算して取引要約を得ます。次に、署名内の取引要約と自分で計算した取引要約を比較します。一致すれば、取引の検証が成功したことを示します。

image

デジタル署名の本質もまた暗号化の一種ですが、データのハッシュ要約に対して行われるものであり、データそのものではありません。これを行う利点は主に 2 つあります。一つは、確かにあなた自身がこの取引を構築したことを証明することです。他の人はあなたの秘密鍵を持っていないため、偽造することはできません。もう一つは、デジタル署名にはハッシュアルゴリズムが関与しているため、ハッシュアルゴリズムの特性を引き継ぎ、取引の完全性を保証し、取引が他の人によって無断で改ざんされないことを確保します。

まとめ#

この講義では、ハッシュアルゴリズムと非対称暗号アルゴリズムを出発点として、ブロックチェーンでよく使用される暗号学アルゴリズムについて浅く分析しました。ハッシュアルゴリズムは取引ハッシュとブロックハッシュを抽象化するために使用され、データの完全性を保証するだけでなく、ブロックハッシュに関連するハッシュチェーンを構築し、悪意のある改ざんのコストを増加させます。

ブロックチェーンで非対称暗号アルゴリズムが使用されるのは、データの暗号化として直接使用されるのではなく、主に取引署名として使用されます。デジタル署名はハッシュアルゴリズムと非対称暗号アルゴリズムの二重特性を統合しており、取引の完全性を保証しつつ、取引の発起者の身分を証明することができます。ブロックチェーンではハッシュと非対称暗号だけでなく、ほぼすべてのブロックチェーンがこの基盤の上に少しの派生を行っています。例えば、プライバシー取引を追求する ZCash は、暗号学のゼロ知識証明を導入し、プライバシー計算に特化したブロックチェーンは同態暗号を導入するなどです。暗号学の知識は広大であり、現在ブロックチェーンで使用されているのは氷山の一角に過ぎません。今日の学びを通じて、暗号学の支えがあるからこそ、ブロックチェーンはまるで巨人の肩に立っているかのようです。

暗号学全体の発展の歴史については、暗号学の初探を参考にしてください。

  • この講義では、ブロックチェーンで最も一般的で基本的な暗号学アルゴリズムについて重点的に説明しました。ブロックチェーンに関連する暗号学の種類についてもっと知りたい場合は、V 神の知識リストを読むことができます。

  • もしまだ物足りない場合は、文中で紹介された暗号学アルゴリズムの原理について知りたい場合は、これらのいくつかの記事を参考にしてください:ハッシュアルゴリズムの原理、RSA 暗号アルゴリズムの原理、ECC 楕円曲線暗号アルゴリズムの紹介。

主に理解すべきことは、秘密鍵が所有権を代表し、身分を証明する基礎であるということです。公開鍵は他の人に公開され(張三、李四、王五が知っている)、公開鍵でデータのハッシュ値を暗号化すると、誰が操作したのかはわからなくなります。「署名」の意味がなくなります。

image

ネットワークモデル#

なぜブロックチェーンはノード間のデータ伝達の絆としてピアツーピアネットワークモデルを採用しているのでしょうか?この考え方を本当に理解するために、比較をしてみましょう。出前を取るにせよ、車のチケットを買うにせよ、日常生活で接するほとんどのネットワークアプリケーションアーキテクチャは、クライアント - サーバーモデルです。このモデルの動作メカニズムは次のとおりです:各クライアントはサーバーにリクエストを送信し、サーバーはリクエストを受信して処理し、最終的にクライアントに処理結果を返します。あなたが直感的に理解できるように、私は図を描きました。

image

図を組み合わせると、これは中央集権的なネットワークアーキテクチャであり、そのサービス能力は完全に中央のサーバーに依存しています。もし中央サーバーが予期せぬ理由でダウンした場合、全体のサービスが停止します。アプリケーションの可用性はサーバーの活性にのみ依存し、クライアントには関係ありません。

一方、ピアツーピアネットワークは全く異なります。これは分散型のネットワークアーキテクチャであり、単一の中央サーバーは存在しません。ネットワーク内の各ノードの権利と義務は等しいです。各ノードは他のノードにリクエストを送信する権利を持ち、同時に他のノードのリクエストに応じる義務もあります。

ノードの権利と義務の対等性は何を意味するのでしょうか?これは、ピアツーピアネットワークの可用性がノード数の増加に伴って強化されることを示しています。ネットワークの運用は、いかなる単一のノードにも依存せず、ノードは自由に参加したり退出したりできます。いくつかのノードがダウンしたり攻撃を受けたりしても、正常に動作しているノードがあれば、システム全体は通常通りに機能し続けます。

二者の違いをどのように理解すればよいのでしょうか?銀行システムを例に挙げてみましょう。現在の中央集権的なアーキテクチャに従うと、ある日、銀行の支店が広範囲にわたって停止し、サービスを提供しなくなることがあります。その理由は非常に単純で、ネットワークの干渉を排除すれば、銀行の総合機械室に問題が発生する可能性が高いです。これは中央集権的なアーキテクチャで発生する可能性のある単一障害点です。

一方、ブロックチェーンアーキテクチャは異なります。1 つの銀行は 1 つのブロックチェーンネットワークに相当し、各銀行の支店はブロックチェーンノードを表します。1 つのノードが外部にサービスを提供できない場合、別のノードに切り替えることができます。1 つまたは 2 つのノードの問題は、全体のネットワークには影響しません。もちろん、この例は非常に極端で粗暴に描写されていますが、理解を助けるためのものです。実際の銀行システムアーキテクチャはそれほど脆弱ではありません。

ネットワークトポロジー#

ある意味で、鶏が先か卵が先かということですが、ピアツーピアネットワークとブロックチェーンは相互に成就する CP の組み合わせです。

前の講義で、ブロックチェーンの去中心化は相対的なものであり、絶対的な去中心化は理想的な状態であると述べました。これをピアツーピアネットワークに対応させると、これは実際にはピアツーピアネットワークのトポロジー構造によって決まります。この対応関係をどう理解すればよいのでしょうか?ノードが 1 つだけのネットワークは実質的に中央集権的なネットワークであり、この場合、ブロックチェーンは中央集権的に表現されます。もしネットワーク内のすべてのノードが互いに接続される場合、ピアツーピアネットワークは完全に対称的と見なすことができ、ブロックチェーンも絶対的な去中心化特性を示します。しかし、極端な状況を避け、ピアツーピアネットワークがこの 2 つの極端な理論値の間で揺れ動くことを許可すると、ブロックチェーンネットワークは常に中央集権と絶対的な去中心化の間の動的バランスにあることがわかります。そして、去中心化の程度の考慮は、主にピアツーピアネットワークのトポロジー構造の選択に依存します。

こう言うと、あなたはまだ少し混乱しているかもしれませんが、心配しないでください。私たちがこの間の論理を一緒に整理しましょう。中央集権的なネットワークに比べて、ピアツーピアネットワークは明らかに利点がありますが、その欠点も同様に明らかです。それは、新しいノードがネットワークに参加する前に、少なくとも 1 つの既存のノードを知っている必要があるということです。そうでなければ、新しいノードはネットワーク全体から切り離されてしまいます。この点は非常に理解しやすいです。中央集権的なネットワークでは、クライアントがサーバーに自分のリクエストを応答させるためには、まず自分のリクエストをサーバーに送信する必要があります。これは、クライアントがサーバーの場所を知っている必要があることを意味します。インターネットを利用するには、URL を知っている必要があるのと同じです。一方、ピアツーピアネットワークでは、すべてのノードが互いにサーバーとクライアントであるため、ノードは他のノードのアドレスを知っていなければネットワークに参加できません。ノードの発見メカニズムの処理の違いは、異なるネットワークトポロジー構造を形成します。以下にそれぞれを分析します。

最初の構造は、他のすべてのノードの接続情報を保存するために中央インデックスノードを導入します。新しいノードが参加する際には、まず自分の情報を中央ノードに送信し、ネットワーク内の他のノードの接続情報を取得します。その後、他のノードとピアツーピアネットワークを形成します。この構造は、私たちが検索エンジンを使用して情報を検索するのに似ていますが、単一障害点の可能性があります。中央インデックスノードがダウンすると、新しいノードはネットワークに参加できなくなります。

image

2 つ目の構造は、無為無治の構造と理解できます。新しいノードは、既存のネットワーク内のノードに接続することを選択し、接続されたノードは新しいノードに他のノードの情報を伝えます。こうして新しいノードはランダムに他のノードに接続し、無秩序なネットワークトポロジー構造が形成されます。

3 つ目の構造は、前の 2 つの構造の特徴を融合させたものです。ネットワーク全体は複数の種子ノードによって主幹ネットワークが形成され、他の通常のノードは特定の種子ノードに接続され、全体が分散しつつ局所的に集中する混合構造が形成されます。

最後のネットワークトポロジーは構造化されたもので、上記の 3 つのトポロジーとは異なり、ノード間の接続は特定のアルゴリズムに従い、秩序ある構造化ネットワークを形成します。例えば、ツリー型ネットワーク構造です。ほとんどの構造化ネットワークのアルゴリズムは、分散ハッシュテーブルアルゴリズムに基づいて実装されており、これは大量のノードのシステム内でターゲットノードを迅速に特定するためのインデックスアルゴリズムです。具体的な原理については、拡張読書を参照してください。

ブロックチェーンネットワークトポロジー#

これら 4 つのネットワークトポロジー構造の違いを理解したところで、ブロックチェーンではノードトポロジーをどのように組織しているのでしょうか?ビットコインとイーサリアムネットワークを振り返ると、それらの選択には違いがあることがわかります。ビットコインは混合型のネットワークトポロジー構造を採用しており、新しいノードが参加するには、ビットコインネットワーク内の隣接ノードの情報を指定する必要があります。普通のノードでも種子ノードでも構いません。ノード間の接続が確立されると、新しいノードは自分の情報を隣接ノードに送信し、隣接ノードは新しいノードの情報をそれぞれの隣接ノードに順次転送し、新しいノードの情報がネットワーク内で広く伝播されることを保証します。新しいノードは隣接ノードからそのノードの隣接ノード情報を取得し、選択的にさらに多くのノードに接続することができます。これにより、ノード自身と全体のネットワーク接続の安定性が向上します。

ビットコインのピアツーピアネットワークは比較的シンプルで理解しやすいですが、情報伝達の効率は高くなく、ネットワーク帯域幅の負荷要求も高いです。この点は、後で取引の拡散プロセスを見れば理解できるでしょう。一方、イーサリアムの選択は異なり、構造化ネットワークトポロジーを使用しています。この構造を構築するには、分散ハッシュテーブルの考え方に基づく Kademlia アルゴリズムが不可欠です(以下、Kad アルゴリズムと略します)。Kad アルゴリズムの原理は比較的複雑ですが、まずそれが何をするのかを理解すれば、学習の難易度は大幅に低下します。簡単に言えば、Kad アルゴリズムはノード間の距離を計算する方法を定義し、新しいノードを発見するために使用されます。具体的にどう計算するのか、次に見ていきましょう。

image

ノード A はまず、自身が保存しているノード情報の K バケツから 2 つの最も近いノードを見つけます。その後、これら 2 つのノードにリクエストを送り、それぞれの K バケツからノード A にさらに近い 2 つのノードを見つけるように要求します。これにより、ノード A は最大で 2×2 の新しいノード情報を得ることができます。その後、これら 2×2 の新しいノードの中からノード A に最も近い 2 つのノードをリクエストし、それらがノード A にさらに近い 2 つのノードを返すようにします。このプロセスは、発見されるノードがなくなるまで継続的に繰り返されます。

この方法を用いることで、ノード A は自身に最も近いノードと接続され、イーサリアムネットワーク内のノードの秩序が保たれます。ただし、ノード間の距離は論理的な距離であり、物理的な距離ではありません。つまり、たとえ 2 つのイーサリアムノードが同じコンピュータ上で動作していても、それらの論理的距離は無限に遠い可能性があります。これはアルゴリズム自体によるもので、図のノード C は明らかにノード A に近いですが、これは表面的なもので、論理的距離は D/E の方が近いのです。ビットコインとイーサリアムの異なるネットワークトポロジーの選択を比較すると、ブロックチェーンにおけるネットワーク構造の選択には定式がなく、唯一の基準はありません。もしあなたがコンソーシアムチェーン技術体系に精通しているなら、コンソーシアムチェーンはパブリックチェーンほどピアツーピアネットワークを重視していないことに気づくでしょう。主に 2 つの理由があります。一つは、コンソーシアムチェーンのノードは確定的であり、随時参加したり退出したりする必要がほとんどないことです。もう一つは、コンソーシアムチェーンのノード数が比較的少なく、ノード発見メカニズムによって新しいノードの参加を導く必要がないことです。取引の拡散について、前の基礎知識を踏まえて、取引をネットワークで流動させることができるようになりました。次に、取引の拡散を通じてネットワークの理解をさらに深めましょう。以前に述べたように、ブロックチェーンネットワークは取引を生成するのではなく、取引の運搬人です。ブロックチェーンネットワークの図からわかるように、ブロックチェーンネットワークの周辺には、多くのスマートフォン、コンピュータ、自動車などの外部接続デバイスがあります。これらのデバイスは任意のブロックチェーンノードに接続し、そのノードから自分に関連する情報、例えば残高や過去の取引などを取得できます。同時に、外部接続デバイスが構築した取引は、それに接続されたノードに送信されるため、これらはブロックチェーンネットワークの取引の源です。

image

拡散プロセスは比較的容易ですが、異なるネットワークトポロジーが同じ取引を重複して受信する処理においての違いに注意する必要があります。イーサリアムネットワークのノードは、自身に最も近い隣接ノードとだけ接続されているため、取引の拡散にはループの可能性が存在せず、その拡散パスは一方向の持続的な外部ブロードキャストのようなもので、取引は最初のノードから徐々に離れていき、取引の拡散効率は高くなります。一方、ビットコインの取引拡散は異なる処理を行います。ネットワークトポロジーはランダムであり、取引が拡散する際には接続されたノードに拡散しますが、拡散前に相手がすでに同じ取引を受信しているかどうかはわかりません。そのため、ネットワーク拡散の効率は低くなります。ネットワークノードの規模が拡大するにつれて、ノード間の接続関係はより無秩序になり、取引の重複拡散に多くのネットワーク帯域幅が浪費されます。ノードが重複取引を受信しても、再度考慮することはなく、直接破棄され、無駄な努力をすることになります。見ての通り、ビットコインのネットワークトポロジーは構造がシンプルですが、その代償も支払っています。ブロックの拡散も取引拡散の一般的な論理に従いますが、この場合、外部接続デバイスの参加は必要なく、最初に合意条件を満たしたマイナーのノードが発信します。次の講義で合意アルゴリズムを学ぶときに、詳細を説明しますので、まずは印象を残しておいてください。

まとめ#

ピアツーピアネットワークは、ブロックチェーンで最も一般的なネットワークインタラクションモデルです。中央集権的なクライアントサーバーモデルに比べて、各ノードは対等な権利と義務を持ち、ブロックチェーンの去中心化特性と相互に補完し合っています。しかし、ピアツーピアネットワークのノード発見メカニズムは中央集権的なネットワークよりもはるかに複雑です。この処理の違いは、中央集権的、ランダム、混合、構造化など、さまざまなネットワークトポロジー構造を派生させます。異なるブロックチェーンは異なる選択をし、取引やブロックの拡散処理において異なる影響を与えます。実際、ブロックチェーンにおいて、去中心化の思想が先に存在したのか、ピアツーピアネットワークの啓発が先にあったのかという問題は、実はそれほど重要ではありません。この問題を議論する理由は、両者の関係を研究することで、ブロックチェーンネットワークをより深く理解できるからです。最後に、私の見解を述べたいと思います。私は、ピアツーピアネットワークの思想が中本聡を啓発し、彼がその絶対的中心のない特性を利用して第三者の仲介を排除したデジタル通貨システムを構築することを考えたと信じています。

スマートコントラクトの基礎#

知っていますか?スマートコントラクトはブロックチェーン専用ではなく、実は 1990 年代に「スマートコントラクト」の概念が提唱されていました。基本的には次のように要約できます。デジタル形式で定義された一連の約束であり、各参加者がこれらの約束を履行するための合意を含みます。

a set of promises, specified in digital form, including protocols within which the parties perform on these promises

ただし、当時は有効な媒体が不足していたため、スマートコントラクトはさらに発展することができませんでした。イーサリアムの登場によって、ブロックチェーン技術とスマートコントラクトが結びつき、最終的に私たちの前に現れました。スマートコントラクトの概念をどう理解すればよいのでしょうか?私たちが普段の契約や合意を思い浮かべることで、スマートコントラクトとそれらの概念が実際に通じていることを明確に認識できます。ただし、スマートコントラクトはデジタル形式です。もちろん、スマートコントラクトと従来の契約には違いがあります。二者の拘束力の発生メカニズムは異なります。従来の意味での契約や合意の拘束力は権威機関の裏付けから生じます。一度契約が締結され、複数の当事者が合意された義務を履行しなかった場合、他の参加者は違反者に対して私的に責任を追及したり罰したりする権限を持たず、必ず裁判所などの司法ルートを通じて合理的かつ合法的な請求を行う必要があります。

しかし、スマートコントラクトは異なります。その拘束力の一部は契約自体から生じます。スマートコントラクトは実質的にコンピュータプログラムコードの一部であり、非常に論理的な厳密性を持っています。言うことは一貫しており、コード自体が各参加者の権利と義務、さまざまな条件下での処理ロジックの流れを記述しています。言い換えれば、コードが法律です。あなたはこう思うかもしれません。コードが法律であるなら、なぜ私たちが普段接するさまざまなソフトウェアアプリケーションはスマートコントラクトとは呼べないのでしょうか?これは、スマートコントラクトの拘束力のもう一つの部分に関係しています。それは、スマートコントラクトに実行環境を提供するブロックチェーンネットワークです。ブロックチェーンネットワークとソフトウェアアプリケーションが提供する実行環境には何が違うのでしょうか?前の数回の講義でブロックチェーンの特性や基礎技術について説明したことを考慮すると、その違いはブロックチェーンの特性にあります。従来のソフトウェアアプリケーションは、単一の企業や個人が提供する個別のサービスであり、ソフトウェアの最終的な解釈権はアプリケーション開発者にあります。したがって、特定の状況下では、ユーザーに信頼感を持たせることが非常に難しいです。また、アプリケーションを使用することは、実質的に開発者との従来の契約や合意を締結することに相当し、拘束力は権威機関から生じます。一方、ブロックチェーンネットワークは、ネットワークのすべての参加者によって共同で維持され、全体のメンバーが共同で遵守するブロックチェーンプロトコルがスマートコントラクトに信頼の拘束力を提供します。

スマートコントラクトの実行は、取引のチェーン外からの発起に依存しています。一度ブロックチェーンに載せられると、その実行は第三者の干渉を排除できます。また、契約の実行プロセスに異議があった場合でも、追跡可能性の特性を利用してスマートコントラクトの実行プロセスを追跡できます。

拘束力の違いのため、スマートコントラクトには部分的な実装問題があります。スマートコントラクトは権威の法律の監視が欠如しており、コードの拘束力とブロックチェーンの信頼の拘束力にのみ制約されています。このため、現在の時点では、一般の人々は特に重要な契約合意に関与する際に、スマートコントラクトに対する信頼感が不足しています。もちろん、これは新しい事物が市場に進出する際に経験する過渡期に過ぎません。ブロックチェーンとスマートコントラクトの普及が進むにつれて、一般の人々のブロックチェーンに対する信頼感は深まるでしょう。スマートコントラクトの普及も時間の問題です。なぜ私はこんなに楽観的なのでしょうか?それは、イーサリアムがスマートコントラクトをブロックチェーンに導入し、スマートコントラクトの実装環境を提供するだけでなく、スマートコントラクトの普及と推進のための通路を提供しているからです。これがイーサリアム改善提案 EIP です。

イーサリアムは技術的な能力を提供するだけでなく、再利用可能なテンプレートも提供しています。入門の難易度が下がり、使用体験の向上に大きな影響を与えます。全世界のユーザーがさまざまなイーサリアム改善提案を提出でき、コミュニティがそれを受け入れれば、次のイーサリアムの新バージョンでこれらの提案が実現されます。これは、イーサリアムコミュニティの運営者とユーザー間に直接的なコミュニケーションの通路を構築することに相当します。少数の人の考え方には限界がありますが、大衆の知恵を集めることで、プラットフォームの発展の可能性は無限です。

これらの改善提案の中には、スマートコントラクト標準に関する提案が多く含まれています。ブロックチェーンがスマートコントラクトをサポートすることに比べて、私はむしろスマートコントラクト標準を重視しています。もしあなたがオブジェクト指向プログラミングについて少しでも知っているなら、インターフェースが非常に好きになるでしょう。なぜなら、それは関連する行動の一群を制約し、規範化することができるからです。スマートコントラクト標準も同様で、一般的な行動基準を通じてスマートコントラクトの発展を導くことは近道であると言えます。価値ネットワークの実現は、スマートコントラクト標準の制定に依存しています。純粋な理論的な説明では、特に深い感覚を得ることはできないかもしれません。次に、現在人気のあるスマートコントラクト標準 EIP-721 を例に挙げて(721 は提案番号で、NFT は提案の名称です)、スマートコントラクト標準が価値ネットワークに与える影響を説明します。

この標準の由来は、非同質化トークン、略して NFT です。非同質化トークンがあるなら、同質化トークンもあるはずです。同質化トークンとは、互いに代替可能で、分割可能な通貨を指します。例えば、人民元の 100 元は、あなたの手元の 100 元と私の手元の 100 元の購買力に違いはありません。また、100 元を 2 つの 50 元や 10 の 10 元に分けることもできます。しかし、非同質化トークンは異なり、各 NFT は唯一無二であり、分割不可能です。前に使った不動産担保の例を思い出してください。NFT はこの問題に解決策を提供しているようです。不動産情報は唯一性があり、複製や分割ができません。もし NFT を通じて不動産の所有権をマークできれば、仮想世界での不動産の固定化が実現されます。そして、一度固定化関係が成立すれば、私たちはブロックチェーンネットワーク内で不動産の移転を実現できます。このプロセスは、送金のように便利です。また、NFT の適用シーンはこれだけではありません。私たちは NFT を通じてさまざまな資産を結びつけることができます。写真、絵画、歌、文章、チケットなど、資産属性を持つあらゆるものを NFT として登録できます。例えば、Twitter の CEO は、彼が発表した最初のツイートを NFT としてオークションにかけたいと考えています。

NFT があれば、私たちは仮想と現実の価値を固定化する手段を持つことができます。もちろん、NFT が価値ネットワークを実現する唯一の手段であるわけではありません。価値ネットワークの構築は、すべてのスマートコントラクト標準のサポートなしには成り立ちません。しかし、標準の制定は一朝一夕にはいかず、市場には必ず最初にヒットアプリケーションが登場し、その革新的なモデルが皆を模倣させ、さらに粗暴にこの種のアプリケーションを頂点に押し上げます。その後、バブルが崩壊します。市場の感情が冷静になると、一部の人々はバブルの背後にある深層論理を考え、アプリケーションの背後にある共通の行動パターンを抽象化し、それを EIP 提案としてまとめ、最終的に将来の類似アプリケーションシーンに標準化された解決策を提供します。

スマートコントラクト標準の制定の難しさは、価値ネットワークの貴重さを際立たせます。あなたはすでに未来に飛び込み、価値ネットワーク時代がどれほど進んでいるかを体験したいと思っているかもしれません。しかし、急がないでください。現段階では価値ネットワークはまだ成熟していませんが、その雛形はすでに現れています。それがメタバースです。私たちはそれを通じて価値ネットワークを覗くことができます。#

メタバースと価値ネットワーク

もしあなたが私と同じように、かつて本を読むことが好きだった反抗的な少年であれば、きっとファンタジー小説を読んだことがあるでしょう。中学校の頃、私はオンラインゲームシリーズの爽快な物語に非常に夢中になり、描かれた没入型ゲームキャビンに深く魅了され、ぜひとも生きている間に体験したいと思っていました。私はこれが単なる美しい幻想だと思っていましたが、メタバースがすべてを現実に変えるかもしれないことに気づきました。私が初めて「メタバース」という言葉を聞いたとき、それがどこかの中二病の少年が付けた名前だと思っていました。しかし、理解が進むにつれて、実際には SF 小説『スノークラッシュ』に描かれた「メタバース(Metaverse)」というマルチプレイヤーオンライン仮想世界であることがわかりました。これが私の興味を引き起こしました。メタバースは没入型の仮想世界を代表しており、プレイヤーはその中で文化、社交、エンターテイメントなどの活動を行うことができます。従来のゲームと比較して、メタバースは信頼できる経済システム、仮想の身分と資産、より強い社交性、没入型体験、オープンなコンテンツ制作などの特徴を持っています。言い換えれば、メタバースでは物質以外はすべてが現実世界と同じです。ブロックチェーン技術と同様に、メタバースは単一の技術で構築されるのではなく、ブロックチェーン、ゲーム、ネットワーク、表示の 4 つの技術が融合して形成された仮想世界です。

ブロックチェーン技術はメタバースに去中心化された資産取引プラットフォームを提供し、NFT/DeFi などのスマートコントラクトはプレイヤーの仮想資産を支えるメディアを提供します。ゲームはメタバースにインタラクティブなコンテンツを提供し、5G ネットワークはデータの伝送を信頼できるものにします。

ブロックチェーン技術を除けば、メタバースが表すのは、従来のよりもリアルな没入型ゲーム環境に過ぎず、仮想世界とは見なせません。しかし、ブロックチェーン技術の支えがあれば、プレイヤーの仮想資産と身分の安全が保証され、この世界で公開透明な資産取引を実現し、価値の移転を可能にします。こう考えると、ブロックチェーンこそがメタバースが仮想世界となる鍵であると言えます。

私たちがメタバースに夢中になるのは、それが次の段階のゲーム業界に方向性を示すだけでなく、現実世界の価値ネットワークに対する参考となる思考を提供するからです。メタバースを探求することは、実際には価値ネットワークを模索することです。こう言えるでしょう。スマートコントラクト標準の制定プロセスと同様に、現段階のメタバースは私たちが期待するヒットアプリケーションであり、その発展に伴い、バブルが必ずやってくるでしょう。そして冷静になった後の抽象的な思考は、価値ネットワークの構築に標準化された解決策を提供することになるでしょう。

まとめ#

ブロックチェーン技術がなければ、スマートコントラクトは単なる概念に過ぎません。そして、スマートコントラクトの支えがなければ、ブロックチェーンはその応用を大いに発揮することができません。ブロックチェーンにスマートコントラクトを「引き合わせた」のはイーサリアムであり、イーサリアムはスマートコントラクトの発展を支えるだけでなく、スマートコントラクトの普及に標準化された思考を提供しています。言い換えれば、スマートコントラクトの標準化は価値ネットワークが本当に実現するための前提です。NFT は現実資産と仮想価値の固定化に実行可能な解決策を提供し、価値ネットワークの実現における重要な一歩を達成しました。現段階では、価値ネットワークまでの道のりはまだ遠いですが、私たちはメタバースの発展プロセスを通じて、価値ネットワークの実現の思考を覗くことができます。

ブロックチェーンはブロックハッシュの前後の関連によって形成されたチェーン構造であり、主な目的はデータの持続的な完全性を保持することです。ブロックチェーンは不可逆性の特性を保持しつつ、追跡可能性を得ることができます。そして、データアーカイブは、ブロックチェーンがある歴史的なブロックから始まり、それ以前のデータをクリアしますが、その後のブロックは元の順序を変えずに保持されます。したがって、データアーカイブの本質は、不可逆性を保持する前提で一部の追跡可能性を犠牲にすることです。しかし、もし私たちがブロックの歴史データをクリアした後に、アーカイブされたブロックを再度読み取る方法を提供できれば、データアーカイブは実際には非常に優れた解決策となります。#

もし私が単なるビットコインの保有者であれば、私の残高や過去の取引記録にしか関心がなく、他の情報には一切関心がありません。したがって、私はこの小さな要求のために 350GB のストレージデータを同期する必要はありません。これらのデータは私にとって何の意味もありません。しかし、大型のノードにとっては、歴史データを同期し、そのデータを生産資料として使用し、関連サービスを提供することができます。例えば、マイニングを行うマイナーのノードや、ブロックチェーンブラウザの背後にあるノードなどです。パブリックチェーンが一般的に採用しているのは、このようなノード役割の分類のアプローチです。

image

ビットコインネットワークには現在約 10000 のフルノードがあり、これらが完全なブロックチェーンデータを維持しています。保有者はスマートフォン上でウォレットノードを実行するだけで取引を行うことができます。ノード役割の区別はストレージの冗長性を緩和する効果的な手段ですが、これは去中心化の特性を犠牲にする前提で行われます。ある意味では、これは妥協の一形態でもあります。

異なるストレージ冗長性の解決策を解釈した結果、私たちは根本的にストレージ冗長性の問題を解決することはできず、異なる技術手段を通じてデータの増加を緩和するしかありません。コンソーシアムチェーンはブロックチェーンの追跡可能性を犠牲にすることを突破口とし、パブリックチェーンは去中心化を前提としています。さらに、ストレージ冗長性の問題を解決する別の方法もあります。それはデータ量を減らし、データの増加の傾向を緩和することです。例えば、ブロックチェーン上に保存されるのは原始データのハッシュであり、データそのものではありません。もちろん、これはビジネスレベルの解決策であり、技術的な次元での解決策ではありません。

量子計算の脅威

ストレージ冗長性の問題について話した後、次に皆が興味を持っている問題、すなわち量子計算がブロックチェーンに与える脅威を見てみましょう。私たちは一般的に、量子コンピュータが成熟すれば、ビットコインをはじめとするブロックチェーンシステムが崩壊するだろうと考えています。なぜなら、量子コンピュータの計算能力は古典的なコンピュータと比較して、比べ物にならないからです。しかし、実際にそうなのでしょうか?この問題をよりよく理解するために、まず量子計算とは何かを説明する必要があります。もちろん、重ね合わせ状態や量子もつれなどの複雑な特性を説明することはできません。なぜなら、それは非常に高度な内容だからです。したがって、私は『科学の声』の公式アカウントから借りた例を使って理解を助けます。想像してみてください。もしあなたが 1 つの手を使うとしたら、同時にいくつの数字を表現できますか?疑いなく、あなたは 1-10 の 10 の数字の中の 1 つだけを同時に表現することができるでしょう。これが古典的なコンピュータがデータを保存する基本的なルールです。同じ時間に 1 ビットは 1 つの 2 進数しか保存できず、0 か 1 のいずれかです。しかし、もしあなたが手をポケットに入れて、手をポケットから取り出すとしたら、あなたの手は何種類の数字を表現できるでしょうか?答えは 10 種類の可能性です。そして、手を取り出す前は、その数字は不確定です。この例を通じて、古典的なコンピュータと量子コンピュータのデータ保存の違いが明らかになります。古典的なコンピュータは具体的な値を保存し、量子コンピュータは値の確率を保存します。

値の確率を保存するとはどういうことでしょうか?実際には、値のすべての可能性を重ね合わせて保存することです。例えば、5 ビットの古典的なコンピュータは、同時に 1 つの数字しか表現できませんが、同じく 5 ビットの量子コンピュータは、同時に複数の数字を表現できます。両者の間には 32 倍の性能差があります。また、保存効率はビット数が増えるにつれて倍増します。これが量子コンピュータの保存能力に関するものであり、量子コンピュータが古典的なコンピュータを圧倒する効果を示すには、強力な保存能力だけでは不十分です。より重要なのは、量子コンピュータの並列計算能力です。この並列計算の恐ろしさをどう表現すればよいのでしょうか?また例を使って説明します。今、あなたの目の前に 64×64 本のパイプが 2 列に分かれており、その中で 1 組だけが接続できるとします。では、どれくらいの試行回数が必要でしょうか?古典的なコンピュータの考え方に従うと、私たちは 1 組ずつ試す必要があります。左側の列の最初のパイプと右側の列の最初のパイプを接続してみて、もしダメなら、左側の列の最初のパイプをそのままにして、右側の列のパイプを 2 番目に変えます。このようにして、見つかるまで順次比較していきます。極端な場合、64×64 回の試行が必要になるかもしれません。しかし、量子コンピュータは全く異なります。量子コンピュータは同時に 64 本のパイプを表現できるため、一度の試行でその唯一の一致を見つけることができます。古典的なコンピュータと量子コンピュータの保存と計算の両面での解釈を通じて、量子コンピュータ時代のブロックチェーンに対して何らかの懸念を抱くかもしれません。しかし、私が言うには、これらの懸念は杞人の憂いに過ぎません。あなたは信じますか?これは、量子コンピュータがまだ実験室の環境にしか存在せず、実際の商業化にはまだ遠いからです。もしかしたら、私たちの世代はそれに間に合わないかもしれません。もう一つの理由は、量子コンピュータが発展する一方で、ブロックチェーンがその場に留まることはほぼ不可能だからです。現段階では、私たちが主に心配しているのは、量子コンピュータがビットコインをはじめとする PoW コンセンサスアルゴリズムを使用するブロックチェーンの報酬を瞬時に掘り尽くしてしまうことです。そうすれば、他のマイナーはコインを掘ることができなくなります。

少し考えてみてください。先ほどの懸念は本当に理にかなっていますか?実際、私の見解では、それも余計な心配です。現段階の量子コンピュータがハッシュ計算や非対称暗号アルゴリズムを破ることができるかどうかを考えると、ブロックチェーンプロトコルの役割を無視していることになります。ビットコインの例を使って分析してみましょう。

ビットコインプロトコルには、全ネットワークの計算能力がどのように変化しても、ブロックの生成速度は平均して約 10 分に保たれるべきだという規定があります。もしブロック間隔が短くなれば、マイニングの難易度が上がります。逆に、ブロック間隔が長くなれば、難易度が下がります。量子コンピュータがマイニングに参加すれば、ブロック間隔は必然的に短くなり、マイニングの難易度が上がります。たとえその難易度が量子コンピュータを難しくするには不十分であっても、結局はその後のすべてのブロック報酬が量子コンピュータによって獲得されることになります。瞬時にビットコインが掘り尽くされる状況は起こり得ません。

さらに、なぜビットコインはハードフォークの方法で現段階の暗号アルゴリズムを量子コンピュータに対応した耐量子暗号に変更できないのでしょうか?量子計算が発展する一方で、ブロックチェーン技術もその場に留まることはありません。私は、山に車が到達すれば道が開けると信じており、必ず解決策が見つかるでしょう。

スマートコントラクトの安全性#

最後に、特に強調したいのは、スマートコントラクトの安全性に関する遺憾です。前の 2 つの問題は、技術自体や他の脅威によって引き起こされるものでしたが、スマートコントラクトの安全性は完全に人間の問題です。

スマートコントラクトは、エンジニアがイーサリアムなどのブロックチェーンプラットフォームに基づいて自主的に作成したプログラムコードです

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。