본문 바로가기
카테고리 없음

간단한 비트코인 지불 원리 - P2PK

by 3min⚡️bitcoin 2025. 8. 7.

utxo 이해를 했으면, 이걸 어떻게 사용하는지도 알아야 한다.

사토시가 처음 제안했던 방식부터 알아보자.

공개 키 암호 방식

일단 지불 원리를 알아보기 전에, 비트코인 지불의 근간이 되는 공개키 (비대칭키) 암호 방식을 알아보자.

https://ko.wikipedia.org/wiki/%EA%B3%B5%EA%B0%9C_%ED%82%A4_%EC%95%94%ED%98%B8_%EB%B0%A9%EC%8B%9D

 

공개 키 암호 방식 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 공개 키 암호 방식(公開 - 暗號 方式, public-key cryptography)은 암호 방식의 한 종류로 비밀 키 암호 방식과 달리 암호화와 복호화에 이용하는 키가 다른 방식을 말

ko.wikipedia.org

비트코인은 공개 키 서명 방식이다.

공개키 서명 방식이란, 메세지를 비밀키를 통해서 서명한다. 그러면 그 서명이 올바른 개인키로 서명되었는지 공개키가 검증한다.

 

a 개인키로 서명한 메세지가 올바른지 A 공개키로 검증한다.

A 공개키는 말 그대로 공개된 키 이므로, 다른 사람이 A 공개키를 볼 수 있고 이로 "서명"이 올바른지 a개인키 없이 검증할 수 있는 방식이다.

 

비트코인은 위 원리로, 자신의 utxo에 있는 돈을 누구에게 전송할 때 개인키로 서명을 한다.

그리고 검증하는 노드들이 대응되는 공개키로 검증하는 방식이다.

P2PK(Pay to Public Key, 공개 키에 지불하기)

백서에 나오는 트랜잭션 그림을 살펴보자.

 

제일 왼쪽 첫 트랜잭션을 보면 0번 주인이 1번 주인에게 돈을 송금한다.

왜냐하면, 0번 주인의 서명과 1번 주인의 공개키가 같은 트랜잭션에 있기 때문이다.

그림엔 없지만 이미 왼쪽 트랜잭션에 0번 주인의 공개키로 0번 주인의 서명에 대해 검증이 완료된 상태이다.

 

가운데 2번째 트랜잭션을 보면, 1번 주인이 2번 주인에게 송금한다.

1번 주인은 1번 개인키를 가지고 서명을 생성하여 트랜잭션에 포함시켰다.

정확히는 트랜잭션의 input의 scriptSig(해제스크립트)에 서명값을 실었다.

2번 주인의 공개키는 output의 scriptPubKey(잠금스크립트)에 넣는다.

그리고 1번 주인의 공개키를 이용해서, 가운데 트랜잭션의 서명값을 검증한다. (Verify 점선)

검증이 완료되면, 2번 주인은 새로운 utxo가 생긴거고, 1번 주인은 자신의 utxo를 사용한 것이 된다.

 

이렇게 공개키에 지불하는 방식을 P2PK(Pay to Public Key) 라고 한다.

즉, 이 비트코인은 이 공개키에 대응되는 개인키를 소유한 사람만 쓸 수 있다.

 

이건 옛날 초기 방식이고, 요즘은 공개키를 해싱해서 주소로 만들고 주소에 지불하는 p2pkh를 비롯하여 세그윗(p2wpkh), 탭루트(p2tr)등 다양한 발전이 이루어졌다.