기타

비트코인 지갑 주소에 대해서 (p2pkh, p2sh, p2wpkh, p2wsh)

citron031 2023. 7. 19. 23:02

비트코인 지갑의 주소에는 여러 종류가 있다.

과거 javascript로 지갑을 생성하면서 지갑의 주소를 생성하기 위해서 다양한 메서드들을 사용할 수 있었다.

bitcoin testnet faucet을 사용하면서 알게된 점인데, 이 지갑 주소들은 각각 조금씩 다른 특성을 가지고 있고 일부 서비스들은 특정 유형의 지갑 주소만 사용할 수 있었다.

무작정 사용하기보다는 여기서 한 번 지갑 주소들에 대해서 정리하는 것이 좋다고 생각했기에 p2pkh, p2sh, p2wpkh 등 다양한 비트코인 지갑 주소에 대해서 알아보고 기록하기로 하였다.

 

비트코인의 지갑 주소들은 네트워크(메인넷, 테스트넷) 식별을 위해서 네트워크 버전과 관련된 정보를 지닌다.

또한, 주소의 유효성을 검사하기 위해서 체크섬을 지닌다.

지갑 주소는 체크섬과 네트워크 버전 정보를 포함해 Base58로 인코딩되어진다.

✦ Pay To Public Key Hash, p2pkh

p2pkh는 공개키의 해시를 사용하여 비트코인을 보내는 방법이다. 기존의 p2pk가 공개키를 사용했던 것과 대조적이다.

현재 개인 비트코인 소유자들 사이에서 사용되는 가장 일반적인 스크립트 패턴이다.

비트코인을 고안한 Satoshi가 만든 주소 유형이다.

p2pkh 주소는 1로 시작하는 특징을 가진다.

 Pay to Script Hash, p2sh

p2sh는 BIP16에서 소개된 주소 생성 방식이다.

p2sh에서는 비트코인을 전송하기 위해서 필요한 조건및 규칙을 스크립트에 기록할 수 있다.

이 스크립트를 통해서 다중 서명이나 주소 잠금 조건등을 설정할 수 있다.

p2pkh와 비교하자면, p2pkh는 공개키를 해싱하여 지갑 주소를 생성하고, p2sh는 스크립트를 해싱하여 지갑 주소를 생성하는 차이점이 있다.

redeem script에는 수신된 비트코인이 어떻게 사용될지 적혀있기에 이를 통해서 더 복잡한 거래를 진행할 수 있다.

p2sh 주소는 3으로 시작하는 특징을 가진다.

 Pay to Witness Public Key Hash, p2wpkh

p2wpkh는 Segregated Witness(SegWit)의 기본 주소로 여겨지며 Bech32 주소 중 한가지이다.

SegWit을 활용하여 생성된 p2wpkh 주소는 트랜잭션의 응답 시간을 줄이기 위해 블록체인 블록 크기를 줄이기 위한 주소이다.

따라서 사용자 입장에서도 트랜잭션 수수료가 적게 책정되는 이점이 있다.

세그윗 스크립트가 지갑 주소를 생성하는데 사용된다.

비교적 최근에 새로 나온 지갑유형으로, 비트코인 네트워크의 확장과 속도를 높이기 위해서 도입되었다.

p2wpkh 주소는 bc1으로 시작하는 특징을 가진다.

Pay to Witness Script Hash, p2wsh

p2wsh는 p2sh의 SegWit 변형이다.

세그윗이 적용되어 낮은 수수료, 빠른 네트워크 통신 속도가 특징이다.

p2wsh 주소로 비트코인을 보낼 땐 스크립트를 실행하기 위한 트랜잭션을 보내야한다.

p2wsh 주소는 p2wpkh와 동일하게 Bech32 주소 형식을 따르기에 bc1로 시작하는 특징을 가진다.