용어집 / 주소와 키
비트코인 주소
별칭은 Address입니다.
- 비트코인 주소란 무엇입니까?
- 비트코인 주소는 발신자의 지갑에 코인에 어떤 잠금 조건을 적용할지 알려 주는 짧게 인코딩된 문자열로, 이후에는 본인의 키로만 해당 코인을 사용할 수 있습니다.
주소는 계좌가 아니며 잔액을 보관하지 않습니다. 주소는 스크립트를 부호화한 수신지 형식입니다. 비트코인에는 흔히 쓰이는 주소 형식이 네 가지 있는데, 1로 시작하는 레거시 문자열부터 bc1p로 시작하는 Taproot 문자열까지입니다. Taproot 문자열은 2021년 11월 14일 블록 709,632에서 사용 가능해졌습니다. 지갑이 어떤 형식을 내주는지에 따라 지출할 때 내는 수수료와 유지하는 프라이버시가 달라집니다.
작동 방식
모든 결제는 출력을 하나 만들고, 모든 출력은 앞으로 지출하는 사람이 무엇을 제공해야 하는지 정한 스크립트를 담고 있습니다. 주소는 그 스크립트를 사람이 채팅 창이나 QR 코드로 옮길 수 있는 형태로 나타낸 것입니다. 지갑은 사용자가 관리하는 키를 가지고 코인을 잠그는 스크립트를 계산하고, 그 결과를 체크섬과 함께 부호화합니다. 그래서 글자를 잘못 입력하면 돈이 아무 데도 가지 않은 채 조용히 넘어가지 않고 오류가 납니다.
부호화 방식은 두 가지가 유통되고 있습니다. 1 또는 3으로 시작하는 문자열은 Base58Check를 사용하는데, 짧은 체크섬을 뒤에 붙이고 비슷하게 보이는 글자를 피하도록 고른 문자 집합을 쓰는 더 오래된 형식입니다. bc1로 시작하는 문자열은 BIP-173의 bech32를, Taproot의 경우 BIP-350의 bech32m을 사용합니다. bech32 계열 두 방식 모두 잘못된 글자를 최대 네 개까지 감지하고 어디가 틀렸는지 알려 줄 수 있으며, 대소문자를 구분하지 않아 지갑이 더 작고 더 안정적으로 스캔되는 QR 코드로 표시할 수 있습니다.
잔액은 주소에 저장되지 않습니다. 잔액은 지갑이 도출할 줄 아는 주소에 잠겨 있는 미사용 출력 가운데 지갑이 찾아낼 수 있는 것들의 합계입니다. 현대적인 지갑은 시드 하나에서 그런 주소를 수천 개 도출합니다. 그래서 입금 화면을 열 때마다 새 주소를 제시합니다.
비트코인을 구매할 때 이것이 중요한 이유
대부분의 사람이 처음 쓰는 주소는 거래소 출금 양식에 붙여 넣는 주소이고, 바로 그 단계에 잘못될 길이 가장 많습니다.
주소를 지갑에서 복사하고 브라우저 화면이 아니라 지갑 자체의 화면에서 확인하십시오. 클립보드 악성코드는 복사한 주소를 공격자의 주소로 바꾸는데, 글자를 직접 비교하지 않으면 그 바뀜을 알아챌 수 없습니다. 이때 방어선은 하드웨어 지갑의 화면입니다. 기기가 실제로 도출한 주소를 보여 주고, 컴퓨터는 그 화면에 나타나는 내용을 고칠 수 없습니다.
수신지가 새로울 때는 언제나 먼저 소액을 시험 삼아 보내고, 그다음에 나머지를 보내십시오. 대부분의 거래소는 트랜잭션마다 비트코인 출금 수수료를 정액으로 받으므로, 출금 한 건을 두 번으로 나누면 수수료를 두 번 냅니다. 큰 금액을 옮길 때는 값싼 보험이지만, 작은 금액에서는 보호하는 것보다 더 많이 잡아먹을 수 있습니다.
플랫폼이 지원한다면 bech32를 선호하십시오. 네이티브 SegWit 입력을 지출하면 대략 68 vbytes가 드는데, 레거시 입력은 대략 148 vbytes입니다. 그래서 20 sat/vB에서 같은 지출의 비용은 2,960 사토시가 아니라 약 1,360 사토시입니다. 그 차이는 나중에 코인이 움직일 때 지불하게 되며, 그래서 출금 시점에 한 선택이 몇 달 뒤에도 여전히 중요합니다. 일부 플랫폼은 뒤처져 있습니다. 출금 양식이 bc1p 문자열을 거부한다면 그 플랫폼은 Taproot 지원을 추가하지 않은 것이며, bc1q 주소가 대안입니다.
그다음에는 주소를 한 번씩만 사용하십시오. 거래소, 체인 분석 업체, 그리고 사용자가 한 번이라도 대금을 지급한 모든 사람은 주소에 닿는 모든 트랜잭션을 볼 수 있습니다. 그래서 주소 하나를 재사용하면 자신의 구매 내역이 영구적으로 서로 연결됩니다.
실제로 마주치게 되는 네 가지 주소 유형
네 가지 주소 형식이 오늘날 이루어지는 거의 모든 결제를 포괄하며, 각 형식은 그것을 만들어 낸 지갑에 대해 무언가를 알려 줍니다.
- 1... (P2PKH, 레거시). Base58Check이며, 2009년 첫 릴리스부터 사용되었습니다. 어디서나 받아 주지만, 지출할 때 가장 비싼 유형입니다.
- 3... (P2SH). Base58Check입니다. 다중서명을 위해 만들어졌고, 지금은 대개 래핑된 SegWit 주소인데, 거래소가 "SegWit 호환"이라고 할 때 보통 뜻하는 것이 이것입니다.
- bc1q... (P2WPKH, 네이티브 SegWit). Bech32이며 42자이고, 2017년 8월 24일 블록 481,824에서 SegWit이 활성화된 이후 사용할 수 있습니다. 대부분의 현재 지갑에서 기본값입니다.
- bc1p... (P2TR, Taproot). Bech32m이며 62자이고, 블록 709,632부터 작동합니다. 복잡한 지출 조건에서 가장 저렴하고, Schnorr 서명과 평범한 단일 키 결제처럼 보이는 다중서명을 뒷받침하는 형식입니다.
접두사를 읽는 것은 빠른 점검입니다. 1과 3은 옛 체계에 속하고, bc1q는 위트니스 버전 0이며, bc1p는 위트니스 버전 1입니다. 테스트 네트워크는 대신 tb1을 쓰므로, tb로 시작하는 것은 실제 코인에서는 절대 작동하지 않습니다.
비트코인 주소 vs 공개 키
비트코인 주소는 공개 키가 아니며, 둘은 관련되어 있기는 합니다. 공개 키는 개인 키에서 도출한 secp256k1 곡선 위의 한 점이고, 주소는 부호화된 스크립트이며, 오래된 유형에서 그 스크립트는 키 자체가 아니라 공개 키의 해시를 담습니다. 실질적인 결과는 주소를 공개해도 그 뒤에 있는 키에 대해 아무것도 드러나지 않는다는 것이고, 레거시 및 SegWit 버전 0 출력에서는 처음 지출할 때까지 키가 숨겨진 채로 남습니다. Taproot는 그 부분을 바꿨습니다. bc1p 주소는 32바이트 키를 직접 내장합니다.
비트코인 주소 vs 지갑
비트코인 주소는 하나의 수신지이고, 지갑은 소프트웨어와 그 뒤에 있는 수천 개 주소의 비밀입니다. 시드 문구로 지갑을 복원하면 그 지갑이 만들어 낸 모든 주소가 다시 생성되며, 그래서 누구도 주소를 하나씩 백업하지 않습니다. 주소를 잃는 것은 별일이 아닙니다. 코인은 지갑이 여전히 찾아낼 수 있는 출력에 있기 때문입니다. 시드를 잃으면 모든 것을 잃습니다. 블록 탐색기에서 여전히 읽을 수 있는 주소에 있는 코인까지 포함해서입니다.