僅供教育參考,不構成投資、法律或安全建議。鏈 ID 相符可降低特定重播風險,但不能驗證 RPC、網路、合約、資產、簽章請求或最終狀態的真實性。
直接答案
在 EVM 生態系統中,鏈 ID 是一個設定整數,用作重播域參數。EIP-155 將其綁定至受保護的傳統交易簽章;類型 2 等類型化交易格式將其編碼在各自的簽章負載中;CHAINID 在 EVM 執行期間公開該值;eth_chainId 則透過 JSON-RPC 回報該值。這些是相互關聯的介面,而不是通用的身分證明。
鏈 ID 不保證在全球範圍內唯一或永久不變。私有網路與爭議性分叉可以重複使用該值,RPC 也可能提供虛假資訊;同一地址在不同鏈上可能具有不同程式碼與狀態。EIP-712 的鏈 ID 域欄位是選用項目,而原始訊息與非 EVM 系統採用不同的重播防護及網路身分規則。因此,正確使用鏈 ID 還必須核驗具體簽章機制、端點、創世狀態或檢查點以及應用程式域。
運作機制
- 首先識別生態系統與識別碼語義:EVM EIP-155 整數、EIP-712 域、CAIP-2 命名空間參照、Cosmos 字串鏈 ID、Solana 創世雜湊或其他機制。切勿跨生態系統比較沒有命名空間的數字。
- 固定可信網路快照:RPC URL、預期鏈 ID 的十進位與十六進位表示、創世狀態或已最終確認的檢查點、鏈頭區塊、用戶端設定、關鍵合約
codeHash及來源時間戳記。錢包中的網路名稱與圖示是不可信的中繼資料。 - 對 EVM 簽章查詢
eth_chainId,並在不損失精確度的前提下解析十六進位 JSON-RPC 數量。將標準化整數與預期設定及錢包供應者狀態比較;不得以net_version取代,並應在建立簽章前拒絕任何不相符情況。 - 重建確切的簽章域。區分不受保護的傳統交易、受 EIP-155 保護的傳統編碼與類型化封裝;對 EIP-712,應核驗域欄位、
verifyingContract、nonce 與截止時間;對中繼意圖或智慧帳戶意圖,應檢查協定內部雜湊。 - 核驗目前鏈上的執行目標:收款方、價值、呼叫資料、代幣地址、合約程式碼或代理實作、帳戶 nonce、費用及模擬狀態。鏈 ID 可以隔離簽章域,但不能證明其中任何物件真實無誤。
- 將 EIP-1193
chainChanged、帳戶變更與斷線視為嚴格狀態邊界。捨棄快取的報價、授權額度、nonce、模擬結果及簽章請求,重新讀取鏈與目標,並且只把經過複核的原始交易廣播至已固定的端點。 - 在目標鏈上核對交易:原始簽章位元組及雜湊、RPC 接收結果、收據狀態、區塊編號與區塊雜湊、nonce 使用情況、狀態變化及所需最終性。監控鏈分裂、ID 變更、L1/L2 域混淆及供應者漂移;遇到無法解釋的差異時應預設拒絕繼續。
算例
- 十六進位與十進位 RPC 門檻。 Base 的十進位鏈 ID 為
8453,eth_chainId將其表示為0x2105:2 * 4096 + 1 * 256 + 0 * 16 + 5 = 8453。以太坊主網為1 = 0x1,Arbitrum One 為42161 = 0xa4b1。如果錢包預期值為8453,收到的卻是0x1,就必須在簽章前中止,而不能信任畫面顯示的網路名稱。 - 受保護傳統交易的 v 值。 對 EIP-155 傳統交易,
v = 35 + 2 * chainId + yParity。鏈 ID 為1時,v 值為37或38;鏈 ID 為61時,v 值為157或158。反向計算時,floor((37 - 35) / 2) = 1。該算法不適用於類型化交易的 y-parity 欄位,也不適用於使用27或28的不受保護傳統簽章。 - 類型化交易與錯誤鏈拒絕。 類型 2 負載綁定
chain_id=8453。假設使用21,000 gas,基礎費為20 gwei,最高優先費為2 gwei,最高費用為30 gwei,則有效燃料價格為min(30, 20 + 2) = 22 gwei,費用為21,000 * 22 gwei = 0.000462 ETH。正確執行規則且設定為 ID1的鏈會因簽章域不符而拒絕該負載,因此拒絕本身不會在該鏈上耗用燃料費;即使在 ID 8453 上,該交易仍可能因其他原因失敗。 - 非 EVM 與雙重識別碼。 Cosmos EVM 部署可以同時採用 Cosmos SDK 字串 ID
local-1與獨立的 EVM 整數 ID262144 = 0x40000。Cosmos 原生簽章使用該字串及其帳戶編號與序號;EVM 交易簽章使用整數域。Solana 則公開創世雜湊,並在交易訊息中使用近期區塊雜湊或持久 nonce,而不是 EIP-155 整數。
風險
- 連接至錯誤的 RPC 端點或錢包目前鏈。
- 信任惡意 RPC 對鏈 ID、狀態或廣播結果的虛假回報。
- 混淆鏈 ID 的十六進位與十進位表示。
- 使用不安全的數值型別解析大型鏈 ID,造成精確度損失。
- 把
net_version當作始終等於eth_chainId。 - 漏掉 EIP-1193
chainChanged事件或網路切換競態。 - 切換網路後繼續使用快取的 nonce、報價、授權或模擬結果。
- 假設鏈 ID 已在全球登錄且絕不衝突。
- 在重複使用同一鏈 ID 的私有網路或分叉之間簽章。
- 未定義分叉更改或保留 ID 時的處理方式。
- 接受沒有 EIP-155 域的不受保護傳統交易。
- 把傳統交易的
v公式用於類型化交易或其他簽章。 - 假設原始訊息或
personal_sign請求包含鏈域。 - 在 EIP-712 域中遺漏或錯誤編碼鏈 ID。
- 遺漏
verifyingContract、應用程式 nonce、截止時間或用途。 - 僅憑合約地址相同就信任它,而不比較程式碼與狀態。
- 混淆 L1、L2、橋接來源端與目的端簽章域。
- 忽略中繼意圖、許可或智慧帳戶操作的內部域。
- 把錢包新增網路中繼資料、區塊瀏覽器標籤或圖示當作網路認證。
- 把 EVM 語義套用到 Cosmos、Solana、Bitcoin 或其他協定。
常見迷思
- 鏈 ID 是全球唯一且永久有效的官方登錄編號。
- 正確的鏈 ID 可以證明 RPC 端點、網路與合約真實可信。
- 每個以太坊簽章都會自動承諾鏈 ID。
- 不同鏈 ID 可以防止每一種簽章訊息與應用程式意圖被重播。
- 每條區塊鏈都使用 EIP-155 式整數鏈 ID。
相關主題
來源
- EIP-155: Simple replay attack protection - Ethereum Improvement Proposals(查閱日期:2026-08-12)
- EIP-1559: Fee market change for ETH 1.0 chain - Ethereum Improvement Proposals(查閱日期:2026-08-12)
- EIP-1344: ChainID opcode - Ethereum Improvement Proposals(查閱日期:2026-08-12)
- EIP-1193: Ethereum Provider JavaScript API - Ethereum Improvement Proposals(查閱日期:2026-08-12)
- EIP-3085: wallet_addEthereumChain RPC Method - Ethereum Improvement Proposals(查閱日期:2026-08-12)
- EIP-712: Typed structured data hashing and signing - Ethereum Improvement Proposals(查閱日期:2026-08-12)
- CAIP-2: Blockchain ID Specification - Chain Agnostic Improvement Proposals(查閱日期:2026-08-12)
- getGenesisHash RPC Method - Solana Documentation(查閱日期:2026-08-12)