หน้านี้แปลจากภาษาอังกฤษโดยอัตโนมัติแปลโดยอัตโนมัติ

Switch to EnglishView in Englishรายงานปัญหาการแปลเสนอการแก้ไข

กลับไปที่บทเรียน

บทที่ 3 - ผ่านแบบทดสอบ 0 จาก 10 ชุด

Hash: ลายนิ้วมือดิจิทัล

hash เชิงวิทยาการเข้ารหัสคือฟังก์ชันทางเดียวที่ทำให้การปลอมแปลงมองเห็นได้และทำให้ proof of work เป็นไปได้

  • อธิบายว่า hash เชิงวิทยาการเข้ารหัสทำอะไร และเหตุใด avalanche effect จึงสำคัญ
  • อธิบายว่า Merkle root ผูกบล็อกเข้ากับธุรกรรมทั้งหมดในบล็อกได้อย่างไร

คำตอบฉบับย่อ

hash ใน Bitcoin คืออะไร

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

Merkle root คืออะไร

hash เดียวที่ผูกบล็อกเข้ากับทุกธุรกรรมในบล็อกนั้น ดังนั้นการเปลี่ยนธุรกรรมใดก็ตามจะทำให้ root เปลี่ยนไป

ทำไมประวัติของ Bitcoin จึงเปลี่ยนแปลงไม่ได้

block header แต่ละอันผูกพันกับบล็อกก่อนหน้า ดังนั้นการเปลี่ยนบล็อกเก่าหมายถึงต้องทำ proof of work ใหม่สำหรับบล็อกนั้นและทุกบล็อกที่ตามมา

ลายนิ้วมือทางเดียว

ฟังก์ชัน hash เชิงการเข้ารหัสรับข้อมูลนำเข้าใดก็ได้ ไม่ว่าจะเป็นคำหนึ่งคำ รูปภาพ หรือสารานุกรมทั้งชุด แล้วคืนค่าเป็น digest ที่มีขนาดคงที่ กระบวนการนี้เป็นแบบทางเดียว คุณตรวจสอบได้ว่าข้อมูลนำเข้าให้ digest นั้นจริง แต่ในทางปฏิบัติไม่สามารถย้อนกลับจาก digest ไปหาข้อมูลนำเข้าได้ Bitcoin ใช้ SHA-256 ซึ่งคืนค่า 256 บิต โดยปกติเขียนเป็นอักขระเลขฐานสิบหก 64 ตัว hash ของบล็อกและ ID ของธุรกรรมใช้ฟังก์ชันนี้สองรอบ (SHA-256d)

ปรากฏการณ์หิมะถล่ม (avalanche effect)

ฟังก์ชัน hash ที่ดีมีความไวสูงมาก เปลี่ยนเครื่องหมายจุลภาคเพียงตัวเดียวในเอกสาร 500 หน้า digest ก็จะเปลี่ยนไปโดยสิ้นเชิง สิ่งนี้เรียกว่าปรากฏการณ์หิมะถล่ม (avalanche effect) และเป็นสิ่งที่ทำให้ hash มีประโยชน์ในฐานะข้อผูกพัน (commitment) digest จะล็อกไบต์ที่แน่นอนไว้ และการเปลี่ยนแปลงใดๆ ในภายหลังจะเห็นได้ชัดเจน

Merkle root

บล็อกไม่ได้นำธุรกรรมทุกรายการมา hash ลงใน header ทีละรายการ แต่จะ hash ID ของธุรกรรมเป็นคู่ จากนั้นนำผลลัพธ์มาจับคู่กันอีก และทำซ้ำจนเหลือ hash เพียงค่าเดียว นั่นคือ Merkle root โดย block header ประกอบด้วยเวอร์ชัน root นั้น hash ของบล็อกก่อนหน้า เวลา เป้าหมายความยาก (difficulty target) และ nonce หากเปลี่ยนธุรกรรมใดก็ตาม Merkle root จะเปลี่ยน ซึ่งทำให้ hash ของ header เปลี่ยน และทำลายห่วงโซ่ของงานที่ทำต่อจากนั้น

ประวัติที่ตรวจพบการปลอมแปลงได้

block header แต่ละอันรวม hash ของ header ก่อนหน้าไว้ด้วย หากผู้โจมตีต้องการเขียนธุรกรรมเก่าใหม่ จะต้องทำ proof of work ของบล็อกนั้นและทุกบล็อกที่ตามมาใหม่ทั้งหมด ให้เร็วกว่าเครือข่ายที่สุจริต ห่วงโซ่ hash ทำให้ประวัติตรวจสอบได้ง่ายแต่เขียนใหม่ได้ด้วยต้นทุนสูง โหนดจะปฏิเสธบล็อกที่ไม่ถูกต้อง แต่จะติดตามเชนคู่แข่งที่ถูกต้องซึ่งมีงานสะสมมากกว่า โหนดไม่สามารถปฏิเสธเชนที่ถูกต้องและมีงานมากกว่าเพียงเพราะผู้โจมตีเป็นผู้สร้างขึ้น

ลองทำดู

SHA-256(ข้อความ)239805a6e8fd509a63522c09d720a77dea6ca84e7f2083b08175f9d44d6437cb
SHA-256(ข้อความ + !)9772f2887a03bd6280f2207b4bb60557267a6507ab7a0693f081e924a0908819

บิตเปลี่ยนไป 133 จาก 256 บิต หลังจากเพิ่มอักขระเพียงตัวเดียว

สิ่งที่คุณควรได้รับ

hash คือข้อผูกพันแบบทางเดียว Merkle root ผูกบล็อกเข้ากับธุรกรรมทั้งหมดในบล็อก และ header แต่ละอันผูกกับบล็อกก่อนหน้า ดังนั้นการเปลี่ยนประวัติจึงต้องทำงานทั้งหมดที่อยู่เหนือขึ้นไปใหม่

ระลึกจากความจำ แล้วนำไปใช้

ลองเปลี่ยนอักขระหนึ่งตัวในตัวอย่างสาธิต อะไรเปลี่ยนไปบ้าง และ hash ไม่ได้พิสูจน์อะไร

ตรวจคำอธิบายของคุณ

digest เปลี่ยนไปอย่างมาก digest ที่ตรงกันใช้ตรวจความสอดคล้องของข้อมูล แต่ไม่ได้พิสูจน์ว่าข้อมูลนั้นเป็นความจริงหรือได้รับอนุญาต การอนุญาตต้องอาศัยลายเซ็น

จุดตรวจ

คำถามที่ 1 จาก 3

มีคนแก้ไขธุรกรรมหนึ่งรายการในบล็อกที่ถูกฝังลึกไป 100 บล็อก อะไรเปิดเผยการแก้ไขนั้น

คำถามที่ 2 จาก 3

คุณ hash เอกสารหนึ่งฉบับ เปลี่ยนเครื่องหมายจุลภาคหนึ่งตัว แล้ว hash อีกครั้ง digest จะเป็นอย่างไร

คำถามที่ 3 จาก 3

Merkle root ของบล็อกผูกพันกับอะไร

คำศัพท์สำคัญ

แหล่งอ้างอิง

ตรวจทานเมื่อ 25 ตุลาคม 2026 · ไม่ใช่คำแนะนำทางการเงิน