블록체인

#12 p2wpkh

tworiver 2023. 7. 25. 12:05

p2wpkh 스크립트

P2WPKH 스크립트는 비트코인과 비트코인 기반의 암호화폐에서 사용되는 스크립트 유형 중 하나입니다. 이것은 Segregated Witness (SegWit)이라는 프로토콜 업그레이드와 관련이 있습니다. P2WPKH는 "Pay to Witness Public Key Hash"의 약어로, 기본적으로는 보내는 쪽이 수신자의 공개 키 해시에 비트코인을 송금하는 방법을 말합니다.

P2WPKH 스크립트는 SegWit 주소 형식 중 하나인 "bc1"로 시작하는 주소를 사용합니다. 이 주소 형식은 이전에 사용되던 "1"로 시작하는 주소와는 다른 형태를 가지고 있습니다.

자세한 설명을 위해 P2WPKH 스크립트가 작동하는 방식을 살펴보겠습니다:

수신자의 주소 생성:
수신자가 비트코인을 받기 위해 P2WPKH 스크립트를 사용하려면 먼저 비트코인 지갑 프로그램에서 SegWit 주소를 생성합니다. 이 주소는 "bc1"로 시작하며, 보통 "P2WPKH 주소" 또는 "네이티브 SegWit 주소"라고도 합니다.

송금자가 P2WPKH 주소에 비트코인 전송:
송금자가 비트코인을 P2WPKH 주소로 송금하려면 이 주소를 수신자에게 알려주어야 합니다.

스크립트 실행:
비트코인을 P2WPKH 주소로 전송하면, 해당 거래의 출력 스크립트에는 P2WPKH 스크립트가 들어가게 됩니다. 이 스크립트는 다음과 같은 형태를 가집니다:

OP_0 <20-byte public key hash>


OP_0: 스크립트에서 0을 나타내는 오퍼레이터입니다. P2WPKH 스크립트에서는 항상 0으로 설정됩니다.
20-byte public key hash: 수신자의 공개 키를 해시한 값으로, 실제로는 20바이트 크기의 해시 값이 들어갑니다.
해제 스크립트 (Redeem Script) 없음:
P2WPKH 스크립트는 해제 스크립트가 없이 완전히 실행될 수 있습니다. 이는 블록체인에서 거래의 크기를 줄이고, 트랜잭션 처리 속도를 향상시키는 SegWit 프로토콜의 주요 이점 중 하나입니다.

스크립트 검증:
거래가 채굴자에 의해 블록에 포함되려면 해당 거래의 출력 스크립트가 유효한지 검증되어야 합니다. P2WPKH 스크립트는 이와 관련된 검증을 수행합니다. 수신자는 이전에 생성된 공개 키로부터 공개 키 해시를 추출하고, 이를 블록체인에서 제공된 해시와 비교하여 검증합니다.

P2WPKH 스크립트는 SegWit를 통해 확장성과 보안을 개선하는데 기여하였으며, 새로운 주소 형식을 도입하여 비트코인 트랜잭션의 크기를 줄이고 네트워크 활동을 효율적으로 만들었습니다.

 

p2wpkh 트랜잭션

P2WPKH 트랜잭션은 비트코인에서 Segregated Witness (SegWit) 프로토콜을 사용하여 Pay-to-Witness-Public-Key-Hash(P2WPKH) 주소로 송금하는 거래를 말합니다. P2WPKH 트랜잭션은 기존 비트코인 트랜잭션과는 약간 다른 구조를 가지고 있으며, 주로 SegWit 주소 형식으로 시작하는 주소들과 연관되어 사용됩니다.

P2WPKH 트랜잭션의 구조와 작동 방식을 설명해보겠습니다:

입력 (Inputs):
P2WPKH 트랜잭션의 입력은 이전에 생성된 거래의 출력에 대한 참조를 포함합니다. 각 입력은 소비하려는 비트코인 금액과 해당 거래 출력을 해제하기 위한 서명(scriptSig)이 포함되어 있습니다.

출력 (Outputs):
트랜잭션의 출력은 새로운 소유자에게 송금되는 비트코인 금액과 해당 비트코인을 사용하기 위한 조건을 명시하는 스크립트(scriptPubKey)가 포함됩니다.

P2WPKH 출력 스크립트:
P2WPKH 출력 스크립트는 다음과 같은 형식을 가집니다:

OP_0 <20-byte public key hash>


OP_0: 스크립트에서 0을 나타내는 오퍼레이터입니다. P2WPKH 출력 스크립트에서는 항상 0으로 설정됩니다.
20-byte public key hash: 수신자의 공개 키를 해시한 값으로, 실제로는 20바이트 크기의 해시 값이 들어갑니다.
해제 스크립트 (Witness):
해제 스크립트 또는 Witness는 SegWit에서 새롭게 도입된 개념으로, 실제 서명(signature)과 공개 키(public key)가 포함됩니다. P2WPKH 트랜잭션에서는 해제 스크립트가 스크립트 입력 대신 Witness에 포함됩니다.

해제 스크립트를 Witness에 포함하는 이유:
기존 비트코인 트랜잭션은 해제 스크립트와 스크립트 입력이 함께 트랜잭션에 포함되어 크기가 커지는 문제가 있었습니다. SegWit은 이러한 문제를 해결하기 위해 해제 스크립트를 트랜잭션에서 분리하여 Witness에 포함시켰습니다. 따라서 P2WPKH 트랜잭션은 일반적으로 기존 비트코인 트랜잭션보다 작은 크기를 가집니다.

트랜잭션 검증:
P2WPKH 트랜잭션은 네트워크에서 검증되어야 합니다. 입력으로 사용된 이전 거래가 유효하고, 스크립트와 Witness가 올바르게 구성되었는지 확인합니다. 또한 수신자는 자신의 공개 키와 관련된 해시를 통해 비트코인을 받을 수 있음을 검증합니다.

P2WPKH 트랜잭션은 SegWit을 통해 네트워크 활동을 향상시키고 보안을 강화하는 데 기여합니다. 또한, 작은 크기와 빠른 트랜잭션 처리 시간을 통해 사용자 경험을 개선합니다.