비트코인 지갑 주소란 무엇인가
비트코인 지갑 주소의 구조와 종류, 생성 원리, 올바른 사용법까지. P2PKH, P2SH, 네이티브 SegWit(Bech32), Taproot(Bech32m) 주소를 초급 독자 눈높이에서 설명한다.
비트코인을 처음 접하면 긴 문자열로 이루어진 주소 앞에서 당혹감을 느끼기 쉽다. 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa 같은 문자열은 무슨 의미이며, 어떻게 생성되고, 왜 이렇게 복잡한 형태를 가지는가. 이 글은 그 질문에 답한다.
| 주소 유형 | 접두사 | 특징 | 수수료 |
|---|---|---|---|
| Legacy (P2PKH) | 1… | 최초 주소 형식 | 가장 높음 |
| Script (P2SH) | 3… | 멀티시그·중첩 SegWit | 중간 |
| Native SegWit (Bech32) | bc1q… | SegWit 네이티브 | 낮음 |
| Taproot (Bech32m) | bc1p… | 슈노르 서명·MAST | 가장 낮음 |
지갑 주소는 은행 계좌번호가 아니다
전통 금융에서 돈을 받으려면 계좌번호를 알려주면 된다. 비트코인에서도 그 역할을 하는 것이 주소(address)이지만, 성격은 근본적으로 다르다.
은행 계좌번호는 금융기관이 관리하는 식별자다. 은행이 없어지면 계좌도 없어진다. 비트코인 주소는 다르다. 주소는 수학적으로 생성된 값이며, 어떤 기관의 허가도 필요하지 않다. 인터넷이 끊긴 상태에서도, 종이와 연필만 있어도 유효한 주소를 만들어낼 수 있다.
핵심 차이점:
- 은행 계좌: 기관이 발급, 기관이 관리
- 비트코인 주소: 개인이 수학적으로 생성, 누구의 허가도 불필요
주소는 어떻게 만들어지는가
비트코인 주소 생성은 세 단계를 거친다.
1단계: 개인키 생성
먼저 256비트 난수, 즉 개인키(private key)를 생성한다. 이 숫자는 2²⁵⁶가지 경우의 수 중 하나다. 우주의 원자 수보다 훨씬 많은 경우의 수이므로, 올바르게 생성된 개인키는 타인이 추측할 수 없다.
개인키 예시:
E9873D79C6D87DC0FB6A5778633389F4453213303DA61F20BD67FC233AA33262
개인키는 절대 외부에 공개해서는 안 된다. 개인키를 아는 자가 그 주소의 비트코인을 소비할 수 있다.
2단계: 공개키 도출
개인키에 타원곡선 암호(ECDSA, secp256k1 곡선)를 적용하면 공개키(public key)가 도출된다. 이 과정은 단방향이다. 공개키에서 개인키를 역산하는 것은 현재의 컴퓨팅 능력으로 불가능하다.
3단계: 주소 도출
공개키에 SHA-256과 RIPEMD-160 해시 함수를 순차 적용한 뒤, 레거시 주소는 Base58Check 인코딩을, SegWit과 Taproot 주소는 Bech32/Bech32m 인코딩을 거쳐 최종 주소가 생성된다. 이 과정에서도 역산은 불가능하다.
개인키 → (타원곡선 연산) → 공개키 → (해시 함수) → 주소
결과적으로 주소만 알고 있는 외부인은 공개키도, 개인키도 알 수 없다. 이것이 비트코인 보안의 수학적 기반이다.
주소의 종류
비트코인 프로토콜이 발전하면서 주소 형식도 여러 세대를 거쳤다.
P2PKH (레거시 주소)
형식: 1로 시작, 25~34자리
예시: 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2
가장 오래된 주소 형식이다. 비트코인 초창기부터 사용되었다. 대부분의 거래소와 지갑이 지원하므로 호환성이 높다. 단점은 트랜잭션 수수료가 상대적으로 비싸다는 점이다.
P2SH (스크립트 해시 주소)
형식: 3으로 시작, 34자리
예시: 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
멀티시그(다중서명) 트랜잭션이나 복잡한 조건을 가진 스마트 컨트랙트 형태의 잠금 스크립트를 사용할 때 활용된다. 3으로 시작하는 주소로 보내면 내부적으로 스크립트 조건을 만족해야 출금이 가능하다.
네이티브 SegWit (Bech32)
형식: bc1q로 시작
예시: bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq
2017년 세그윗(SegWit) 업그레이드와 함께 도입된 주소 형식이다. 수수료가 가장 저렴하고, 오류 감지 기능이 우수하다. 오늘날 새로 만드는 지갑 대부분이 기본 형식으로 사용한다. bc1q로 시작하므로 쉽게 구별된다.
Taproot (P2TR)
형식: bc1p로 시작
예시: bc1p5d7rjq7g6rdk2yhzks9smlaqtedr4dekq08ge8ztwac72sfr9rusxg3297
2021년 Taproot 업그레이드 이후 도입된 최신 주소 형식이다. 프라이버시와 효율성이 향상되었다. 아직 모든 서비스가 지원하지는 않지만, 채택이 빠르게 늘고 있다.
주소는 한 번만 쓰는 것이 원칙
비트코인 주소는 기술적으로 재사용이 가능하다. 그러나 한 번 사용한 주소를 다시 쓰는 것은 권장하지 않는다.
이유는 두 가지다. 첫째, 지불을 받을 때마다 같은 주소를 공개하면 외부에서 해당 주소의 잔액과 거래 내역을 추적하기 쉬워진다. 비트코인 블록체인은 공개 장부이므로, 주소와 잔액 정보는 누구나 조회할 수 있다.
둘째, 일부 지갑 구현에서 주소를 재사용하면 공개키가 블록체인에 노출되는 경우가 있다. 현재의 암호 수준에서는 문제가 없지만, 장기적 보안 관점에서 바람직하지 않다.
대부분의 현대 지갑은 HD 지갑(Hierarchical Deterministic Wallet) 구조를 채택하여, 하나의 시드(seed)에서 수백만 개의 주소를 파생시킨다. 새 주소가 필요할 때마다 자동으로 생성하므로, 사용자가 주소 재사용을 걱정하지 않아도 된다.
주소 전송 시 주의사항
대소문자 구분
레거시 주소(1로 시작)와 P2SH 주소(3으로 시작)는 대소문자를 구분한다. 1ABC와 1abc는 다른 주소다. 반면 Bech32 주소(bc1)는 대소문자를 구분하지 않는다.
오타 방지
주소를 직접 입력하는 일은 피해야 한다. 34자리 문자열을 손으로 입력하다 보면 실수가 발생한다. QR 코드 스캔이나 복사·붙여넣기를 사용하고, 전송 전 처음과 끝 몇 자리를 반드시 육안으로 대조한다.
Base58Check와 Bech32 형식에는 오류 감지 코드가 포함되어 있으므로, 주소 중간 한 글자가 바뀌면 지갑 소프트웨어가 유효하지 않은 주소로 거부한다. 그러나 오류 감지가 완벽하지는 않으므로 육안 확인은 필수다.
네트워크 혼동 주의
비트코인 주소와 비트코인 캐시(BCH) 주소는 일부 형식이 동일하다. 비트코인 전송 시 비트코인 캐시 주소로 보내거나 그 반대의 실수가 발생할 수 있다. 전송 전 지갑 소프트웨어가 올바른 네트워크(메인넷)를 선택하고 있는지 확인해야 한다.
또한 테스트넷(testnet) 주소는 메인넷과 다르다. 테스트넷 주소로 실제 비트코인을 보내면 복구할 수 없다.
주소와 트랜잭션 ID의 차이
주소와 트랜잭션 ID(TXID)는 혼동하기 쉽지만 전혀 다른 개념이다.
- 주소: 비트코인을 받는 식별자. 여러 번 거래의 목적지가 될 수 있다.
- TXID: 완료된 개별 거래를 식별하는 해시값. 거래가 발생할 때마다 새로 생성된다.
txid.uk에서 주소를 검색하면 해당 주소와 연관된 모든 거래 내역과 현재 잔액을 확인할 수 있다.
txid.uk로 주소 검증하기
주소가 유효한지, 잔액이 얼마인지 직접 확인하려면 txid.uk를 활용하면 된다.
실습 순서:
- txid.uk 접속 후 검색창에 비트코인 주소 입력
- 주소 잔액과 전체 거래 내역 확인
- UTXO(미사용 트랜잭션 출력) 상세 내역 조회
주소를 검색한다고 해서 자산이 위험해지지는 않는다. 비트코인 주소와 거래 내역은 공개 정보이며, 조회 자체는 아무런 위험이 없다.
정리
비트코인 주소는 기관의 허가 없이 수학적으로 생성되는 고유 식별자다. 개인키에서 공개키를 거쳐 주소가 파생되는 단방향 구조 덕분에, 주소만으로는 개인키를 알 수 없다. 레거시(1), P2SH(3), SegWit(bc1q), Taproot(bc1p) 등 여러 형식이 있으며, 오늘날에는 수수료가 저렴한 SegWit 주소 사용이 권장된다. 주소를 올바르게 사용하려면 재사용을 피하고, 전송 전 반드시 주소를 육안으로 확인하는 습관이 중요하다.