Genesis 블럭

제네시스 블럭 (Genesis Block)

제네시스 블럭 (Genesis Block)은 블럭체인에 있는 최초의 블럭을 의미한다. 2009년 1월 3일 Bitcoin의 창시자인 사토시 나카모토(Satoshi Nakamoto)는 비트코인 블럭체인의 첫 블럭을 만들게 된다.

비트코인에서 Genesis Block은 "Block 0"으로 표시하는데, 이는 Block Height가 0 이라는 의미를 가진다. Block Height란 Genesis Block 블럭으로부터의 거리를 의미하는 것으로 Block Height 1은 Genesis Block 바로 다음 블럭을 의미한다. 비트코인의 Genesis Block은 아래와 같은 블럭 해시값은 가지고 있다.

    000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

비트코인의 제네시스 블럭은 아래와 같은 Raw 데이타를 갖는다.

제네시스 블럭의 Raw Data를 바이트 스트림으로 표시하면 아래와 같다.

0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a29ab5f49ffff001d1dac2b7c0100000001000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000

위 Block Raw Data를 필드별로 나누어 보면 아래와 같은데, Genesis Block은 하나의 트랜잭션(transaction)을 가지고 있으며, 그 트랜잭션 안에 하나의 트랜잭션 입력(transaction input)과 하나의 트랜잭션 출력(transaction output)을 가지고 있다.

01000000 (버전)
0000000000000000000000000000000000000000000000000000000000000000 (이전 블럭 해시)
3BA3EDFD7A7B12B27AC72C3E67768F617FC81BC3888A51323A9FB8AA4B1E5E4A (Merkle Root 해시) 
29AB5F49  (Timestamp)
FFFF001D  (nBits, Target)
1DAC2B7C  (Nonce)
01        (트랜잭션 개수) 
01000000  (트랜잭션 버전)
01        (트랜잭션 입력 개수)
0000000000000000000000000000000000000000000000000000000000000000 (이전 트랜잭션 출력 해시)
FFFFFFFF  (이전 트랜잭션 출력 인덱스)
4D        (unlocking script(scriptsig) 길이)
04FFFF001D0104455468652054696D65732030332F4A616E2F32303039204368616E63656C6C6F72206F6E206272696E6B206F66207365636F6E64206261696C6F757420666F722062616E6B73  (unlocking script)
FFFFFFFF  (Sequence)
01        (트랜잭션 출력 개수)
00F2052A01000000 - (50 BTC, Coinbase Reward)
43        (locking script 길이)
4104678AFDB0FE5548271967F1A67130B7105CD6A828E03909A67962E0EA1F61DEB649F6BC3F4CEF38C4F35504E51EC112DE5C384DF7BA0B8D578A4C702B6BF11D5FAC  (locking script)
00000000  (Lock time)

Genesis Block은 특히 트랜잭션 입력(transaction input)의 unlocking script 안에 아래와 같은 메시지를 넣은 것으로 유명하다. 이 메시지는 2009년 1월 3일 영국의 신문인 "The Times"의 헤드라인으로서, Satoshi Nakamoto가 비트코인을 런칭한 싯점이 1월 3일 혹은 그 이후라는 것을 증명하게 되었고, 또한 2009년 당시 서브 프라임 사태로 각국 은행들이 무차별적으로 돈을 찍어냈던 문제점을 지적한 것이라고 평가되고 있다.

The Times 03/Jan/2009 Chancellor on brink of second bailout for banks

5468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73

일반적으로 트랜잭션 입력은 이전 트랜잭션 출력을 지정하게 되는데, Genesis Block은 최초의 블럭이므로 이전 트랜잭션을 지정할 필요가 없었으며, 대신 위와 같은 메시지를 담은 것이다.