하나의 주소, 여러 체인: EVM 네트워크와 '잘못된 네트워크로 전송'

·5분 읽기·작성자: SSP Editorial Team
SSP Academy 표지: 하나의 주소, 여러 EVM 체인

하나의 주소, 여러 체인: EVM 네트워크와 '잘못된 네트워크로 전송'

일반적인 이더리움 지갑에서 주소를 복사한 뒤 Polygon으로 전환해도 주소는 바뀌지 않습니다. 같은 0x… 문자열이 BNB Smart Chain, Avalanche, Base에서도 그대로 쓰입니다. 편리하지만, 바로 이 점이 한 부류의 실수를 낳습니다. '잘못된 네트워크로 전송된' 자금입니다.

그 자금을 되찾을 수 있는지는 한 가지 질문에 달려 있습니다. 그 주소가 키로만 제어되는 일반 계정인가, 아니면 스마트 컨트랙트인가? 그 이유와 SSP에 주는 의미를 살펴보겠습니다.

EVM 주소가 어디서나 똑같아 보이는 이유

이더리움, Polygon, BNB Smart Chain, Avalanche C-체인, Base, Arbitrum 등 많은 네트워크가 이더리움 가상 머신을 실행하며 같은 주소 형식을 공유합니다. 20바이트를 0x 뒤에 16진수 40자로 적은 형식입니다.

일반 계정, 즉 외부 소유 계정(EOA)의 주소는 공개 키만으로 도출됩니다. 네트워크는 전혀 관여하지 않습니다. 같은 개인 키는 모든 EVM 체인에서 같은 주소를 만들어 내고, 그 키로 모든 체인에서 거래에 서명할 수 있습니다.

그래서 주소만으로는 결제가 어느 네트워크용인지 알 수 없습니다. 주소는 누구에게 보내는지를 나타내고, 네트워크는 전송할 때 따로 고르는 것입니다.

'잘못된 네트워크로 전송'이란

Polygon에서 USDC를 보내 달라고 했는데, 보내는 사람이 거래소에서 Base를 선택해 출금했다고 해 봅시다. 거래는 성공합니다. 다만 Base에서입니다. Polygon을 보고 있는 지갑에는 아무것도 표시되지 않습니다.

자금이 허공에 떠 있는 것은 아닙니다. Base에 있는 내 주소에 들어가 있습니다. 문제는 그 주소를 Base에서 내가 제어할 수 있느냐입니다.

주소 형식과 전송이 실패하는 이유에서는 전송 실패의 더 넓은 유형을 다룹니다. 이번 경우는 주소 형식을 공유하는 네트워크에서만 생기는 문제입니다.

EOA: 대개 되찾을 수 있음

주소가 일반 EOA라면 답은 거의 언제나 '예'입니다. 내 개인 키는 모든 EVM 체인에서 그 주소를 제어합니다. 같은 키를 가진 지갑에 해당 네트워크를 추가하면 잔액이 나타납니다. 자금을 옮기려면 먼저 수수료(가스)로 쓸 그 네트워크의 기본 코인이 조금 필요합니다.

주요 예외는 거래소 입금 주소입니다. 키를 거래소가 갖고 있으므로 되찾을 수 있는지는 거래소에 달려 있습니다.

스마트 컨트랙트 지갑: 컨트랙트에 달려 있음

스마트 컨트랙트 지갑은 다릅니다. 주소는 컨트랙트의 것이고, 컨트랙트는 배포된 체인에만 존재합니다. 내 키는 주소 자체가 아니라, 컨트랙트가 자금을 옮기기 전에 확인하는 대상입니다.

ERC-4337 계정을 포함한 많은 스마트 지갑은 CREATE2로 계산하는 반사실적(counterfactual) 주소를 사용합니다. 주소는 팩토리 컨트랙트의 주소, 솔트, 계정 초기 설정 데이터로 미리 정해지므로, 그 체인에 컨트랙트가 배포되기 전에도 자금을 받을 수 있습니다.

자금이 다른 체인에 도착하면 세 가지 경우가 있습니다.

  • 같은 팩토리가 그 체인에 있음. 같은 컨트랙트를 같은 주소에 배포하고 자금을 옮길 수 있습니다. 단, 지갑이 그 체인을 지원해야 합니다.
  • 팩토리가 그 체인에 없음. 누군가 똑같은 팩토리를 정확히 같은 주소에 배포하기 전까지는 그 주소에 아무것도 배포할 수 없습니다. 이는 항상 가능한 일이 아니며, 절대 당연하게 여겨서는 안 됩니다.
  • 지갑이 그 체인을 지원하지 않음. 컨트랙트가 존재할 수 있더라도, 그 체인에서 컨트랙트를 위해 서명할 수 있는 소프트웨어가 필요합니다.

EOA와 스마트 계정의 차이에서 더 넓은 장단점을 다룹니다.

SSP에서는 어떻게 작동하나

SSP의 EVM 금고는 SSP Wallet과 SSP Key가 모두 승인해야 하는 ERC-4337 스마트 계정입니다. 계정 추상화 방식의 EVM 멀티시그에서 설계를 설명합니다. 여기서는 코드에서 확인한 몇 가지 사실이 중요합니다.

  • 주소는 반사실적 주소입니다. SSP Wallet은 팩토리 주소, 솔트, 두 개의 키로 CREATE2를 사용해 금고 주소를 오프라인에서 계산합니다. 네트워크 식별자는 이 계산에 들어가지 않습니다.
  • 지원하는 모든 체인에 같은 팩토리가 있습니다. 표준 결정론적 배포 프록시를 사용해 이더리움, Polygon, BNB Smart Chain, Avalanche, Base(그리고 Sepolia, Amoy 테스트넷)의 동일한 주소에 배포되었습니다.
  • 하지만 네트워크마다 다른 키를 씁니다. SSP는 네트워크마다 서로 다른 코인 유형 번호로 키를 도출합니다. 그래서 Polygon의 SSP 금고 주소는 이더리움의 금고 주소와 같지 않습니다. 받기 주소는 항상 실제로 사용할 네트워크에서 복사하세요.

누군가 잘못된 네트워크로 내 SSP 주소에 보내면 어떻게 될까요?

  • SSP가 지원하는 다른 EVM 체인. 예를 들어 Polygon에서 POL이 내 이더리움 금고 주소로 전송된 경우입니다. Polygon에서 그 주소는 같은 팩토리와 내가 가진 키로 만들어지는 계정에 해당합니다. 하지만 SSP Wallet은 Polygon 금고만 추적하므로 이 자금은 표시되지 않습니다. 원칙적으로는 되찾을 수 있지만, SSP에는 이를 위한 내장 도구가 없습니다.
  • SSP가 지원하지 않는 체인, 예를 들어 Arbitrum이나 Optimism. SSP의 팩토리는 그곳에 배포되어 있지 않고, SSP는 그곳에서 서명할 수 없습니다. 이 자금은 잃었을 수 있다고 보셔야 합니다. 되찾으려면 같은 컨트랙트를 그 체인의 같은 주소에 배포해야 하는데, 이는 기대할 수 있는 일이 아닙니다.

예방하는 습관

  • 주소보다 네트워크를 먼저 정하고, 말로 분명히 하세요. 'Base의 USDC'처럼요.
  • 지갑을 해당 네트워크로 맞춘 상태에서 주소를 복사하세요. SSP에서는 먼저 체인을 전환한 다음 '받기'를 여세요.
  • 거래소에서 출금할 때는 주소만큼 네트워크 선택 항목도 꼼꼼히 확인하세요.
  • 새로운 네트워크나 상대방이라면 먼저 소액으로 테스트 전송을 하세요.

Polygon, Base 및 기타 EVM 체인에서 SSP 사용하기에서 SSP의 네트워크 전환 방법을 안내합니다.

솔직한 요약

EVM 체인은 주소 형식을 공유하므로 하나의 문자열이 여러 네트워크에서 유효할 수 있습니다. 일반 EOA라면 잘못된 네트워크로 보낸 자금도 대개 되찾을 수 있습니다. 같은 키가 어디서나 그 주소를 제어하기 때문입니다.

스마트 컨트랙트 지갑은 컨트랙트가 배포되어 있거나 배포될 수 있고, 지갑이 서명할 수 있는 곳에서만 작동합니다. SSP 금고는 지원하는 네트워크마다 별도의 주소를 가진 스마트 계정입니다. 지원하는 네트워크 중 잘못된 곳으로 SSP 주소에 보낸 자금은 표시되지 않으며, SSP에는 복구 도구가 없습니다. SSP가 지원하지 않는 네트워크로 보낸 자금은 잃을 수 있습니다. 매번 네트워크를 확인하세요.

이 글 공유하기

관련 글