Bitcoin 주소는 네트워크별 checksum이 있는 표준 잠금 스크립트 표현이다. P2PKH/P2SH는 Base58Check, SegWit v0는 Bech32, witness v1–16은 Bech32m을 쓴다. bitcoin을 보관하거나 신원을 증명하지 않으며 UTXO는 스크립트가 잠근다.
출력은 금액과 scriptPubKey bytes를 가지며 주소 문자열은 없다. 지갑은 network/checksum을 검사해 표준 script를 만들고 explorer는 알려진 script만 표시용 주소로 역변환한다. 초기 P2PK나 비표준 script에는 canonical address가 없을 수 있다. [Bitcoin whitepaper — Transactions and Privacy] [Bitcoin Core — destination encoders and decoders]
Base58Check는 version과 payload 뒤에 SHA256(SHA256(data)) 앞 4 bytes를 붙여 Base58로 인코딩한다. mainnet 0x00=P2PKH, 0x05=P2SH라 보통 1/3으로 시작하며 testnet은 다르다. 0/O/I/l은 제외된다. 32-bit checksum은 오류 검출이지 서명·인증이 아니다. [Bitcoin Core — Base58Check implementation] [Bitcoin Core — destination encoders and decoders]
Bech32는 HRP bc/tb, 구분자 1, witness version, 5-bit data, 6문자 checksum이다. BIP173은 v0 전용이며 삽입 취약점 뒤 BIP350은 v1–16에 Bech32m을 요구한다. 대소문자 혼용 불가, 최대 90자다. 유효해도 잘못된 network나 미지원 version일 수 있다. [BIP 173 — Base32 address format for native v0 witness outputs] [BIP 350 — Bech32m format for witness v1 and later]
P2PKH/P2WPKH는 key HASH160, P2SH는 redeemScript HASH160, P2WSH는 witnessScript SHA256에 commit한다. BIP141 v0는 20-byte P2WPKH 또는 32-byte P2WSH다. P2TR v1은 32-byte tweaked x-only output key Q이며 script Merkle root도 commit할 수 있다. 전체 policy는 드러나지 않는다. [BIP 141 — Segregated Witness consensus layer] [BIP 341 — Taproot validation and output keys]
P2PK는 key를 공개했고 P2PKH는 지출까지 미뤘다. BIP13/16은 P2SH, BIP141/173은 witness와 Bech32 v0, BIP341/350은 Taproot v1과 Bech32m을 도입했다. 외형 prefix가 아닌 script/consensus 변화라 수동 ‘변환’은 조건 변경이나 영구 잠금을 만든다. [BIP 13 — Address Format for pay-to-script-hash] [BIP 16 — Pay to Script Hash] [BIP 141 — Segregated Witness consensus layer] [BIP 173 — Base32 address format for native v0 witness outputs] [BIP 350 — Bech32m format for witness v1 and later] [BIP 341 — Taproot validation and output keys]
BIP32는 여러 key를 파생한다. BIP44 purpose 44'=P2PKH, BIP84 84'=P2WPKH, BIP86 86'=P2TR 뒤 account·external/change·index를 나눈다. seed만으로 type/path/account/multisig가 복원되지 않을 수 있다. Output descriptors가 key origin과 script를 더 완전하게 보존하며 복구를 시험해야 한다. [BIP 32 — Hierarchical deterministic wallets] [BIP 44 — Multi-account hierarchy] [BIP 84 — Derivation for native P2WPKH] [BIP 86 — Derivation for single-key P2TR] [Bitcoin Core — Output descriptors]
P2PKH/P2WPKH는 지출 때 보통 public key, P2SH/P2WSH는 redeemScript/witnessScript를 공개한다. P2TR은 tweaked x-only key를 이미 포함하고 key path는 Schnorr signature, script path는 leaf·control block·Merkle path를 드러내되 미사용 leaf는 숨긴다. 주소가 항상 key를 숨기지는 않는다. [BIP 141 — Segregated Witness consensus layer] [BIP 341 — Taproot validation and output keys]
주소 재사용은 입금을 연결하고 clustering을 강화하므로 새 external 주소와 internal change를 쓴다. 주소는 사람이 아니다. 공동 제어·다수 주소·custodian 통합이 있으며 explorer ‘balance’는 해당 script UTXO 합계일 뿐 consensus account가 아니다. common-input/change는 오류 있는 heuristic이다. [Bitcoin whitepaper — Transactions and Privacy] [Bitcoin Core — Output descriptors]
checksum·network·case·v0/Bech32와 v1+/Bech32m 조합을 검사해야 한다. 그래도 clipboard malware나 변조 QR은 다른 유효 주소를 넣을 수 있다. 신뢰할 hardware display에서 전체를 확인하고 필요시 소액 test하라. 앞뒤만 보면 look-alike에 속으며 확정 오송금은 되돌릴 수 없다. [Bitcoin Core — Base58Check implementation] [BIP 173 — Base32 address format for native v0 witness outputs] [BIP 350 — Bech32m format for witness v1 and later]
주소는 amount/label/message를 담는 BIP21 bitcoin: URI나 Lightning invoice·offer·Lightning Address가 아니다. BIP322는 정해진 방식의 script control만 증명하며 신원·전체 소유권은 아니다. 복잡한 backup은 descriptor나 wallet export를 쓴다. [BIP 21 — URI scheme] [BIP 322 — Generic signed message format] [Bitcoin Core — Output descriptors]
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 개인 키, 지갑, 거스름돈 출력, Bitcoin, SegWit, Taproot. 다음 항목에서도 이 글을 참조합니다 암호학적 해시, SHA-256, Cold Storage, Watch-only Wallet.
01Bitcoin 주소는 계좌 번호인가요?+
아닙니다. 지갑은 주소에서 scriptPubKey 같은 출력의 잠금 스크립트를 도출합니다. 하나의 지갑이 많은 주소를 관리할 수 있으며 주소만으로는 신원이나 자금 통제권을 입증하지 못합니다.
02Bitcoin 주소를 안전하게 재사용할 수 있나요?+
같은 주소로 추가 결제를 보내는 것은 유효할 수 있지만 수입을 동일한 스크립트에 연결합니다. 받을 때마다 지갑이 생성한 새 주소를 사용하세요. 그래도 익명성이 보장되지는 않습니다. 새 주소가 기존 주소를 무효화하지는 않지만 해당 출력을 사용하려면 여전히 올바른 키와 스크립트 조건 충족이 필요합니다.