"ทุ่มเทอย่างสุดกำลัง เพื่อความฝันและวันข้างหน้า วันนี้เหนื่อยไม่ว่าถ้าหากมันทำให้มีวันหน้าที่สวยงามได้"
ทำความรู้จัก Blockchain Consensus Protocol แบบต่าง ๆ: เมื่อโลกนี้ไม่ได้มีแค่ Proof of Work
8 Mar 2018 16:17   [177611 views]

ตลาด Blockchain ยังคงคุกรุ่นดำเนินไปอย่างสนุกสนาน ของเก่ายังศึกษาไม่ครบ ของใหม่นี่ก็มีออกมาเรื่อย ๆ ไม่หยุดเลย

เพื่อให้ตามตลาดทัน เราขอเขียนบทความพื้นฐานที่ต้องรู้เพิ่มมาอีกหนึ่งเรื่องละกัน เป็นเรื่องของ Blockchain Consensus Protocol ครับ

น่าจะมีเกินครึ่งที่เล่นตลาดนี้แต่ไม่รู้จักสิ่งนี้ แต่ความจริงมันสำคัญมาก ๆ นะ เพราะมันเป็นองค์ประกอบนึงของ Blockchain ใด ๆ ถ้าไม่รู้ก็แปลว่าไม่เข้าใจว่าระบบมันทำงานยังไง จะเสียเปรียบคนที่เข้าใจได้ ดังนั้นมาทำความรู้จักมันกันครับว่ามันคืออะไรและมีอะไรบ้าง ลุย !

Blockchain Consensus Protocol คืออะไร

เชื่อว่าทุกคนคงเคยได้ยินคำว่า Proof of Work กันมาบ้าง ถ้าใครอ่านบล็อกเก่าที่เราเขียนเรื่อง Blockchain ไปเมื่อสองปีก่อนก็คงจะรู้จักแล้วหละว่ามันคืออะไร แต่เพื่อความเข้าใจ เลยขอยกมาพูดอีกรอบ

ในระบบธนาคารที่เป็นระบบรวมศูนย์กลาง (Centralized) เวลามีการโอนเงินเกิดขึ้น ธนาคารจะเป็นคนยืนยันการโอนว่าสำเร็จหรือไม่ให้เรา

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

ซึ่งการจะยกให้ใครสักคนในระบบมาช่วยยืนยันมันก็ทำไม่ได้ เพราะเราจะไปเชื่อถือคนนั้นได้ยังไง ถ้าเค้าจะโกงก็พังเลยนะ ดังนั้นระบบ Bitcoin จึงให้ใครก็ได้ในระบบช่วยกันยืนยัน แต่จะรู้ได้ยังไงว่าเค้าจะไม่โกง ? ... งั้นเอางี้ คนที่จะยืนยันได้จะต้องแก้โจทย์คณิตศาสตร์ที่ต้องแก้ด้วยวิธี "ลองหาคำตอบไปเรื่อย ๆ" เท่านั้น เพื่อพิสูจน์ว่าคนนั้นมีการทำงานอย่างหนักเพื่อยืนยัน ไม่ใช่อยู่ ๆ จะยืนยันก็ทำได้ ต้องมีการพิสูจน์ตัวเองกันนิดนึง และพอได้คำตอบ คนนั้นก็ได้รับรางวัลไป ถือว่า Win-Win

และเมื่อได้คำตอบมา ผู้ที่ยืนยันสำเร็จจะบรรจุด Transaction การโอนเงินทั้งหมดลงในกล่อง (Block) และส่งให้ทุกคนในระบบเพื่อเอาไปใช้

แต่ไม่ใช่ว่าส่งแล้วเอาไปใช้ได้เลยนะ ทุกคนที่ได้รับกล่องจะต้องเช็คก่อนว่ากล่องนั้นมีคำตอบจริง ๆ ผ่านการทำงานหนักมาจริง ๆ ไม่ได้มั่วซั่วมา ถ้าตรวจสอบแล้วถูกต้องก็ถึงจะกล่องไปต่อใน Blockchain และนำไปใช้งานจริง

แต่ถามว่ามีโอกาสมั้ยที่คนจะส่ง Block มั่ว ๆ ที่ไม่มีคำตอบที่ถูกต้องไปให้ทุกคน ? คำตอบคือทำได้ครับ คำถามตามมาคือ แล้วคนที่ได้รับไปจะทำยังไงกับ Block เหล่านั้น ? คำตอบคือทุกคนจะปฏิเสธ Block นั้นและมันจะไม่ถูกนำมาใช้ทันทีครับ

แล้วทุกคนในระบบจะปฏิเสธกล่องนั้นอย่างพร้อมหน้ากันได้ยังไง มันต้องมีกฎอะไรบางอย่างตั้งไว้ร่วมกันสิถึงจะทำแบบนี้ได้

และนี่เองที่เราเรียกมันว่า Consensus Protocol ครับ การที่ทุกคนมีกฎตั้งไว้ร่วมกันตั้งแต่เริ่มต้น และทุกคนในระบบจะยึดถือกฎนี้ร่วมกันอย่างเคร่งครัด หากใครทำไม่ตรงตามกฎ การกระทำนั้น ๆ จะถูกเตะทิ้งทันที

อย่างในกรณีนี้ กฎร่วมกันของ Bitcoin คือการแก้สมการคณิตศาสตร์ ทุกคนตกลงร่วมกันเลยจะไม่มีโอกาสถูกโกงได้เลย ใครโกงปุ๊บโดนเตะทิ้งทันที สบายใจ

แต่ถามว่าในโลกของ Blockchain มันมีอยู่วิธีเดียวมั้ยที่จะใช้ในการยืนยันและยึดถือเป็นข้อตกลงร่วมกันของคนทั้ง Network ? คำตอบคือเปล่าครับ มันมีวิธีอยู่เยอะมากกกกกก เพียงแต่ตัวที่คนรู้จักเยอะที่สุดคือ Proof of Work เท่านั้นเองเพราะมันเป็นตัวแรก ดังนั้นในบทความนี้จะพาไปรู้จักตัวอื่น ๆ เพิ่มกันด้วย เพราะเทรนด์ปีนี้ชัดเจนแล้วว่าคนพยายามหนีออกจาก Proof of Work กันครับ แต่อย่างไรก็ตาม ถ้าพูดถึงเรื่องนี้แล้วไม่พูดถึง Proof of Work ก่อนก็คงจะบาป อ่ะ งั้นเริ่มต้นให้ถูกตามธรรมเนียม

Proof of Work (PoW)

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

เราเลยเรียกวิธีนี้กันว่า Proof of Work (PoW) หรือการพิสูจน์ว่าคุณทำงานอย่างหนักเพื่อให้ได้คำตอบมา ครับ

ก็จะเห็นได้ว่าการมันเหมือนการขุดเหมืองเลย คือต้องออกแรงขุด ๆ ๆ ๆ ๆ ๆ ๆ สุดท้ายใครขุดเจอก็เอาเงินรางวัลไป เราเลยเรียกว่าคนกลุ่มที่เอาไว้ยืนยันการโอนเงินว่า "นักขุดเหมือง (Miner)" ครับ เป็นไง Make Sense มั้ย เข้าใจแล้วนะว่าทำไมถึงเรียกว่า "ขุด"

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

ข้อดีของ Proof of Work คือมันเป็นการกระจายศูนย์ (Decentralized) ที่แท้จริง เพราะเมื่อระบบมันโตเพียงพอแล้วก็จะไม่มีใครสามารถเข้าควบคุมระบบได้เลยเพราะต้องใช้เงินเยอะมาก ผลคือคนที่ยืนยันการโอนเงินจะผลัดเปลี่ยนไปเรื่อย ๆ ในทุกรอบ ไม่มีทางเลยที่จะเป็นคนเดิมไปเรื่อย ๆ เราเลยเรียกมันว่า Decentralize ครับ คือไม่ได้ผูกชีวิตไว้กับใครเลย กระจายเอา

แต่ข้อเสียใหญ่ ๆ ของ Proof of Work คือ มันเปลืองพลังงานมากกกก และที่สำคัญ มันช้ามากกกกกกก

การเปลืองพลังงานนี่มันต้องมาพร้อม Proof of Work อยู่แล้ว คำว่า Work คือการพิสูจน์ว่าเราทำงานอย่างหนัก ดังนั้นมันจึงเปลืองพลังมาก กล่าวว่าไฟฟ้าที่ใช้จ่ายเครื่องขุด Bitcoin ทั่วโลกตอนนี้สามารถนำไปจ่ายเมืองเล็ก ๆ ได้ทั้งเมืองเลยทีเดียว ดูแล้วเสียดายไฟมาก ๆ โลกควรจะใช้พลังงานในด้านที่สำคัญต่อสิ่งมีชีวิตในโลกมนุษย์มากกว่านี้

และแน่นอน เมื่อต้องพิสูจน์ว่ามีการทำงานหนัก มันก็เลยจะต้อง "ช้า" ด้วยเช่นกัน อย่างใน Bitcoin ก็ต้องใช้ถึง 10 นาทีกว่าจะหาคำตอบเจอ ผลคือระบบทั้งหมดจึงทำงานช้ามากกกก กว่าจะโอนเงินสำเร็จต้องรอถึง 10 นาทีด้วยกัน ! บ้าไปแล้ว และพอใช้เวลายืนยันนาน จำนวน Transaction การโอนเงินต่อช่วงเวลาที่สามารถยืนยันได้ก็เลยน้อยลงไปด้วย อย่างของ Bitcoin นี่สามารถยืนยันได้เพียง 7 Transactions ต่อวินาทีเท่านั้นเอง

แต่บางระบบก็ทำได้เร็วกว่าเช่น Ethereum ก็ใช้ Proof of Work เหมือนกัน แต่สามารถหาคำตอบได้ใน 15 วินาที แต่โดยรวมระบบก็ยังรับจำนวนการโอนเงินเยอะมาก ๆ ไม่ได้อยู่ดีเพราะสามารถยืนยันการโอนเงินได้เพียง 20 Transactions ต่อวินาทีเท่านั้น แค่ใช้เวลายืนยันน้อยลง 15 วินาทีโอนสำเร็จแล้วอะไรงี้ แต่ถ้าคนโอนพร้อมกันเยอะ ๆ ก็อาจจะต้องรอนานเป็น 10 นาทีได้เหมือนกัน

Proof of Work เป็นวิธีที่พื้นฐานสุด จึงถูกใช้ใน Blockchain ที่เกิดมาสักพักใหญ่ ๆ แล้วอย่างเช่น Bitcoin และ Ethereum ในแง่ความเป็น Decentralize มันก็ดี แต่ปัญหาคือมันไม่สามารถใช้งานในโลกแห่งความจริงที่มีการโอนเงินต่อวินาทีเป็นพัน ๆ ครั้งได้ หรือถ้าพูดในศัพท์เทคนิคขึ้นมาหน่อยคือ มันมีปัญหาเรื่อง Scalability ครับ

ในปีนี้ก็เลยมี Consensus แบบอื่น ๆ บูมขึ้นมาอย่างเห็นได้ชัด ส่วน Proof of Work ก็ค่อย ๆ จางหายไปในโปรเจคใหม่ ๆ แทบจะไม่มีให้เห็นละ ส่วนโปรเจคเก่า ๆ ก็จะยังอยู่อย่างงั้นเพราะกฎถูกต้องมาแล้วแต่แรก จะเปลี่ยนก็คงยาก เค้าเลยหาวิธีอื่นในการแก้ปัญหา Scalability ไป ซึ่งก็คือ Layer 2 ที่เราพูดถึงไปเมื่อบล็อกที่แล้วนั่นเองครับ

อ้อ การให้คนช่วยกันมากด Like นี่ไม่ใช่ Proof of Work นะ บอกไว้เฉย ๆ ... (แต่จะตั้งเป็น Proof of Like ก็ได้ ถ้าเราพิสูจน์ได้ว่ามันทำเป็นข้อตกลงที่เป็นกลางได้ แต่ก็จะยังไม่ใช่ Proof of Work อยู่ดี)

กลับเข้าเรื่อง ๆ สรุปสั้น ๆ ในเรื่องของ Proof of Work ได้ว่า

ใน Proof of Work สิทธิ์ในการร่วมยืนยันความถูกต้องในการทำงานของระบบนั้นจะอิงตามกำลังขุดที่คนนั้น ๆ มี

แล้วแบบอื่นหละ เป็นยังไง ? งั้นมาดู Consensus ตัวอื่น ๆ กันบ้างครับ เริ่มจากตัวที่เป็นที่นิยมสุด ๆ ในปี 2018 นี้เลย

Proof of Stake (Pos)

ใน Proof of Work ใช้ "กำลังขุด" ในการแข่งกันยืนยัน Transaction มันก็เลยต้องทำงานหนัก ๆ มันไปทุกรอบเพื่อหาคำตอบนั่นแหละ แต่มันก็ทำให้เปลืองพลังงานมากกกกและช้ามากกกกเช่นกัน

จึงมีการนำเสนอ Consensus แบบใหม่ขึ้นมาโดยใช้แนวคิดว่า

ไม่ต้องไปขุดมันแล้ว เสียดายพลังงาน เอางี้ละกัน ใครถือเหรียญ (Stake) ไว้เยอะแปลว่าคนนั้นน่าเชื่อถือ คนนั้นก็จะมีสิทธิ์ในการยืนยันสูงกว่า !

โคดทุนนิยม

คราวนี้ทุกคนที่มีการถือเหรียญไว้ในระบบและติดตั้งระบบยืนยันเอาไว้ ก็จะสามารถแย่งกันยืนยันตามอัตราส่วน มีเยอะโอกาสก็เยอะกว่า มีน้อยโอกาสก็น้อยกว่า เราจึงเรียก Consensus แบบนี้ว่า Proof of Stake นั่นเองครับ

ใน Proof of Stake สิทธิ์ในการร่วมยืนยันความถูกต้องในการทำงานของระบบนั้นจะอิงตามจำนวนเหรียญที่คนนั้น ๆ ถืออยู่

อย่างไรก็ตาม Proof of Stake นี่มีหลายประเภทมาก ๆ ดังที่จะได้เห็นในหัวข้อถัด ๆ ไป แต่ถ้าพูดถึง Proof of Stake แบบพื้นฐานสุด การทำงานจะเป็นดังนี้ครับ

1) คนที่ต้องการจะเข้าร่วมการยืนยัน จะต้องทำการล็อคเหรียญไว้ในระบบหรือที่เราเรียกว่า Stake พร้อมกับติดตั้งซอฟต์แวร์ที่ใช้การร่วมยืนยัน Transaction เอาไว้

2) เมื่อถึงรอบเวลาที่ควรจะมี Block ใหม่เกิดขึ้นแล้ว ตัว Network จะทำการสุ่มเลือกคนที่วาง Stake ไว้คนนึง โดยโอกาสที่จะถูกรับเลือกขึ้นอยู่กับจำนวนเหรียญที่ถืออยู่ ถ้าถือ 2% ก็มีโอกาสถูกเลือก 2% ในแต่ละรอบ

3) คนที่ถูกเลือกจะต้องสร้าง Block ขึ้นมาและส่งกลับไปให้ทุกคนใน Network โดยไม่ต้องแก้สมการคณิตศาสตร์ใด ๆ

4) เมื่อทุกคนยอมรับ Block ดังกล่าว คนที่สร้าง Block ก็จะได้รางวัล (Reward) กลับไป โดยรางวัลก็แล้วแต่จะกำหนดในแต่ละระบบ เช่น บางทีก็ได้รับเป็น Transaction Fee ไป หรือบางอันก็มีเหรียญใหม่ถูกสร้างขึ้นมาด้วย (แต่ส่วนใหญ่ไม่มี จะโฟกัสไปที่ Transaction Fee อย่างเดียว) แล้วแต่จะกำหนดใน Consensus ก็เป็นอันเสร็จสิ้นการสร้าง 1 Block ไปครับ

สังเกตดูว่ากระบวนการยืนยันนั้นไม่มีการขุดหรือออกแรงใด ๆ เลย และระบบ PoS ส่วนใหญ่จะไม่มีเหรียญใหม่ถูกสร้างเพิ่มจากการสร้างบล็อคเหมือนที่ PoW มี

ใน Proof of Stake เราเลยจะไม่เรียกคนยืนยันว่านักขุด (Miner) แล้ว แต่เราจะเรียกว่า ผู้ยืนยัน (Validator) แทน

ความหล่อความเท่ของระบบนี้คือมันไม่เปลืองพลังงานเลย ถ้าให้ประเมิน ต้องบอกว่าประสิทธิภาพในการทำงานของ PoS นี่เหนือกว่า PoW เป็นพันเท่าเลยทีเดียว และนอกจากจะไม่เปลืองพลังงานแล้ว มันยัง "เร็วมาก" อีกด้วย (พอไม่ต้องพิสูจน์การทำงานหนักก็ไม่ต้องเสียเวลาทำอะไรนาน ๆ อีกแล้ว) ผลคือ ในระบบ PoS จึงใช้การยืนยันต่ำมาก ๆ บางเจ้านี่แค่ 1-2 วินาทีเท่านั้นเอง เท่มั้ยหละ ไม่ต้องแปลกใจว่าปีนี้ Proof of Stake ถึงได้รับความนิยมสูงขึ้นมาก

ตัวอย่างแรกของ Blockchain ที่มาพร้อม PoS คือ PeerCoin ซึ่งออกเมื่อปี 2012 และหลังจากนั้นก็มีเจ้าอื่น ๆ ตามมาเพียบ เช่น Blockcoin, NXT ฯลฯ ส่วนปีนี้นี่มีเพิ่มมาอีกหลายสิบตัวเลย

Ethereum ก็มีความพยายามจะเปลี่ยนจาก PoW มาใช้ PoS เหมือนกันนะ มีชื่อว่า Casper ซึ่งเหมือน PoS แหละ แต่มีการ "ลงโทษ" เพิ่มขึ้นมาด้วย เพื่อเอาไว้ใช้ลงโทษผู้ยืนยันที่ตั้งใจจะโกงด้วยวิธีใดก็ตาม ถ้าตรวจสอบว่าโกงก็จะยึดเหรียญที่ Stake ไว้ไปทั้งหมด เรียกว่าโหดแต่ก็ทำให้ระบบปลอดภัยยิ่งขึ้น

อย่างไรก็ตาม เหมือนแผนนี้ของ Ethereum จะเลื่อนออกไป คาดว่าจะมาอีกทีก็ปีหน้า (2019) เลย ส่วนตอนนี้เปลี่ยนไปโฟกัสที่ Layer 2 อย่าง Plasma แทนครับ

และก็อย่างที่บอก Proof of Stake มีอยู่หลาย Variation มาก งั้นมาดูอีกสักตัวที่ต่อยอด PoS ไปอีกหน่อยอย่าง LPoS

Leased Proof of Stake (LPoS)

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

ก็เลยมีคนเสนอ Consensus ที่ต่อยอดจาก Proof of Stake มาอีกนิดนึงเพื่อเอื้อให้คนกลุ่มที่มีเหรียญน้อยสามารถได้ประโยชน์ (และส่งผลดีต่อระบบโดยรวมด้วย) คือ

ให้คนที่มีเหรียญไม่เยอะสามารถนำเอาเหรียญไปฝากกับ Node ที่มีเหรียญเยอะ ๆ ได้ และถ้า Node นั้นถูกรับเลือกในการสร้างบล็อก รางวัลก็จะถูกแบ่งกันไประหว่างเจ้าของ Node กับคนที่เอาเหรียญมาฝากตามอัตราส่วน

เราเรียก Consensus ตัวนี้ว่า Leased Proof of Stake (LPoS) ครับ และมีตัวที่ใช้งานจริงแล้วคือ Waves สาเหตุที่เรียกว่า Lease ก็เพราะเหมือนกับว่าเป็นการปล่อยเหรียญให้ Node เช่า (Lease) นั่นเอง สุดท้ายก็ได้ประโยชน์ทั้งคนฝากและเจ้าของ Node เพราะเท่ากับว่าโอกาสที่จะถูกรับเลือกนั้นก็สูงขึ้นจากเดิม

อย่างไรก็ตาม ถ้าในมุมมองภาพใหญ่ LPoS นี่ก็คือ PoS แหละ แค่เพิ่มส่วนเล็ก ๆ เข้าไปจนมีความเป็น Pool ในตัว แต่ก็คุ้มที่จะเล่าให้ฟัง

แล้วตัวที่เป็น PoS แต่ต่างกันไปแบบคนละเรื่องเลยนี่มีมั้ย ? ... มี ! มาดูกันต่อกับตัวนี้ DPoS

Delegated Proof of Stake (DPoS)

ในระบบ Proof of Stake ผู้ที่ต้องการจะสร้าง Node จะต้อง Stake เหรียญไว้เพื่อรอรับโอกาสในการจะสร้าง Block ซึ่งดู ๆ แล้วระบบจะเอื้อกับคนที่มีเหรียญเยอะ (หรือพูดง่าย ๆ ว่ารวย) ส่วนคนที่จน ๆ หรือมีน้อย ๆ นี่แทบไม่มีสิทธิ์มีเสียงในระบบเลย

Delegated Proof of Stake จึงเกิดขึ้นมาโดยเปลี่ยนแนวคิดว่า ทุกคนไม่ว่าจะถือน้อยหรือถือมากก็ควรจะมีสิทธิ์ใน Blockchain ตัวนี้ มิฉะนั้นระบบก็อาจจะถูกครอบครองโดยกลุ่มคนบางคนได้ จึงเกิดเป็นโครงสร้างแบบใหม่ขึ้นมาที่การ Stake เหรียญไม่ได้มีไว้สร้าง Node อีกต่อไป แต่เอาไว้เพื่อ "โหวต" ผู้ที่จะสร้าง Node และตั้งตัวเป็นผู้ยืนยัน Transaction แทนทุกคนในระบบนั่นเอง

โดยกลุ่มผู้ที่ตั้งตัวเป็นผู้ยืนยัน Transaction และสร้าง Block นี้จะเป็นคนกลุ่มที่เราเรียกว่า Witness ครับ โดยคนกลุ่มนี้ไม่ต้อง Stake เหรียญใด ๆ อยากจะตั้งก็ตั้งได้เลย (แต่อาจจะมีค่าใช้จ่ายนิดหน่อยในการเปิด Node ใหม่ เช่น ค่าลงทะเบียน) แต่เดี๋ยว ! พอสร้าง Node ขึ้นมาแล้วไม่ได้แปลว่าจะยืนยัน Transaction ได้เลยนะ เพราะคนกลุ่มนี้จะไม่มีสิทธิ์มีเสียงอะไรเลยในแรกเริ่ม ก็เลยต้องให้คนอีกกลุ่มที่มีการ Stake เหรียญไว้ทำการโหวตเลือกว่าคุณเชื่อใจ Witness รายไหน (โหวตเลือกได้มากกว่า 1 คน) และ Witness ที่ถูกเลือกจากคนในระบบนี่แหละที่จะเป็นผู้ช่วยกันยืนยัน Transaction และสร้าง Block ออกมาให้ระบบขับเคลื่อนไปได้

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

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

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

โดยรวมแล้ว DPoS เลยเป็นระบบที่ Decentralized มาก ๆ เพราะไม่มีคนกลุ่มไหนเลยที่สามารถเข้าควบคุมได้ ระบบปรับเปลี่ยนไปได้เรื่อย ๆ จากทุกพลังเสียง ด้วยเหตุนี้ DPoS จึงถือเป็นหนึ่งในความหวังของ Blockchain ในยุคหลังจากนี้

DPoS ถูกใช้งานครั้งแรกในปี 2015 ด้วย Blockchain ที่ชื่อว่า BitShares และหลังจากนั้นก็ถูกนำมาใช้ใน Blockchain ดัง ๆ อีกหลายตัว เช่น RaiBlocks (NANO), Lisk, EOS, Ark และปีนี้ก็มีอีกเพียบที่เลือกใช้ Consensus ตัวนี้ครับ

สนุกมั้ย

Hybrid PoW & PoS

Proof of Work และ Proof of Stake กลายเป็นสอง Consensus หลักของโลก Blockchain ในปีนี้ ซึ่งแน่นอนว่าเลยมี Blockchain บางระบบที่เลือกใช้ทั้งสองตัวไปเลย ซึ่งก็มีอยู่หลายแบบด้วยกัน เช่น

1) แบ่งครึ่งไปเลย บล็อคเลขคู่ให้คนที่มีกำลังขุดได้รับสิทธิ์ไป (PoW) ส่วนบล็อคเลขคี่ให้คนที่มีการ Stake ได้สิทธิ์ไป (PoS)

2) ให้คนที่จะขุดด้วย PoW ต้องมีการ Stake ด้วย ไม่งั้นขุดไม่ได้

3) ขุดด้วย PoW ก่อนเพื่อให้ได้ Block ที่มี Block Reward ชี้ไปยัง Miner ที่ขุดได้ และส่งต่อให้ผู้วาง Stake ช่วยกันเป็น Validator ใส่ข้อมูลลงไปใน Block และรับ Transaction Fee เป็นของรางวัล

และยังมีอีกหลายแบบ แล้วแต่จะยำกันเลย อธิบายได้ไม่หมด แต่ Hybrid ก็เป็นอีกเทรนด์นึงที่มีการใช้งานเยอะขึ้นเรื่อย ๆ เหมือนกัน เช่น Decred, Espers, Swissborg แต่เราคงไม่เน้นมาก เพราะถ้าคุณเข้าใจความต่างของ PoW และ PoS แล้ว ใครจะ Hybrid ท่าไหนก็น่าจะศึกษาต่อกันได้ไม่ยากครับ

Proof of Importance (PoI)

เป็นอีกหนึ่งตัวที่คล้ายกับ Proof of Stake ตัวพื้นฐาน (PoS) มาก ๆ แต่มีรายละเอียดที่ต่างกันไป

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

1) จำนวนเหรียญที่วางไว้ (อาจมีขั้นต่ำ)

2) จำนวน Transaction ที่เกิดขึ้นกับกระเป๋าในรอบ 30 วันที่ผ่านมา

3) จำนวน Transaction ที่เกิดกับกระเป๋าที่ถือเงินไว้เยอะ

4) แล้วแต่ระบบนั้นจะนิยาม "ความสำคัญ" เพิ่มเติม

และเราเรียกตรงนี้ว่า Importance Score ซึ่งเป็นโอกาสที่ Node จะถูกสุ่มเลือกมาสร้าง Block ในระบบนี้นั่นเอง โดยรวมแล้ว

ใน Proof of Importance สิทธิ์ในการร่วมยืนยันความถูกต้องในการทำงานของระบบนั้นจะอิงตามระดับความสำคัญของคนนั้น ๆ ในระบบ

Proof of Importance ถูกใช้ใน NEM บล็อคเชนสัญชาติญี่ปุ่นที่หลาย ๆ คนอาจจะเคยได้ยินชื่อกัน

Proof of Authority (PoA)

อันนี้เป็นการระบุเลยว่าใครจะสามารถยืนยัน Transaction (สร้าง Block) ได้บ้าง ตรงไปตรงมามาก ก็ในเมื่อเราไม่รู้จะไว้ใจใครได้บ้าง ก็เลือกเฉพาะคนที่ไว้ใจได้มายืนยันเลยสิ !

ข้อเสียของ Proof of Authority คือ มันเป็นระบบที่ Centralized เอามาก ๆ เพราะคนสร้าง Blockchain จะเป็นคนควบคุมว่าใครสามารถยืนยันการโอนได้บ้าง ดังนั้น Proof of Authority เลยเหมาะกับ Private Blockchain หรือบล็อคเชนที่สร้างเอาไว้ใช้แบบปิด แต่ข้อดีคือ มันเร็วมากกกกก (ด้วยความที่มันใกล้เคียงกับระบบรวมศูนย์นั่นเอง)

มี Blockchain ที่ใช้ PoA อยู่หลายตัว ส่วนใหญ่จะโฟกัสไปที่ B2B ยกตัวอย่างเช่น Tomochain ด้วยสาเหตุที่กล่าวไปแล้ว ระบบมันไปทาง Centralized มากกว่าการกระจาย

Proof of Burn (PoB)

อันนี้เป็น Consensus ที่ออกจะแปลก ๆ หน่อย แปลกจนต้องเอามาเล่าให้ฟัง

สังเกตว่า Consensus Protocol ที่ Proof โน่น Proof นี่จะเป็นการมอบสิทธิ์ให้ใครสร้างบล็อคได้หรือให้สิทธิ์ในการมีส่วนร่วมใด ๆ ในระบบ

และถ้าดูให้ดี Proof of Work นี่ก็มีต้นทุนการขุดอยู่นะ เพื่อพิสูจน์ให้ทุกคนเห็นว่าเราทำงานหนักนะเว้ยยยกว่าจะได้ Block นี้ออกมา

คราวนี้ถ้าเปลี่ยนต้นทุนเป็นอย่างอื่นหละ เพื่อเป็นการพิสูจน์ว่าเราต้องเสียอะไรบางอย่างไปเพื่อที่จะได้สิทธิ์มา จึงเป็นที่มาของ Proof of Burn

Proof of Burn คือการให้คนโอนเหรียญไปยังกระเป๋าที่ไม่มีใครสามารถใช้งานได้จนเหรียญเหล่านั้นจะเสียไปอย่างถาวร (หรือเรียกอีกอย่างว่าการ Burn ทิ้ง) เพื่อพิสูจน์ว่าเรายอมเสียเหรียญเหล่านี้ไปเพื่อขอแลกสิทธิ์ในการสร้าง Block ขึ้นมาสักอัน

ฟังดูอาจจะแปลก ๆ แต่ก็ Make Sense นิดหน่อย เพราะมันก็แค่เปลี่ยนต้นทุนการขุดเป็นต้นทุนทางอื่นแทน เผลอ ๆ อาจจะถูกกว่าการซื้อการ์ดจอหรือเครื่องขุดมาตั้ง PoW Node ซะอีก และพอได้สิทธิ์ในการสร้างบล็อคมา คนนั้น ๆ ก็จะได้รางวัลกลับมาในรูปแบบ Block Reward หรือ Transaction Fee อะไรก็แล้วแต่

Proof of Burn ยังเป็นแค่แนวคิดอยู่ มีเหรียญเดียวมั้งที่ใช้คือ Slimcoin แต่ ... อย่าไปใช้เยอะเลย เสียดายของยังไงไม่รู้ 555

Proof of Capacity

เป็นอีกตัวที่คล้าย ๆ กับ Proof of Stake แต่สำหรับ Proof of Capacity จะใช้วิธีว่า

ใครมีพื้นที่ใน Harddisk เหลือเยอะกว่า ก็จะเพิ่มโอกาสในสร้างบล็อคใหม่ได้ด้วย

หลักการทำงานก็ไม่มีอะไรซับซ้อนมาก ตอนตั้ง Node จะมีการสร้างข้อมูลที่ชื่อว่า "Plot" ซึ่งยิ่งมีข้อมูลเหล่านี้มาก โอกาสที่จะสร้างบล็อคใหม่ได้ก็จะสูงขึ้นแค่นั้นเอง

คนเราก็สร้างสรรค์หาวิธีเนอะ

Proof of Elapsed Time (PoET)

เป็น Consensus Protocol ที่สร้างขึ้นโดย Intel และมีความใกล้เคียงกับ PoW ในแง่ของการกระจายสิทธิ์ เพียงแต่ว่า Proof of Elapsed Time ไม่ต้องใช้พลังประมวลผลแรง ๆ แบบ PoW เพราะ Protocol ที่ Intel สร้างขึ้นนี้ทำให้เราสามารถมั่นใจได้ว่าการกระจายสิทธิ์เป็นไปอย่างยุติธรรมโดยไม่ต้องมา Proof of Work แข่งกัน

วิธีคือ ระบบจะทำการสุ่มเวลาขึ้นมาหนึ่งเลข ผู้ที่สร้างบล็อคจะต้องรอจนเวลาผ่านไปตามจำนวนที่สุ่มมาได้ แล้วค่อยส่งบล็อคไปยัง Network ใครส่งได้ก่อนเป็นผู้ชนะ ซึ่งการที่จะทำให้ข้อมูลตรงนี้เชื่อถือได้ จำเป็นต้องใช้ Intel CPU ที่สนับสนุน Software Guard Extensions (SGX) เพื่อป้องกันไม่ให้โค้ดตรงนี้ถูกเปลี่ยนแปลง

ข้อเสียหลักของระบบนี้คือ Consensus Protocol นี้ทำงานได้บน Intel CPU เท่านั้น (ก็แหงมหละ Intel เป็นคนสร้างหนิ) ซึ่งทำให้คนจำนวนมากส่ายหน้าเพราะกลายเป็นว่าต้องเอาชีวิตไปผูกกับ Intel คนก็กลัวว่าวันหนึ่งจะมีปัญหาได้

ตอนนี้ PoET มีใช้ใน Hyperledger Sawtooth ซึ่งเป็น Blockchain ระดับ Enterprise ที่ Intel พัฒนาขึ้น ซึ่งถือว่าน่าสนใจเลยทีเดียว

Practical Byzantine Fault Tolerance (PBFT)

มาถึง Consensus Protocol อีกตัวนึงที่ถือว่าสำคัญในโลกของ Blockchain และถ้าใครอยู่สายคอมพ์อาจจะอ้าปากค้างอยู่ ณ ตอนนี้เพราะ Practical Byzantine Fault Tolerance เป็นเรื่องที่ชาวคอมพ์ส่วนใหญ่จะต้องรู้จักกันอยู่แล้ว เพราะมันเกิดมาเพื่อแก้ไขปัญหา Byzantine Fault Problems อันเลื่องชื่อนั่นเอง

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

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

สำหรับ PBFT ทุก Node จะเชื่อมเข้าหากัน คุยด้วยกันได้หมด

การยืนยัน Transaction จะมีขั้นตอนดังนี้

1) Transaction ถูกส่งเข้า Network สมมติมีสามตัวคือ A, B, C

2) Node ต่าง ๆ ได้รับ Transaction เหล่านั้นไป แต่ละ Node อาจรับในออร์เดอร์ที่ต่างกันไป บางคนอาจจะได้รับเป็น B, A, C บางคนได้รับเป็น C, B, A

3) ทุก Node จะร่วมกันยืนยัน Transaction เหล่านั้นและส่งผลการยืนยันของตัวเองกระจายไปยังทุกคนใน Network

4) เมื่อ Transaction นั้น ๆ ได้รับการยืนยันจาก Node ต่าง ๆ เยอะพอ เช่น 66% ของจำนวน Node ทั้งหมด (แต่ห้ามต่ำกว่า (2n+1)/3 เมื่อ n คือจำนวน Node ทั้งหมด เพื่อแก้ปัญหาการมีคนโกง) Transaction นั้น ๆ จะได้รับการยอมรับว่าถูกต้อง ด้วยเหตุนี้ ต่อให้มี Node ที่ทำงานผิดพลาดหรือตั้งใจจะโกงก็จะไม่มีปัญหา เพราะข้อมูลจะไม่ตรงกันและ Node อื่น ๆ จะเลือกตัวที่ไม่โกงเท่านั้นจ้า (มันถึงชื่อว่า Fault Tolerance หรือต้านทานต่อความผิดพลาด) แต่ถ้ามี Node ที่โกงอยู่เยอะเกิน (n-1)/3 ระบบก็จะเชื่อถือไม่ได้อยู่ดีนะ

5) จะมี Node นึงที่ทุกคนร่วมกันโหวตว่าไว้ใจเป็นคนเรียง Transaction เหล่านั้นให้และบรรจุลงบล็อค เป็นอันจบรอบ

ซึ่งหลัก ๆ ก็จะเห็นว่า PBFT ใช้วิธีที่ต่างกันออกไปจาก PoW และ PoS โดยสิ้นเชิง พวกนั้นจะเลือกคนช่วยยืนยันมา 1 คนหรือกลุ่มหนึ่ง แต่กับ PBFT จะให้ทุกคนช่วยกันยืนยันเลย จนถึงจุดที่มีคนยืนยันเยอะพอจึงจะนำ Transaction นั้นมาเข้า Chain

Consensus แบบนี้เหมาะกับงานด้าน Enterprise ที่มี Node อยู่จำกัด และถ้ามี Node เยอะเกินไป ระบบก็จะช้าลงได้เพราะทุก Node (Peer) จะต้องติดต่อหากันหมด

แต่เนื่องจากมันไม่ต้อง Proof อะไร ไม่ต้องขุด ไม่ต้องใช้เวลาไปกับอะไรที่ไร้ประโยชน์ ถ้าจำนวน Node มีอยู่พอเหมาะ ระบบของมันก็จะทำงานได้ค่อนข้างเร็วมาก แค่ 1-3 วินาทีต่อ 1 Block และสามารถรับ Transaction ต่อวินาทีได้เยอะเป็น 1,000 Tx/s เลย แต่ข้อเสียคือระบบมันจะไม่ค่อย Decentralized เพราะเป็นระบบที่ถูกควบคุม Node อยู่ครับ

ตัวที่ใช้ PBFT ก็เช่น Hyperledger Fabric v0.6 ซึ่งเกิดมาเพื่องานประเภท Private Blockchain

ในรูป Node ที่ขึ้นว่าตัว V และ VL คือ Node ที่มีความสามารถในการยืนยัน Transaction (V ย่อมาจาก Validating) ก็จะเห็นได้ว่า Node (Peer) เหล่านั้นจะเชื่อมต่อถึงกันหมด เพื่อคอยคุยกันว่าจะเชื่อใจ Transaction ไหนบ้างนั่นเองครับ

ระบบ PBFT นี้เหมาะกับ Private Blockchain เพราะว่า Node ที่จะทำงานในระบบได้ จะต้องเป็น Node ถูกกำหนดโดยผู้ดูแลระบบเท่านั้น ไม่ใช่ว่าอยู่ ๆ จะสร้าง Node แล้วเข้าไปร่วมใช้งานในระบบได้เลย พวก Blockchain ที่ใช้ PBFT จึงเป็น Centralized หรือระบบที่ถูกควบคุมโดยบางคน ไม่ใช่ระบบกระจายศูนย์ครับ

Tendermint Core (PBFT + PoS)

เนื่องจาก PBFT เป็นระบบที่ค่อนข้าง Centralized จึงไม่เหมาะกับการทำ Public Blockchain จึงมีคนนำเสนอ Consensus อีกตัวที่ต่อยอดจาก PBFT มาอีกทีนึง แต่ทำให้ Decentralize มากขึ้นด้วยการนำแนวทางของ Proof of Stake เข้ามาร่วมด้วย โดยตัวนี้มีชื่อว่า Tendermint Core ครับ

ในโครงสร้างพื้นฐานของ Tendermint จะประกอบด้วยตัว Node ที่สามารถเข้าร่วมยืนยัน Transaction ได้ เราจะเรียก Node เหล่านี้ว่า Validator โดยเงื่อนไขของการตั้ง Node คือ ผู้ตั้งจำเป็นต้อง Stake เหรียญไว้จำนวนหนึ่งด้วย

ในทุก ๆ รอบที่มีการยืนยัน Transaction (หรือก็คือการสร้าง Block ใหม่) จะมี Validator ตัวนึงถูกเลือกขึ้นมาสร้าง Block ดยโอกาสที่ Validator ตัวนั้น ๆ จะถูกเลือกก็เป็นไปตามอัตราส่วนของเหรียญที่ถือไว้เทียบกับจำนวนเหรียญที่ถูก Stake ไว้ทั้งหมดในระบบ เช่น ถ้า Stake ไว้เป็นจำนวน 2% ของทุก Validator รวมกัน Validator Node ตัวนี้ก็จะมีโอกาสถูกเลือก 2% ตรงไปตรงมาตามนั้นเลย (นี่คือส่วนของ Proof of Stake ที่นำเข้ามาประยุกต์ใช้นั่นเอง)

และเมื่อ Validator ถูกเลือก มันก็จะสร้าง Block ขึ้นมาพร้อมบรรจุ Transaction ทั้งหลายไว้ พร้อมกับส่ง Block นี้ไปยัง Validator ตัวอื่น ๆ ทั้งระบบ เมื่อ Validator ตัวอื่น ๆ ได้รับ ก็จะทำการตรวจสอบว่า Block นั้นถูกต้องหรือไม่ พร้อมลงคะแนนเสียงว่าเชื่อใจหรือไม่ ขั้นตอนนี้เรียกว่า "การ Vote" โดยคะแนนเสียงของแต่ละคนจะไม่เท่ากัน อิงตามอัตราส่วนของเหรียญที่ถูก Stake อยู่อีกเช่นกัน ถ้าถือเยอะหน่อย คะแนนเสียงก็จะเยอะหน่อย

จากนั้น Validator ก็จะส่งผลลัพธ์การตรวจสอบนี้ไปยัง Validator ตัวอื่น ๆ อีกเพื่อให้ช่วยกันร่วมตรวจสอบและกรองเอาข้อมูลของคนที่ตั้งใจจะโกงออกไป

จนสุดท้ายถ้า Block มีคนเซ็นชื่อรับรองเกิน 2 ใน 3 ตัว Block นั้นจะถือว่าได้รับความเชื่อถือและบรรจุลง Ledger ในที่สุด ถือว่าจบหนึ่งรอบครับ แต่ถ้าคะแนนโหวตว่าเชื่อใจนั้นต่ำกว่า 2 ใน 3 ก็จะถือว่า Block นั้นโมฆะแล้วเริ่มรอบใหม่เลย

ก็ตามนี้ครับ จะเห็นว่าเป็นการเอา Practical Byzantine Fault Tolerance มายำกับ Proof of Stake ได้อย่างลงตัว ผลก็คือ Tendermint เลยเหมาะกับทั้ง Private Blockchain และ Public Blockchain ครับ เพราะด้วยระบบนี้ใครก็สามารถตั้ง Node ได้ เพียงแต่ต้องพิสูจน์ตัวเองด้วยการ Stake เหรียญด้วยนั่นเอง

Loop Fault Tolerance (LFT)

อันนี้จะคล้าย Tendermint Core มาก คือมีการเลือก Validator คนนึงให้สร้าง Block แล้วส่งไปให้ทุกคนช่วยกันยืนยัน ถ้าได้ผลลัพธ์กลับมามากพอก็จะบรรจุบล็อคลง Ledger ไป คือโดยรวมแล้วเหมือนกับ Tendermint Core เลยแหละ เพียงแต่ทุกอย่างเร็วขึ้นนิดหน่อยเพราะว่ามีการลดขั้นตอนการสื่อสารลงจาก 4 เหลือ 3 ครับ

LFT ถูกใช้ใน ICON จากเกาหลี หนึ่งใน ICO ที่ราคาพุ่งปรี้ดที่สุดตัวหนึ่ง

Delegated Byzantine Fault Tolerance (dBFT)

เป็นอะไรที่ค่อนข้างคล้าย PBFT แต่มีการเปลี่ยนแปลงทางโครงสร้าง และถ้าดูชื่อก็จะเห็นว่ามันคือการเพิ่มระบบ Delegated เข้าไป ความจริงแล้วมันเหมือนกับที่ DPoS ถูกต่อยอดจาก PoS เลยทุกประการ ... คือแบบ เหมือนเลยแหละ ถ้ารู้ว่า DPoS ต่างกับ PoS ยังไง ก็จะรู้ว่า dBFT ต่างจาก PBFT ยังไง

ใน Practical Byzantine Fault Tolerance แค่เพียงตั้ง Node ก็สามารถเข้าร่วมระบบและเริ่มร่วมยืนยัน Transaction ได้ทันที

ส่วนใน Delegated Byzantine Fault Tolerance ใครก็สามารถตั้ง Node ได้เช่นกัน แต่จะยังไม่สามารถเริ่มยืนยันได้ แต่ Node นั้นจะต้อง "ได้รับเลือกตั้ง" จากผู้คนใน Network เสียก่อน

โดยผู้ที่มีสิทธิ์ออกเสียงก็คือทุกคนที่มีเหรียญถืออยู่ในกระเป๋า และจะเลือกใครก็ได้ กี่คนก็ได้ คนที่ได้รับเลือกเยอะที่สุด n อันดับ (แล้วแต่ระบบจะกำหนด) จะกลายเป็น Node ที่มีสิทธิ์ในการยืนยันได้

และเนื่องจากว่ากลุ่ม Node อันดับท็อปได้รับเลือกตั้งมา ทำให้ได้รับความน่าเชื่อถือระดับหนึ่งแล้ว ระบบการยืนยันเลยเปลี่ยนไปจาก PBFT ด้วย โดย PBFT ทุกคนจะต้องร่วมยืนยันแล้วถ้าทุกคนเห็นด้วยเกิน 2/3 จะถือว่าการยืนยันสมบูรณ์

แต่กับ dBFT ระบบจะ "สุ่มเลือกผู้ยืนยันมา 1 คน" ซึ่งเราจะเรียกว่า Speaker และคนนี้จะเป็นคนยืนยัน Transaction ต่าง ๆ ให้ จากนั้นจะส่งผลลัพธ์การยืนยันไปหา Node อื่นๆ ซึ่งในที่นี้ขอเรียกว่า Delegate

เมื่อ Delegate ต่าง ๆ ได้รับผล ทุกคนก็จะยืนยันผลลัพธ์ก่อนว่ามันถูกต้อง จากนั้นก็ส่งผลลัพธ์ต่อไปยัง Delegate คนอื่น ๆ

ถ้าทุก Delegate ได้รับผลลัพธ์เดียวกันและยืนยันจนครบเกิน 66% จะถือว่า Transaction นั้น ๆ สมบูรณ์ ก็สามารถบรรจุ Transaction นั้นลง Ledger ได้ทันทีครับ แต่ถ้า Delegate ต่าง ๆ ไม่ยอมรับผลเกิน 33% (เช่นมี Delegate พบว่าการโอนเงินใน Transaction นั้นไม่ถูกต้อง) ระบบจะถือว่าเป็นโมฆะ เลือก Speaker ใหม่และเริ่มต้นรอบใหม่ทันที

ด้วยวิธีดังกล่าว ระบบจะป้องกันการผิดพลาดได้ทั้งกรณีที่ Speaker พยายามโกงทุกวิธี รวมถึงกรณีที่ส่งผลลัพธ์ไปหาหลาย ๆ คนต่างกันไป Delegate ทั้งหลายก็จะสามารถรับรู้ได้จากการคุยกันเองว่า เฮ้ย เราได้รับผลลัพธ์ไม่เหมือนนายนะ ถ้าสุดท้ายมีการไม่ยอมรับเกิน 33% ก็จะเปลี่ยน Speaker ทันทีครับ

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

Consensus ตัวนี้มีใช้อยู่ใน NEO ครับ ซึ่งการจะตั้ง Node (หรือที่เรียกว่าชื่อเต็ม ๆ ว่า Bookkeeping Node) เราจะต้องผ่านเงื่อนไขที่ระบบกำหนดไว้ด้วย เช่น ต้องถือ GAS อย่างน้อย 1,000 GAS และต้องมี Certificate ที่ออกในประเทศจีน เป็นต้น ซึ่งในระบบอื่นก็จะมีเงื่อนไขที่แตกต่างกันออกไปครับ

Federated Byzantine Agreement (FBA)

PBFT มีจุดอ่อนนึงคือ ระบบจะต้องรู้ว่ามี Node อยู่กี่ตัวถึงจะเริ่มทำงานได้ และคนที่จะกำหนด Node เหล่านั้นได้ก็คือผู้ดูแลระบบ ก็เลยมีคนคิดว่า เอ ... จะทำยังไงให้ระบบแบบ PBFT สามารถทำงานกับ Node ที่มีจำนวนไม่จำกัด และไม่มีใครรู้ว่าในระบบมี Node ใดอยู่บ้างได้ ?

จึงเกิดเป็นวิธีที่เรียกว่า Federated Byzantine Agreement (FBA) ขึ้นมา

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

ตามรูปก็คือจะมี Node จำนวนนึงรวมตัวกันเป็นกลุ่ม เรียกว่า Quorum พอได้ผลลัพธ์แล้วว่าเชื่อใจ Transaction ใดบ้าง ก็จะส่งไปยืนยันกับ Quorum อื่น ๆ ด้วย ถ้าเกิดมีจำนวน Quorum เชื่อมากพอ ก็จะบรรจุ Transaction นั้น ๆ ลง Ledger ครับ

ตอนนี้ตัวที่ใช้แนวทางของ FBA ที่ดัง ๆ ก็มี Ripple และ Stellar ที่ใช้ Ripple Protocol Consensus Algorithm (RPCA) และ Stellar Consensus Protocol (SCP) ตามลำดับครับ แต่ทั้งสองตัวจะไม่เหมือนกันซะทีเดียว Ripple จะง่ายและตรงไปตรงมากว่า ส่วน Stellar จะซับซ้อนกว่าพอสมควร เขียนเป็นบล็อกได้อีกบล็อกนึงเลยทีเดียว

ทั้งนี้ Ripple มี Node อยู่จำกัดและถูกควบคุมด้วยบริษัท ดังนั้น Ripple จึงเป็นระบบที่ Centralized มาก (ถูกควบคุมด้วยคนบางกลุ่ม) ส่วนของ Stellar ที่ตอนแรกเคยใช้ Protocol เดียวกับ Ripple ก็ตัดสินใจออกแบบใหม่เพื่อให้เหมาะกับ Node ที่มีจำนวนไม่จำกัดทั่วโลก ใครก็สามารถตั้ง Node ได้ ระบบ Stellar จึง Decentralized กว่า Ripple มากครับ

ใครอยากรู้แบบ Nerd Nerd หน่อยว่า SCP ทำงานยังไง ไปดูวีดีโอตัวนี้ได้ The Stellar Consensus Protocol

ยังมีอีกเยอะมาก

ทุกวันนี้ก็ยังมีคนขยันเข็นเอา Consensus Protocol ตัวใหม่ ๆ ออกมาเรื่อย ๆ บ้างก็เพื่อการใช้งานจริง บ้างก็เป็นแค่แนวคิด และไม่มี Consensus ตัวไหนที่ดีที่สุด แต่เน้นว่าตัวไหนเหมาะกับงานไหนมากกว่า เช่น Private Blockchain ก็เหมาะกับตัวนึง Public Blockchain ก็เหมาะกับอีกตัวนึง แต่สิ่งที่พอจะบอกได้ในปีนี้คือ

ยุคของ Proof of Work มันจบไปแล้ว

Proof of Work ตัวเก่าก็จะยังทำงานต่อไปแหละเพราะสายเกินไปแล้วที่จะแก้ (Bitcoin & Ethereum เป็นตัวหลัก) แต่ตัวใหม่ ๆ ก็จะเน้นไปทางอื่นแล้ว ที่ดัง ๆ หน่อยปีนี้ก็จะเป็น Proof of Stake และ Delegated Proof of Stake แหละ มีคนเอามาใช้เยอะมาก รวมถึง Layer 2 ของ Ethereum เองด้วย

อาจจะสงสัยว่าทำไมต้องมี Consensus หลาย ๆ แบบ เบื้องหลังมีอยู่อย่างนึงคือ Proof of Work มีจุดอ่อนเยอะ โดยเฉพาะเรื่องของการกินพลังงาน ตอนนี้คนเลยพยายามหาวิธีใหม่ที่ประหยัดพลังงานขึ้นแต่ยังสามารถมั่นใจได้ว่าระบบจะ Decentralized ไม่ถูกควบคุมโดยใครบางคนนั่นเอง

ก็หวังว่าบทความนี้จะมีประโยชน์ครับ

บทความที่เกี่ยวข้อง

May 3, 2018, 21:39
114460 views
ทำความรู้จัก Smart Contract แบบเบื้องต้น "เพราะ Blockchain ไม่ได้มีแค่ Bitcoin"
Feb 4, 2018, 02:45
143995 views
รู้ทันกลโกงการหลอกลวงเอาเงินจาก ICO รู้ไว้ไม่เสียเงินฟรี !
0 Comment(s)
Loading