The Byzantine Generals Problem is a classic game theory problem involving achieving consensus in the presence of unreliable communication or malicious parties. Here, we present a series of questions and a step-by-step workflow to achieve consensus between Alice, Bob, and Mallory without relying on a trusted third party:

Each person generates a unique code to represent themselves anonymously:

Alice generates code A.
Bob generates code B.
Mallory generates code M.
Each person hashes their code and sends the hash to the other two parties:

Alice sends H(A) to Bob and Mallory.
Bob sends H(B) to Alice and Mallory.
Mallory sends H(M) to Alice and Bob.
Each person proposes a meeting place and time and hashes that proposal:

Alice proposes P1 (place and time) and calculates H(P1).
Bob proposes P2 (place and time) and calculates H(P2).
Mallory proposes P3 (place and time) and calculates H(P3).
Each person sends their proposal hash to the other two parties encrypted with their unique code:

Alice sends {H(P1)}_A to Bob and Mallory.
Bob sends {H(P2)}_B to Alice and Mallory.
Mallory sends {H(P3)}_M to Alice and Bob.
Each person decrypts the received proposal hashes:

Alice decrypts {H(P2)}_B and {H(P3)}_M.
Bob decrypts {H(P1)}_A and {H(P3)}_M.
Mallory decrypts {H(P1)}_A and {H(P2)}_B.
Each person sends their own proposal and the two received proposal hashes to the other two parties encrypted with their unique code:

Alice sends P1, {H(P2)}_A, {H(P3)}_A to Bob and Mallory.
Bob sends P2, {H(P1)}_B, {H(P3)}_B to Alice and Mallory.
Mallory sends P3, {H(P1)}_M, {H(P2)}_M to Alice and Bob.
Each person decrypts the received proposals and verifies the hashes:

Alice decrypts P2, {H(P1)}_B, {H(P3)}_B and verifies H(P2) against the received hash.
Bob decrypts P1, {H(P2)}_A, {H(P3)}_A and verifies H(P1) against the received hash.
Mallory decrypts P1, {H(P2)}_M, {H(P3)}_M and verifies H(P1) against the received hash.
Each person evaluates the proposals and votes for one of them, creating a commitment to their vote:

Alice evaluates P1, P2, and P3, votes for P1, and creates a commitment C_A = H(V_A || H(A)).
Bob evaluates P1, P2, and P3, votes for P2, and creates a commitment C_B = H(V_B || H(B)).
Mallory evaluates P1, P2, and P3, votes for P1, and creates a commitment C_M = H(V_M || H(M)).
Each person sends their commitment to the other two parties:

Alice sends C_A to Bob and Mallory.
Bob sends C_B to Alice and Mallory.
Mallory sends C_M to Alice and Bob.
Each person reveals their vote and unique code to the other two parties:

Alice sends V_A and H(A) to Bob and Mallory.
Bob sends V_B and H(B) to Alice and Mallory.
Mallory sends V_M and H(M) to Alice and Bob.
Each person verifies the received votes and unique codes against the commitments:
Alice verifies C_B and C_M using V_B, H(B), V_M, and H(M).
Bob verifies C_A and C_M using V_A, H(A), V_M, and H(M).
Mallory verifies C_A and C_B using V_A, H(A), V_B, and H(B).
Each person tallies the votes and determines the majority vote:
Alice tallies the votes V_A, V_B, and V_M and determines the majority vote.
Bob tallies the votes V_A, V_B, and V_M and determines the majority vote.
Mallory tallies the votes V_A, V_B, and V_M and determines the majority vote.
If there is a majority vote for a proposal, all parties agree on that place and time for the meeting:
Alice, Bob, and Mallory agree on the majority-voted proposal for the meeting.
If there is a tie between the proposals, they can either repeat the process or use a predetermined tie-breaking mechanism to decide on the meeting place and time.
By following this step-by-step workflow, Alice, Bob, and Mallory can achieve consensus on a meeting place and time without divulging their identities or relying on a trusted third party.
ปัญหา Byzantine Generals เป็นปัญหาทฤษฎีเกมคลาสสิกที่เกี่ยวข้องกับการบรรลุฉันทามติเมื่อมีการสื่อสารที่ไม่น่าเชื่อถือหรือฝ่ายที่เป็นอันตราย ที่นี่ เรานำเสนอชุดคำถามและขั้นตอนการทำงานทีละขั้นตอนเพื่อให้บรรลุฉันทามติระหว่าง Alice, Bob และ Mallory โดยไม่ต้องพึ่งพาบุคคลที่สามที่เชื่อถือได้: แต่ละคนสร้างโค้ดที่ไม่ซ้ำกันเพื่อเป็นตัวแทนโดยไม่เปิดเผยตัวตน: Alice สร้างโค้ด A Bob สร้างโค้ด B ส่วน Mallory สร้างโค้ด M แต่ละคนแฮชโค้ดของตนและส่งแฮชไปยังอีกสองฝ่าย: Alice ส่ง H(A) ให้กับ Bob และ Mallory บ็อบส่ง H(B) ไปหาอลิซและมัลลอรี มัลลอรีส่ง H(M) ไปหาอลิซและบ็อบ แต่ละคนเสนอสถานที่และเวลาประชุมและแฮชข้อเสนอนั้น: อลิซเสนอ P1 (สถานที่และเวลา) และคำนวณ H(P1) บ๊อบเสนอ P2 (สถานที่และเวลา) และคำนวณ H(P2) มัลลอรีเสนอ P3 (สถานที่และเวลา) และคำนวณ H(P3) แต่ละคนส่งแฮชข้อเสนอของตนไปยังอีกสองฝ่ายโดยเข้ารหัสด้วยรหัสเฉพาะของพวกเขา: Alice ส่ง {H(P1)__A ไปยัง Bob และ Mallory Bob ส่ง {H(P2)__B ไปให้ Alice และ Mallory มัลลอรี่ส่ง {H(P3)_M ไปให้อลิซและบ็อบ แต่ละคนถอดรหัสแฮชข้อเสนอที่ได้รับ: Alice ถอดรหัส {H (P2) _ B และ {H (P3) _ M Bob ถอดรหัส {H (P1) _ A และ {H (P3) _ M มัลลอรีถอดรหัส {H(P1)_A และ {H(P2)_B แต่ละคนส่งข้อเสนอของตนเอง และทั้งสองได้รับแฮชข้อเสนอไปยังอีกสองฝ่ายโดยเข้ารหัสด้วยรหัสเฉพาะของพวกเขา: Alice ส่ง P1, {H(P2)_A, {H(P3)_A ไปยัง Bob และ Mallory Bob ส่ง P2, {H(P1)__B, {H(P3)_B ไปให้ Alice และ Mallory มัลลอรีส่ง P3, {H(P1)__M, {H(P2)__M ไปให้อลิซและบ็อบ แต่ละคนถอดรหัสข้อเสนอที่ได้รับและตรวจสอบแฮช: Alice ถอดรหัส P2, {H(P1)_B, {H(P3)_B และตรวจสอบ H(P2) กับแฮชที่ได้รับ Bob ถอดรหัส P1, {H (P2) _ A, {H (P3) _ A และตรวจสอบ H (P1) กับแฮชที่ได้รับ Mallory ถอดรหัส P1, {H (P2) _ M, {H (P3) _ M และตรวจสอบ H (P1) กับแฮชที่ได้รับ แต่ละคนประเมินข้อเสนอและโหวตให้กับหนึ่งในนั้น โดยสร้างความมุ่งมั่นในการลงคะแนนเสียงของพวกเขา: Alice ประเมิน P1, P2 และ P3, โหวตให้กับ P1 และสร้างความมุ่งมั่น C_A = H(V_A || H(A)) Bob ประเมิน P1, P2 และ P3 โหวตให้ P2 และสร้างข้อผูกพัน C_B = H(V_B || H(B)) Mallory ประเมิน P1, P2 และ P3 โหวตให้ P1 และสร้างข้อผูกพัน C_M = H(V_M || H(M)) แต่ละคนส่งคำมั่นสัญญาของตนไปยังอีกสองฝ่าย: Alice ส่ง C_A ไปให้ Bob และ Mallory Bob ส่ง C_B ไปให้ Alice และ Mallory มัลลอรี่ส่ง C_M ไปให้อลิซและบ็อบ แต่ละคนเปิดเผยคะแนนโหวตและรหัสเฉพาะของตนแก่อีกสองฝ่าย: อลิซส่ง V_A และ H(A) ให้กับ Bob และ Mallory Bob ส่ง V_B และ H(B) ไปให้ Alice และ Mallory มัลลอรีส่ง V_M และ H(M) ไปให้อลิซและบ็อบ แต่ละคนตรวจสอบการโหวตที่ได้รับและรหัสเฉพาะกับข้อผูกพัน: Alice ตรวจสอบ C_B และ C_M โดยใช้ V_B, H(B), V_M และ H(M) Bob ตรวจสอบ C_A และ C_M โดยใช้ V_A, H(A), V_M และ H(M) มัลลอรีตรวจสอบ C_A และ C_B โดยใช้ V_A, H(A), V_B และ H(B) แต่ละคนนับคะแนนเสียงและตัดสินคะแนนเสียงข้างมาก: อลิซนับคะแนน V_A, V_B และ V_M และตัดสินคะแนนเสียงข้างมาก Bob นับคะแนนเสียง V_A, V_B และ V_M และกำหนดคะแนนเสียงข้างมาก มัลลอรีนับคะแนนเสียง V_A, V_B และ V_M และกำหนดคะแนนเสียงข้างมาก หากมีการลงคะแนนเสียงข้างมากสำหรับข้อเสนอ ทุกฝ่ายจะตกลงกันในสถานที่และเวลานั้นสำหรับการประชุม: Alice, Bob และ Mallory เห็นด้วยกับข้อเสนอที่ได้รับคะแนนเสียงข้างมากสำหรับการประชุม หากมีการเสมอกันระหว่างข้อเสนอ พวกเขาสามารถทำซ้ำขั้นตอนหรือใช้กลไกแบ่งการผูกที่กำหนดไว้ล่วงหน้าเพื่อตัดสินใจเกี่ยวกับสถานที่และเวลาประชุม เมื่อปฏิบัติตามขั้นตอนการทำงานแบบทีละขั้นตอนนี้ Alice, Bob และ Mallory จะสามารถบรรลุข้อตกลงร่วมกันเกี่ยวกับสถานที่และเวลานัดพบได้โดยไม่ต้องเปิดเผยตัวตนหรือพึ่งพาบุคคลที่สามที่เชื่อถือได้
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence