พิธีกร:
bitcoin ทำไมไม่บีบอัดเพื่อที่จะใช้พื้นที่น้อยลง
แขกรับเชิญ:
แนวคิดเรื่องการ “บีบอัด” (Compression) ข้อมูลใน Bitcoin เป็นประเด็นที่น่าสนใจครับ แต่ในทางเทคนิคแล้ว Bitcoin ไม่สามารถบีบอัดข้อมูลให้เล็กลงได้แบบไฟล์ทั่วไป (เช่น .zip หรือ .rar) ด้วยเหตุผลหลักๆ ดังนี้ครับ:
1. ข้อมูลใน Blockchain คือ “หลักฐาน” ที่ต้องตรวจสอบได้ทันที
Bitcoin ไม่ใช่แค่ฐานข้อมูลที่เก็บตัวเลขยอดเงิน แต่มันคือ “สมุดบัญชีแยกประเภท (Ledger) ที่ทุกคนต้องตรวจสอบได้”
* หากเราบีบอัดข้อมูล เมื่อโหนด (Node) ใหม่ๆ เข้ามาในเครือข่าย หรือต้องการตรวจสอบย้อนหลัง พวกเขาจะต้องเสียเวลา “คลายการบีบอัด” (Decompress) ซึ่งจะกินทรัพยากรเครื่องมหาศาล
* หัวใจของ Bitcoin คือ ความโปร่งใสและการตรวจสอบได้ (Verifiability) ข้อมูลที่เก็บอยู่ปัจจุบันถูกจัดเก็บในรูปแบบที่คอมพิวเตอร์สามารถตรวจสอบลายเซ็นดิจิทัล (Digital Signature) และความเป็นเจ้าของได้ทันที
2. ข้อมูลถูกบีบอัดในระดับที่เหมาะสมอยู่แล้ว (Optimization)
อันที่จริงนักพัฒนา Bitcoin ได้ทำการ “บีบอัด” ข้อมูลในเชิงโครงสร้างมาแล้วตั้งแต่ออกแบบ เช่น:
* Merkle Trees: ใช้การรวมข้อมูลธุรกรรมเป็นกิ่งไม้ (Hash) เพื่อให้เราตรวจสอบได้ว่าธุรกรรมอยู่ในบล็อกนั้นจริงหรือไม่ โดยไม่ต้องเก็บข้อมูลดิบทั้งหมดของธุรกรรมเก่าๆ ไว้ในส่วนของ Header
* Segregated Witness (SegWit): การแยกส่วนลายเซ็นออกไป เพื่อให้บล็อกมีพื้นที่เก็บธุรกรรมมากขึ้นและประหยัดพื้นที่ในการจัดเก็บในส่วนที่ไม่จำเป็นต้องตรวจสอบซ้ำ
* Compact Blocks: ในการส่งข้อมูลระหว่างโหนด ก็มีการใช้เทคนิคส่งเฉพาะข้อมูลที่จำเป็นเพื่อประหยัด Bandwidth อยู่แล้ว
3. ปัญหาของ “การบีบอัดแบบสูญเสียข้อมูล” (Lossy Compression)
ถ้าเรามองว่าไฟล์วิดีโอหรือรูปภาพบีบอัดได้ เพราะมัน “ยอมลดความละเอียดลงได้” แต่ Bitcoin ไม่สามารถลดความละเอียดได้ แม้แต่บิตเดียว
* ถ้าข้อมูลหายไปแม้แต่จุดเดียว (Corruption) ยอดเงินหรือความเป็นเจ้าของจะเปลี่ยนไปทันที
* การบีบอัดแบบไม่สูญเสียข้อมูล (Lossless Compression) กับข้อมูลที่เป็นชุดตัวเลขสุ่ม (Random Data) เช่น Hash หรือลายเซ็นดิจิทัลนั้น แทบจะทำไม่ได้ เพราะข้อมูลเหล่านี้มีค่า Entropy สูงมาก (ไม่สามารถหาแพทเทิร์นซ้ำๆ มาย่อขนาดได้)
4. เราไม่จำเป็นต้องเก็บ “ทั้ง Blockchain” ไว้ที่เครื่องตัวเอง
นี่คือทางออกที่ Bitcoin เลือกใช้แทนการบีบอัดครับ:
* Pruned Nodes: ผู้ใช้งานทั่วไปไม่จำเป็นต้องเก็บประวัติย้อนหลังทั้งหมดตั้งแต่ปี 2009 ก็ได้ คุณสามารถตั้งค่าให้เครื่อง “ลบ” บล็อกเก่าๆ ทิ้งไปหลังจากตรวจสอบเสร็จแล้ว เหลือไว้แค่ยอดคงเหลือปัจจุบัน (UTXO Set) ซึ่งช่วยลดพื้นที่จัดเก็บจากหลายร้อย GB เหลือเพียงหลักสิบ GB ได้
* SPV (Simplified Payment Verification): สำหรับผู้ใช้ทั่วไป (เช่น Wallet ในมือถือ) ไม่จำเป็นต้องเก็บ Blockchain เลย แต่จะอาศัยการถามจากโหนดอื่นและตรวจสอบเฉพาะส่วนหัวของบล็อก (Block Headers) ซึ่งใช้พื้นที่น้อยมาก
สรุป
Bitcoin ไม่ได้ถูกออกแบบมาให้ “ตัวเล็ก” แต่ถูกออกแบบมาให้ “ตรวจสอบได้ง่ายและปลอดภัยที่สุด” การบีบอัดจะทำให้ความซับซ้อนในการตรวจสอบเพิ่มขึ้น และอาจเป็นจุดอ่อนที่ทำให้เครือข่ายทำงานช้าลง
ปัจจุบันขนาดของ Blockchain ของ Bitcoin มีขนาดประมาณ 500-600 GB ซึ่งสำหรับโลกคอมพิวเตอร์ในปัจจุบัน ถือว่าไม่ได้ใหญ่เกินกว่าที่โหนดทั่วไปจะรับไหวครับ (เทียบกับความปลอดภัยที่ได้รับ ถือว่าคุ้มค่ามาก)
