EIP and ERC

Yan Ru Su

什麼是 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
2

function supportsInterface(bytes4 interfaceId) external view returns (bool);

傳入值是你目標的 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 都不會影響共識。