Skip to content
Tayakorn
Bitcoin Handbook

Bitcoin Handbook

LEVEL 1 · กลไกทีละชิ้น

hash และ chain — สมุดที่แก้หน้าเก่าแล้วโป๊ะทันที

คำถามข้อ 2 จากบทที่ 3 ยังค้างอยู่: ไม่มีนายทะเบียน แล้วใครชี้ว่ารายการไหนมาก่อน? ก่อนจะไปถึงคำตอบเต็ม ต้องสร้างเครื่องมือพื้นฐานชิ้นหนึ่งก่อน — สมุดที่ต่อให้เจ้าเล่ห์แค่ไหนก็ แอบ แก้หน้าเก่าไม่ได้ เพราะแก้เมื่อไหร่ ทุกคนเห็นรอยทันที

6.1 hash — ลายนิ้วมือของข้อมูล

hash คือผลลัพธ์ของการเอาข้อมูลอะไรก็ได้ป้อนเข้าเครื่องบดทางคณิตศาสตร์ แล้วได้เลขความยาวคงที่ออกมาหนึ่งชุด เหมือนลายนิ้วมือของข้อมูลก้อนนั้น ลองดูของจริง — นี่คือ hash (แบบ SHA-256 ที่ bitcoin ใช้) ของคำสองคำที่ต่างกันแค่จุดเดียว:

"สวัสดี"   →  4ad434bd60c467ad71c61029edf3a84f65dc5ec5742aa0c0dc2afaa1e226198a
"สวัสดี."  →  38e1b9bd0665f1296730446d1deaae1de898d1057e32528889ecc22d4d2f05ab

เพิ่มจุดตัวเดียว ลายนิ้วมือเปลี่ยนจนจำเค้าเดิมไม่ได้สักหลัก และเหมือนกุญแจในบทที่ 4 — มันเดินทางเดียว: จากข้อมูลไป hash ใช้เวลาเสี้ยววินาที แต่จาก hash ย้อนกลับไปหาข้อมูล ทำไม่ได้ · คุณสมบัติเรียบ ๆ สองข้อนี้คืออิฐก้อนสำคัญที่สุดของทั้งระบบ

6.2 ร้อยหน้าเป็นโซ่

ธุรกรรมจากห้องรอถูกมัดรวมกันเป็นชุดแล้วบันทึกเป็น "หน้าใหม่" ของสมุด — หน้านี้เรียกว่า block และหัวกระดาษของทุก block มีช่องบังคับหนึ่งช่อง: ต้องประทับ hash ของ block ก่อนหน้าไว้เสมอ

ทุก block ประทับ hash ของหน้าก่อนไว้บนหัวกระดาษเสมอแก้เนื้อหาหน้าเดียว = ลายนิ้วมือเปลี่ยน = หน้าถัดไปทั้งหมดโป๊ะblock #99prev 7b2e91c0ธุรกรรมในหน้านี้hash a91f04d7block #100prev a91f04d7แก้ตัวเลขตรงนี้hash e40b7723block #101prev 3c7d1e4bธุรกรรมในหน้านี้hash 8f52c6a1block #102prev 8f52c6a1ธุรกรรมในหน้านี้hash 1d99ba30ไม่กระทบแก้ตรงนี้ → hash เปลี่ยนprev ไม่ตรงกับของจริง ✕พังตามเป็นทอด ๆ ✕ต้องปลอมใหม่ทั้งยวงตั้งแต่หน้าที่แก้ ไปจนถึงหน้าล่าสุดโครงสร้างนี้คือที่มาของชื่อ blockchain — โซ่ของ block
FIG 6.1 หัวกระดาษของทุก block ต้องประทับ hash ของหน้าก่อนไว้เสมอ — แก้อดีตหนึ่งบรรทัด ลายนิ้วมือของหน้านั้นเปลี่ยน prev ที่หน้าถัดไปบันทึกไว้จึงไม่ตรง และโป๊ะไล่กันไปเป็นโดมิโนจนถึงหน้าล่าสุด · นี่คือที่มาของชื่อ blockchain

ช่องเดียวนี้เปลี่ยนทุกอย่าง ลองเล่นเป็นโจรดู: คุณอยากย้อนไปแก้ธุรกรรมใน block ที่ 100 — เนื้อหาหน้า 100 เปลี่ยน ลายนิ้วมือหน้า 100 ก็เปลี่ยน แต่ลายนิ้วมือ (อันเก่า) ถูกประทับอยู่บนหัวหน้า 101 หน้า 101 จึงโป๊ะว่าไม่ตรง จะกลบต้องแก้หน้า 101 ตาม แล้วหน้า 102 ก็โป๊ะต่อ... ไล่โดมิโนไปจนถึงหน้าปัจจุบัน การแก้อดีตหนึ่งบรรทัด บังคับให้ปลอมสมุดใหม่ตั้งแต่จุดนั้นถึงหน้าล่าสุดทั้งยวง — และนี่คือที่มาของชื่อเล่นที่โลกเรียกโครงสร้างนี้: blockchain (โซ่ของ block)

ระวังไว้นิด: โซ่ทำให้การแก้ไข ถูกจับได้ แต่ลำพังโซ่ยังกันคนปลอม "ทั้งยวง" ไม่ได้ — ถ้าการเขียนหน้าใหม่ฟรี โจรก็นั่งพิมพ์สมุดปลอมร้อยหน้าได้ในพริบตา ชิ้นส่วนที่ทำให้การปลอมทั้งยวง แพงจนไม่คุ้ม คือพระเอกของบทถัดไป

6.3 หน้าแรกของสมุด — คำตอบว่าทำไมต้องมีระบบนี้

block แรกสุดในประวัติศาสตร์ (วงการเรียก genesis block) ถูกสร้างเมื่อ 3 มกราคม 2009 และ Satoshi ฝังข้อความหนึ่งบรรทัดไว้ในนั้นถาวร — พาดหัวหนังสือพิมพ์ The Times ของวันนั้น: "Chancellor on brink of second bailout for banks" (รัฐมนตรีคลังจ่อขออุ้มธนาคารรอบสอง)

ยังจำปี 2008 จากบทที่ 2 ได้ไหม — นี่ไง กลับมาแล้ว ข้อความนี้ทำหน้าที่สองอย่างพร้อมกัน: เป็นหลักฐานพิสูจน์ว่า block นี้สร้างไม่ก่อนวันที่ 3 มกราคม (เพราะไม่มีใครรู้พาดหัวล่วงหน้า) และเป็นการบอกโลกเงียบ ๆ ว่าระบบนี้เกิดมาเพื่อตอบโต้อะไร — สมุดที่มีเจ้าของเพิ่งพาโลกพังไปหมาด ๆ นี่คือข้อเสนอของสมุดที่ไม่มีเจ้าของ ฝังไว้ในหน้าแรกของตัวมันเอง

Read the full book