교육 목적의 자료이며 투자, 법률 또는 보안 자문이 아닙니다. 체인 ID가 일치하면 명시된 재실행 위험을 줄일 수 있지만 RPC, 네트워크, 컨트랙트, 자산, 서명 요청 또는 최종 상태의 진위를 입증하지는 않습니다.
직접 답변
EVM 생태계에서 체인 ID는 재실행 도메인 매개변수로 설정되는 정수입니다. EIP-155는 보호된 레거시 트랜잭션 서명에 이 값을 결합합니다. 타입 2와 같은 형식화 트랜잭션은 자체 서명 대상 페이로드에 이 값을 인코딩합니다. CHAINID는 EVM 실행 중 이 값을 노출하고 eth_chainId는 JSON-RPC를 통해 이 값을 반환합니다. 이들은 서로 연관된 인터페이스이지 보편적인 신원 인증서가 아닙니다.
이 값은 전 세계에서 유일하거나 영구적이라고 보장되지 않습니다. 사설 네트워크와 논쟁적 포크는 값을 재사용할 수 있고 RPC가 거짓 정보를 반환할 수도 있습니다. 동일한 주소에도 체인마다 다른 코드와 상태가 존재할 수 있습니다. EIP-712의 체인 ID 도메인 필드는 선택 사항이며, 원시 메시지와 비EVM 시스템에는 서로 다른 재실행 및 네트워크 식별 규칙이 있습니다. 따라서 정확히 사용하려면 구체적인 서명 방식, 엔드포인트, 제네시스 또는 체크포인트와 애플리케이션 도메인을 확인해야 합니다.
작동 원리
- 먼저 생태계와 식별자 의미를 파악합니다. 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와 기한을 확인하고, 릴레이 방식 또는 스마트 계정 인텐트에서는 내부 프로토콜 해시를 살핍니다. - 활성 체인에서 실행 대상을 검증합니다. 수신자, 가치, calldata, 토큰 주소, 컨트랙트 코드 또는 프록시 구현체, 계정 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입니다. Ethereum 메인넷은1 = 0x1, Arbitrum One은42161 = 0xa4b1입니다. 지갑이8453을 예상했는데0x1을 받았다면 표시된 네트워크 이름을 믿지 말고 서명 전에 중단해야 합니다. - 보호된 레거시 트랜잭션의 v. EIP-155 레거시 트랜잭션에서
v = 35 + 2 * chainId + yParity입니다. 체인 ID가1이면 값은37또는38, 체인 ID가61이면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입니다. 규칙을 올바르게 시행하며 ID가1로 설정된 체인은 서명 도메인 불일치로 이 페이로드를 거부하므로, 거부 자체에는 해당 체인의 온체인 가스비가 들지 않습니다. ID 8453에서도 다른 이유로 실패할 수 있습니다. - 비EVM과 이중 식별자. Cosmos EVM 배포는 Cosmos SDK 문자열 ID
local-1과 독립적인 EVM 정수 ID262144 = 0x40000을 함께 사용할 수 있습니다. Cosmos 네이티브 서명은 문자열과 계정 번호 및 sequence를 사용하고, EVM 트랜잭션 서명은 정수 도메인을 사용합니다. Solana는 제네시스 해시를 노출하고 EIP-155 정수 대신 트랜잭션 메시지의 최근 블록해시 또는 영구 nonce를 사용합니다.
위험
- 잘못된 RPC 엔드포인트 또는 지갑의 활성 체인에 연결합니다.
- 체인 ID, 상태 또는 전송 결과를 거짓으로 보고하는 악성 RPC를 신뢰합니다.
- 체인 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, 브리지 원천 및 목적지 서명 도메인을 혼동합니다.
- 릴레이 인텐트, permit 또는 스마트 계정 작업의 내부 도메인을 무시합니다.
- 지갑 네트워크 추가 메타데이터, 탐색기 라벨 또는 아이콘을 네트워크 인증으로 간주합니다.
- EVM 의미론을 Cosmos, Solana, Bitcoin 또는 다른 프로토콜에 그대로 적용합니다.
흔한 오해
- 체인 ID는 전 세계에서 유일하고 영구적인 공식 등록 번호입니다.
- 올바른 체인 ID는 RPC 엔드포인트, 네트워크 및 컨트랙트의 진위를 입증합니다.
- 모든 Ethereum 서명은 자동으로 체인 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)