Kỉ niệm Bitcoin 9 tuổi, nhìn lại Genesis Block - khối đầu tiên trong chuỗi blockchain

Hôm nay là ngày kỉ niệm 9 năm Genesis Block, khối đầu tiên trong chuỗi bitcoin. Từ khi ra đời đồng tiền ảo tới nay đã có biết bao thay đổi, và block đầu tiên này chính là điểm bắt đầu cho chuỗi bitcoin trên đường trở thành cuộc cách mạng trong việc chia sẻ ngang hàng.

Genesis Block là gì?

Genesis Block là khối Bitcoin đầu tiên, hay còn gọi là khối nguyên thủy, có mã hash là

000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

Về sau người ta gọi là block 0 nhưng trước đây nó được tính là block 1. Genesis Block đặc biệt ở chỗ không có tham chiếu tới block trước đó. Dưới đây là minh họa khối block này trong một bình luận về bản cũ của Bitcoin. Đoạn đầu tiên là các biến cần thiết để tạo lại block. Đoạn thứ hai là block ở định dạng printblock chuẩn, chứa các dữ liệu thu gọn từ đoạn trước đó.

GetHash() = 0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
hashMerkleRoot = 0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b
txNew.vin[0].scriptSig = 486604799 4 0x736B6E616220726F662074756F6C69616220646E6F63657320666F206B6E697262206E6F20726F6C6C65636E61684320393030322F6E614A2F33302073656D695420656854
txNew.vout[0].nValue = 5000000000
txNew.vout[0].scriptPubKey = 0x5F1DF16B2B704C8A578D0BBAF74D385CDE12C11EE50455F3C438EF4C3FBCF649B6DE611FEAE06279A60939E028A8D65C10B73071A6F16719274855FEB0FD8A6704 OP_CHECKSIG
block.nVersion = 1
block.nTime = 1231006505
block.nBits = 0x1d00ffff
block.nNonce = 2083236893

CBlock(hash=000000000019d6, ver=1, hashPrevBlock=00000000000000, hashMerkleRoot=4a5e1e, nTime=1231006505, nBits=1d00ffff, nNonce=2083236893, vtx=1)
CTransaction(hash=4a5e1e, ver=1, vin.size=1, vout.size=1, nLockTime=0)
CTxIn(COutPoint(000000, -1), coinbase 04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73)
CTxOut(nValue=50.00000000, scriptPubKey=0x5F1DF16B2B704C8A578D0B)
vMerkleTree: 4a5e1e

Block này đi kèm đoạn văn bản “The Times 03/Jan/2009 Chancellor on brink of second bailout for banks” (một câu trong một bài báo của tờ Times ở Anh) có lẽ được dùng làm bằng chứng rằng block này được tạo ra vào ngày 3/1/2009 cũng như bình luận về tình trạng bất ổn do việc dự trữ theo tỉ lệ của ngân hàng.

Đào Genesis Block

Vào thời điểm đó, (năm 2009) việc đào bằng GPU có lẽ chưa được sử dụng mà phải từ khoảng năm 2011. Tham chiếu đầu tiên trên Google Trends cho “GPU mine Bitcoin” bắt đầu từ tháng 4/2011.

Vậy nên có lẽ Satoshi đã đào trên CPU. Nhưng chính xác thì ông đã dùng bao nhiêu CPU để đào khối đầu tiên này?

Mã nguồn client bản 0.1 của Satoshi không có chu trình đặc biệt hay lệnh command nào để đào Genesis Block. Thực ra nó được nhúng thẳng (hardcore) nghĩa là tạo từ một phần mềm khác không rõ mã nguồn. Hơn nữa, vì BTC vào thời điểm đó cũng là vô giá trị, không có cạnh tranh giữa những người đào nên có thể đoán rằng Satoshi đào trên máy tính cá nhân (và chỉ một máy) của riêng ông.

Máy tính của Satoshi

Vào năm 2009, một CPU tốt có thể thực hiện được khoảng 2 mũ 22 băm kép một giây (double-hashes/second). Nếu dùng 2 vi xử lý thì sẽ có 2 luồng cùng đào. Máy client 0.1 của Satochi không được tối ưu hóa cho băm kép (bằng cách sao lưu, phục hồi trạng thái trung gian của ứng dụng hash thứ 2).

Satoshi dùng máy tính nào để đào block đầu tiên?
Satoshi dùng máy tính nào để đào block đầu tiên?

Theo tính toán thì sau 6 ngày cũng chỉ có 17% khả năng ông tìm ra Genesis Block. Vậy là do ông may mắn hay cố tình đào trong 6 ngày? So sánh thời gian của Block 0 và Block 1:

Block 0: 2009-01-03 18:15:05
Block 1: 2009-01-09 02:54:25 (6 ngày sau)

Dù thời gian trung bình giữa các block là 10 phút nhưng thời gian giữa block 0 và block 1 lại là 6 ngày. Có người cho rằng Satoshi đã làm việc với bitcoin trước đó nhưng cố tình phát hành ra vào đúng ngày theo nội dung trên tờ báo, sau đó tiếp tục đào Genesis Block mà dùng giờ trong quá khứ. Cũng có thể do việc hash chậm nên ông dành 6 ngày đào với cùng 1 mốc timestamp trước khi chuyển sang block 1.

Khối dữ liệu thô

Đây là bản hex thô của Genesis Block

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ñ._¬....

Phân tích ra thì là thế này

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 - pk_script length
4104678AFDB0FE5548271967F1A67130B7105CD6A828E03909A67962E0EA1F61DEB649F6BC3F4CEF38C4F35504E51EC112DE5C384DF7BA0B8D578A4C702B6BF11D5FAC - pk_script
00000000 - lock time

Phần thưởng khi đào được Genesis Block

50 BTC đầu tiên được chuyển đến địa chỉ 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa dù cũng không thể dùng được. Chưa rõ đây là do vô ý hay cố tình nhưng Genesis Block đã nhận được 1073 giao dịch với hơn 16 BTC được thêm vào.địa chỉ nói trên. Cũng không ai biết vì sao phần thưởng khi đào Genesis Block lại không dùng được nhưng bitcoin và tất cả các sản phẩm phái sinh từ nó cũng đều có phần thưởng ban đầu là không dùng được như vậy. Tổng số lượng bitcoin lưu thông cũng không được vượt quá 21 triệu BTC.

Một số sự thật thú vị về Bitcoin khác

  • Satoshi Nakamoto có thể đã đào được hơn 1 triệu coin trong những năm còn “hành tẩu” trên cộng đồng bitcoin.
  • Ước tính 64% bitcoin nằm trong ví và không được ai động đến.
  • Ước tính 5% bitcoin hiện tại đã đi qua chợ Silk Road.
  • Vào kì nghỉ lễ năm 2013, một người New York đã bán nhà đổi lấy 800.000 BTC.
  • Satoshi Nakamoto thực hiện giao dịch đầu tiên với nhà phát triển Hal Finney vào 12/11/2009.
  • Vào 12 tháng đầu tiên tồn tại của bitcoin, người dùng có thể đổi được khoảng 1.300 BTC lấy 1 USD.
  • Tấn công DOS có thể ảnh hưởng tới mạng bitcoin nhưng cũng có các biện pháp bảo vệ được tích hợp bên trong.
  • Bitcoin không phải nặc danh, mọi giao dịch đều truy nguyên tới tận cùng được nhưng có thể dùng tên giả.
  • Số dòng code trên giao thức bitcoin là 31.000

Xem thêm:

Thứ Năm, 04/01/2018 09:10
52 👨 1.126
0 Bình luận
Sắp xếp theo
    ❖ Bình luận công nghệ