Merkle Tree คืออะไร? คำแนะนำสำหรับผู้เริ่มต้นสำหรับส่วนประกอบ Blockchain นี้
Merkle Trees เป็นส่วนประกอบพื้นฐานของบล็อกเชนที่รองรับฟังก์ชันการทำงาน ช่วยให้สามารถตรวจสอบโครงสร้างข้อมูลขนาดใหญ่ได้อย่างมีประสิทธิภาพและปลอดภัยและในกรณีของ blockchains ชุดข้อมูลที่อาจไม่มีขอบเขต.
การนำต้นไม้ Merkle มาใช้ในบล็อกเชนมีผลหลายอย่าง ช่วยให้สามารถปรับขนาดได้ในขณะเดียวกันก็มีสถาปัตยกรรมที่ใช้แฮชเพื่อรักษาความสมบูรณ์ของข้อมูลและเป็นวิธีที่ไม่สำคัญในการตรวจสอบความสมบูรณ์ของข้อมูล.
ฟังก์ชันแฮชการเข้ารหัสเป็นเทคโนโลยีพื้นฐานที่ช่วยให้ต้นไม้ Merkle ทำงานได้ดังนั้นก่อนอื่นจึงควรทำความเข้าใจว่าฟังก์ชันแฮชการเข้ารหัสคืออะไร.
ฟังก์ชันแฮชการเข้ารหัส
พูดง่ายๆคือฟังก์ชันแฮชคือฟังก์ชันใด ๆ ที่ใช้ในการแมปข้อมูลที่มีขนาดตามอำเภอใจ (อินพุต) กับเอาต์พุตขนาดคงที่ อัลกอริธึมการแฮชถูกนำไปใช้กับอินพุตข้อมูลและผลลัพธ์ที่มีความยาวคงที่จะเรียกว่าแฮช.
อัลกอริทึมการแฮชจำนวนมากมีให้ใช้งานทั่วไปและสามารถเลือกได้ตามความต้องการของคุณ.
แฮชที่เป็นผลลัพธ์จากอินพุตโดยพลการไม่เพียง แต่กำหนดความยาวเท่านั้น แต่ยังไม่ซ้ำกันอย่างสมบูรณ์กับอินพุตและฟังก์ชันเองก็ถูกกำหนด นั่นคือไม่ว่าคุณจะเรียกใช้ฟังก์ชันบนอินพุตเดียวกันกี่ครั้งผลลัพธ์ก็จะเหมือนกันเสมอ.
ตัวอย่างเช่นหากคุณมีชุดข้อมูลต่อไปนี้ด้านล่างเป็นอินพุตเอาต์พุตที่ได้จะไม่ซ้ำกันสำหรับแต่ละอินพุต สังเกตว่าในตัวอย่างที่สองและสามแม้ว่าความแตกต่างของอินพุตจะเป็นเพียงคำเดียว แต่ผลลัพธ์ที่ได้จะแตกต่างกันอย่างสิ้นเชิง.
สิ่งนี้สำคัญมากเนื่องจากช่วยให้สามารถ “พิมพ์ลายนิ้วมือ” ข้อมูลได้.
ฟังก์ชันแฮชการเข้ารหัสภาพจาก Wikipedia
เนื่องจากความยาวของเอาต์พุต (ผลรวมแฮชในตัวอย่าง) มักจะเหมือนกับที่กำหนดโดยอัลกอริทึมการแฮชที่ใช้ข้อมูลจำนวนมากจึงสามารถระบุได้โดยใช้แฮชผลลัพธ์เท่านั้น.
ด้วยระบบที่มีข้อมูลจำนวนมากประโยชน์ของความสามารถในการจัดเก็บและระบุข้อมูลด้วยเอาต์พุตที่มีความยาวคงที่สามารถสร้างการประหยัดพื้นที่จัดเก็บได้มหาศาลและช่วยเพิ่มประสิทธิภาพ.
ภายในบล็อคเชนจะใช้อัลกอริทึมการแฮชเพื่อกำหนดสถานะของบล็อกเชน.
Blockchains เป็นรายการที่เชื่อมโยงซึ่งมีข้อมูลและตัวชี้แฮชที่ชี้ไปยังบล็อกก่อนหน้าซึ่งสร้างห่วงโซ่ของบล็อกที่เชื่อมต่อกันจึงมีชื่อว่า “blockchain”.
แต่ละบล็อกเชื่อมต่อกันผ่านตัวชี้แฮชซึ่งเป็นแฮชของข้อมูลภายในบล็อกก่อนหน้าพร้อมกับที่อยู่ของบล็อกก่อนหน้า ด้วยการเชื่อมโยงบล็อกข้อมูลในรูปแบบนี้แต่ละแฮชที่เป็นผลลัพธ์ของบล็อกก่อนหน้านี้จะแสดงสถานะทั้งหมดของบล็อกเชนเนื่องจากข้อมูลที่แฮชทั้งหมดของบล็อกก่อนหน้าจะถูกแฮชเป็นแฮชเดียว.
สิ่งนี้แสดง (ในกรณีของอัลกอริทึม SHA-256) ด้วยเอาต์พุต (แฮช) เช่นนี้.
b09a57d476ea01c7f91756adff1d560e579057ac99a28d3f30e259b30ecc9dc7
แฮชด้านบนเป็นลายนิ้วมือของสถานะทั้งหมดของบล็อกเชนก่อนหน้านั้น สถานะของบล็อกเชนก่อนบล็อกใหม่ (ตามข้อมูลที่แฮช) คืออินพุตและแฮชที่ได้คือเอาต์พุต.
แม้ว่าจะเป็นไปได้ที่จะใช้แฮชการเข้ารหัสโดยไม่มีต้นไม้ Merkle แต่ก็ไม่มีประสิทธิภาพอย่างมากและไม่สามารถปรับขนาดได้ การใช้แฮชเพื่อจัดเก็บข้อมูลในบล็อกในรูปแบบซีรีส์นั้นใช้เวลานานและยุ่งยาก.
ดังที่คุณจะเห็นต้นไม้ Merkle อนุญาตให้มีการแก้ปัญหาความสมบูรณ์ของข้อมูลเล็กน้อยรวมถึงการทำแผนที่ข้อมูลนั้นผ่านต้นไม้ทั้งหมดโดยใช้การพิสูจน์ของ Merkle.
ต้นไม้ Merkle และหลักฐาน Merkle
ต้นไม้ Merkle ตั้งชื่อตาม Ralph Merkle ซึ่งจดสิทธิบัตรแนวคิดนี้ในปี 1979 โดยพื้นฐานแล้วต้นไม้ Merkle เป็นโครงสร้างข้อมูลโดยที่โหนดที่ไม่ใช่ใบไม้แต่ละโหนดเป็นแฮชของโหนดลูกที่เกี่ยวข้อง.
โหนดใบไม้เป็นโหนดระดับต่ำสุดในต้นไม้ ในตอนแรกอาจฟังดูเข้าใจยาก แต่ถ้าคุณดูรูปที่ใช้กันทั่วไปด้านล่างก็จะเข้าใจง่ายขึ้นมาก.
ตัวอย่างของต้นไม้แฮชไบนารีรูปภาพจาก Wikipedia
ที่สำคัญสังเกตว่าโหนดที่ไม่ใช่ใบไม้หรือ “กิ่งก้าน” (แสดงโดย Hash 0-0 และ Hash 0-1) ทางด้านซ้ายเป็นแฮชของลูก L1 และ L2 ตามลำดับอย่างไร นอกจากนี้โปรดสังเกตว่าสาขา Hash 0 คือแฮชของลูกที่ต่อกันอย่างไรสาขา Hash 0-0 และ Hash 0-1.
ตัวอย่างข้างต้นเป็นรูปแบบที่เรียบง่ายที่สุดของต้นไม้ Merkle ที่เรียกว่า Binary Merkle Tree อย่างที่คุณเห็นมีแฮชด้านบนที่เป็นแฮชของต้นไม้ทั้งหมดหรือที่เรียกว่าแฮชรูท โดยพื้นฐานแล้วต้นไม้ Merkle เป็นโครงสร้างข้อมูลที่สามารถรับจำนวนแฮช“ n” และแสดงด้วยแฮชเดียว.
โครงสร้างของต้นไม้ช่วยให้สามารถทำแผนที่ข้อมูลจำนวนมากตามอำเภอใจได้อย่างมีประสิทธิภาพและช่วยให้สามารถระบุตำแหน่งที่เปลี่ยนแปลงในข้อมูลนั้นได้อย่างง่ายดาย แนวคิดนี้เปิดใช้งานการพิสูจน์ Merkle ซึ่งใครบางคนสามารถตรวจสอบได้ว่าการแฮชข้อมูลนั้นสอดคล้องกันตลอดทางขึ้นต้นไม้และอยู่ในตำแหน่งที่ถูกต้องโดยไม่ต้องดูแฮชทั้งชุดจริงๆ.
แต่พวกเขาสามารถตรวจสอบได้ว่ากลุ่มข้อมูลสอดคล้องกับแฮชรูทโดยการตรวจสอบแฮชชุดย่อยเพียงเล็กน้อยแทนที่จะเป็นชุดข้อมูลทั้งหมด.
ตราบใดที่รูทแฮชเป็นที่รู้จักและเชื่อถือได้ในที่สาธารณะก็เป็นไปได้สำหรับทุกคนที่ต้องการค้นหาคีย์ – ค่าบนฐานข้อมูลเพื่อใช้หลักฐาน Merkle เพื่อตรวจสอบตำแหน่งและความสมบูรณ์ของข้อมูลภายในฐานข้อมูลที่มี รูทเฉพาะ.
เมื่อแฮชรูทพร้อมใช้งานสามารถรับแฮชทรีจากแหล่งที่ไม่น่าเชื่อถือใด ๆ และสามารถดาวน์โหลดสาขาหนึ่งของทรีพร้อมกับการตรวจสอบความสมบูรณ์ของข้อมูลได้ทันทีแม้ว่าทั้งทรีจะยังไม่พร้อมใช้งานก็ตาม.
ประโยชน์ที่สำคัญที่สุดอย่างหนึ่งของโครงสร้างต้นไม้ Merkle คือความสามารถในการตรวจสอบสิทธิ์ชุดข้อมูลขนาดใหญ่โดยพลการผ่านกลไกการแฮชที่คล้ายกันซึ่งใช้ในการตรวจสอบข้อมูลจำนวนน้อย.
ต้นไม้มีประโยชน์ในการกระจายข้อมูลจำนวนมากไปยังส่วนเล็ก ๆ ที่สามารถจัดการได้ซึ่งอุปสรรคในการตรวจสอบความสมบูรณ์จะลดลงอย่างมากแม้จะมีขนาดข้อมูลโดยรวมที่ใหญ่กว่า.
แฮชรูทสามารถใช้เป็นลายนิ้วมือสำหรับชุดข้อมูลทั้งหมดรวมทั้งฐานข้อมูลทั้งหมดหรือแสดงสถานะทั้งหมดของบล็อกเชน ในส่วนต่อไปนี้เราจะพูดถึงวิธีที่ Bitcoin และระบบอื่น ๆ ใช้ Merkle tree.
Merkle Trees ใน Bitcoin
ฟังก์ชันแฮชการเข้ารหัสที่ Bitcoin ใช้คืออัลกอริทึม SHA-256 สิ่งนี้ย่อมาจาก“ Secure Hashing Algorithm” ซึ่งเอาต์พุตมีความยาวคงที่ 256 บิต ฟังก์ชันพื้นฐานของต้นไม้ Merkle ใน Bitcoin คือการจัดเก็บและในที่สุดก็ตัดธุรกรรมในทุกๆบล็อก.
ดังที่ได้กล่าวไว้ก่อนหน้านี้บล็อกในบล็อกเชนเชื่อมต่อกันผ่านแฮชของบล็อกก่อนหน้า ใน Bitcoin แต่ละบล็อกจะมีธุรกรรมทั้งหมดภายในบล็อกนั้นตลอดจนส่วนหัวของบล็อกซึ่งประกอบด้วย:
- หมายเลขเวอร์ชันบล็อก
- ก่อนหน้า Block Hash
- การประทับเวลา
- เป้าหมายความยากในการขุด
- Nonce
- แฮชราก Merkle
ภาพด้านล่างมาจาก Bitcoin กระดาษสีขาว และแสดงให้เห็นว่าต้นไม้ Merkle เข้ากับแต่ละบล็อกได้อย่างไร.
ธุรกรรมจะรวมอยู่ในบล็อกโดยคนงานเหมืองและถูกแฮชเป็นส่วนหนึ่งของต้นไม้ Merkle ซึ่งนำไปสู่รากของ Merkle ที่เก็บไว้ในส่วนหัวของบล็อก การออกแบบนี้มีประโยชน์ที่แตกต่างกันหลายประการ.
โดยเฉพาะอย่างยิ่งตามที่ระบุไว้ในเอกสารไวท์เปเปอร์สิ่งนี้ช่วยให้มีโหนด Simple Payment Verification (SPV) หรือที่เรียกว่า “ลูกค้าที่มีน้ำหนักเบา” โหนดเหล่านี้ไม่จำเป็นต้องดาวน์โหลด Bitcoin blockchain ทั้งหมดมีเพียงส่วนหัวบล็อกของห่วงโซ่ที่ยาวที่สุดเท่านั้น.
โหนด SPV สามารถบรรลุสิ่งนี้ได้โดยการสอบถามโหนดเพียร์จนกว่าพวกเขาจะมั่นใจว่าส่วนหัวบล็อกที่จัดเก็บไว้ที่พวกเขากำลังทำงานอยู่นั้นเป็นส่วนหนึ่งของห่วงโซ่ที่ยาวที่สุด จากนั้นโหนด SPV สามารถกำหนดสถานะของธุรกรรมได้โดยใช้การพิสูจน์ Merkle เพื่อแมปธุรกรรมกับต้นไม้ Merkle ที่เฉพาะเจาะจงกับแฮชรากของต้นไม้ Merkle ตามลำดับในส่วนหัวของบล็อกที่เป็นส่วนหนึ่งของห่วงโซ่ที่ยาวที่สุด.
นอกจากนี้การใช้งานต้นไม้ Merkle ของ Bitcoin ยังช่วยให้สามารถตัดแต่งบล็อคเชนเพื่อประหยัดพื้นที่ นี่เป็นผลมาจากเฉพาะแฮชรูทที่ถูกเก็บไว้ในส่วนหัวของบล็อกดังนั้นบล็อกเก่าสามารถตัดแต่งได้โดยการเอากิ่งก้านที่ไม่จำเป็นของต้น Merkle ออกในขณะที่รักษาเฉพาะส่วนที่จำเป็นสำหรับการพิสูจน์ Merkle.
การนำ Merkle Trees ไปใช้ใน Blockchains และระบบอื่น ๆ
แม้ว่า Bitcoin จะเป็นบล็อคเชนตัวแรกที่นำต้นไม้ Merkle มาใช้ แต่บล็อคเชนอื่น ๆ ก็ใช้โครงสร้างต้นไม้ Merkle ที่คล้ายกันหรือแม้แต่เวอร์ชันที่ซับซ้อนกว่า.
นอกจากนี้การใช้งาน Merkle tree ไม่ได้ จำกัด อยู่แค่ใน blockchains เท่านั้นและยังนำไปใช้กับระบบอื่น ๆ อีกมากมาย.
Ethereum ซึ่งเป็นสกุลเงินดิจิทัลอื่น ๆ ที่เป็นที่รู้จักมากที่สุดก็เป็นตัวอย่างที่ดีของการนำ Merkle Tree มาใช้ เนื่องจาก Ethereum นั้นสมบูรณ์เป็นแพลตฟอร์มสำหรับการสร้างแอพพลิเคชั่นที่ซับซ้อนมากขึ้นจึงใช้ Merkle Tree รุ่นที่ซับซ้อนกว่าที่เรียกว่า Merkle Patricia Tree ซึ่งแท้จริงแล้วคือต้น Merkle 3 ต้นที่แยกกันใช้สำหรับวัตถุสามชนิด คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับต้นไม้เหล่านี้ ที่นี่.
สุดท้ายต้นไม้ Merkle เป็นองค์ประกอบสำคัญของระบบควบคุมเวอร์ชันกระจายเช่น Git และ IPFS ความสามารถในการรับรองและตรวจสอบความสมบูรณ์ของข้อมูลที่แชร์ระหว่างคอมพิวเตอร์ในรูปแบบ P2P ได้อย่างง่ายดายทำให้ระบบเหล่านี้มีค่ายิ่ง.
สรุป
ต้นไม้ Merkle เป็นส่วนประกอบที่สำคัญของบล็อกเชนและช่วยให้สามารถทำงานได้อย่างมีประสิทธิภาพด้วยความไม่เปลี่ยนแปลงที่พิสูจน์ได้และความสมบูรณ์ของธุรกรรม.
การทำความเข้าใจบทบาทที่พวกเขาเล่นในเครือข่ายแบบกระจายและเทคโนโลยีพื้นฐานของฟังก์ชันแฮชการเข้ารหัสเป็นสิ่งสำคัญในการเข้าใจแนวคิดพื้นฐานภายในสกุลเงินดิจิทัลเนื่องจากพวกเขายังคงพัฒนาไปสู่ระบบที่ใหญ่ขึ้นและซับซ้อนมากขึ้น.