주소 하나, 모든 체인 — 그리고 거기 놓인 함정
EVM 주소는 키 하나에서만 나옵니다. 공개키를 가져와 해시하고 마지막 20바이트를 남긴 뒤 앞에 0x 를 붙입니다. 그 계산 어디에도 네트워크는 끼어들지 않습니다. 그래서 같은 주소가 Ethereum 에도, Base 에도, Polygon 에도, BNB Chain 에도 존재합니다. 지금 있는 모든 EVM 체인과 앞으로 생길 모든 체인에서요. 먼저 만들거나 입금하거나 등록할 필요가 없습니다. 그냥 존재합니다.
이는 진짜 편의이자 진짜 위험입니다. 주소가 어디서나 유효하므로, 맞는 주소로 잘못된 체인에서 보내면 반송되지도, 경고하지도, 실패하지도 않습니다. 성공합니다 — 다른 곳에서.
여기서 대부분의 안내는 돈이 영영 사라졌다고 말하지만, 이 경우 그것은 그냥 사실이 아닙니다. 키를 가진 사람은 그 주소를 모든 EVM 체인에서 통제하므로, 잘못된 EVM 네트워크로 보낸 자금은 주소 주인이 여전히 닿을 수 있습니다. 파괴된 것이 아니라 다른 체인에 놓여 있을 뿐입니다. 잃은 것은 주문이지 돈이 아닙니다. 청구서는 한 네트워크를 지켜보고 있었는데 결제는 다른 네트워크에 도착했으니, 아무것도 기록되지 않고 양쪽이 손으로 정리해야 합니다.
- 정말로 되찾을 수 없는 경우는 따로 있고, 구별해 둘 가치가 있습니다. EVM 자산을 EVM 이 아닌 체인으로 — Bitcoin, Tron, Solana 주소로 — 보내는 것은 되돌릴 수 없습니다. EVM 주소를 통제하는 키가 거기서는 아무것도 통제하지 못하기 때문입니다. 토큰을 다시 꺼낼 방법이 없는 컨트랙트로 보낸 경우도 마찬가지입니다.
- 다만 프로토콜은 이웃한 위험 하나로부터는 지켜 줍니다. 모든 EVM 체인에는 고유한 체인 아이디가 있고 그것이 서명에 섞여 들어가므로, 한 네트워크용으로 서명된 거래를 누군가 복사해 다른 네트워크에서 되풀이할 수 없습니다. 주소는 공유되는데 서명은 체인에 묶여 있다는 것 — 바로 그 비대칭이 이 실수를 이토록 쉽게 만듭니다.
가스: 무엇의 대가이고, 누가 내는가
모든 EVM 체인은 가치가 아니라 연산에 요금을 매깁니다. 가스는 어떤 작업에 드는 일의 양을 재고, 수수료는 그 일의 양에 단가를 곱한 값입니다. 그래서 큰 금액을 옮기는 비용이 작은 금액과 같고, 그 체인 고유 통화를 그냥 보내는 것이 할 수 있는 가장 저렴한 일입니다. 표준 전송은 이 계열의 모든 체인에서 21,000 가스로 고정되어 있습니다.
변하는 것은 단가이고, 그것은 수요를 따라 움직입니다. 프로토콜이 모두가 내는 기본 수수료를 정하고, 보내는 쪽은 더 일찍 포함되도록 그 위에 팁을 얹을 수 있습니다. 같은 전송이 한산한 체인에서는 1센트의 몇 분의 일이고 붐비는 체인에서는 실제 돈이 되는 이유가 이것입니다. 일의 양이 변한 것이 아니라 블록 공간의 값이 변한 것입니다.
토큰을 옮기는 비용은 고유 통화를 옮기는 것보다 눈에 띄게 큽니다. 토큰 전송은 단순한 보내기가 아니라 컨트랙트 호출이기 때문입니다. 체인이 막히면 둘 다 함께 오릅니다. 고객은 이 수수료를 여러분의 금액에 더해 지불하고, 여러분은 청구한 그대로 받습니다.
토큰은 통화가 아니라 컨트랙트다
체인 고유 통화는 프로토콜 안에 내장되어 있습니다. 나머지 전부 — USDC, USDT 그리고 그 밖의 것들 — 는 누가 무엇을 가졌는지 자기 장부로 관리하는 컨트랙트입니다. 실무적으로는 토큰이 그 컨트랙트가 배포된 체인에만 존재하며, 두 체인에 있는 같은 이름은 서로 결코 대화하지 않는 서로 다른 두 컨트랙트라는 뜻입니다.
또한 토큰이 어떻게 세는지를 넘겨짚을 수 없다는 뜻이기도 합니다. 표준은 소수 자릿수 필드를 선택 사항으로 두고, 호출하는 쪽이 그 필드가 있으리라 기대해서는 안 된다고 분명히 말합니다. 따라서 소수 자릿수는 자산이 아니라 개별 컨트랙트의 속성입니다. USDT 가 살아 있는 사례로, Ethereum 에서는 여섯 자리, BNB Chain 에서는 열여덟 자리입니다. 한쪽 숫자를 박아 둔 코드가 다른 쪽을 만나면 1조 배로 틀립니다.
안전한 습관은 지금 실제로 있는 체인의 컨트랙트에서 매번 소수 자릿수를 읽는 것이고, 다른 곳에서 가져온 숫자를 절대 끌고 오지 않는 것입니다.
그중에서 고르기
이들은 전송 비용과 정산까지 걸리는 시간, 그리고 취급하는 자산에서 다릅니다. 작동 방식이 다른 것은 아닙니다. 다음은 이 제품이 정산에 사용하는 EVM 네트워크로, 여기에 적어 넣은 것이 아니라 운영 중인 카탈로그에서 표시됩니다.
- Ethereum Mainnet
- ETH · USDC · USDT
- Base
- ETH · USDC
- Polygon PoS
- POL · USDC
- BNB Chain
- BNB · USDT
- Lisk
- ETH
실무적인 원칙은 돈이 이미 있는 곳으로 찾아가는 것입니다. 어느 체인에 USDC 를 들고 있는 고객은 그 체인에서 지불할 것이고, 먼저 브리지하라고 요구하는 것은 수수료를 내고 기다리고 어쩌면 포기하라고 요구하는 것과 같습니다. 여러 체인에서 받을 수 있다면 그 질문 자체가 사라집니다.
이 가운데 일부는 레이어 2 네트워크입니다. 거래를 스스로 처리한 뒤 데이터를 Ethereum 으로 되돌려 올리고, 기록은 결국 그곳에서 정산됩니다. 결제 입장에서 그 차이는 여러분이 처리해야 할 무언가가 아니라 더 낮은 수수료로 나타납니다. 돈은 다른 곳과 똑같이 그 네트워크의 여러분 주소로 도착합니다.
미리 대비할 것
잘못된 네트워크 실수야말로 설계로 대비해야 할 대상입니다. 프로토콜에는 그것을 막아 줄 것이 없기 때문입니다. 결제 페이지가 네트워크 이름을 밝히고 정확한 주소를 보여 주는 이유가 바로 이것이며, 거래소에서 지불하는 고객에게는 네트워크 이름을 되짚어 주는 편이 좋습니다.
- 토큰을 보내는 지불자에게는 그 체인 고유 통화도 필요합니다. 수수료가 그것으로 지불되기 때문입니다. USDC 만 있고 고유 통화가 전혀 없는 지갑은 채워 넣기 전까지 보낼 수 없습니다. 고객이 송금이 안 된다고 알려 올 때의 흔한 원인입니다.
- 수수료와 확인 시간은 저희가 통제하는 무엇이 아니라 블록 공간에 대한 수요를 따라 움직입니다. 한산한 날과 붐비는 날은 고객 눈에는 서로 다른 상품이며, 그 격차는 가장 붐비는 체인에서 가장 큽니다.
- 확인된 뒤에는 저희를 포함해 누구도 결제를 되돌릴 수 없습니다. 그것이 지불 거절에 대한 보호이며, 잘못 보낸 돈이 네트워크가 아니라 관련된 두 사람 사이에서 해결되어야 하는 이유이기도 합니다.
질문
왜 제 주소가 Ethereum, Base, Polygon 에서 모두 같나요?
EVM 주소가 오직 여러분의 키에서만 — 공개키 해시의 마지막 20바이트에서 — 계산되고, 그 계산에 어떤 네트워크도 참여하지 않기 때문입니다. 따라서 그 주소는 어느 체인에서도 생성된 적 없이 모든 EVM 체인에 동시에 존재합니다. 키 하나, 주소 하나, 계열의 모든 체인.
결제가 잘못된 EVM 네트워크로 전송되면 어떻게 되나요?
도착합니다 — 같은 주소로, 다른 체인에서요. 그곳에서도 주소가 유효하니 반송되는 것도 없고 누구에게 경고가 가지도 않습니다. 돈이 사라진 것은 아니고 키를 가진 사람은 여전히 닿을 수 있지만, 청구서는 다른 네트워크를 지켜보고 있었으므로 기록되지 않고 두 분이 직접 정리해야 합니다.
잘못된 체인으로 보낸 돈은 영영 사라지나요?
EVM 체인끼리는 아닙니다. 거의 모든 안내가 뭐라 하든, 주소를 통제하는 키는 계열 전체에서 그 주소를 통제하므로 자금에 닿을 수 있습니다. 정말로 되찾을 수 없는 경우는 EVM 자산을 Bitcoin, Tron, Solana 주소로 보냈을 때입니다. 거기서는 여러분의 키가 아무 의미가 없습니다. 토큰이 그것을 풀어 줄 방법이 없는 컨트랙트에 들어간 경우도 마찬가지입니다.
왜 토큰을 보내는 것이 체인 고유 통화를 보내는 것보다 비싼가요?
토큰 전송은 컨트랙트를 실행하고 단순 전송은 그렇지 않기 때문입니다. 가스는 연산에 요금을 매기므로 추가된 일에는 추가 비용이 붙습니다. 표준 고유 통화 전송은 21,000 가스로 고정되어 있고 토큰 전송은 그 몇 배이며, 체인이 붐비면 둘 다 더 비싸집니다.
모든 토큰이 소수점 18자리를 쓰나요?
아니요, 그렇게 넘겨짚는 것은 실제로 값비싼 버그의 원천입니다. 토큰 표준은 소수 자릿수를 선택 사항으로 두고 호출하는 쪽이 그 필드의 존재를 기대해서는 안 된다고 명시하므로, 그것은 개별 컨트랙트의 것입니다. USDT 는 Ethereum 에서 여섯 자리, BNB Chain 에서 열여덟 자리를 씁니다. 지금 있는 체인의 컨트랙트에서 값을 읽으십시오.
제 주소가 어디서나 통한다면, 누가 제 거래를 다른 체인에서 되풀이할 수 있나요?
없습니다. 모든 EVM 체인에는 고유한 체인 아이디가 있고 그것이 여러분이 서명하는 대상에 포함되므로, 한 네트워크에서 유효한 서명은 다른 네트워크에서는 무효입니다. 주소는 체인을 넘어 공유되지만 서명은 그렇지 않습니다. 그것이 여러분이 가진 보호이자, 잘못된 네트워크 실수가 그토록 쉬운 이유이기도 합니다.
레이어 2 에서 받는 것이 Ethereum 에서 받는 것과 다른가요?
여러분이 해야 할 일에서는 다르지 않습니다. 레이어 2 는 거래를 스스로 처리하고 데이터를 Ethereum 에 올리며, 결국 그곳에서 정산됩니다. 결제에 대한 실질적 효과는 더 낮은 수수료입니다. 돈은 여전히 그 네트워크의 여러분 주소로 도착하고, 여러분이 지켜보는 것도 그 네트워크입니다.
출처
이 페이지의 모든 수치는 아래 문서 중 하나에서 가져온 것입니다. 각 문서는 표시된 날짜에 직접 확인했으며, 기억에 의존해 인용하지 않았습니다.
먼저 테스트 자금으로 해보세요
테스트 네트워크에서 청구서를 만들고 faucet 자금으로 결제한 뒤, 감지와 확인이 서로 다른 두 개의 이벤트로 도착하는 것을 확인하십시오. 운영 환경에서 다루게 될 것과 같은 한 쌍입니다.
무료로 시작하기네트워크 · 네트워크 · 요금제 · 있는 그대로 답합니다.