ERC-7950 체인 ID 붙인 트랜잭션 해시 표기 (Encode chain id with transaction hash)
Final · 기타 · 2025-05-22 작성
체인 ID와 트랜잭션 해시를 하나의 문자열로 묶어 쓰는 표기법입니다. 해시만 봐도 어느 체인의 거래인지 바로 알 수 있게 합니다.
왜 필요한가
트랜잭션 해시(transaction hash)는 블록체인에 기록된 거래 하나를 가리키는 고유한 값이지만 해시만으로는 그 거래가 어느 체인에서 일어났는지 알 수 없습니다. 이더리움 생태계에는 번호(체인 ID)로 구분되는 여러 체인이 있어서 해시로 거래를 찾으려면 항상 어느 체인인지 따로 알아내야 합니다. 체인 내부의 트랜잭션 객체에는 체인 ID가 들어 있지만 거래를 찾는 용도로 쓰기에는 불필요한 데이터가 너무 많습니다. 이 표준은 체인 ID와 해시를 한 문자열에 함께 넣어, 문자열 하나만으로 올바른 체인을 쉽게 찾을 수 있게 합니다. 예를 들어 이런 문자열을 받아 알맞은 블록 탐색기(blockchain explorer)로 연결해 주는 포워더 서비스에 쓸 수 있습니다.
심층 설명
문자열 구성과 구문
인코딩된 문자열은 세 요소로 이루어집니다. 첫째는 체인 ID(chainId), 둘째는 트랜잭션 해시(txHash), 셋째는 타입 식별자 역할을 하는 정적 문자열 tx입니다. 구문은 chainId:txHash:tx입니다. 트랜잭션 해시는 반드시(MUST) 0x 접두사를 포함해야 합니다. 원문의 예시로, 체인 ID 1에서 발생한 해시 0xc55e2b90168af6972193c1f86fa4d7d7b31a29c156665d15b9cd48618b5177ef 거래는 1:0xc55e2b90168af6972193c1f86fa4d7d7b31a29c156665d15b9cd48618b5177ef:tx로 표기합니다.
체인 ID는 EIP-155 기준
문자열에 쓰는 체인 ID는 반드시(MUST) EIP-155와 그 EIP에 명시된 체인 ID 저장소(repository)를 기준으로 해야 합니다. EIP-155는 거래 서명에 체인 ID를 넣어 체인마다 거래를 구분하게 한 표준으로, 이 표준은 그 체인 ID 체계를 그대로 가져와 씁니다. requires 필드에도 155가 명시되어 있습니다.
대소문자 구분 없음
문자열의 모든 문자는 대소문자를 구분하지 않습니다(case-insensitive). 따라서 해시 부분을 대문자로 쓰든 소문자로 쓰든 같은 거래를 가리키는 것으로 해석해야 합니다.
요소 순서와 tx 접미사를 둔 이유
체인 ID는 이 표준으로 질의를 라우팅할 때 가장 중요한 정보이므로 문자열의 첫 번째 요소로 둡니다. 트랜잭션 해시는 두 번째로 중요한 요소라 그다음에 옵니다. 끝의 tx 접미사는 예를 들어 주소와 구분하기 위한 것입니다. tx가 없으면 인코딩된 문자열이 주소를 가리키는지, 트랜잭션 해시를 가리키는지, 아니면 다른 무엇인지 알 수 없기 때문입니다.
기존 형식 대신 새 문자열을 쓰는 이유
체인 ID는 블록체인 내부의 트랜잭션 객체 같은 일부 객체 형식에 이미 포함되어 있습니다. 하지만 그런 객체에는 거래의 체인을 찾는 목적에는 불필요한 데이터가 많이 들어 있습니다. 이 표준은 체인 ID, 해시, 타입 식별자만 담은 가벼운 문자열 하나로 그 목적을 해결합니다. 이 제안은 Final 상태로 확정된 표준입니다.
쓸 때 주의할 점
- 직접적인 보안 위험 없음: 이 EIP 자체는 직접적인 보안 위험을 만들지 않습니다. 이 표준을 채택할지, 채택한다면 어떻게 쓸지는 지갑 개발자나 블록 탐색기 같은 외부 서비스 제공자가 스스로 결정합니다.