ブロックチェーン社会実装のための基礎知識概論〜P2Pネットワークと電子署名(コンセンサス)〜

# 第２章　P2Pネットワークと電子署名

この章では、ブロックチェーンを構成するもっとも基本的な部分となるP2Pネットワークと電子署名について解説します。前章で説明した既存システムの制約を念頭に置きながら読むことで、ブロックチェーンの使い所についての理解がさらに深まります。

## 2-4.コンセンサス

「P2Pネットワークや電子署名、ハッシュツリーを活用して実現できる『合意形成（コンセンサス）』」は、分散システムにおいてデータの一貫性と信頼性を確保するための基盤となる技術です。特にブロックチェーンや分散型ファイルシステム、分散アプリケーションなどでは、システム全体で一貫したデータ状態を維持し、悪意ある行為からネットワークを守るために合意形成（コンセンサス）メカニズムが不可欠です。

ここでは、P2Pネットワーク、電子署名、ハッシュツリーのそれぞれの技術がどのように結びついてコンセンサスを実現し、その信頼性を高めるのか、そしてどのようなコンセンサスアルゴリズムが現代のシステムで利用されているかを論じます。

### P2Pネットワークとコンセンサスの必要性

P2Pネットワークは、中央集権的なサーバに依存せず、全てのノードが対等な関係で通信する分散型システムです。このようなネットワークでは、信頼できる中央の機関が存在しないため、参加者全員が同意できる「真実」としての共通データ（台帳やファイル）を維持する仕組みが必要です。

しかし、P2Pネットワークには次のような課題があります：

- **ノードの信頼性**：すべてのノードが信頼できるとは限らず、悪意あるノードが誤った情報を広めるリスクがあります。
- **データの整合性**：各ノードが異なるデータを保持していた場合、それらをどのように統合して正しいデータを選択するかが問題となります。

このような問題に対処するために、分散システムでは「コンセンサスアルゴリズム」が使用されます。コンセンサスアルゴリズムとは、ネットワークの全てのノードが合意に達し、ネットワーク全体で一貫した状態を維持するための仕組みです。

### 電子署名とコンセンサス

電子署名は、コンセンサスアルゴリズムの信頼性を支える基盤技術の一つです。各ノードが提案するデータや取引に対して、秘密鍵を用いて電子署名を行うことで、誰がその提案を行ったのかを証明できます。

#### 電子署名の役割

1. **取引の正当性を保証**：たとえば、ブロックチェーンの取引において、電子署名はその取引が正当なものであることを証明します。具体的には、取引を発行したノードが所有者であり、その取引が改ざんされていないことを保証します。これにより、各ノードは取引の検証を行い、その信頼性を確認できます。

2. **否認防止**：電子署名を使うことで、取引の発行者が後から「その取引を行っていない」と主張することを防ぎます。これは、悪意あるノードが取引を否定したり、システムを混乱させようとする行為を防ぐために重要です。

### ハッシュツリーによるデータ整合性の確保

ハッシュツリー（マークルツリー）は、コンセンサスアルゴリズムにおいて、データの整合性と効率的な検証を実現するために不可欠な役割を果たします。具体的には、次のような方法で使用されます：

1. **データの一貫性の検証**：ハッシュツリーは、各取引やデータブロックのハッシュ値をリーフノードに格納し、それをルートハッシュまで集約することで、全体の整合性を効率的に確認できます。あるデータが改ざんされていれば、その影響はルートハッシュに伝播し、すぐに改ざんを検出できるため、ネットワーク全体で整合性が保たれます。

2. **部分的なデータ検証**：ハッシュツリーを使うことで、ノードは全体のデータを再計算せずに、特定の取引やデータが有効かどうかを検証できます。例えば、特定の取引がブロックチェーン上に記録されているかを検証する際、その取引と対応するルートハッシュを確認するだけで済みます。この効率的なデータ検証は、大規模な分散ネットワークにおいて非常に有用です。

### コンセンサスアルゴリズムの種類

P2Pネットワーク、電子署名、ハッシュツリーを活用して実現される代表的なコンセンサスアルゴリズムには、次のようなものがあります。

#### 1. Proof of Work（PoW）

Proof of Workは、ビットコインなどの暗号通貨で広く採用されているコンセンサスアルゴリズムです。このアルゴリズムでは、ノードは一定の計算問題（ハッシュ計算）を解くことで取引の検証と新しいブロックの生成を行います。最初に問題を解いたノードが、次のブロックをネットワークに追加する権利を得ます。

- **メリット**：PoWは、悪意あるノードがネットワークを支配するためには非常に多くの計算リソースが必要となるため、高いセキュリティを提供します。
- **デメリット**：計算量が膨大で、エネルギー消費が大きいことが課題です。

PoWは、ハッシュツリーを使用してブロック内の取引をまとめ、各ブロックが整合性を保っていることを保証します。新しいブロックが生成されると、そのルートハッシュが前のブロックにリンクされ、ブロックチェーン全体が連続的に改ざん耐性を持つ構造になります。

#### 2. Proof of Stake（PoS）

Proof of Stakeは、PoWの代替として提案されたコンセンサスアルゴリズムであり、計算力ではなく保有するトークン（ステーク）の量に基づいてブロック生成の権利が与えられます。ノードは、自分が保有する暗号通貨やトークンの割合に応じて次のブロックを検証・生成する確率が決まります。

- **メリット**：エネルギー消費が少なく、PoWと比較してスケーラブルです。
- **デメリット**：ステークの多いノードが有利になるため、富の集中が問題となる可能性があります。

PoSでも、ハッシュツリーが利用されてデータの整合性が保証され、ノードは電子署名を用いて取引の正当性を確認します。

#### 3. Practical Byzantine Fault Tolerance（PBFT）

PBFTは、分散システムにおけるビザンチン障害に耐性を持つためのコンセンサスアルゴリズムです。ビザンチン障害とは、一部のノードが不正確または悪意ある情報を送信する可能性がある場合でも、システム全体で正しい合意を形成することを指します。

PBFTでは、各ノードが互いに通信し、一定数のノードからの合意が得られた場合に取引が承認されます。これは、中央集権的な制御がなくても、分散型システム全体で正確な合意を得るための強力な方法です。

- **メリット**：少数のノードが不正を行っても、システム全体の正当性が維持される。
- **デメリット**：ノード間の通信が多く、スケーラビリティに課題がある。

#### 4. Delegated Proof of Stake（DPoS）

DPoSは、PoSの一種で、ステークを持つノードがブロックを検証する権利を委任された代表者に投票する仕組みです。この仕組みにより、特定のノードが選ばれ、そのノードがネットワークを代表してブロックを生成します。

- **メリット**：PoSよりも効率的で、より少数のノードで迅速にコンセンサスを得ることができます。
- **デメリット**：集中化のリスクがあり、代表者に権力が集中しやすいという課題があります。

### P2Pネットワークにおけるコンセンサス形成の意義

P2Pネットワーク、電子署名、ハッシュツリーを組み合わせたコンセンサスアルゴリズムは、次のような意義を持っています：

1. **セキュリティの向上**：電子署名による認証と、ハッシュツリーによるデータ整合性の保証により、システム全体が信頼できる状態を保つことができます。悪意あるノードがネットワークに参加しても、不正な取引やデータ改ざんを検出し、ネットワーク全体を守ることが可能です。

2. **分散型の信頼モデル**：中央の権威に依存しないP2Pネットワークでは、参加者同士が自律的に合意を形成するため、システムが外部の介入を受けずに運用できます。これにより、信頼性の高い分散型アプリケーションが構築されます。

3. **耐障害性**：コンセンサスアルゴリズムは、ノードの一部が障害を起こしたり悪意を持って行動したとしても、ネットワーク全体で一貫したデータを保持し、サービスの継続性を確保できます。特に、ビザンチン障害に対応したアルゴリズムでは、信頼性の低い環境でも正確な合意が形成できます。

### 結論

P2Pネットワーク、電子署名、ハッシュツリーを活用した合意形成（コンセンサス）は、分散システムの信頼性、セキュリティ、耐障害性を確保するための不可欠な要素です。これらの技術を組み合わせることで、中央集権的なシステムでは達成できないレベルの安全性と透明性を提供でき、ビットコインやイーサリアムをはじめとするブロックチェーン技術だけでなく、分散型アプリケーション全般にわたって広く応用されています。

今後の技術進展により、より効率的でセキュアなコンセンサスアルゴリズムが登場する可能性があり、それがさらに分散型システムの拡大と発展に寄与することが期待されます。


---

### バックナンバー

#### はじめに
https://qiita.com/kicnft/items/6036c9455a12e99ab5da

#### 第１章　既存システムの仕組みと制約

https://qiita.com/kicnft/items/6badc48ca775d9d2e8c3

https://qiita.com/kicnft/items/5b3cc592239e53710f35

https://qiita.com/kicnft/items/88f753e88266862dde8a

#### 第２章　P2Pネットワークと電子署名

#### 2-1.P2Pネットワーク
https://qiita.com/kicnft/items/23c4cc4372ba93a9c7a2

#### 2-2.電子署名
https://qiita.com/kicnft/items/cdec78c9b0a63dab219f

#### 2-3.改ざん耐性
https://qiita.com/kicnft/items/d6341037d8db5fd7576c