미리 알아야 할 내용들
세그윗에서 증인(Witness) 데이터를 전송하는 방식
이번 글에서는 실제 세그윗의 증인 데이터가 어떻게 전송되는 지에 대해 알아보겠습니다. 먼저 세그윗 트랜잭션을 하나 불러오겠습니다. 아래 트랜잭션은 최초의 세그윗 트랜잭션입니다.
위 트랜잭션 데이터는 다음과 같습니다.
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
지금까지 세그윗 트랜잭션이 어떻게 구성되어 있는지에 대해 알아봤습니다. 감사합니다.
'비트코인 > 비트코인 구조' 카테고리의 다른 글
[비트코인 구조] 비트코인 블록 기본 규칙 (0) | 2022.12.01 |
---|---|
[비트코인 구조] 비트코인 블록(Block) 기초 (0) | 2022.11.29 |
[비트코인 구조] P2SH 스크립트에서 리딤 스크립트를 전송하는 방식 (0) | 2022.11.19 |
[비트코인 구조] 0x4c 이상 크기의 데이터를 스크립트에 저장하는 방법 (0) | 2022.11.15 |
[비트코인 구조] 트랜잭션 생성 (5) | 2022.10.25 |