Guides ·

자금 전송 전 암호화폐 주소를 검증하는 방법


암호화폐 거래는 되돌릴 수 없습니다. 잘못된 형식의 주소, 잘못된 네트워크의 주소, 또는 한 글자가 바뀐 주소로 자금을 보내면, 연락할 은행도 없고 취소할 방법도 없습니다. 코인은 사라집니다. 주소 검증은 자금과 영구적 손실 사이의 마지막 방어선이지만, 대부분의 사람들은 이를 완전히 건너뜁니다.

이 가이드에서는 주소 검증이 기술적 수준에서 어떻게 작동하는지 — 형식 검사, 체크섬 확인, 크로스체인 혼동 감지 — 를 설명하고, 모든 출금 전송이 지갑을 떠나기 전에 검사되도록 워크플로에 검증을 통합하는 방법을 보여줍니다.

검증이 암호화폐를 지키는 이유

사람들이 암호화폐를 잃는 가장 흔한 방법은 정교한 해킹이 아닙니다. 단순한 인적 오류입니다: 주소를 잘못 복사하거나, 다른 체인의 주소를 붙여넣거나, 클립보드의 주소를 공격자 통제 주소로 조용히 바꾸는 클립보드 하이재킹 멀웨어에 당하는 것입니다.

메커니즘을 생각해 보세요. bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4 같은 Bitcoin 주소는 42자입니다. Ethereum 주소는 0x 접두사를 포함해 42자입니다. Solana 주소는 최대 44자일 수 있습니다. 이것들은 인간 친화적인 문자열이 아닙니다. 손으로 전사하는 것은 실질적으로 오류를 부르는 것이며, 복사-붙여넣기도 멀웨어가 관여하면 잘못될 수 있습니다.

검증은 이러한 문제가 재앙이 되기 전에 잡아냅니다. 적절한 검증 검사는 다음을 알려줍니다:

  • 형식이 올바른가? 문자열이 대상 블록체인의 예상 패턴과 일치하는가?
  • 체크섬이 통과하는가? 주소가 생성된 이후 문자가 변경되었는가?
  • 올바른 네트워크인가? Bitcoin을 Bitcoin Cash 주소로, 또는 동일하게 보이는 BNB Chain 주소로 ETH를 보내려고 하는가?

이러한 각 검사는 서로 다른 계층에서 작동합니다. 함께 사용하면 주소 관련 오류의 대다수를 잡아내는 다중 방어 전략을 형성합니다.

형식 검증: 정규 표현식

검증의 첫 번째 계층은 구조적입니다. 모든 블록체인은 주소에 특정 형식을 정의하며, 간단한 패턴 검사로 부합하지 않는 문자열을 즉시 거부할 수 있습니다.

Bitcoin 주소 형식

Bitcoin에는 세 가지 활성 주소 형식이 있으며, 각각 고유한 접두사를 가집니다:

  • 레거시 (P2PKH): 1로 시작, 25-34자. Base58Check 인코딩 사용.
  • 스크립트 (P2SH): 3으로 시작, 25-34자. 역시 Base58Check.
  • Native SegWit (Bech32): bc1q (v0) 또는 bc1p (v1/Taproot)로 시작, 42-62자. Bech32 또는 Bech32m 인코딩 사용.

세 형식 모두와 일치하는 정규식은 다음과 같습니다:

^(1[1-9A-HJ-NP-Za-km-z]{25,34})|(3[1-9A-HJ-NP-Za-km-z]{25,34})|(bc1[a-zA-HJ-NP-Z0-9]{25,90})$

이것은 명백한 비 Bitcoin 문자열을 즉시 잡아내지만 체크섬을 검증하지는 않습니다. 문자열이 패턴에 완벽하게 일치하면서도 오타를 포함할 수 있습니다. 이것이 다음 계층이 필요한 이유입니다.

Ethereum 및 EVM 주소

Ethereum 주소는 형식이 더 간단합니다: 0x 뒤에 40개의 16진수 문자. 모든 EVM 호환 체인 — Polygon, Arbitrum, Optimism, Base, BNB Chain — 에 동일한 형식이 적용됩니다.

^0x[0-9a-fA-F]{40}$

Solana 주소

Solana 주소는 Base58 인코딩된 ed25519 공개 키로, 일반적으로 32-44자 길이이며 고정 접두사가 없습니다.

XRP 주소

XRP는 자체 Base58 변형을 사용합니다. 주소는 r로 시작하며 25-35자입니다.

TRON 주소

TRON 주소는 T로 시작하며 34자 길이로, Bitcoin의 레거시 형식과 유사한 Base58Check 인코딩을 사용합니다.

형식 검사는 빠르고 저렴합니다 — 폼 필드의 모든 키 입력에서 실행할 수 있습니다. 하지만 검증의 가장 약한 계층입니다. 형식상 유효한 주소가 여전히 손상될 수 있습니다. 이를 잡으려면 체크섬이 필요합니다.

체크섬 검증: 오타 감지

체크섬은 주소 내에 포함된 작은 중복 데이터로, 무결성을 확인할 수 있게 합니다. 어떤 문자가 변경되면 체크섬이 일치하지 않으며, 주소는 거부되어야 합니다.

Base58Check (Bitcoin 레거시, TRON, XRP)

Base58Check 인코딩은 이중 SHA-256 해시에서 파생된 4바이트 체크섬을 추가합니다. 무작위 오류가 이 검사를 통과할 확률은 약 43억 분의 1(2^32)입니다.

Bech32와 Bech32m (Bitcoin SegWit)

Bech32는 BCH 코드에 기반한 다른 오류 감지 체계를 사용합니다. 모든 단일 문자 오류와 대부분의 일반적인 다중 문자 오류를 감지할 수 있습니다.

EIP-55 혼합 대소문자 체크섬 (Ethereum)

Ethereum 주소는 16진수이므로 인코딩 내에 전통적인 체크섬을 위한 여지가 없습니다. EIP-55는 이를 영리하게 해결합니다: 16진수 문자의 대소문자를 체크섬으로 사용합니다. 소문자 주소의 Keccak-256 해시의 해당 니블에 따라 각 문자가 대문자 또는 소문자로 표시됩니다.

Ethereum Address Validator 같은 도구가 형식과 EIP-55 대소문자 모두를 검사하는 이유입니다.

Solana: 내장 체크섬 없음

Solana 주소는 내장 체크섬 없이 원시 Base58 인코딩된 공개 키입니다. 이는 오타가 아무에게도 속하지 않는 — 또는 더 나쁜 경우 다른 사람에게 속하는 — 유효해 보이는 주소를 만들 수 있음을 의미합니다. Solana Address Validator로 여전히 형식을 확인할 수 있습니다.

크로스체인 혼동: 흔한 실수

형식과 체크섬 검증은 오타로부터 보호합니다. 크로스체인 검증은 올바른 주소를 잘못된 네트워크로 보내는 것으로부터 보호합니다.

EVM 체인 중복

가장 위험한 크로스체인 혼동은 EVM 호환 네트워크에서 발생합니다. Ethereum 주소는 동시에 유효한 Polygon, Arbitrum, Optimism, Base, BNB Chain 주소이기도 합니다. 형식만으로는 EVM 주소를 구분할 방법이 없습니다. 유일한 방어는 지갑 소프트웨어에서 네트워크 선택을 확인하고 확인 전에 체인 ID를 재확인하는 것입니다. EVM 주소 보안에 대한 더 깊은 내용은 EVM 주소 보안을 참조하세요.

Bitcoin vs. Bitcoin Cash

레거시 Bitcoin 주소(1 또는 3으로 시작)는 Bitcoin Cash 주소와 구문적으로 동일합니다. Bitcoin Cash는 혼동을 줄이기 위해 CashAddr 형식(bitcoincash:q...로 시작)을 도입했지만, 많은 서비스가 여전히 레거시 형식을 표시합니다.

TRON vs. Bitcoin 레거시

TRON 주소는 T로 시작하고 Base58Check를 사용하며, 일부 Bitcoin 주소 패턴과 표면적으로 유사합니다. 자동화된 검증 도구는 Base58Check 페이로드 내의 버전 바이트를 확인하여 이를 즉시 잡아냅니다.

SafeSeed 주소 검증기

SafeSeed는 여러 블록체인을 위한 무료 클라이언트 측 주소 검증기를 제공합니다. 각 검증기는 형식 검사와 해당되는 경우 체크섬 확인을 전적으로 브라우저 내에서 수행합니다 — 서버로 데이터가 전송되지 않습니다.

이 도구들은 Web Crypto API를 사용하여 전적으로 브라우저에서 실행되므로 최대 보안을 위해 에어갭 머신에서 사용할 수 있습니다. 오프라인 환경에서 주소를 생성하는 가이드는 Bitcoin 시드를 오프라인에서 생성하기Ethereum 지갑을 오프라인에서 생성하기를 참조하세요.

워크플로에 검증 통합하기

검증이 어떻게 작동하는지 아는 것은 절반에 불과합니다. 나머지 절반은 습관으로 만드는 것입니다.

모든 거래 전에

  1. 신뢰할 수 있는 소스에서 주소를 복사하세요. 메시지, 이메일, 웹사이트가 아닌 지갑 애플리케이션에서 직접 사용하세요. 클립보드 멀웨어는 실제로 존재하며 널리 퍼져 있습니다.
  2. 검증기에 붙여넣으세요. 체인별 검증기를 통해 주소를 실행하여 형식과 체크섬을 확인하세요. 2초밖에 걸리지 않으며 수천 달러를 절약할 수 있습니다.
  3. 처음과 마지막 몇 글자를 시각적으로 확인하세요. 자동 검증 후에도 붙여넣은 주소의 처음 6자와 마지막 6자를 원본과 비교하세요. 이것은 주소 중간을 바꾸는 클립보드 대체 공격을 잡아냅니다.
  4. 먼저 소액 테스트 거래를 보내세요. 대규모 전송의 경우 먼저 작은 금액을 보내고 수신을 확인한 후 나머지를 보내세요. 거래 수수료는 보험입니다.

개발자를 위해

지갑, 거래소 또는 dApp을 구축하는 경우 입력 계층에서 주소 검증을 필수로 해야 합니다. 사용자가 스스로 주소를 검증하도록 의존하지 마세요. 키 입력 시 형식 검사를 구현하고, 블러 시 체크섬 확인을 실행하며, 검증 실패 시 명확하고 모호하지 않은 오류 메시지를 표시하세요.

일반 사용자를 위해

검증 도구를 북마크하고 매번 사용하세요. 검증 검사를 받을 가치가 없을 만큼 작거나 일상적인 거래는 없습니다. 걸리는 몇 초는 단 한 건의 잘못 전송된 거래의 되돌릴 수 없는 손실에 비하면 아무것도 아닙니다.

주소 검증은 화려하지 않습니다. 헤드라인을 장식하거나 채택을 이끄는 종류의 기능이 아닙니다. 하지만 암호화폐를 보호하기 위해 할 수 있는 가장 실용적인 단일 행동입니다. 모든 주소, 매번 — 예외 없이.