Solo a scopo educativo; non costituisce consulenza né raccomandazione d’investimento. Gli investimenti possono comportare perdite.
Risposta diretta
Nell’ecosistema EVM, il chain ID è un intero configurato usato come parametro del dominio anti-replay. EIP-155 lo vincola alle firme protette delle transazioni legacy; i formati tipizzati, come il tipo 2, lo codificano nel payload firmato; CHAINID lo espone durante l’esecuzione EVM; eth_chainId lo restituisce tramite JSON-RPC. Sono interfacce correlate, non un certificato universale d’identità.
Il valore non è garantito unico a livello globale né permanente. Reti private e fork controversi possono riutilizzarlo, un RPC può mentire e lo stesso indirizzo può contenere codice e stato differenti su chain diverse. EIP-712 prevede un campo chain ID opzionale nel dominio, mentre messaggi grezzi e sistemi non EVM hanno regole diverse. Servono quindi schema di firma, endpoint, genesis o checkpoint e dominio applicativo esatti.
Come funziona
- Identificare ecosistema e semantica: intero EIP-155 EVM, dominio EIP-712, riferimento con namespace CAIP-2, chain ID stringa Cosmos, genesis hash Solana o altro schema. Non confrontare numeri non qualificati tra ecosistemi.
- Fissare uno snapshot affidabile: URL RPC, chain ID previsto in decimale ed esadecimale, genesis o checkpoint finalizzato, head block, configurazione client,
codeHashdei contratti chiave e data della fonte. Nome e icona della rete nel wallet non sono affidabili. - Interrogare
eth_chainIdper firmare su EVM e analizzare la quantità esadecimale JSON-RPC senza perdita di precisione. Confrontare l’intero normalizzato con configurazione e stato del provider; non sostituirenet_version; rifiutare differenze prima della firma. - Ricostruire il dominio di firma esatto. Distinguere transazioni legacy non protette, legacy EIP-155 e envelope tipizzati; per EIP-712 verificare campi del dominio,
verifyingContract, nonce e deadline; per intent inoltrati o smart account controllare l’hash interno del protocollo. - Verificare sulla chain attiva destinatario, valore, calldata, indirizzo token, codice o implementazione proxy, nonce, commissioni e stato simulato. Il chain ID separa un dominio ma non autentica questi oggetti.
- Trattare
chainChangedEIP-1193, cambi account e disconnessioni come limiti rigidi. Eliminare quote, allowance, nonce, simulazioni e richieste di firma in cache, rileggere chain e target e trasmettere solo la transazione grezza verificata all’endpoint fissato. - Riconciliare sulla chain prevista bytes firmati e hash, accettazione RPC, stato receipt, numero e hash del blocco, consumo nonce, cambi di stato e finalità. Monitorare fork, cambi ID, confusione L1/L2 e deriva del provider; bloccare su differenze inspiegate.
Esempi svolti
- Controllo RPC esadecimale e decimale. Base ha chain ID decimale
8453, restituito daeth_chainIdcome0x2105:2 * 4096 + 1 * 256 + 0 * 16 + 5 = 8453. Ethereum mainnet è1 = 0x1, Arbitrum One42161 = 0xa4b1. Se il wallet attende8453ma riceve0x1, deve interrompere prima della firma. - v di transazione legacy protetta. Per EIP-155,
v = 35 + 2 * chainId + yParity. Con ID1:37o38; con ID61:157o158. Inversamente,floor((37 - 35) / 2) = 1. La formula non vale per y-parity delle transazioni tipizzate né per firme legacy non protette con27o28. - Transazione tipizzata e rifiuto sulla chain errata. Un payload tipo 2 vincola
chain_id=8453. Con21,000 gas, base fee20 gwei, priority fee massimo2 gweie fee massimo30 gwei, il prezzo effettivo èmin(30, 20 + 2) = 22 gweie la commissione21,000 * 22 gwei = 0.000462 ETH. Una chain corretta con ID1lo rifiuta per dominio errato senza consumare gas on-chain; sull’ID 8453 può fallire per altri motivi. - Identificatori doppi e non EVM. Cosmos EVM può usare ID stringa Cosmos SDK
local-1e ID intero EVM indipendente262144 = 0x40000. La firma Cosmos-native usa stringa, numero account e sequence; la firma EVM usa l’intero. Solana usa genesis hash e recent blockhash o durable nonce, non un intero EIP-155.
Rischi
- RPC o chain attiva errati.
- RPC malevolo su ID, stato o broadcast.
- Confusione esadecimale/decimale.
- Perdita di precisione numerica.
net_versionscambiato pereth_chainId.- Evento
chainChangedo race ignorati. - Riutilizzo di nonce, quote, approval o simulazioni.
- Presunta unicità globale senza collisioni.
- Firma su reti private o fork con stesso ID.
- Comportamento del fork non definito.
- Transazione legacy non protetta.
- Formula legacy
vapplicata altrove. - Dominio presunto in messaggi grezzi o
personal_sign. - Chain ID EIP-712 omesso o errato.
verifyingContract, nonce, deadline o scopo omessi.- Indirizzi uguali senza confronto di codice e stato.
- Domini L1, L2, origine e destinazione confusi.
- Dominio interno di intent, permit o smart account ignorato.
- Metadati, explorer o icone usati come autenticazione.
- Semantica EVM trasferita ad altri protocolli.
Errori comuni
- Chain ID è un numero ufficiale globale, unico e permanente.
- Chain ID corretto autentica RPC, rete e contratti.
- Ogni firma Ethereum include automaticamente il chain ID.
- ID diversi impediscono il replay di ogni messaggio.
- Ogni blockchain usa un intero EIP-155.
Argomenti correlati
Fonti
- EIP-155: Simple replay attack protection - Ethereum Improvement Proposals (consultato: 2026-08-12)
- EIP-1559: Fee market change for ETH 1.0 chain - Ethereum Improvement Proposals (consultato: 2026-08-12)
- EIP-1344: ChainID opcode - Ethereum Improvement Proposals (consultato: 2026-08-12)
- EIP-1193: Ethereum Provider JavaScript API - Ethereum Improvement Proposals (consultato: 2026-08-12)
- EIP-3085: wallet_addEthereumChain RPC Method - Ethereum Improvement Proposals (consultato: 2026-08-12)
- EIP-712: Typed structured data hashing and signing - Ethereum Improvement Proposals (consultato: 2026-08-12)
- CAIP-2: Blockchain ID Specification - Chain Agnostic Improvement Proposals (consultato: 2026-08-12)
- getGenesisHash RPC Method - Solana Documentation (consultato: 2026-08-12)