# [EIP4] EIPの分類を理解しよう！

> この文書は、EIP（Ethereum Improvement Proposals）の分類方法を説明しており、BIP123から適応されました。

- URL: https://cardene.dev/articles/c8768dcd56884b2ff374
- 公開日: 2023-11-08
- 更新日: 2023-11-08
- トピック: Blockchain
- タグ: ethereum, solidity, smartcontract, ブロックチェーン

## はじめに

初めまして。
**CryptoGames**というブロックチェーンゲーム企業でエンジニアをしている **cardene（かるでね）** です！
スマートコントラクトを書いたり、フロントエンド・バックエンド・インフラと幅広く触れています。

https://cryptogames.co.jp/

代表的なゲームは**クリプトスペルズ**というブロックチェーンゲームです。

https://cryptospells.jp/

今回は、EIPの分類を提案している**EIP4**についてまとめていきます！

:::message
以下にまとめられているものを翻訳・要約・補足しながらまとめていきます。
:::

https://eips.ethereum.org/EIPS/eip-4

他にも様々なERCについてまとめています。

https://cardene.notion.site/ERC-EIP-2a03fa3ea33d43baa9ed82288f98d4a9?pvs=4

## 概要

この文書は、EIP（Ethereum Improvement Proposals）の分類方法を説明しており、**BIP123**から適応されました。
EIPsは、システムのレイヤーによって分類されており、数字が低いレイヤーほど、より複雑な相互運用性要件が関与します。
この仕様は、各標準のEIPがどのレイヤーに属するかを決定するための具体的な基準を定義しています。

## 動機

Ethereumは、さまざまな標準を含むシステムです。
一部の標準は、相互運用性のための絶対的な要件であり、他の標準はオプションと考えることができ、実装者がそれらをサポートするかどうかの選択肢があります。

相互運用性の要件をより反映するEIPプロセスを持つために、EIPを適切にカテゴリー分けする必要があります。
下位のレイヤーでは、標準を受け入れて展開する際にかなりの課題が存在します。

## 仕様

EIPの企画は以下の4つのレイヤーに分類されます。

- Consensus
- Networking
- API/RPC
- Applications

### コンセンサス レイヤー

コンセンサス レイヤーは、ブロックチェーンにおける非常に重要な部分です。
このレイヤーは、暗号コミットメント構造を定義し、ブロックチェーンの適切な動作を確保する役割を果たします。
具体的には、特定の状態や取引履歴が正当かどうかを個々のノードが独自に確認できるようにし、取引の決済を保証し、最終的な合意に至るプロセスを確保します。

コンセンサス レイヤーは、メッセージのネットワーク内での伝達方法には関与しません。
その代わり、取引の整合性を確保するためのしくみを提供します。

コンセンサス レイヤーにおける異論が生じると、ネットワークが分断されたり、異なるノードが異なる互換性のない取引履歴を受け入れる可能性があります。
さらに、コンセンサスレイヤーの変更は、ソフトフォークとハードフォークという2つのカテゴリーに分けることができます。

#### ソフトフォーク
ソフトフォークでは、以前のルールで正当だった一部の取引が新しいルールに従うと正当ではなくなります。
以前のルールで不正当だった取引は、新しいルールでも不正当のままです。

#### ハードフォーク
ハードフォークでは、以前のルールで不正当だった取引が新しいルールに従うと正当になります。

コンセンサス レイヤーは、ブロックチェーンネットワーク全体で取引の整合性と合意を確保するために極めて重要です。
また、ソフトフォークとハードフォークは、ルールの変更がブロックチェーン全体に与える影響の異なる方法を示します。

### ネットワーキング レイヤー
ネットワーキング レイヤーは、EthereumのコミュニケーションプロトコルであるEthereumワイヤープロトコル（eth）とLight Ethereumサブプロトコル（les）を規定します。
RLPxは除外され、[devp2p](https://github.com/ethereum/devp2p)で管理されています。

基本的なノード間の相互運用性を確保するには、一部のサブプロトコルだけが必要です。
ノードは追加のオプション拡張をサポートすることも可能です。

新しいサブプロトコルを追加することは、既存のプロトコルとの互換性を壊すことなく常に実現可能ですそして、古いプロトコルを段階的に非推奨化していくことができます。
この方法により、サービスの中断リスクを最小限に抑えつつ、ネットワーク全体をアップグレードできます。

ネットワーキング レイヤーは、Ethereumノード間での通信プロトコルを規定し、ネットワーク全体でのコミュニケーションを支えます。
新しいサブプロトコルの追加と旧プロトコルの非推奨化は、ネットワークの改善と発展を可能にし、サービスの連続性を確保します。

### API/RPC レイヤー
API/RPC レイヤーは、アプリケーションからアクセス可能な高レベルの呼び出しを規定します。
これらのEIPのサポートは、基本的なネットワーク間の相互運用性には必須ではありませんが、一部のクライアントアプリケーションから期待されることがあります。
このレイヤーでは、アプリケーションがブロックチェーンと対話し、データを取得し、操作するための手段を提供します。

### アプリケーション レイヤー
アプリケーション レイヤーは、異なるアプリケーションが類似の機能をサポートし、データを共有できるようにする高レベルな構造、抽象化、および規則を定義します。
このレイヤーは、異なるアプリケーション間での相互運用性を高め、ブロックチェーンを活用したさまざまなアプリケーションが類似の機能を共有し、データを交換できるようにします。

## 引用

Joseph Chow (@ethers), "EIP-4: EIP Classification," Ethereum Improvement Proposals, no. 4, November 2015. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-4.

## 最後に

今回は「EIPの分類を提案している**EIP4**」についてまとめてきました！
いかがだったでしょうか？

質問などがある方は以下のTwitterのDMなどからお気軽に質問してください！

[Twitter @cardene777](https://twitter.com/cardene777)

他の媒体でも情報発信しているのでぜひ他も見ていってください！

https://chaldene.net/

https://zenn.dev/heku

https://mirror.xyz/0xcE77b9fCd390847627c84359fC1Bc02fC78f0e58


https://cardene.notion.site/ERC-EIP-2a03fa3ea33d43baa9ed82288f98d4a9?pvs=4
