비트코인/비트코인 구조

[비트코인 구조] 스크립트(Script)와 Opcode, P2PK

라이튼 2022. 9. 8. 17:13

미리 알아야 할 내용들


 

[비트코인 구조] 잠금 스크립트(scriptPubkey)와 해제 스크립트(scriptSig) 기초

미리 알아야 할 내용들 [비트코인 구조] 비트코인 트랜잭션(Transaction) 기초 미리 알면 좋은 내용들 [블록체인 용어] 블록체인(Block Chain)  블록체인이란 발생한 거래들을 블록에 담고 블록들을 연

kwjdnjs.tistory.com


스크립트(Script)와 Opcode, P2PK

 

 비트코인은 스크립트라고 부르는 프로그래밍 언어를 사용합니다. 이 스크립트는 잠금 스크립트와 해제 스크립트를 구성하는 데 사용됩니다.

 

 스크립트는 Opcode라고 부르는 명령어 집합으로 구성되어 있습니다. 따라서 가장 먼저 opcode에 대해서 알아보겠습니다.

 

1. Opcode

 Opcode는 operation code의 약자로 스크립트를 구성하는 명령어 집합입니다. 'OP_CHECKSIG'와 같은 형태로 표현되며, 실제 명령어를 저장하는 과정에서는 '0xac'처럼 16진수를 사용합니다. 다음은 주요 opcode입니다.

 

단어 16진수 설명
OP_0, OP_FALSE 0x00 빈 바이트 배열
OP_1, OP_TRUE 0x51 1
OP_2 ~ OP_16 0x52~60 2 ~ 16
OP_DUP 0x76 아이템 복제
OP_EQUAL 0x87 값 비교
OP_EQUALVERIFY 0x88 값 비교와 검증
OP_SHA256 0xa8 sha-256
OP_HASH160 0xa9 hash-160
OP_HASH256 0xaa hash-256
OP_CHECKSIG 0xac 서명 검증
OP_CHECKMULTISIG 0xae 다중 서명 검증

 

2. 스택(Stack)

 스택은 자료구조 중 하나로 가장 나중에 들어간 아이템이 가장 먼저 나오는 구조(LIFO, Last In First Out)입니다.

 

 

 비트코인 스크립트는 스택을 이용해 opcode를 사용합니다. 실제로 스택이 스크립트에 어떻게 사용되는지 알아보기 위해 가장 단순한 형태의 서명 검증 방식인 P2PK에 대해 알아보겠습니다.

 

3. P2PK

 P2PK는 Pay To Public Key의 약자로 가장 단순한 형태의 서명 검증 방식이며, 현재는 거의 쓰이지 않는 방식입니다. P2PK는 서명 검증을 위해 공개키, 서명, 서명 검증 함수만을 사용합니다. 다음과 같은 형태의 잠금 스크립트와 해제 스크립트가 바로 P2PK 스크립트입니다.

 

 

 지금부터 스택과 스크립트를 이용해 서명을 검증해 보겠습니다. 가장 먼저 스택에 들어가는 값은 해제 스크립트 값입니다. 다음과 같이 해제 스크립트에 포함되어 있는 서명을 먼저 스택에 넣습니다.

 

 

 해제 스크립트는 모두 사용하였으므로 이어서 잠금 스크립트값을 순서대로 불러오겠습니다. 잠금 스크립트에 가장 먼저 포함된 값인 공개키를 스택에 넣습니다.

 

 

 그리고 마지막으로 OP_CHECKSIG를 불러옵니다. OP_CHECKSIG는 현재 스택에서 가장 위에 위치한 두 값을 불러와(스택에서 꺼내) 서명을 검증하고, 서명이 올바르면 1을, 올바르지 않으면 0을 스택으로 반환합니다.

 

 

 

 해제 스크립트와 잠금 스크립트를 모두 사용하였으므로 스택에 남은 결괏값을 확인합니다. 만약 스택의 가장 위에 0이 남아있다면 서명 검증은 실패로 처리하고, 나머지 경우는 모두 성공으로 처리합니다. 즉, 스택에 0이 아닌 값이 가장 위에 남아있다면 서명 검증은 성공한 것으로 처리합니다.

 

 지금까지 스크립트와 opcode 그리고 이를 이용한 P2PK에 대해 알아봤습니다. 감사합니다.

 

 

이어지는 글들


 

[비트코인 구조] P2PKH

미리 알아야 할 내용들 [비트코인 구조] 개인키(Private key), 공개키(Public key), 주소(Address) 생성 미리 알아야 할 내용들 '비트코인/암호학' 카테고리의 글 목록 평범한 대학생의 블록체인 기술 관련

kwjdnjs.tistory.com