ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar

ระเบียบวิธีฉันทามติของ Stellar ได้รับการอธิบายครั้งแรกใน บทความทางวิทยาศาสตร์ เดวิด มาซิเออร์ในปี 2015 นี่คือ “ระบบข้อตกลง Byzantine ของรัฐบาลกลาง” ที่ช่วยให้เครือข่ายคอมพิวเตอร์แบบกระจายอำนาจและไร้ผู้นำสามารถเข้าถึงฉันทามติในการตัดสินใจได้อย่างมีประสิทธิภาพ เครือข่ายการชำระเงิน Stellar ใช้ Stellar Consensus Protocol (SCP) เพื่อรักษาประวัติการทำธุรกรรมที่สอดคล้องกันซึ่งผู้เข้าร่วมทุกคนจะมองเห็นได้

ระเบียบปฏิบัติที่เป็นเอกฉันท์ถือว่ายากต่อการเข้าใจ SCP นั้นเรียบง่ายกว่าส่วนใหญ่ แต่ยังคงมีชื่อเสียงเหมือนกัน ส่วนหนึ่งเนื่องมาจากแนวคิดที่เข้าใจผิดว่า "การลงคะแนนเสียงแบบสหพันธรัฐ" ซึ่งเป็นหัวข้อของครึ่งแรกของบทความทางวิทยาศาสตร์คือ SCP แต่นั่นไม่เป็นความจริง! นี่เป็นเพียงองค์ประกอบสำคัญที่ครึ่งหลังของบทความใช้ในการสร้าง แท้จริง โปรโตคอลฉันทามติของดาวฤกษ์

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

ระบบข้อตกลง

ระบบข้อตกลงช่วยให้กลุ่มผู้เข้าร่วมสามารถบรรลุฉันทามติในหัวข้อต่างๆ เช่น จะสั่งอะไรเป็นอาหารกลางวัน

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

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

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

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

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

ลองนึกถึงอลิซ เจ้าของเหรียญ crypto ที่ต้องเลือกระหว่างการซื้อไอศกรีมแสนอร่อยจาก Bob และชำระหนี้ของ Carol บางทีอลิซอาจต้องการจ่ายเงินทั้งสองคนพร้อมกันโดยใช้เหรียญเดียวกันอย่างฉ้อฉล เมื่อต้องการทำเช่นนี้ เธอต้องโน้มน้าวคอมพิวเตอร์ของ Bob ว่าไม่เคยจ่ายเหรียญให้กับแครอล และโน้มน้าวคอมพิวเตอร์ของแครอลว่าไม่เคยจ่ายเหรียญให้กับ Bob ระบบข้อตกลงไบแซนไทน์ทำให้สิ่งนี้แทบจะเป็นไปไม่ได้เลย โดยใช้รูปแบบของกฎเสียงข้างมากที่เรียกว่า องค์ประชุม. โหนดในเครือข่ายดังกล่าวปฏิเสธที่จะย้ายไปยังเวอร์ชันหนึ่งของประวัติจนกว่าจะเห็นว่ามีเพื่อนในจำนวนที่เพียงพอ - องค์ประชุม - เห็นด้วยกับการเปลี่ยนแปลงดังกล่าว เมื่อสิ่งนี้เกิดขึ้น พวกเขาจะสร้างกลุ่มการลงคะแนนเสียงที่มีขนาดใหญ่พอที่จะบังคับให้โหนดเครือข่ายที่เหลือเห็นด้วยกับการตัดสินใจของพวกเขา Alice สามารถบังคับให้บางโหนดทำงานแทนเธอได้ แต่ถ้าเครือข่ายมีขนาดใหญ่เพียงพอ ความพยายามของเธอจะถูกครอบงำด้วยคะแนนเสียงของโหนดที่ซื่อสัตย์

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

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

สำหรับคนที่ใจร้อน

ส่วนที่เหลือของบทความจะอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับการลงคะแนนแบบสหพันธรัฐและโปรโตคอลฉันทามติของ Stellar หากคุณไม่สนใจรายละเอียด ต่อไปนี้เป็นภาพรวมทั่วไปของกระบวนการ

  1. โหนดดำเนินการลงคะแนนเสียงของรัฐบาลกลางเกี่ยวกับ "ผู้ได้รับการเสนอชื่อ" รอบการลงคะแนนเสียงของรัฐบาลกลางหมายถึง:
    • โหนดลงคะแนนเสียงสำหรับข้อความบางข้อความ เช่น “ฉันเสนอค่าของ V”;
    • โหนดจะฟังเสียงของเพื่อนจนกว่าจะพบเสียงที่สามารถ "รับ" ได้
    • โหนดค้นหา "องค์ประชุม" สำหรับการยืนยันนี้ องค์ประชุม “ยืนยัน” ผู้ได้รับการเสนอชื่อ
  2. เมื่อโหนดสามารถยืนยันผู้ได้รับการเสนอชื่อตั้งแต่หนึ่งคนขึ้นไป โหนดจะพยายาม "เตรียม" "บัตรลงคะแนน" ผ่านการลงคะแนนแบบสหพันธรัฐหลายรอบ
  3. เมื่อโหนดสามารถตรวจสอบได้ว่าบัตรลงคะแนนพร้อมแล้ว โหนดจะพยายามส่งผ่านการลงคะแนนแบบสหพันธรัฐเพิ่มเติมอีก
  4. เมื่อโหนดสามารถยืนยันการกระทำของการลงคะแนนเสียงได้ ก็สามารถ "ทำให้ภายนอก" มูลค่าของบัตรลงคะแนนนั้นได้โดยใช้เป็นผลลัพธ์ที่เป็นเอกฉันท์

ขั้นตอนเหล่านี้เกี่ยวข้องกับการลงคะแนนแบบสหพันธรัฐหลายรอบ ซึ่งรวมกันเป็น SCP รอบเดียว มาดูสิ่งที่เกิดขึ้นในแต่ละขั้นตอนกันดีกว่า

การลงคะแนนเสียงแบบสหพันธรัฐ

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

โควรัมและโควรัมชิ้น

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

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

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
หากต้องการค้นหาองค์ประชุมจากโหนดที่กำหนด...

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
... เพิ่มสมาชิกของสไลซ์ของมัน...

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
...จากนั้นเราจะเพิ่มสมาชิกชิ้นของโหนดเหล่านี้

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
เราดำเนินการต่อไปจนกว่าจะไม่มีโหนดเหลือให้เพิ่ม

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
ไม่มีโหนดเหลือให้เพิ่ม นี่คือองค์ประชุม

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

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
เลือกเพียงหนึ่งส่วนโควรัมในแต่ละขั้นตอน

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
โควรัมหนึ่งที่เป็นไปได้ หรือทางเลือกอื่น...

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
...เลือกชิ้นอื่น...

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
…(เมื่อเป็นไปได้)…

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
... สร้างองค์ประชุมอีกองค์หนึ่ง

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

โปรดจำไว้ว่าในระบบข้อตกลงไบแซนไทน์ที่ไม่ใช่ของรัฐบาลกลาง องค์ประชุมถูกกำหนดให้เป็นเสียงส่วนใหญ่ของโหนดทั้งหมด ระบบข้อตกลงไบแซนไทน์ได้รับการออกแบบจากมุมมองของคำถาม: ระบบสามารถทนต่อโหนดที่ไม่ซื่อสัตย์ได้กี่โหนด? ในระบบของโหนด N ที่ออกแบบมาเพื่อให้สามารถอยู่รอดจากความล้มเหลวได้ โหนดควรจะสามารถก้าวหน้าได้โดยได้รับการตอบรับจากเพื่อน N−f เนื่องจาก f ในโหนดเหล่านั้นอาจหยุดทำงาน แต่เมื่อได้รับการตอบกลับจากเพื่อน N−f เราสามารถสรุปได้ว่าเพื่อน f ทั้งหมด (ซึ่งโหนดไม่ได้รับการตอบกลับ) เป็นคนซื่อสัตย์จริงๆ ดังนั้น f จาก N−f เพียร์ (ซึ่งได้รับการตอบสนอง) จึงเป็นอันตราย เพื่อให้โหนดได้รับความเห็นพ้องต้องกัน โหนดที่เหลือส่วนใหญ่จะต้องซื่อสัตย์ กล่าวคือ เราต้องการให้ N−f มากกว่า 2f หรือ N > 3f โดยทั่วไปแล้ว ระบบที่ออกแบบมาเพื่อให้อยู่รอดจากความล้มเหลวจะมีโหนดทั้งหมด N=3f+1 และขนาดองค์ประชุมเท่ากับ 2f+1 เมื่อข้อเสนอผ่านเกณฑ์องค์ประชุม ส่วนที่เหลือของเครือข่ายจะมั่นใจว่าข้อเสนอที่แข่งขันกันจะล้มเหลว นี่คือวิธีที่เครือข่ายมาบรรจบกันเพื่อให้ได้ผลลัพธ์

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

ในทางเทคนิคแล้ว ไม่มีทาง! ลองนึกภาพเครือข่ายที่มีหกโหนด โดยที่แฝดสามสองตัวถูกแยกออกจากกันในโควรัมสไลซ์ของกันและกัน กลุ่มย่อยแรกอาจตัดสินใจโดยที่กลุ่มที่สองจะไม่เคยได้ยินเรื่องนี้ และในทางกลับกัน เครือข่ายนี้ไม่มีทางที่จะบรรลุฉันทามติได้ (ยกเว้นโดยบังเอิญ)

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

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
หากมีจุดตัดกันขององค์ประชุมในเครือข่าย...

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
...จากนั้นคุณสามารถสร้างโควรัมสองชุดใดก็ได้...

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
...จะตัดกันเสมอ

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar

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

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

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

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

แน่นอน ожидание การข้ามองค์ประชุมไม่ได้ รับประกัน. ระบบข้อตกลงไบแซนไทน์อื่นๆ เป็นหนี้ความซับซ้อนอย่างมากในการรับประกันองค์ประชุม นวัตกรรมที่สำคัญของ SCP คือการขจัดความรับผิดชอบในการสร้างองค์ประชุมจากอัลกอริธึมที่เป็นเอกฉันท์และนำมันไปสู่ระดับแอปพลิเคชัน ดังนั้น แม้ว่าการลงคะแนนแบบสหพันธรัฐจะเป็นเรื่องทั่วไปเพียงพอที่จะลงคะแนนในประเด็นใดๆ ก็ตาม แต่ความน่าเชื่อถือของมันจริงๆ แล้วขึ้นอยู่กับความหมายที่กว้างขึ้นของความหมายเหล่านี้ในเชิงวิพากษ์ การใช้งานสมมุติบางอย่างอาจไม่เอื้อต่อการสร้างเครือข่ายที่เชื่อมต่ออย่างดีเหมือนกับการใช้งานอื่นๆ

การลงคะแนน การยอมรับ และการยืนยัน

ในรอบการลงคะแนนแบบสหพันธรัฐ โหนดเลือกที่จะเริ่มโหวตสำหรับค่า V บางค่า ซึ่งหมายถึงการเผยแพร่ข้อความไปยังเครือข่าย: “ฉันเป็นโหนด N ส่วนโควรัมของฉันคือ Q และฉันกำลังโหวตให้ V” เมื่อโหนดลงคะแนนด้วยวิธีนี้ โหนดจะสัญญาว่าจะไม่เคยลงคะแนนต่อต้าน V และจะไม่มีวันลงคะแนนด้วย

ในการออกอากาศแบบเพียร์ทูเพียร์ แต่ละโหนดจะเห็นว่าโหนดอื่นลงคะแนนอย่างไร เมื่อโหนดรวบรวมข้อความเหล่านี้ได้เพียงพอแล้ว โหนดจะสามารถติดตามการแบ่งส่วนควอรัมและพยายามค้นหาองค์ประชุมได้ หากเขาเห็นโควรัมของเพื่อนร่วมงานที่โหวตให้ V เหมือนกัน เขาก็สามารถดำเนินการต่อได้ การรับเป็นบุตรบุญธรรม V และเผยแพร่ข้อความใหม่นี้ไปยังเครือข่าย: “ฉันคือโหนด N ส่วนโควรัมของฉันคือ Q และฉันยอมรับ V” การยอมรับให้การรับประกันที่แข็งแกร่งกว่าการลงคะแนนแบบธรรมดา เมื่อโหนดโหวตให้ V ก็จะไม่สามารถโหวตให้กับตัวเลือกอื่นได้ แต่ถ้าโหนดยอมรับ V ก็ไม่มีโหนดใดบนเครือข่ายที่จะยอมรับตัวเลือกอื่นเลย (ทฤษฎีบท 8 ในเอกสารไวท์เปเปอร์ของ SCP พิสูจน์สิ่งนี้)

แน่นอนว่า มีความเป็นไปได้สูงที่จะไม่มีองค์ประชุมของโหนดที่เห็นด้วยกับ V ในทันที โหนดอื่นๆ อาจลงคะแนนให้ค่าอื่น แต่มีอีกวิธีหนึ่งที่โหนดจะย้ายจากการลงคะแนนธรรมดาไปสู่การยอมรับ N อาจยอมรับค่า W ที่แตกต่างออกไป แม้ว่าเขาจะไม่ได้ลงคะแนนให้ และแม้ว่าเขาจะไม่เห็นองค์ประชุมก็ตาม หากต้องการตัดสินใจเปลี่ยนแปลงการโหวตของคุณ เพียงแค่ดู ชุดบล็อค โหนดที่ยอมรับ W แล้ว ชุดการบล็อกคือหนึ่งโหนดจากแต่ละส่วนควอรัม N ตามชื่อที่แนะนำ มันสามารถ บล็อก ความหมายอื่นใด หากโหนดทั้งหมดในเซตดังกล่าวยอมรับ W ดังนั้น (ตามทฤษฎีบทที่ 8) มันจะไม่มีทางเป็นไปได้ที่จะสร้างองค์ประชุมที่รับค่าที่แตกต่างออกไป ดังนั้นจึงปลอดภัยสำหรับ N ที่จะยอมรับ W

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
โหนด N ที่มีโควรัมสามชิ้น

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
BDF เป็นชุดการบล็อกสำหรับ N: ประกอบด้วยหนึ่งโหนดจากแต่ละส่วนของ N

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
BE ยังเป็นชุดการบล็อกสำหรับ N เนื่องจาก E ปรากฏในสองส่วนของ N

แต่ชุดบล็อคไม่ครบองค์ประชุม มันจะง่ายเกินไปที่จะหลอกโหนด N ให้ยอมรับค่าที่ต้องการ ถ้ามันเพียงพอที่จะแฮ็กเพียงโหนดเดียวในแต่ละส่วนของ N ดังนั้นการยอมรับค่าจึงไม่ใช่จุดสิ้นสุดของการลงคะแนน แต่ N จะต้องยืนยันค่า นั่นคือ ดูองค์ประชุมของโหนดที่ยอมรับค่านั้น ถ้ามันไปไกลขนาดนั้น ตามที่เอกสารปกขาวของ SCP พิสูจน์แล้ว (ในทฤษฎีบท 11) ส่วนที่เหลือของเครือข่ายก็จะยืนยันค่าเดียวกันในที่สุด ดังนั้น N จะยุติการโหวตแบบสหพันธรัฐด้วยค่าที่แน่นอนตามผลลัพธ์

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
การลงคะแนนเสียงแบบสหพันธรัฐ

กระบวนการลงคะแนน การยอมรับ และการยืนยันจะถือเป็นการลงคะแนนแบบสหพันธรัฐหนึ่งรอบเต็ม ระเบียบการฉันทามติของ Stellar ได้รวมหลายรอบเข้าด้วยกันเพื่อสร้างระบบฉันทามติที่สมบูรณ์

พิธีสารฉันทามติของดาวฤกษ์

คุณสมบัติที่สำคัญที่สุดสองประการของระบบฉันทามติคือ - ความปลอดภัย и ความมีชีวิตชีวา. อัลกอริธึมที่เป็นเอกฉันท์จะ "ปลอดภัย" หากไม่สามารถให้ผลลัพธ์ที่แตกต่างกันแก่ผู้เข้าร่วมที่แตกต่างกันได้ (สำเนาประวัติของ Bob จะไม่ขัดแย้งกับแครอล) “ความอยู่รอด” หมายความว่าอัลกอริทึมจะสร้างผลลัพธ์เสมอ กล่าวคือ มันจะไม่ติดขัด

อธิบายขั้นตอนการลงคะแนนเสียงของรัฐบาลกลาง ปลอดภัย ในแง่ที่ว่าถ้าโหนดยืนยันค่าของ V ก็ไม่มีโหนดอื่นที่จะยืนยันค่าอื่น แต่ “จะไม่ยืนยันความหมายอื่น” ไม่ได้หมายความว่าจะต้องยืนยันบางสิ่งบางอย่าง ผู้เข้าร่วมสามารถลงคะแนนให้กับค่าต่างๆ มากมาย โดยไม่มีอะไรจะถึงเกณฑ์การยอมรับ ซึ่งหมายความว่าไม่มีการลงคะแนนเสียงของรัฐบาลกลาง ความมีชีวิตชีวา.

โปรโตคอลฉันทามติของ Stellar ใช้การลงคะแนนแบบสหพันธรัฐในลักษณะที่รับประกันทั้งความปลอดภัยและความอยู่รอด (การรับประกันความปลอดภัยและความอยู่รอดของ SCP มีข้อจำกัดทางทฤษฎี การออกแบบเลือกการรับประกันความปลอดภัยที่แข็งแกร่งมาก โดยเสียสละการลดอัตราการรอดชีวิตเพียงเล็กน้อย แต่เมื่อให้เวลาเพียงพอ มีแนวโน้มสูงที่จะบรรลุข้อตกลงร่วมกัน) โดยสรุป แนวคิดคือการโหวตแบบสหพันธรัฐหลายรายการในหลายค่า จนกว่าค่าใดค่าหนึ่งจะผ่านขั้นตอนการลงคะแนน SCP ทั้งหมดที่อธิบายไว้ด้านล่าง

ค่าที่ SCP ต้องการฉันทามติอาจเป็นประวัติการทำธุรกรรมหรือสั่งอาหารกลางวันหรืออย่างอื่น แต่สิ่งสำคัญคือต้องทราบว่าค่าเหล่านี้ไม่ใช่ค่าที่ได้รับการยอมรับหรือยืนยัน แต่การลงคะแนนเสียงของรัฐบาลกลางจะเกิดขึ้นตาม ข้อความเกี่ยวกับค่านิยมเหล่านี้.

การลงคะแนนเสียงของรัฐบาลกลางรอบแรกเกิดขึ้น ขั้นตอนการเสนอชื่อ (ระยะการเสนอชื่อ) ในชุดข้อความเช่น "ฉันเสนอชื่อ V" อาจเป็นค่าต่างๆ มากมายของ V วัตถุประสงค์ของการเสนอชื่อคือการค้นหาข้อความหนึ่งหรือหลายข้อความที่ผ่านการยอมรับและยืนยัน

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

ส่วนต่อไปนี้จะอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับการเสนอชื่อและการลงคะแนนเสียง

การสรรหา

ในช่วงเริ่มต้นของขั้นตอนการเสนอชื่อ แต่ละโหนดสามารถเลือกค่าสำหรับ V และลงคะแนนให้กับข้อความ "ฉันเสนอชื่อ V" ได้เอง เป้าหมายในขั้นตอนนี้คือการยืนยันการเสนอชื่อมูลค่าบางส่วนผ่านการลงคะแนนเสียงแบบสหพันธรัฐ

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

ตามแนวคิดแล้ว การเสนอชื่อเป็นแบบคู่ขนาน ทั้ง V และ W เป็นคะแนนเสียงของรัฐบาลกลางที่แยกจากกัน โดยแต่ละรายการสามารถบรรลุการยอมรับหรือการยืนยันเป็นรายบุคคลได้ ในทางปฏิบัติ ข้อความโปรโตคอล SCP จะรวมคะแนนโหวตของแต่ละคนเข้าด้วยกัน

แม้ว่าการโหวตให้ V ได้รับการเสนอชื่อเป็นสัญญาที่จะไม่ลงคะแนนคัดค้านการเสนอชื่อของ V แต่ในระดับการสมัคร - ในกรณีนี้คือ SCP - ที่จะพิจารณาว่า "ต่อต้าน" หมายถึงอะไร SCP ไม่เห็นข้อความที่ขัดแย้งกับการโหวต "ฉันเสนอชื่อ X" กล่าวคือ ไม่มีข้อความ "ฉันไม่เห็นด้วยกับการเสนอชื่อ X" ดังนั้นโหนดจึงสามารถลงคะแนนเพื่อเสนอชื่อค่าใด ๆ ได้ การเสนอชื่อเหล่านี้จำนวนมากจะไม่ไปไหนเลย แต่ในที่สุดโหนดจะสามารถยอมรับหรือยืนยันค่าหนึ่งหรือหลายค่าได้ เมื่อผู้ได้รับการเสนอชื่อได้รับการยืนยันแล้ว เขาจะกลายเป็น ผู้สมัคร.

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
การเสนอชื่อ SCP โดยใช้การลงคะแนนแบบสหพันธรัฐ สามารถมีค่า "B" จำนวนมากที่ส่งต่อโดยเพื่อนและ "สะท้อน" โดยโหนด

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

เอกสารไวท์เปเปอร์ของ SCP พิสูจน์ (ทฤษฎีบท 12) ว่าเมื่อสิ้นสุดระยะการขยาย เครือข่ายก็จะมาบรรจบกันเป็นองค์ประกอบเดียวในที่สุด แต่มีปัญหาอยู่อย่างหนึ่ง: การลงคะแนนแบบสหพันธรัฐเป็นโปรโตคอลแบบอะซิงโครนัส (เช่น SCP) กล่าวอีกนัยหนึ่ง โหนดไม่ได้รับการประสานตามเวลา แต่เฉพาะกับข้อความที่โหนดส่งเท่านั้น จากมุมมองของโหนด ยังไม่ชัดเจนว่าเมื่อใด สิ้นสุดแล้ว เฟสส่วนขยาย และแม้ว่าในที่สุดโหนดทั้งหมดจะมาถึงที่จุดประกอบเดียวกัน แต่ก็อาจใช้เส้นทางที่แตกต่างกันไปตลอดทาง ทำให้เกิดตัวเลือกที่ประกอบขึ้นที่แตกต่างกันไปตลอดทาง และไม่สามารถบอกได้ว่าจุดใดเป็นจุดสุดท้าย

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

วิ่ง

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

มันเป็นสิ่งสำคัญที่จะแยกแยะ ความหมาย (เช่น มื้อเที่ยงควรเป็นเช่น พิซซ่า หรือ สลัด) จดหมายข่าว (คู่ค่าตัวนับ) และ งบ เกี่ยวกับบัตรลงคะแนน รอบ SCP รวมถึงการลงคะแนนเสียงของรัฐบาลกลางหลายรอบ โดยเฉพาะอย่างยิ่งในข้อความต่อไปนี้:

  • “ฉันพร้อมที่จะลงคะแนนเสียง B” และ
  • “ผมประกาศเจตนารมณ์ของบัตรลงคะแนน B”

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

แม้ว่าการลงคะแนนเสียงแบบสหพันธรัฐจำนวนมากจะดำเนินการตามแนวคิดในการเรียกร้องบัตรลงคะแนนต่างๆ จำนวนมาก แต่พวกเขาไม่ได้แลกเปลี่ยนข้อความมากนัก เนื่องจากแต่ละข้อความจะห่อบัตรลงคะแนนไว้จำนวนหนึ่ง ข้อความหนึ่งจึงส่งเสริมสถานะการลงคะแนนเสียงแบบสหพันธรัฐหลายรายการพร้อมกัน เช่น “ข้าพเจ้ายอมรับการลงคะแนนเสียงตั้งแต่ ก่อน "

คำว่า “เตรียมพร้อม” และ “มุ่งมั่น” หมายความว่าอย่างไร

โหนดจะลงคะแนนให้ลงคะแนนเมื่อมั่นใจว่าโหนดอื่นจะไม่ลงคะแนนเสียงด้วยค่าที่แตกต่างกัน การโน้มน้าวใจนี่คือจุดประสงค์ในการเตรียมใบสมัคร การลงคะแนนเสียงที่ระบุว่า "ฉันพร้อมที่จะลงคะแนนเสียง B" คือคำสัญญาว่าจะไม่ลงคะแนนเสียงที่น้อยกว่า B กล่าวคือ ด้วยจำนวนที่น้อยกว่า (SCP กำหนดให้ค่าในบัตรลงคะแนนต้องอยู่ในลำดับที่แน่นอน ดังนั้น จดหมายข่าว น้อย ถ้า N1

เหตุใด “ฉันพร้อมที่จะลงคะแนนเสียง B” จึงหมายความว่า “ฉันสัญญาว่าจะไม่ลงคะแนนเสียงที่เล็กกว่า B” เนื่องจาก SCP กำหนดให้ abort ตรงกันข้ามกับ commit การลงคะแนนเสียงเพื่อเตรียมบัตรลงคะแนนยังเกี่ยวข้องกับการลงคะแนนเสียงเพื่อตัดสิทธิ์บัตรลงคะแนนอื่นๆ และดังที่เราได้พูดคุยกันก่อนหน้านี้ การลงคะแนนเสียงเพื่อสิ่งหนึ่งคือสัญญาว่าจะไม่ลงคะแนนเสียงคัดค้าน

ก่อนที่จะออกอากาศการคอมมิต โหนดจะต้องค้นหากระดานข่าวที่สามารถยืนยันได้ว่าได้เตรียมไว้แล้ว กล่าวอีกนัยหนึ่ง จะดำเนินการลงคะแนนแบบสหพันธรัฐในหัวข้อ "ฉันพร้อมที่จะลงคะแนนเสียง B" ซึ่งอาจลงคะแนนเสียงในบัตรลงคะแนนต่างๆ มากมาย จนกว่าจะพบบัตรที่ยอมรับองค์ประชุม

บัตรลงคะแนนเพื่อเตรียมลงคะแนนมาจากไหน? ขั้นแรก โหนดจะออกอากาศการเตรียมการเพื่อลงคะแนนเสียงให้กับ <1,C> โดยที่ C คือผู้สมัครผสมที่ผลิตในขั้นตอนการเสนอชื่อ อย่างไรก็ตาม แม้ว่าการเตรียมการสำหรับการลงคะแนนเสียงจะเริ่มต้นขึ้นแล้วก็ตาม การเสนอชื่ออาจส่งผลให้มีผู้สมัครเพิ่มเติมที่ดูเหมือนจะกลายเป็นบัตรลงคะแนนใหม่ ในขณะเดียวกัน เพื่อนร่วมงานสามารถมีผู้สมัครที่แตกต่างกันได้ และสามารถสร้างชุดการบล็อกที่ยอมรับ "ฉันพร้อมที่จะลงคะแนนเสียง B2" ซึ่งจะโน้มน้าวให้โหนดยอมรับเช่นกัน สุดท้ายนี้ มีกลไกการหมดเวลาที่สร้างการลงคะแนนแบบสหพันธรัฐรอบใหม่บนบัตรลงคะแนนใหม่ที่มีจำนวนสูงกว่า หากบัตรลงคะแนนปัจจุบันค้างอยู่

ทันทีที่โหนดพบบัตรลงคะแนน B ที่สามารถยืนยันได้ว่าได้เตรียมไว้แล้ว จะเผยแพร่ข้อความใหม่ "ยืนยันบัตรลงคะแนน B" การลงคะแนนนี้บอกเพื่อนฝูงว่าโหนดจะไม่มีวันยอมแพ้ B จริงๆ แล้วถ้า B เป็นผู้ลงคะแนน แล้ว “ลงคะแนนเสียง” " หมายถึง การยินยอมอย่างไม่มีเงื่อนไขในการลงคะแนนเสียงเพื่อความพร้อมของบัตรลงคะแนนแต่ละใบ ถึง <∞, s> ค่าพิเศษนี้ช่วยให้เพียร์อื่นตามทันคอมมิตเพียร์ หากพวกเขายังอยู่ในขั้นตอนก่อนหน้าของโปรโตคอล

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

หากมีข้อความว่า "ข้าพเจ้าได้ประกาศกระทำการแล้ว » ไม่สามารถรับหรือยืนยันได้ นั่นคือ ความน่าจะเป็นที่ข้อความจะได้รับการยอมรับหรือยืนยัน หรือ - หรือในกรณีใด ๆ บัตรลงคะแนนใด ๆ ที่มีค่า C และไม่ใช่อื่น ๆ เนื่องจากโหนดได้สัญญาว่าจะไม่ยกเลิก . เมื่อถึงเวลาที่โหนดออกอากาศการโหวตสำหรับการคอมมิต มันจะเป็น C หรือไม่มีเลย ขึ้นอยู่กับว่าความเห็นพ้องต้องกันจะไปไกลแค่ไหน อย่างไรก็ตาม นี่ยังไม่เพียงพอสำหรับโหนดที่จะส่งออก C ภายนอก เพียร์ Byzantine บางตัว (ซึ่งประกอบด้วยน้อยกว่าองค์ประชุม ตามสมมติฐานด้านความปลอดภัยของเรา) อาจโกหกโหนดนั้น การยอมรับและยืนยันการลงคะแนนบางส่วน (หรือช่วงของการลงคะแนน) เป็นสิ่งที่ทำให้โหนดมีความมั่นใจในการทำให้ C เป็นภายนอกในที่สุด

ทำความเข้าใจกับโปรโตคอลฉันทามติของ Stellar
การลงคะแนน SCP ผ่านการลงคะแนนแบบสหพันธรัฐ ไม่แสดง: ตัวจับเวลาอาจดับลงเมื่อใดก็ได้ โดยจะเพิ่มการนับบัตรลงคะแนน (และอาจส่งผลให้มีผู้สมัครที่ได้รับการเสนอชื่อเข้าชิงเพิ่มเติมใหม่)

และนั่นคือทั้งหมด! เมื่อเครือข่ายบรรลุข้อตกลงแล้ว เครือข่ายก็พร้อมที่จะดำเนินการครั้งแล้วครั้งเล่า บนเครือข่ายการชำระเงินของ Stellar สิ่งนี้จะเกิดขึ้นประมาณทุกๆ 5 วินาที ซึ่งเป็นความสำเร็จที่ต้องการทั้งความปลอดภัยและความอยู่รอดที่รับประกันโดย SCP

SCP สามารถบรรลุสิ่งนี้ได้โดยการอาศัยการลงคะแนนแบบสหพันธรัฐหลายรอบ การลงคะแนนแบบสหพันธรัฐสามารถทำได้โดยแนวคิดของการแบ่งส่วนองค์ประชุม: ชุดของเพื่อนที่แต่ละโหนดได้ตัดสินใจที่จะเชื่อถือซึ่งเป็นส่วนหนึ่งขององค์ประชุม (ส่วนตัว) การกำหนดค่านี้หมายความว่าสามารถเข้าถึงฉันทามติได้แม้ในเครือข่ายที่มีการเป็นสมาชิกแบบเปิดและการหลอกลวงแบบไบเซนไทน์

อ่านเพิ่มเติม

  • สามารถดูเอกสารไวท์เปเปอร์ SCP ดั้งเดิมได้ ที่นี่และ ที่นี่ ร่างข้อกำหนดสำหรับการนำไปปฏิบัติ
  • David Mazier ผู้เขียนดั้งเดิมของโปรโตคอล SCP อธิบายด้วยวิธีที่เรียบง่าย (แต่ยังคงเป็นด้านเทคนิค) ที่นี่.
  • คุณอาจแปลกใจที่ไม่พบคำว่า "การขุด" หรือ "หลักฐานการทำงาน" ในบทความนี้ SCP ไม่ได้ใช้วิธีการเหล่านี้ แต่มีอัลกอริธึมที่เป็นเอกฉันท์อื่นๆ ใช้ Zane Witherspoon เขียนว่าเข้าถึงได้ ภาพรวมของอัลกอริธึมที่เป็นเอกฉันท์.
  • คำอธิบายทีละขั้นตอน เครือข่ายเรียบง่ายที่บรรลุฉันทามติในรอบหนึ่งของ SCP
  • สำหรับผู้อ่านที่สนใจในการใช้งาน SCP: ดู รหัสซี++ใช้โดยเครือข่ายการชำระเงิน Stellar หรือ ไปรหัสซึ่งฉันเขียนเพื่อความเข้าใจที่ดีขึ้นเกี่ยวกับ SCP

ที่มา: will.com

เพิ่มความคิดเห็น