The code analysis of Bitcoin - Part II

in #bitcoin7 years ago (edited)

Let's continue to find out every detail of the implementation of Bitcoin. Because blockchain is the core part of Bitcoin, let's start with the blocks.

The Genesis Block

bitcoin-genesis-block-source-code.png

In the earlier version of Bitcoin, the genesis block needed to be verified by other nodes. But apparently, it is not necessary. So later the verification process was removed and the code of generating the genesis block was settled down.

Before we dive into the code, let's recall the anatomy of the genesis block.

Raw Hex Version

00000000   01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
00000010   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
00000020   00 00 00 00 3B A3 ED FD  7A 7B 12 B2 7A C7 2C 3E   ....;£íýz{.²zÇ,>
00000030   67 76 8F 61 7F C8 1B C3  88 8A 51 32 3A 9F B8 AA   gv.a.È.ÈŠQ2:Ÿ¸ª
00000040   4B 1E 5E 4A 29 AB 5F 49  FF FF 00 1D 1D AC 2B 7C   K.^J)«_Iÿÿ...¬+|
00000050   01 01 00 00 00 01 00 00  00 00 00 00 00 00 00 00   ................
00000060   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
00000070   00 00 00 00 00 00 FF FF  FF FF 4D 04 FF FF 00 1D   ......ÿÿÿÿM.ÿÿ..
00000080   01 04 45 54 68 65 20 54  69 6D 65 73 20 30 33 2F   ..EThe Times 03/
00000090   4A 61 6E 2F 32 30 30 39  20 43 68 61 6E 63 65 6C   Jan/2009 Chancel
000000A0   6C 6F 72 20 6F 6E 20 62  72 69 6E 6B 20 6F 66 20   lor on brink of 
000000B0   73 65 63 6F 6E 64 20 62  61 69 6C 6F 75 74 20 66   second bailout f
000000C0   6F 72 20 62 61 6E 6B 73  FF FF FF FF 01 00 F2 05   or banksÿÿÿÿ..ò.
000000D0   2A 01 00 00 00 43 41 04  67 8A FD B0 FE 55 48 27   *....CA.gŠý°þUH'
000000E0   19 67 F1 A6 71 30 B7 10  5C D6 A8 28 E0 39 09 A6   .gñ¦q0·.\Ö¨(à9.¦
000000F0   79 62 E0 EA 1F 61 DE B6  49 F6 BC 3F 4C EF 38 C4   ybàê.aÞ¶Iö¼?Lï8Ä
00000100   F3 55 04 E5 1E C1 12 DE  5C 38 4D F7 BA 0B 8D 57   óU.å.Á.Þ\8M÷º..W
00000110   8A 4C 70 2B 6B F1 1D 5F  AC 00 00 00 00            ŠLp+kñ._¬....

Break It Down

  • 01000000 - version
  • 0000000000000000000000000000000000000000000000000000000000000000 - prev block
  • 3BA3EDFD7A7B12B27AC72C3E67768F617FC81BC3888A51323A9FB8AA4B1E5E4A - merkle root
  • 29AB5F49 - timestamp
  • FFFF001D - bits
  • 1DAC2B7C - nonce
  • 01 - number of transactions
  • 01000000 - version
  • 01 - input
  • 0000000000000000000000000000000000000000000000000000000000000000FFFFFFFF - prev output
  • 4D - script length
  • 04FFFF001D0104455468652054696D65732030332F4A616E2F32303039204368616E63656C6C6F72206F6E206272696E6B206F66207365636F6E64206261696C6F757420666F722062616E6B73 - scriptSig
  • FFFFFFFF - sequence
  • 01 - outputs
  • 00F2052A01000000 - 50 BTC
  • 43 - scriptPubKey length
  • 4104678AFDB0FE5548271967F1A67130B7105CD6A828E03909A67962E0EA1F61DEB649F6BC3F4CEF38C4F35504E51EC112DE5C384DF7BA0B8D578A4C702B6BF11D5FAC - scriptPubKey
  • 00000000 - lock time

Decoding the ScriptSig

  • 04 - push the next 4 bytes to stack
  • FFFF001D - 4 bytes pushed, they appear to be the same as bits
  • 01 - push the next 1 byte to stack
  • 04 - 1 byte pushed
  • 45 - push the next 69 bytes to stack
  • 5468652054696D65732030332F4A616E2F32303039204368616E63656C6C6F72206F6E206272696E6B206F66207365636F6E64206261696C6F757420666F722062616E6B73 - pushed bytes, "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks"

Decoding the ScriptPubKey

  • 41 - push the next 65 bytes onto the stack
  • 04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f - the 65 bytes that get pushed onto the stack
  • ac - OP_CHECKSIG

To be continued...

Sort:  


Get your post resteemed over 90000+ followers and get upto $19+ value Upvote. Your post will skyrocket and give you maximum exposer.

Send 1 SBD or STEEM to @steemitrobot with your post url you will get your post share over 30000+ followers and 1 upvote $1.5+ value. Plus Get [ Christmas Bonus- $1 Value upvote ]

Send 3 SBD or STEEM to @steemitrobot with your post url you will get your post share over 60000+ followers and 1 upvote $5+ value. Plus Get [ Christmas Bonus- $1 Value upvote ]

Send 5 SBD or STEEM to @steemitrobot with your post url you will get your post share over 60000+ followers and 1 upvote $9+ value. Plus Get [ Christmas Bonus- $2 Value upvote ]

Send 6 SBD or STEEM to @steemitrobot with your post url you will get your post share over 90000+ followers and 1 upvote $11+ value. Plus Get [ Christmas Bonus- $3 Value upvote ]

Send 10 SBD or STEEM to @steemitrobot with your post url you will get your post share over 90000+ followers and 1 upvote $19+ value. Plus Get [ Christmas Bonus- $4 Value upvote ]

See our all pakages at:

http://www.whaleboostup.ml

Coin Marketplace

STEEM 0.21
TRX 0.20
JST 0.034
BTC 91785.29
ETH 3117.82
USDT 1.00
SBD 3.00