EIP and ERC
什麼是 EIP?為什麼需要 EIP?
EIP 全名為「以太坊改進提案」(Ethereum Improvement Proposal),是用來對ETH建議新功能的、修改現有協議或定義新流程,包含技術規格、實作細節及提案背後的目的與理由。這是以太坊去中心化生態系統中社群治理和協議升級的主要機制 。
EIP只是提案不等於一定會上線,需要經過,提案者需負責撰寫技術文件、說明改良理由,並與社群溝通取得共識。EIP的兩個主要功能,第一技術規範,第二去中心化的社群參與,幫助整個社群可以透共公開透明的方式共同討論ETH的升級。
EIP 種類
EIP 會標記分類
| 類型 | 作用 | 舉例 |
|---|---|---|
| Standards Track(標準追蹤) | 會對以太坊實現產生影響的提案 | EIP-1559、ERC-20 |
| Meta(元 EIP) | 描述以太坊流程或對流程的改進 | EIP-1、EIP-7607 |
| Informational(資訊型) | 提供參考資訊或設計指南 | 指南、文檔 |
Standards Track
| 類型 | 影響範圍 |
|---|---|
| Core | 涉及以太坊協議本身的基本部分 |
| Networking | 節點之間的溝通協議 |
| Interface | 與ETH互動 |
| ERC | 應用層的智能合約標準和規範 |
什麼是 ERC?ERC 與 EIP 的關係
ERC 全名為「以太坊請求意見稿」(Ethereum Request for Comments),是以太坊上定義智能合約和代幣標準的技術文件。ERC 是 EIP 的一個子類別,專門用於定義應用層的標準與公約 。所有 ERC 都是 EIP,但並非所有 EIP 都是 ERC 。常見的是代幣但不僅限於,身份、簽名和安全、互操作性、合約工具、授權管理 。
EIP 流程簡介
| 流程 | 說明 |
|---|---|
| Draft | 初步想法,在社群討論中 |
| Review | 正式提案,接受社群評審 |
| Last Call | 14 天窗口期,最後機會修改 |
| Final | 提案正式通過 |
| Withdrawn | 提案發起者主動撤銷 |
| Stagnant | 6 個月未更新且未撤銷 |
| Living | 持續更新的特殊提案(如 EIP-1) |
編輯負責審查以太坊改進提案的技術健全性、格式問題,以及修正拼音、文法及程式碼樣式方面的錯誤。EIP編輯會決定 Draft 與 Final。
ERC-165 與 interfaceId
ERC-165 設計的目的用於讓開發者知道某合約是否有特定 interface。
支援 ERC-165 的合約都必須提供一個叫做 supportsInterface 的函數。這個函數可以讓開發者詢問是否有特定 interfaceId,他會回傳 bool 。
interfaceID是所有interface function selector做XOR的結果,長度是4bytes。
supportsInterface 的用途
supportsInterface 是 ERC-165 標準中定義的函數,它的主要用途是讓外部能夠檢查某個智能合約是否支援特定的介面
1 |
|
傳入值是你目標的 interfaceId,他會回傳bool告訴你有沒有你要的 interface。
1 | contract.supportsInterface("interfaceId") |
簡介 3 個 EIP 與 3 個 ERC
EIP
| EIP | 簡介 | 影響範圍 |
|---|---|---|
| EIP-1559 | Gas 費改革,先前有一篇 Gas 的說明,目前的 Gas 規範大部分是在 EIP-1559制定的 | 共識層(core) |
| EIP-3675 | PoW→PoS | 改共識層(core) |
| EIP-695 | 定義了一個新的 JSON-RPC 方法eth_chainId,可以知道是哪條鏈 |
不改共識層(Interface) |
ERC
| ERC | 簡介 |
|---|---|
| ERC-20 | 同質化代幣,最經典的 ERC,大部分常見代幣都是使用這個標準,例如:USDT、USDC |
| ERC-721 | 非同質化代幣,NFT,例如:Bored Ape |
| ERC-1155 | 多代幣,遊戲道具(混合 20 + 721),未來有機會介紹 GameFi |
改變共識層
Core 類別會改變共識層,Networking 不一定,主要用於節點間資料傳輸,另外兩個 Interface 及 ERC 都不會影響共識。