跳到正文

鏈 ID

以驗證為優先的指南,涵蓋 EVM 鏈 ID、EIP-155 傳統交易重播域、類型化交易、CHAINID、錢包與 RPC 核驗、EIP-712 域及非 EVM 網路識別碼。

更新於

僅供教育參考,不構成投資、法律或安全建議。鏈 ID 相符可降低特定重播風險,但不能驗證 RPC、網路、合約、資產、簽章請求或最終狀態的真實性。

直接答案

在 EVM 生態系統中,鏈 ID 是一個設定整數,用作重播域參數。EIP-155 將其綁定至受保護的傳統交易簽章;類型 2 等類型化交易格式將其編碼在各自的簽章負載中;CHAINID 在 EVM 執行期間公開該值;eth_chainId 則透過 JSON-RPC 回報該值。這些是相互關聯的介面,而不是通用的身分證明。

鏈 ID 不保證在全球範圍內唯一或永久不變。私有網路與爭議性分叉可以重複使用該值,RPC 也可能提供虛假資訊;同一地址在不同鏈上可能具有不同程式碼與狀態。EIP-712 的鏈 ID 域欄位是選用項目,而原始訊息與非 EVM 系統採用不同的重播防護及網路身分規則。因此,正確使用鏈 ID 還必須核驗具體簽章機制、端點、創世狀態或檢查點以及應用程式域。

運作機制

  1. 首先識別生態系統與識別碼語義:EVM EIP-155 整數、EIP-712 域、CAIP-2 命名空間參照、Cosmos 字串鏈 ID、Solana 創世雜湊或其他機制。切勿跨生態系統比較沒有命名空間的數字。
  2. 固定可信網路快照:RPC URL、預期鏈 ID 的十進位與十六進位表示、創世狀態或已最終確認的檢查點、鏈頭區塊、用戶端設定、關鍵合約 codeHash 及來源時間戳記。錢包中的網路名稱與圖示是不可信的中繼資料。
  3. 對 EVM 簽章查詢 eth_chainId,並在不損失精確度的前提下解析十六進位 JSON-RPC 數量。將標準化整數與預期設定及錢包供應者狀態比較;不得以 net_version 取代,並應在建立簽章前拒絕任何不相符情況。
  4. 重建確切的簽章域。區分不受保護的傳統交易、受 EIP-155 保護的傳統編碼與類型化封裝;對 EIP-712,應核驗域欄位、verifyingContract、nonce 與截止時間;對中繼意圖或智慧帳戶意圖,應檢查協定內部雜湊。
  5. 核驗目前鏈上的執行目標:收款方、價值、呼叫資料、代幣地址、合約程式碼或代理實作、帳戶 nonce、費用及模擬狀態。鏈 ID 可以隔離簽章域,但不能證明其中任何物件真實無誤。
  6. 將 EIP-1193 chainChanged、帳戶變更與斷線視為嚴格狀態邊界。捨棄快取的報價、授權額度、nonce、模擬結果及簽章請求,重新讀取鏈與目標,並且只把經過複核的原始交易廣播至已固定的端點。
  7. 在目標鏈上核對交易:原始簽章位元組及雜湊、RPC 接收結果、收據狀態、區塊編號與區塊雜湊、nonce 使用情況、狀態變化及所需最終性。監控鏈分裂、ID 變更、L1/L2 域混淆及供應者漂移;遇到無法解釋的差異時應預設拒絕繼續。

算例

  • 十六進位與十進位 RPC 門檻。 Base 的十進位鏈 ID 為 8453eth_chainId 將其表示為 0x21052 * 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 值為 3738;鏈 ID 為 61 時,v 值為 157158。反向計算時,floor((37 - 35) / 2) = 1。該算法不適用於類型化交易的 y-parity 欄位,也不適用於使用 2728 的不受保護傳統簽章。
  • 類型化交易與錯誤鏈拒絕。 類型 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。正確執行規則且設定為 ID 1 的鏈會因簽章域不符而拒絕該負載,因此拒絕本身不會在該鏈上耗用燃料費;即使在 ID 8453 上,該交易仍可能因其他原因失敗。
  • 非 EVM 與雙重識別碼。 Cosmos EVM 部署可以同時採用 Cosmos SDK 字串 ID local-1 與獨立的 EVM 整數 ID 262144 = 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。

相關主題

來源

導覽

搜尋知識庫...