ERC-6735 EVM 체인 간 주소 별칭 (L2 Aliasing of EVM-based Addresses)

Review · 기타 · 2022-03-20 작성

이더리움 계열 체인(L1, L2, 사이드체인) 사이에서 같은 자산이나 계정의 주소를 규칙에 따라 일관되게 식별하고 변환하는 주소 별칭(address aliasing) 방법을 정의합니다.

왜 필요한가

하나의 토큰이나 계정이 이더리움 메인넷과 여러 L2(메인넷 위에서 거래를 대신 처리하는 확장 네트워크), 사이드체인에 동시에 존재하는 경우가 많습니다. 그런데 체인 사이에 메시지를 주고받을 때 상대 체인의 어떤 주소를 가리키는지 정하는 표준 방법이 없었습니다. 원문은 이를 두고 인터넷 서비스 사업자마다 제각각 IP 주소 체계를 정의하는 상황에 비유합니다. 표준이 없으면 체인 A에서 보낸 메시지가 체인 B의 자산이나 외부 소유 계정(EOA, 사람이 개인키로 직접 관리하는 계정)을 명확하게 지목하기 어렵고, 받은 쪽에서도 그 자산이 원래 어느 체인에서 출발했는지 확정적으로 검증하기 어렵습니다. 이 표준은 원본 체인의 주소에 각 체인 고유의 오프셋을 규칙대로 붙여 별칭을 만들게 해서 체인 간 상호운용에 필요한 주소 식별을 하나의 방식으로 통일하려고 합니다.

심층 설명

별칭의 기본 구성 규칙 [R1]

체인 A와 체인 B 사이에서 쓰는 주소 별칭은 반드시 addressAlias (Chain A) = offsetAlias (for Chain A) relativeAddress (on Chain A) offsetAlias (for Chain A) 형태로 만듭니다. 즉 체인 A의 오프셋 별칭이 상대 주소를 앞뒤로 감싸는 구조입니다. 이렇게 만든 별칭은 기존 오픈소스 파서로 분해해서 구성에 쓰인 relativeAddress와 비교하는 방식으로 적합성을 시험할 수 있습니다.

오프셋 별칭과 체인 ID 규칙 [R2]~[R5]

체인의 오프셋 별칭은 반드시 0xchainId00000000000000000000000000000000chainId 형태여야 합니다. 오프셋에 쓰는 chainId는 0이면 안 되고 8바이트여야 하며 16자리가 안 되면 0으로 채워 16자리로 맞춥니다. 예를 들어 Polygon PoS의 chainId는 137이고 그 오프셋 별칭은 0x0000000000000137000000000000000000000000000000000000000000000137입니다. EVM 계열 chainId 목록은 chainlist.org에서 확인한다고 원문은 안내합니다.

이더리움 메인넷의 고정 오프셋 [R6]

EVM 계열 체인의 기준점인 이더리움 메인넷의 오프셋 별칭은 0x1111000000000000000000000000000000001111로 고정합니다. 기존 L2 솔루션들이 이미 이 오프셋을 채택하고 있기 때문입니다. 원문은 USDC 자산의 별칭 예시로 addressAlias = 0x1111A0b86991c6218b36c1d19D4a2e9Eb0cE3606eB481111을 제시합니다.

상대 주소의 중첩 구조 [R7]

relativeAddress는 원본 체인의 스마트 컨트랙트나 EOA 주소이거나, 다른 체인에서 이미 만들어진 relativeAddress 자체일 수 있습니다. 즉 별칭이 중첩됩니다. 원문 예시로 래핑된 USDC의 상대 주소는 0x1111A0b86991c6218b36c1d19D4a2e9Eb0cE3606eB481111이고, Polygon 위 래핑 USDC의 상대 주소는 0x00000000000001371111A0b86991c6218b36c1d19D4a2e9Eb0cE3606eB4811110000000000000137입니다. 이더리움의 래핑 USDC를 Arbitrum에서 가리키는 별칭 예시는 0x00000000000421611111A0b86991c6218b36c1d19D4a2e9Eb0cE3606eB4811110000000000042161입니다.

오프셋 순서 규칙 [R8]

별칭 안의 오프셋들은 뿌리 체인(root chain)의 오프셋이 상대 주소를 가장 안쪽에서 감싸고 자산이 거쳐 간 체인들의 오프셋이 그 순서대로 바깥에 붙어야 합니다. 체인 A에서 B, C 순서로 브리지된 자산이라면 chainId(C) chainId(B) chainId(A) relativeAddress chainId(A) chainId(B) chainId(C)가 유효하고, 반대 순서는 무효입니다. 다만 주어진 순서가 증명 가능하게 올바른지에 대한 증명은 이 문서의 범위 밖이라고 밝힙니다.

적합성 레벨과 시험 절차

구현이 표준을 따르는지 보여 주는 적합성 레벨을 셋으로 나눕니다. Level 1은 모든 MUST 요구사항, Level 2는 MUST와 SHOULD, Level 3은 조건부 요구사항까지 포함한 전부를 시험 보고서로 입증하는 수준입니다. 적합성을 주장할 때는 각 요구사항에 대해 수행한 시험 절차를 설명해야 하며(D1은 SHOULD, Level 2 이상 주장은 R9에 따라 MUST), 모든 요구사항에 대한 표준화된 테스트 픽스처는 다음 버전에서 공개할 예정이라고 밝힙니다.

적용 범위와 제안 상태

이 표준은 EVM 기반 L1, L2, 사이드체인 사이의 별칭만 다룹니다. 비EVM 체인과 EVM 체인 사이, 비EVM 체인끼리의 별칭은 범위 밖입니다. 설계는 이더리움에서 Arbitrum, Optimism 같은 EVM 기반 L2로 이미 쓰이던 별칭 방식을 일반화한 것입니다. 또한 이 제안은 OASIS가 관리하는 EEA 커뮤니티 프로젝트 L2 워킹그룹이 작성했고 현재 Review 상태이므로, 내용이 아직 바뀔 수 있는 검토 중인 제안입니다.

쓸 때 주의할 점

ERC 원문 · ← ERCs