ระเบียบวิธีฉันทามติของ Stellar ได้รับการอธิบายครั้งแรกใน
ระเบียบปฏิบัติที่เป็นเอกฉันท์ถือว่ายากต่อการเข้าใจ SCP นั้นเรียบง่ายกว่าส่วนใหญ่ แต่ยังคงมีชื่อเสียงเหมือนกัน ส่วนหนึ่งเนื่องมาจากแนวคิดที่เข้าใจผิดว่า "การลงคะแนนเสียงแบบสหพันธรัฐ" ซึ่งเป็นหัวข้อของครึ่งแรกของบทความทางวิทยาศาสตร์คือ SCP แต่นั่นไม่เป็นความจริง! นี่เป็นเพียงองค์ประกอบสำคัญที่ครึ่งหลังของบทความใช้ในการสร้าง แท้จริง โปรโตคอลฉันทามติของดาวฤกษ์
ในบทความนี้ เราจะอธิบายสั้น ๆ ว่า "ระบบข้อตกลง" คืออะไร สิ่งที่ทำให้เป็นระบบ "ไบแซนไทน์" ได้ และเหตุใดจึงทำให้ระบบไบแซนไทน์เป็น "สหพันธรัฐ" จากนั้นเราจะอธิบายขั้นตอนการลงคะแนนเสียงแบบสหพันธรัฐที่อธิบายไว้ในบทความ SCP และสุดท้ายเราจะอธิบายโปรโตคอลของ SCP เอง
ระบบข้อตกลง
ระบบข้อตกลงช่วยให้กลุ่มผู้เข้าร่วมสามารถบรรลุฉันทามติในหัวข้อต่างๆ เช่น จะสั่งอะไรเป็นอาหารกลางวัน
ที่ Interstellar เราได้นำระบบข้อตกลงการรับประทานอาหารของเราเองมาใช้: เราสั่งสิ่งที่ผู้จัดการฝ่ายปฏิบัติการของเรา John กล่าว นี่เป็นระบบข้อตกลงที่ง่ายและมีประสิทธิภาพ เราทุกคนไว้วางใจจอห์นและเชื่อว่าเขาจะพบสิ่งที่น่าสนใจและมีคุณค่าทางโภชนาการทุกวัน
แต่จะเกิดอะไรขึ้นถ้าจอห์นใช้ความไว้วางใจของเราในทางที่ผิด? พระองค์สามารถตัดสินใจได้เพียงลำพังว่าเราทุกคนควรเป็นวีแก้น ภายในหนึ่งหรือสองสัปดาห์ เราอาจจะโค่นล้มเขา และมอบอำนาจให้กับเอลิซาเบธ แต่จู่ๆ เธอก็ชอบอะโวคาโดกับแอนโชวี่ และคิดว่าทุกคนควรจะเป็นแบบนั้น อำนาจเสียหาย. ดังนั้นจึงเป็นการดีกว่าที่จะหาวิธีที่เป็นประชาธิปไตยมากกว่านี้: วิธีบางอย่างเพื่อให้แน่ใจว่าได้คำนึงถึงความชอบที่แตกต่างกัน ในขณะเดียวกันก็ให้ผลลัพธ์ที่ทันท่วงทีและไม่คลุมเครือ เพื่อที่จะไม่มีใครสั่งอาหารกลางวัน หรือคนห้าคนสั่งอาหารที่แตกต่างกัน หรือการอภิปราย ลากยาวไปในตอนเย็น
ดูเหมือนว่าวิธีแก้ปัญหานั้นง่ายมาก: โหวตไว้! แต่นี่เป็นความประทับใจที่ทำให้เข้าใจผิด ใครจะเก็บบัตรลงคะแนนและรายงานผล? แล้วทำไมคนอื่นถึงเชื่อสิ่งที่เขาพูดล่ะ? บางทีเราทำได้ แรก โหวตให้ผู้นำที่เราไว้วางใจให้เป็นผู้นำการลงคะแนน - แต่ใครจะเป็นผู้เป็นผู้นำ ครั้งแรก โดยการลงคะแนน? จะเกิดอะไรขึ้นถ้าเราไม่สามารถเห็นด้วยกับผู้นำได้? หรือจะเป็นอย่างไรถ้าเราบรรลุข้อตกลง แต่ผู้นำคนนี้ติดอยู่ในการประชุมหรือลาป่วย?
ปัญหาที่คล้ายกันเกิดขึ้นในเครือข่ายคอมพิวเตอร์แบบกระจาย ผู้เข้าร่วมหรือโหนดทั้งหมดต้องเห็นด้วยกับการตัดสินใจบางอย่าง เช่น ใครจะต้องอัปเดตไฟล์ที่แชร์หรือลบงานออกจากคิวการประมวลผล ในเครือข่ายสกุลเงินดิจิทัล โหนดต้องเลือกว่าเรื่องราวทั้งหมดจะเป็นอย่างไรจากหลายเวอร์ชันที่เป็นไปได้ ซึ่งบางครั้งก็ขัดแย้งกัน ข้อตกลงเครือข่ายนี้ให้การรับประกันแก่ผู้รับว่าเหรียญนั้น (ก) ใช้ได้ (ไม่ใช่ของปลอม) และ (ข) ยังไม่ได้นำไปใช้ที่อื่น นอกจากนี้ยังช่วยให้แน่ใจว่าเขาจะสามารถใช้เหรียญได้ในอนาคต เนื่องจากผู้รับใหม่จะมีหลักประกันเดียวกันด้วยเหตุผลเดียวกัน
ระบบฉันทามติใดๆ ในเครือข่ายคอมพิวเตอร์แบบกระจายจะต้องทนทานต่อข้อผิดพลาด: ระบบจะต้องให้ผลลัพธ์ที่สม่ำเสมอแม้จะมีข้อผิดพลาด เช่น ลิงก์ช้า โหนดไม่ตอบสนอง และการเรียงลำดับข้อความที่ไม่ถูกต้อง ไบแซนไทน์ ระบบข้อตกลงยังทนทานต่อข้อผิดพลาด "ไบเซนไทน์" เพิ่มเติม: โหนดที่ให้ข้อมูลเท็จ ไม่ว่าจะเกิดจากข้อผิดพลาดหรือในความพยายามโดยเจตนาที่จะบ่อนทำลายระบบหรือได้รับผลประโยชน์บางอย่าง การยอมรับความผิดพลาดแบบ "ไบแซนไทน์" - ความสามารถในการเชื่อถือการตัดสินใจของกลุ่มแม้ว่าสมาชิกกลุ่มบางคนอาจโกหกหรือไม่ปฏิบัติตามกฎการตัดสินใจ - เรียกว่า
ลองนึกถึงอลิซ เจ้าของเหรียญ crypto ที่ต้องเลือกระหว่างการซื้อไอศกรีมแสนอร่อยจาก Bob และชำระหนี้ของ Carol บางทีอลิซอาจต้องการจ่ายเงินทั้งสองคนพร้อมกันโดยใช้เหรียญเดียวกันอย่างฉ้อฉล เมื่อต้องการทำเช่นนี้ เธอต้องโน้มน้าวคอมพิวเตอร์ของ Bob ว่าไม่เคยจ่ายเหรียญให้กับแครอล และโน้มน้าวคอมพิวเตอร์ของแครอลว่าไม่เคยจ่ายเหรียญให้กับ Bob ระบบข้อตกลงไบแซนไทน์ทำให้สิ่งนี้แทบจะเป็นไปไม่ได้เลย โดยใช้รูปแบบของกฎเสียงข้างมากที่เรียกว่า องค์ประชุม. โหนดในเครือข่ายดังกล่าวปฏิเสธที่จะย้ายไปยังเวอร์ชันหนึ่งของประวัติจนกว่าจะเห็นว่ามีเพื่อนในจำนวนที่เพียงพอ - องค์ประชุม - เห็นด้วยกับการเปลี่ยนแปลงดังกล่าว เมื่อสิ่งนี้เกิดขึ้น พวกเขาจะสร้างกลุ่มการลงคะแนนเสียงที่มีขนาดใหญ่พอที่จะบังคับให้โหนดเครือข่ายที่เหลือเห็นด้วยกับการตัดสินใจของพวกเขา Alice สามารถบังคับให้บางโหนดทำงานแทนเธอได้ แต่ถ้าเครือข่ายมีขนาดใหญ่เพียงพอ ความพยายามของเธอจะถูกครอบงำด้วยคะแนนเสียงของโหนดที่ซื่อสัตย์
ต้องมีกี่โหนดจึงจะครบองค์ประชุม อย่างน้อยที่สุด หรือมากกว่านั้นคือเสียงส่วนใหญ่ที่มีคุณสมบัติเหมาะสมเพื่อต่อสู้กับข้อผิดพลาดและการฉ้อโกง แต่หากต้องการนับคนส่วนใหญ่ คุณต้องทราบจำนวนผู้เข้าร่วมทั้งหมด ที่สำนักงาน Interstellar หรือที่การเลือกตั้งระดับเขต ตัวเลขเหล่านี้ง่ายต่อการค้นหา แต่หากกลุ่มของคุณเป็นเครือข่ายที่กำหนดอย่างหลวมๆ ซึ่งโหนดสามารถเข้าและออกได้ตามต้องการโดยไม่ต้องได้รับการอนุมัติจากศูนย์กลาง คุณจะต้อง รัฐบาลกลาง ระบบข้อตกลงไบแซนไทน์ที่มีความสามารถในการกำหนดองค์ประชุมไม่ได้มาจากรายการโหนดที่กำหนดไว้ล่วงหน้า แต่เป็นแบบไดนามิกจากภาพรวมของโหนดที่เปลี่ยนแปลงตลอดเวลาและไม่สมบูรณ์อย่างหลีกเลี่ยงไม่ได้ ณ เวลาที่กำหนด
อาจดูเหมือนเป็นไปไม่ได้ที่จะสร้างองค์ประชุมจากมุมมองของโหนดเดียวในเครือข่ายขนาดใหญ่ แต่ก็เป็นไปได้ องค์ประชุมดังกล่าวสามารถรับประกันผลการลงคะแนนแบบกระจายอำนาจได้ เอกสารไวท์เปเปอร์ของ SCP จะแสดงวิธีการทำเช่นนี้โดยใช้ขั้นตอนที่เรียกว่า โดยการลงคะแนนเสียงของรัฐบาลกลาง.
สำหรับคนที่ใจร้อน
ส่วนที่เหลือของบทความจะอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับการลงคะแนนแบบสหพันธรัฐและโปรโตคอลฉันทามติของ Stellar หากคุณไม่สนใจรายละเอียด ต่อไปนี้เป็นภาพรวมทั่วไปของกระบวนการ
- โหนดดำเนินการลงคะแนนเสียงของรัฐบาลกลางเกี่ยวกับ "ผู้ได้รับการเสนอชื่อ" รอบการลงคะแนนเสียงของรัฐบาลกลางหมายถึง:
- โหนดลงคะแนนเสียงสำหรับข้อความบางข้อความ เช่น “ฉันเสนอค่าของ V”;
- โหนดจะฟังเสียงของเพื่อนจนกว่าจะพบเสียงที่สามารถ "รับ" ได้
- โหนดค้นหา "องค์ประชุม" สำหรับการยืนยันนี้ องค์ประชุม “ยืนยัน” ผู้ได้รับการเสนอชื่อ
- เมื่อโหนดสามารถยืนยันผู้ได้รับการเสนอชื่อตั้งแต่หนึ่งคนขึ้นไป โหนดจะพยายาม "เตรียม" "บัตรลงคะแนน" ผ่านการลงคะแนนแบบสหพันธรัฐหลายรอบ
- เมื่อโหนดสามารถตรวจสอบได้ว่าบัตรลงคะแนนพร้อมแล้ว โหนดจะพยายามส่งผ่านการลงคะแนนแบบสหพันธรัฐเพิ่มเติมอีก
- เมื่อโหนดสามารถยืนยันการกระทำของการลงคะแนนเสียงได้ ก็สามารถ "ทำให้ภายนอก" มูลค่าของบัตรลงคะแนนนั้นได้โดยใช้เป็นผลลัพธ์ที่เป็นเอกฉันท์
ขั้นตอนเหล่านี้เกี่ยวข้องกับการลงคะแนนแบบสหพันธรัฐหลายรอบ ซึ่งรวมกันเป็น SCP รอบเดียว มาดูสิ่งที่เกิดขึ้นในแต่ละขั้นตอนกันดีกว่า
การลงคะแนนเสียงแบบสหพันธรัฐ
การลงคะแนนเสียงแบบสหพันธรัฐเป็นขั้นตอนในการพิจารณาว่าเครือข่ายสามารถเห็นด้วยกับข้อเสนอได้หรือไม่ ในรอบการลงคะแนน แต่ละโหนดจะต้องเลือกค่าใดค่าหนึ่งจากหลายค่าที่เป็นไปได้ ไม่สามารถทำเช่นนี้ได้เว้นแต่จะมั่นใจว่าโหนดอื่นในเครือข่ายจะไม่เลือกผลลัพธ์ที่แตกต่างออกไป เพื่อให้แน่ใจในสิ่งนี้ โหนดจะแลกเปลี่ยนข้อความไปมาเพื่อให้ทุกคน ได้รับการยืนยันที่ องค์ประชุม นอต ยอมรับ เดียวกัน การตัดสินใจ. ส่วนที่เหลือของส่วนนี้จะอธิบายคำศัพท์ในประโยคนี้และกระบวนการทั้งหมดเกิดขึ้นได้อย่างไร
โควรัมและโควรัมชิ้น
เรามาเริ่มต้นด้วยการกำหนดองค์ประชุม ดังที่เราได้กล่าวไว้ข้างต้น ในเครือข่ายแบบกระจายอำนาจที่มีการเป็นสมาชิกแบบไดนามิก เป็นไปไม่ได้ที่จะทราบจำนวนโหนดล่วงหน้า และดังนั้นจึงจำเป็นต้องมีจำนวนโหนดสำหรับคนส่วนใหญ่ การลงคะแนนเสียงแบบสหพันธรัฐช่วยแก้ปัญหานี้ด้วยการแนะนำแนวคิดใหม่ ตัดองค์ประชุม (ส่วนองค์ประชุม): ชุดเพียร์ขนาดเล็กที่โหนดไว้วางใจในการสื่อสารข้อมูลสถานะการลงคะแนนไปยังส่วนที่เหลือของเครือข่าย แต่ละโหนดจะกำหนดส่วนควอรัมของตัวเอง (ซึ่งจะกลายเป็นสมาชิกโดยพฤตินัย)
การสร้างองค์ประชุมเริ่มต้นด้วยการตัดองค์ประชุม สำหรับแต่ละโหนด โหนดที่ตัดจะถูกเพิ่ม จากนั้นจึงเพิ่มเงื่อนไขการแบ่งส่วน โหนดเหล่านี้ และอื่น ๆ เมื่อคุณดำเนินการต่อ มีโหนดจำนวนมากขึ้นเรื่อยๆ ที่คุณไม่สามารถเพิ่มได้ เนื่องจากโหนดเหล่านั้นถูกรวมไว้ในสไลซ์แล้ว เมื่อไม่มีโหนดใหม่ที่จะเพิ่ม กระบวนการจะหยุดลง: เราได้สร้างองค์ประชุมโดย "การปิดสกรรมกริยา" ของส่วนองค์ประชุมของโหนดเริ่มต้น
หากต้องการค้นหาองค์ประชุมจากโหนดที่กำหนด...
... เพิ่มสมาชิกของสไลซ์ของมัน...
...จากนั้นเราจะเพิ่มสมาชิกชิ้นของโหนดเหล่านี้
เราดำเนินการต่อไปจนกว่าจะไม่มีโหนดเหลือให้เพิ่ม
ไม่มีโหนดเหลือให้เพิ่ม นี่คือองค์ประชุม
ที่จริงแล้ว แต่ละโหนดสามารถปรากฏในชิ้นส่วนได้มากกว่าหนึ่งชิ้น หากต้องการสร้างองค์ประชุม ให้เลือกเพียงส่วนเดียวและเพิ่มสมาชิก จากนั้นเลือกส่วนใดก็ได้สำหรับสมาชิกแต่ละคนและเพิ่มสมาชิก มัน ตัดและอื่น ๆ ซึ่งหมายความว่าแต่ละโหนดเป็นสมาชิกขององค์ประชุมที่เป็นไปได้มากมาย
เลือกเพียงหนึ่งส่วนโควรัมในแต่ละขั้นตอน
โควรัมหนึ่งที่เป็นไปได้ หรือทางเลือกอื่น...
...เลือกชิ้นอื่น...
…(เมื่อเป็นไปได้)…
... สร้างองค์ประชุมอีกองค์หนึ่ง
โหนดรู้ได้อย่างไรว่าโหนดอื่น ๆ อยู่ในส่วนใด เช่นเดียวกับข้อมูลอื่นๆ เกี่ยวกับโหนดอื่นๆ: จากการส่งสัญญาณที่แต่ละโหนดออกอากาศไปยังเครือข่ายเมื่อสถานะการโหวตเปลี่ยนแปลง การออกอากาศแต่ละครั้งจะมีข้อมูลเกี่ยวกับส่วนของโหนดที่ส่ง เอกสารไวท์เปเปอร์ของ SCP ไม่ได้ระบุกลไกการสื่อสาร การใช้งานโดยทั่วไปจะใช้
โปรดจำไว้ว่าในระบบข้อตกลงไบแซนไทน์ที่ไม่ใช่ของรัฐบาลกลาง องค์ประชุมถูกกำหนดให้เป็นเสียงส่วนใหญ่ของโหนดทั้งหมด ระบบข้อตกลงไบแซนไทน์ได้รับการออกแบบจากมุมมองของคำถาม: ระบบสามารถทนต่อโหนดที่ไม่ซื่อสัตย์ได้กี่โหนด? ในระบบของโหนด N ที่ออกแบบมาเพื่อให้สามารถอยู่รอดจากความล้มเหลวได้ โหนดควรจะสามารถก้าวหน้าได้โดยได้รับการตอบรับจากเพื่อน N−f เนื่องจาก f ในโหนดเหล่านั้นอาจหยุดทำงาน แต่เมื่อได้รับการตอบกลับจากเพื่อน N−f เราสามารถสรุปได้ว่าเพื่อน f ทั้งหมด (ซึ่งโหนดไม่ได้รับการตอบกลับ) เป็นคนซื่อสัตย์จริงๆ ดังนั้น f จาก N−f เพียร์ (ซึ่งได้รับการตอบสนอง) จึงเป็นอันตราย เพื่อให้โหนดได้รับความเห็นพ้องต้องกัน โหนดที่เหลือส่วนใหญ่จะต้องซื่อสัตย์ กล่าวคือ เราต้องการให้ N−f มากกว่า 2f หรือ N > 3f โดยทั่วไปแล้ว ระบบที่ออกแบบมาเพื่อให้อยู่รอดจากความล้มเหลวจะมีโหนดทั้งหมด N=3f+1 และขนาดองค์ประชุมเท่ากับ 2f+1 เมื่อข้อเสนอผ่านเกณฑ์องค์ประชุม ส่วนที่เหลือของเครือข่ายจะมั่นใจว่าข้อเสนอที่แข่งขันกันจะล้มเหลว นี่คือวิธีที่เครือข่ายมาบรรจบกันเพื่อให้ได้ผลลัพธ์
แต่ในระบบข้อตกลงไบแซนไทน์ของรัฐบาลกลาง ไม่เพียงแต่จะไม่มีเสียงข้างมากเท่านั้น (เพราะไม่มีใครรู้ขนาดรวมของเครือข่าย) แต่แนวคิดเรื่องเสียงข้างมากนั้นไร้ประโยชน์โดยสิ้นเชิง! หากการเป็นสมาชิกในระบบเปิดอยู่ บางคนก็สามารถได้รับเสียงข้างมากได้ง่ายๆ โดยทำสิ่งที่เรียกว่าการโจมตีซีบิล นั่นคือการเข้าร่วมเครือข่ายซ้ำๆ ผ่านหลายโหนด เหตุใดจึงเรียกว่าการปิดสไลซ์สกรรมกริยาได้ องค์ประชุมและจะสามารถระงับข้อเสนอที่แข่งขันกันได้อย่างไร?
ในทางเทคนิคแล้ว ไม่มีทาง! ลองนึกภาพเครือข่ายที่มีหกโหนด โดยที่แฝดสามสองตัวถูกแยกออกจากกันในโควรัมสไลซ์ของกันและกัน กลุ่มย่อยแรกอาจตัดสินใจโดยที่กลุ่มที่สองจะไม่เคยได้ยินเรื่องนี้ และในทางกลับกัน เครือข่ายนี้ไม่มีทางที่จะบรรลุฉันทามติได้ (ยกเว้นโดยบังเอิญ)
ดังนั้น SCP จึงกำหนดให้สำหรับการลงคะแนนแบบสหพันธรัฐ (และสำหรับทฤษฎีบทสำคัญของรายงานที่จะนำไปใช้) เครือข่ายจะต้องมีคุณสมบัติที่เรียกว่า จุดตัดของโควรัม. ในเครือข่ายที่มีคุณสมบัตินี้ สององค์ประชุมใดๆ ที่สามารถสร้างจะทับซ้อนกันในโหนดอย่างน้อยหนึ่งโหนดเสมอ ในการพิจารณาความรู้สึกที่มีอยู่ของเครือข่าย การดำเนินการนี้ดีพอๆ กับการมีเสียงข้างมาก ตามสัญชาตญาณแล้ว หมายความว่าหากโควรัมใดเห็นด้วยกับคำสั่ง X ก็ไม่มีโควรัมอื่นใดที่สามารถเห็นด้วยกับสิ่งอื่นใดได้ เนื่องจากจำเป็นต้องรวมโหนดบางส่วนจากโควรัมแรกที่ลงคะแนนให้ X แล้ว
หากมีจุดตัดกันขององค์ประชุมในเครือข่าย...
...จากนั้นคุณสามารถสร้างโควรัมสองชุดใดก็ได้...
...จะตัดกันเสมอ
(แน่นอนว่า โหนดที่ทับซ้อนกันอาจกลายเป็นไบเซนไทน์โกหกหรือแย่ ในกรณีนี้ จุดตัดโควรัมไม่ได้ช่วยให้เครือข่ายตกลงเลย ด้วยเหตุนี้ ผลลัพธ์จำนวนมากในสมุดปกขาวของ 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
โหนด N ที่มีโควรัมสามชิ้น
BDF เป็นชุดการบล็อกสำหรับ N: ประกอบด้วยหนึ่งโหนดจากแต่ละส่วนของ N
BE ยังเป็นชุดการบล็อกสำหรับ N เนื่องจาก E ปรากฏในสองส่วนของ N
แต่ชุดบล็อคไม่ครบองค์ประชุม มันจะง่ายเกินไปที่จะหลอกโหนด N ให้ยอมรับค่าที่ต้องการ ถ้ามันเพียงพอที่จะแฮ็กเพียงโหนดเดียวในแต่ละส่วนของ N ดังนั้นการยอมรับค่าจึงไม่ใช่จุดสิ้นสุดของการลงคะแนน แต่ N จะต้องยืนยันค่า นั่นคือ ดูองค์ประชุมของโหนดที่ยอมรับค่านั้น ถ้ามันไปไกลขนาดนั้น ตามที่เอกสารปกขาวของ SCP พิสูจน์แล้ว (ในทฤษฎีบท 11) ส่วนที่เหลือของเครือข่ายก็จะยืนยันค่าเดียวกันในที่สุด ดังนั้น N จะยุติการโหวตแบบสหพันธรัฐด้วยค่าที่แน่นอนตามผลลัพธ์
การลงคะแนนเสียงแบบสหพันธรัฐ
กระบวนการลงคะแนน การยอมรับ และการยืนยันจะถือเป็นการลงคะแนนแบบสหพันธรัฐหนึ่งรอบเต็ม ระเบียบการฉันทามติของ 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" ดังนั้นโหนดจึงสามารถลงคะแนนเพื่อเสนอชื่อค่าใด ๆ ได้ การเสนอชื่อเหล่านี้จำนวนมากจะไม่ไปไหนเลย แต่ในที่สุดโหนดจะสามารถยอมรับหรือยืนยันค่าหนึ่งหรือหลายค่าได้ เมื่อผู้ได้รับการเสนอชื่อได้รับการยืนยันแล้ว เขาจะกลายเป็น ผู้สมัคร.
การเสนอชื่อ 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 เป็นภายนอกในที่สุด
การลงคะแนน SCP ผ่านการลงคะแนนแบบสหพันธรัฐ ไม่แสดง: ตัวจับเวลาอาจดับลงเมื่อใดก็ได้ โดยจะเพิ่มการนับบัตรลงคะแนน (และอาจส่งผลให้มีผู้สมัครที่ได้รับการเสนอชื่อเข้าชิงเพิ่มเติมใหม่)
และนั่นคือทั้งหมด! เมื่อเครือข่ายบรรลุข้อตกลงแล้ว เครือข่ายก็พร้อมที่จะดำเนินการครั้งแล้วครั้งเล่า บนเครือข่ายการชำระเงินของ Stellar สิ่งนี้จะเกิดขึ้นประมาณทุกๆ 5 วินาที ซึ่งเป็นความสำเร็จที่ต้องการทั้งความปลอดภัยและความอยู่รอดที่รับประกันโดย SCP
SCP สามารถบรรลุสิ่งนี้ได้โดยการอาศัยการลงคะแนนแบบสหพันธรัฐหลายรอบ การลงคะแนนแบบสหพันธรัฐสามารถทำได้โดยแนวคิดของการแบ่งส่วนองค์ประชุม: ชุดของเพื่อนที่แต่ละโหนดได้ตัดสินใจที่จะเชื่อถือซึ่งเป็นส่วนหนึ่งขององค์ประชุม (ส่วนตัว) การกำหนดค่านี้หมายความว่าสามารถเข้าถึงฉันทามติได้แม้ในเครือข่ายที่มีการเป็นสมาชิกแบบเปิดและการหลอกลวงแบบไบเซนไทน์
อ่านเพิ่มเติม
- สามารถดูเอกสารไวท์เปเปอร์ SCP ดั้งเดิมได้
ที่นี่ และที่นี่ ร่างข้อกำหนดสำหรับการนำไปปฏิบัติ - David Mazier ผู้เขียนดั้งเดิมของโปรโตคอล SCP อธิบายด้วยวิธีที่เรียบง่าย (แต่ยังคงเป็นด้านเทคนิค)
ที่นี่ . - คุณอาจแปลกใจที่ไม่พบคำว่า "การขุด" หรือ "หลักฐานการทำงาน" ในบทความนี้ SCP ไม่ได้ใช้วิธีการเหล่านี้ แต่มีอัลกอริธึมที่เป็นเอกฉันท์อื่นๆ ใช้ Zane Witherspoon เขียนว่าเข้าถึงได้
ภาพรวมของอัลกอริธึมที่เป็นเอกฉันท์ . คำอธิบายทีละขั้นตอน เครือข่ายเรียบง่ายที่บรรลุฉันทามติในรอบหนึ่งของ SCP- สำหรับผู้อ่านที่สนใจในการใช้งาน SCP: ดู
รหัสซี++ ใช้โดยเครือข่ายการชำระเงิน Stellar หรือไปรหัส ซึ่งฉันเขียนเพื่อความเข้าใจที่ดีขึ้นเกี่ยวกับ SCP
ที่มา: will.com