Search
Close this search box.
Byzantine Fault Tolerance
Byzantine Fault Tolerance

ตั้งแต่ Bitcoin ได้ถูกสร้างขึ้นมาโลกของ Cryptocurrency ได้เติบโตตามอย่างก้าวกระโดด ได้เกิด Cryptocurrency ตัวใหม่ๆ และเทคโนโลยีใหม่ๆ ขึ้นมามากมายแต่มีสิ่งหนึ่งที่เหมือนกันนั่นก็คือระบบพื้นฐานอย่าง Blockchain ซึ่ง Blockchain ถูกสร้างขึ้นมาด้วยแนวคิดแบบกระจายศูนย์ ซึ่งจะกระจายข้อมูลให้ทุก Node ในระบบเก็บเอาไว้และให้ Node ทุกเครื่องเป็นตัวยืนยันการทำธุรกรรมบน Blockchain ซึ่งการที่ Node ยืนยันธุรกรรมเราจะเรียกว่า Consensus Machanism 

ในโลกของ Blockchain นั้น Node ทุกเครื่องสามารถเข้าและออกจากระบบได้อิสระ ยกตัวอย่างจาก Bitcoin ที่เราสามารถเอา Graphic card (GPU) มาขุดได้ และการเข้าออกได้อิสระนี้เองได้เปิดโอกาสให้กลุ่มคนที่คิดจะโจมตีระบบเข้ามาโจมตีระบบด้านผ่านทาง Node หรือที่เรารู้จักกันคือ 51 % attack ซึ่งได้เกิดคำถามขึ้นมาว่า Node จะยืนยันธุรกรรมให้สำเร็จได้อย่างไรหากมี Node บางเครื่องไม่ซื่อสัตย์หรือต้องการจะโจมตีระบบ ซึ่งคำถามสอดคล้องกับปัญหาที่เกิดขึ้นในอดีตหรือก็คือ Byzantine General Problem ซึ่งเป็นคำที่ให้กำเนิด Byzantine Fault Torelance

Byzantine general problem

Byzantine Fault Tolerance Model (BFT) คนที่ติดตามคริปโตอย่างใกล้ชิดอาจจะเคยได้ยินมาบ้าง จาก Consensus ของแต่ละบล็อกเชน เช่น Proof of Work, Proof of Stake ต่างๆ ล้วนมีรากฐานไอเดียมาจาก Byzantine Fault Tolerance model และเป็นไอเดียที่เกิดขึ้นมาป้องกันปัญหา Byzantine General Problem แล้ว Byzantine General Problem คืออะไร?

ย้อนกลับไปในยุคที่จักรวรรดิ Byzantine กำลังรุ่งเรือง (หลังจากจักรวรรดิโรมันล่มสลาย) ในยุคนั้นการทำสงครามยังถือเป็นเรื่องปกติ ในการโจมตีเมืองๆหนึ่ง หลายๆ กองทัพที่กระจัดกระจายกันอยู่ต้องตกลงที่จะโจมตีพร้อมกันเพื่อผลลัพธ์ที่ดีที่สุด ซึ่งการโจมตีพร้อมกันจะเกิดขึ้นได้ต้องมีการคุยกันระหว่างกองทัพ 

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

แล้วมันเกี่ยวข้องยังไงกับบล็อกเชนล่ะ ซึ่งบล็อกเชนจะเหมือนกัน Byzantine General Problem ในสถานการที่ Node ทุกเครื่องโหวตที่จะยืนยันธุรกรรมหรือสร้าง Block ซึ่ง Node เปรียบเหมือนกองทัพที่กระจัดกระจายกันอยู่ และการยืนยันธุรกรรมคือการโจมตีเมือง รวมไปถึงการตัดสินใจของ Node ที่มีการยืนยันกับไม่ยืนยันเหมือนการตัดสินใจของการโจมตีของแต่ละกองทัพ แต่สิ่งที่แตกต่างกันคือ ใน Blockchain ข้อมูลที่ถูกส่งข้ามกันระหว่าง Node จะส่งถึงแน่นอนซึ่งจะไม่มีปัญหาม้าเร็วแบบ Byzantine General Problem

หากเป็นใน Byzantine General Problem การตีของกองทัพใดกองทัพหนึ่งอาจทำให้เมืองนั้นไม่แตกได้ แต่ใน Blockchain ได้แก้ไขปัญหานั้นเรียบร้อยแล้ว ซึ่ง Blockchain Consensus Machanism ได้เขียนไว้ว่า “ในการที่จะยืนยันธุรกรรมได้นั้นต้องได้รับเสียงมากกว่าครึ่งหนึ่งของ Node ทั้งหมด”  ทำให้ยังสามารถยืนยันธุรกรรมได้แม้ว่าจะมี node บางเครื่องไม่ยอมยืนยันธุรกรรมและสิ่งนี้คือสิ่งที่ป้องกัน Byzantine General Problem ได้หรือก็คือ Byzantine Fault Torelance

โดยสรุป Byzantine Fault Tolerance คือการที่ระบบทนต่อ Byzantine General Problem ได้ หรือการที่ระบบยังสามารถทำงานต่อไปได้ตามปกติหากมี Node บางเครื่องไม่ยอมยืนยันธุรกรรมหรือไม่ซื่อสัตย์