비트코인/비트코인 구조

[비트코인 구조] 세그윗에서 증인(Witness) 데이터를 전송하는 방식

라이튼 2022. 11. 19. 16:20

미리 알아야 할 내용들


 

[비트코인 구조] 세그윗(Segwit), Bech32 주소

미리 알아야 할 내용들 [비트코인 구조] DER 형식 서명(Signature) 생성 미리 알아야 할 내용들 '비트코인/암호학' 카테고리의 글 목록 평범한 대학생의 블록체인 기술 관련 블로그 입니다. kwjdnjs.tisto

kwjdnjs.tistory.com

 

[비트코인 구조] 트랜잭션 기본 규칙

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

kwjdnjs.tistory.com


세그윗에서 증인(Witness) 데이터를 전송하는 방식

 

 이번 글에서는 실제 세그윗의 증인 데이터가 어떻게 전송되는 지에 대해 알아보겠습니다. 먼저 세그윗 트랜잭션을 하나 불러오겠습니다. 아래 트랜잭션은 최초의 세그윗 트랜잭션입니다.

 

 

Blockchain.com | Explorer

The most popular and trusted block explorer and crypto transaction search engine.

www.blockchain.com

 

 위 트랜잭션 데이터는 다음과 같습니다.

 

01000000000101ad2bb91208eef398def3ed3e784d9ee9b7befeb56a3053c3561849b88bc4cedf0000000000ffffffff037a3e0100000000001600148d7a0a3461e3891723e5fdf8129caa0075060cff7a3e0100000000001600148d7a0a3461e3891723e5fdf8129caa0075060cff0000000000000000256a2342697462616e6b20496e632e204a6170616e20737570706f727473205365675769742102483045022100a6e33a7aff720ba9f33a0a8346a16fdd022196862796d511d31978c40c9ad48b02206fb8f67bd699a8c952b3386a81d122c366d2d36cd08e2de21207e6aa6f96ce9501210283409659355b6d1cc3c32decd5d561abaac86c37a353b52895a5e6c196d6f44800000000

 

위 트랜잭션을 분석해보면 다음과 같습니다.

 

 버전: 01000000

 입력: 000101ad2bb91208eef398def3ed3e784d9ee9b7befeb56a3053c3561849b88bc4cedf0000000000ffffffff

 출력: 037a3e0100000000001600148d7a0a3461e3891723e5fdf8129caa0075060cff7a3e0100000000001600148d7a0a3461e3891723e5fdf8129caa0075060cff0000000000000000256a2342697462616e6b20496e632e204a6170616e20737570706f7274732053656757697421

 

 입력에서 특이한 점이 눈에 띕니다. 일반적인 트랜잭션 입력은 전체 입력의 개수로 시작합니다. 하지만 세그윗 트랜잭션의 입력의 경우 '00'으로 시작하며, 이후 '01'이 추가로 등장한 뒤에야 비로소 입력 개수인 '01'이 등장함을 알 수 있습니다. 앞에 등장하는 '00'과 '01'은 각각 세그윗 마커, 세그윗 플래그라고 합니다.

 

-입력

 세그윗 마커(marker): 00

 세그윗 플래그(flag): 01

 입력 개수: 01

 입력으로 사용된 이전 트랜잭션 해시(리틀 엔디안): ad...df

 이전 트랜잭션의 출력 번호: 00000000

 해제 스크립트(세그윗이므로 비어있음): 00(OP_0)

 시퀀스: ffffffff

 

 일반적인 스크립트의 경우 출력 데이터 이후 록타임과 함께 스크립트가 완성되어야 합니다. 하지만 위 트랜잭션의 경우 추가로 이어지는 부분이 등장합니다. 이것이 바로 증인 데이터입니다.

 

Witness: 02483045022100a6e33a7aff720ba9f33a0a8346a16fdd022196862796d511d31978c40c9ad48b02206fb8f67bd699a8c952b3386a81d122c366d2d36cd08e2de21207e6aa6f96ce9501210283409659355b6d1cc3c32decd5d561abaac86c37a353b52895a5e6c196d6f448

 

 위 증인 데이터를 정리하면 다음과 같습니다.

 

 아이템 수: 02(서명과 공개키)

 서명 길이: 48

 서명: 3045022100a6e33a7aff720ba9f33a0a8346a16fdd022196862796d511d31978c40c9ad48b02206fb8f67bd699a8c952b3386a81d122c366d2d36cd08e2de21207e6aa6f96ce9501

 공개키 길이: 21

 공개키: 0283409659355b6d1cc3c32decd5d561abaac86c37a353b52895a5e6c196d6f448

 

 그리고 마지막으로 록타임이 등장합니다.

 

 록타임: 00000000

 

 지금까지 세그윗 트랜잭션이 어떻게 구성되어 있는지에 대해 알아봤습니다. 감사합니다.