Algorand: การปรับขนาดข้อตกลง Byzantine สำหรับ Cryptocurrencies
บทคัดย่อ
บัญชีแยกประเภทสาธารณะเป็นลำดับข้อมูลที่ป้องกันการปลอมแปลงที่ทุกคนสามารถอ่านและเพิ่มได้ บัญชีแยกประเภทสาธารณะมีประโยชน์มากมายและน่าสนใจ พวกเขาสามารถรักษาความปลอดภัยได้ทุกชนิด ของธุรกรรม เช่น ชื่อ การขาย และการชำระเงิน ในลำดับที่แน่นอนที่เกิดขึ้น บัญชีแยกประเภทสาธารณะไม่เพียงแต่ควบคุมการทุจริตเท่านั้น แต่ยังเปิดใช้งานแอปพลิเคชันที่ซับซ้อนมาก เช่น สกุลเงินดิจิตอลและ smart contracts พวกเขายืนหยัดที่จะปฏิวัติวิถีสังคมประชาธิปไตย ดำเนินการ อย่างไรก็ตาม ตามที่ดำเนินการอยู่ในปัจจุบัน สิ่งเหล่านี้มีขนาดได้ไม่ดีและไม่สามารถบรรลุศักยภาพได้ Algorand เป็นวิธีการที่เป็นประชาธิปไตยและมีประสิทธิภาพอย่างแท้จริงในการดำเนินการบัญชีแยกประเภทสาธารณะ ไม่เหมือนเมื่อก่อน การใช้งานโดยอิงตามหลักฐานการทำงานนั้น ต้องใช้การคำนวณจำนวนเล็กน้อย และ สร้างประวัติการทำธุรกรรมที่จะไม่ "แยก" ด้วยความน่าจะเป็นสูงอย่างท่วมท้น Algorand อิงตามข้อตกลงไบเซนไทน์ในการส่งข้อความ (แบบใหม่และเร็วเป็นพิเศษ) เพื่อความเป็นรูปธรรม เราจะอธิบาย Algorand ว่าเป็นแพลตฟอร์มเงินเท่านั้น
การแนะนำ
เงินกลายเป็นเสมือนจริงมากขึ้น มีการประเมินว่าประมาณ 80% ของประเทศสหรัฐอเมริกา ดอลลาร์ในวันนี้มีอยู่เป็นรายการบัญชีแยกประเภทเท่านั้น [5] เครื่องมือทางการเงินอื่นๆ เป็นไปตามนั้น ในโลกอุดมคติ ซึ่งเราสามารถพึ่งพาเอนทิตีศูนย์กลางที่เชื่อถือได้ในระดับสากล นั่นคือภูมิคุ้มกัน สำหรับการโจมตีทางไซเบอร์ที่เป็นไปได้ทั้งหมด เงินและธุรกรรมทางการเงินอื่น ๆ อาจเป็นแบบอิเล็กทรอนิกส์เท่านั้น น่าเสียดายที่เราไม่ได้อยู่ในโลกเช่นนี้ ดังนั้น cryptocurrencies แบบกระจายอำนาจเช่นนี้ เนื่องจาก Bitcoin [29] และระบบ “smart contract” เช่น Ethereum ได้รับการเสนอ [4] ณ หัวใจสำคัญของระบบเหล่านี้คือบัญชีแยกประเภทที่ใช้ร่วมกันซึ่งบันทึกลำดับธุรกรรมได้อย่างน่าเชื่อถือ ∗นี่เป็นรายงาน ArXiv เวอร์ชันที่เป็นทางการมากกว่า (และอะซิงโครนัส) โดยผู้เขียนคนที่สอง [24] บทความ อิงตามของ Gorbunov และ Micali [18] เทคโนโลยีของ Algorand มีวัตถุประสงค์ดังต่อไปนี้ การยื่นขอรับสิทธิบัตร: US62/117,138 US62/120,916 US62/142,318 US62/218,817 US62/314,601 PCT/US2016/018300 US62/326,865 62/331,654 US62/333,340 US62/343,369 US62/344,667 US62/346,775 US62/351,011 US62/653,482 US62/352,195 US62/363,970 US62/369,447 US62/378,753 US62/383,299 US62/394,091 US62/400,361 US62/403,403 US62/410,721 US62/416,959 US62/422,883 US62/455,444 US62/458,746 US62/459,652 US62/460,928 US62/465,931แตกต่างกันไปตามการชำระเงินและสัญญา ในลักษณะป้องกันการปลอมแปลง เทคโนโลยีทางเลือกในการ รับประกันการงัดแงะดังกล่าวคือ blockchain Blockchains อยู่เบื้องหลังแอปพลิเคชันเช่น สกุลเงินดิจิตอล [29] แอปพลิเคชันทางการเงิน [4] และอินเทอร์เน็ตของสรรพสิ่ง [3] เทคนิคหลายประการ เพื่อจัดการบัญชีแยกประเภทตาม blockchain ได้รับการเสนอ: หลักฐานการทำงาน [29], หลักฐานการมีส่วนร่วม [2], ความทนทานต่อความผิดพลาดของไบแซนไทน์ในทางปฏิบัติ [8] หรือการรวมกันบางอย่าง อย่างไรก็ตาม ในปัจจุบัน บัญชีแยกประเภทอาจไม่มีประสิทธิภาพในการจัดการ ตัวอย่างเช่น Bitcoin ของ proof-of-work วิธีการ (ตามแนวคิดดั้งเดิมของ [14]) ต้องใช้การคำนวณจำนวนมาก สิ้นเปลือง และปรับขนาดได้ไม่ดี [1] นอกจากนี้โดยพฤตินัยแล้ว มันยังรวมพลังไว้ในมือเพียงไม่กี่คนเท่านั้น ดังนั้นเราจึงต้องการที่จะนำเสนอวิธีการใหม่ในการดำเนินการบัญชีแยกประเภทสาธารณะที่นำเสนอ ความสะดวกและประสิทธิภาพของระบบรวมศูนย์ที่ดำเนินการโดยหน่วยงานที่เชื่อถือได้และไม่อาจขัดขืนได้ โดยไม่มี ความไร้เหตุผลและจุดอ่อนของการใช้งานแบบกระจายอำนาจในปัจจุบัน เราเรียกแนวทางของเรา Algorand เนื่องจากเราใช้การสุ่มอัลกอริทึมในการเลือก โดยอิงจากบัญชีแยกประเภทที่สร้างขึ้นจนถึงตอนนี้ ชุดของผู้ตรวจสอบที่รับผิดชอบในการสร้างบล็อกถัดไปของธุรกรรมที่ถูกต้อง โดยธรรมชาติแล้ว เรารับรองว่าการเลือกดังกล่าวได้รับการยกเว้นจากการบิดเบือนและคาดเดาไม่ได้จนกว่าจะพิสูจน์ได้ นาทีสุดท้ายแต่ท้ายที่สุดแล้วพวกเขาก็ชัดเจนในระดับสากลด้วย แนวทางของ Algorand ค่อนข้างเป็นประชาธิปไตย ในแง่ที่ว่าไม่ว่าจะในหลักการหรือโดยพฤตินัยก็ตาม สร้างคลาสที่แตกต่างกันของผู้ใช้ (เป็น “คนงานเหมือง” และ “ผู้ใช้ทั่วไป” ใน Bitcoin) ใน Algorand “ทั้งหมด อำนาจย่อมอยู่กับกลุ่มผู้ใช้ทุกคน” คุณสมบัติที่โดดเด่นอย่างหนึ่งของ Algorand คือประวัติการทำธุรกรรมอาจแยกได้เพียงเล็กน้อยเท่านั้น ความน่าจะเป็น (เช่น หนึ่งในล้านล้าน นั่นคือ หรือแม้กระทั่ง 10−18) Algorand สามารถแก้ไขปัญหาทางกฎหมายบางประการได้เช่นกัน และความกังวลทางการเมือง วิธีการ Algorand นำไปใช้กับ blockchains และโดยทั่วไปกับวิธีการใด ๆ ของการสร้าง ลำดับของบล็อกป้องกันการงัดแงะ จริงๆ แล้วเราได้เสนอวิธีการใหม่ —ทางเลือกของ และ มีประสิทธิภาพมากกว่า blockchains— ที่อาจเป็นที่สนใจโดยอิสระ 1.1 Bitcoin ข้อสันนิษฐานและปัญหาทางเทคนิค Bitcoin เป็นระบบที่ชาญฉลาดมากและเป็นแรงบันดาลใจให้กับการวิจัยในภายหลังจำนวนมาก ยังไงก็ตาม ก็เป็นปัญหาเช่นกัน ให้เราสรุปสมมติฐานพื้นฐานและปัญหาทางเทคนิค—ซึ่ง จริงๆ แล้วมีการแชร์โดยสกุลเงินดิจิทัลทั้งหมดซึ่งเหมือนกับ Bitcoin อิงตาม proof-of-work สำหรับการสรุปนี้ ควรจำไว้ว่าใน Bitcoin ผู้ใช้อาจเป็นเจ้าของกุญแจสาธารณะหลายอัน ของรูปแบบลายเซ็นดิจิทัล เงินนั้นเชื่อมโยงกับกุญแจสาธารณะ และการชำระเงินคือ ลายเซ็นดิจิทัลที่โอนเงินจำนวนหนึ่งจากคีย์สาธารณะหนึ่งไปยังอีกคีย์หนึ่ง โดยพื้นฐานแล้ว Bitcoin จัดระเบียบการชำระเงินที่ประมวลผลแล้วทั้งหมดในบล็อก B1, B2, . . แต่ละอันประกอบด้วยหลายรายการ การชำระเงิน โดยที่การชำระเงินทั้งหมดของ B1 ดำเนินการในลำดับใดๆ ตามด้วยการชำระเงินของ B2 ในลำดับใดๆ ฯลฯ ถือเป็นลำดับการชำระเงินที่ถูกต้อง แต่ละบล็อกจะถูกสร้างขึ้นโดยเฉลี่ยทุกๆ 10 นาที ลำดับของบล็อกนี้เป็นลูกโซ่ เนื่องจากมีโครงสร้างเพื่อให้แน่ใจว่ามีการเปลี่ยนแปลงใดๆ ก็ตาม ในบล็อกเดียว จะแทรกซึมเข้าไปในบล็อกต่อๆ ไปทั้งหมด ทำให้ง่ายต่อการมองเห็นการเปลี่ยนแปลงใดๆ ประวัติการชำระเงิน (ดังที่เราจะได้เห็น สิ่งนี้สามารถทำได้โดยการรวมการเข้ารหัสไว้ในแต่ละบล็อก hash จากอันก่อนหน้า) โครงสร้างบล็อกดังกล่าวเรียกว่า blockchain ข้อสันนิษฐาน: พลังการคำนวณส่วนใหญ่ที่ซื่อสัตย์ Bitcoin ถือว่าไม่มีอันตราย เอนทิตี (หรือแนวร่วมของเอนทิตีที่เป็นอันตรายที่ประสานงานกัน) ควบคุมการประมวลผลส่วนใหญ่ พลังที่อุทิศให้กับการสร้างบล็อก ที่จริงแล้ว เอนทิตีดังกล่าวจะสามารถแก้ไข blockchain,และเขียนประวัติการชำระเงินใหม่ตามต้องการ โดยเฉพาะอย่างยิ่งมันสามารถชำระเงินได้ \(\wp\) รับผลประโยชน์ที่จ่ายไป จากนั้น "ลบ" ร่องรอยใดๆ ของ \(\wp\) ปัญหาทางเทคนิค 1: ขยะทางคอมพิวเตอร์ Bitcoin proof-of-work วิธีการบล็อก การสร้างต้องใช้การคำนวณจำนวนมากเป็นพิเศษ ปัจจุบันมีเพียงไม่กี่ร้อยเท่านั้น พับลิกคีย์นับพันในระบบ ซูเปอร์คอมพิวเตอร์ที่ทรงพลังที่สุด 500 อันดับแรกทำได้เพียงรวบรวมเท่านั้น เพียงร้อยละ 12.8% ของพลังการคำนวณทั้งหมดที่ต้องการจากผู้เล่น Bitcoin นี้ ปริมาณการคำนวณจะเพิ่มขึ้นอย่างมาก หากมีผู้ใช้เข้าร่วมระบบมากขึ้นอย่างมีนัยสำคัญ ปัญหาทางเทคนิค 2: ความเข้มข้นของพลัง วันนี้เนื่องจากมีปริมาณมากเกินไป ต้องใช้การคำนวณ ผู้ใช้พยายามสร้างบล็อกใหม่โดยใช้เดสก์ท็อปธรรมดา (ไม่ต้องพูดถึง a โทรศัพท์มือถือ) คาดว่าจะสูญเสียเงิน แท้จริงแล้ว สำหรับการคำนวณบล็อกใหม่ด้วยคอมพิวเตอร์ธรรมดา ค่าใช้จ่ายที่คาดหวังของไฟฟ้าที่จำเป็นในการคำนวณเกินกว่ารางวัลที่คาดหวัง ใช้เฉพาะกลุ่มคอมพิวเตอร์ที่สร้างขึ้นเป็นพิเศษ (ซึ่งไม่ทำอะไรเลยนอกจาก "ขุดบล็อกใหม่") หนึ่งเครื่อง อาจคาดหวังการทำกำไรจากการสร้างบล็อกใหม่ ดังนั้น วันนี้จึงมีสองโดยพฤตินัย คลาสของผู้ใช้ที่แยกจากกัน: ผู้ใช้ทั่วไปที่ชำระเงินเท่านั้น และกลุ่มการขุดเฉพาะ ที่ค้นหาเฉพาะบล็อกใหม่เท่านั้น ดังนั้นจึงไม่น่าแปลกใจเลยที่เมื่อเร็ว ๆ นี้ พลังการประมวลผลทั้งหมดสำหรับบล็อก รุ่นอยู่ในกลุ่มเพียงห้ากลุ่ม ในสภาวะดังกล่าวให้สันนิษฐานว่าส่วนใหญ่ พลังการคำนวณที่ซื่อสัตย์จะน่าเชื่อถือน้อยลง ปัญหาทางเทคนิค 3: ความคลุมเครือ ใน Bitcoin blockchain ไม่จำเป็นต้องซ้ำกัน แน่นอน ส่วนล่าสุดมักจะแยก: blockchain อาจเป็น —say— B1, . . . , บีเค, บี′ k+1, บี′ k+2 ตาม ผู้ใช้หนึ่งรายและ B1, . . . , บีเค, บี'' k+1, บี'' k+2, บี'' k+3 ตามผู้ใช้รายอื่น หลังจากผ่านไปหลายบล็อคแล้ว เมื่อเพิ่มเข้าไปในลูกโซ่แล้ว จะแน่ใจได้อย่างไรว่าบล็อก k + 3 แรกจะเหมือนกัน สำหรับผู้ใช้ทุกคน ดังนั้นจึงไม่มีใครสามารถพึ่งพาการชำระเงินที่อยู่ในบล็อกสุดท้ายของได้ทันที ห่วงโซ่ ควรระมัดระวังมากกว่าที่จะรอดูว่าบล็อกนั้นลึกลงไปในนั้นหรือไม่ blockchain และมีเสถียรภาพเพียงพอ นอกจากนี้ ยังมีการหยิบยกข้อกังวลเกี่ยวกับการบังคับใช้กฎหมายและนโยบายการเงินเกี่ยวกับ Bitcoin.1 อีกด้วย 1.2 Algorand โดยสรุป การตั้งค่า Algorand ทำงานในสภาวะที่ยากลำบากมาก สั้นๆ, (a) สภาพแวดล้อมที่ไม่ได้รับอนุญาตและได้รับอนุญาต Algorand ทำงานได้อย่างมีประสิทธิภาพและปลอดภัย ในสภาพแวดล้อมที่ไม่ได้รับอนุญาตโดยสิ้นเชิง ซึ่งผู้ใช้จำนวนมากได้รับอนุญาตให้เข้าร่วมโดยพลการ ได้ตลอดเวลา โดยไม่ต้องมีการตรวจสอบหรืออนุญาตใดๆ แน่นอนว่า Algorand ได้ผล ดียิ่งขึ้นในสภาพแวดล้อมที่ได้รับอนุญาต 1การไม่เปิดเผยตัวตน (หลอก) ที่นำเสนอโดย Bitcoin การชำระเงินอาจถูกนำไปใช้ในทางที่ผิดเพื่อการฟอกเงินและ/หรือการจัดหาเงินทุน ของอาชญากรหรือองค์กรก่อการร้าย ธนบัตรหรือทองคำแท่งแบบดั้งเดิมซึ่งโดยหลักการแล้วสมบูรณ์แบบ การไม่เปิดเผยตัวตนควรก่อให้เกิดความท้าทายเช่นเดียวกัน แต่ลักษณะทางกายภาพของสกุลเงินเหล่านี้ทำให้เงินช้าลงอย่างมาก การโอนเพื่อให้สามารถติดตามตรวจสอบโดยหน่วยงานบังคับใช้กฎหมายได้ในระดับหนึ่ง ความสามารถในการ “พิมพ์เงิน” เป็นหนึ่งในอำนาจขั้นพื้นฐานของรัฐชาติ โดยหลักการแล้วจึงยิ่งใหญ่ การยอมรับสกุลเงินที่หมุนเวียนอย่างอิสระอาจบั่นทอนอำนาจนี้ อย่างไรก็ตาม ในปัจจุบัน Bitcoin ยังห่างไกลจากความเป็นอยู่ ภัยคุกคามต่อนโยบายการเงินของรัฐบาล และเนื่องจากปัญหาด้านความสามารถในการขยายขนาด อาจไม่เป็นเช่นนั้นเลย(b) สภาพแวดล้อมที่ขัดแย้งกันอย่างมาก Algorand ต้านทานศัตรูที่ทรงพลังมากที่สามารถต้านทานได้ (1) สร้างความเสื่อมเสียแก่ผู้ใช้ใด ๆ ที่เขาต้องการทันทีในเวลาใดก็ได้ที่เขาต้องการ โดยมีเงื่อนไขว่าใน สภาพแวดล้อมที่ไม่ได้รับอนุญาต เงิน 2/3 ในระบบเป็นของผู้ใช้ที่ซื่อสัตย์ (ในก สภาพแวดล้อมที่ได้รับอนุญาต โดยไม่คำนึงถึงเงิน ถือว่า 2/3 ของผู้ใช้มีความซื่อสัตย์) (2) ควบคุมและประสานงานผู้ใช้ที่เสียหายทั้งหมดอย่างสมบูรณ์แบบ; และ (3) กำหนดเวลาการส่งข้อความทั้งหมด โดยมีเงื่อนไขว่าแต่ละข้อความ m ส่งโดยผู้ใช้ที่ซื่อสัตย์ เข้าถึงผู้ใช้ที่ซื่อสัตย์ถึง 95% ภายในระยะเวลา แลม ซึ่งขึ้นอยู่กับขนาดของ ม. เท่านั้น คุณสมบัติหลัก แม้จะมีศัตรูที่ทรงพลังของเราปรากฏตัวใน Algorand • จำนวนการคำนวณที่ต้องการมีเพียงเล็กน้อย โดยพื้นฐานแล้วไม่ว่าผู้ใช้จะมีจำนวนเท่าใดก็ตาม ที่มีอยู่ในระบบ ผู้ใช้แต่ละรายจาก 1500 คนจะต้องดำเนินการในเวลาไม่เกินไม่กี่วินาที การคำนวณ • บล็อกใหม่จะถูกสร้างขึ้นในเวลาน้อยกว่า 10 นาที และโดยพฤตินัยจะไม่มีวันออกจาก blockchain ตัวอย่างเช่น ตามความคาดหวัง เวลาในการสร้างบล็อกในรูปลักษณ์แรกจะน้อยกว่า มากกว่า Λ + 12.4แล โดยที่ Λ คือเวลาที่จำเป็นในการเผยแพร่บล็อกในการซุบซิบแบบ peer-to-peer แฟชั่น ไม่ว่าใครจะเลือกบล็อกขนาดใดก็ตาม และ \(\lambda\) คือเวลาที่จะเผยแพร่ข้อความขนาดยาว 1,500,200 ข้อความ (เนื่องจากในระบบการกระจายอำนาจอย่างแท้จริง Λ โดยพื้นฐานแล้วคือเวลาแฝงที่แท้จริงใน Algorand ปัจจัยจำกัดในการสร้างบล็อกคือความเร็วเครือข่าย) รูปลักษณ์ที่สองมี จริง ๆ แล้วได้รับการทดสอบทดลอง (โดย ?) ซึ่งบ่งชี้ว่าบล็อกถูกสร้างขึ้นในเวลาน้อยกว่า 40 วินาที นอกจากนี้ Algorand ของ blockchain อาจแยกได้ด้วยความน่าจะเป็นเพียงเล็กน้อยเท่านั้น (เช่น น้อยกว่าหนึ่ง ในล้านล้าน) และผู้ใช้สามารถส่งต่อการชำระเงินที่มีอยู่ในบล็อกใหม่ได้ทันทีที่ บล็อกปรากฏขึ้น • อำนาจทั้งหมดอยู่ที่ตัวผู้ใช้เอง Algorand เป็นระบบกระจายที่แท้จริง โดยเฉพาะอย่างยิ่ง ไม่มีหน่วยงานภายนอก (ในฐานะ "นักขุด" ใน Bitcoin) ที่สามารถควบคุมธุรกรรมใดได้ ได้รับการยอมรับ เทคนิคของ Algorand 1. โปรโตคอลข้อตกลงไบเซนไทน์ใหม่และรวดเร็ว Algorand สร้างบล็อกใหม่ผ่าน โปรโตคอลการเข้ารหัสลับแบบใหม่ การส่งข้อความ ข้อตกลงไบเซนไทน์แบบไบนารี (BA) BA⋆ พิธีสาร BA⋆ไม่เพียงแต่ตอบสนองคุณสมบัติเพิ่มเติมบางอย่างเท่านั้น (ซึ่งเราจะพูดถึงเร็วๆ นี้) แต่ยังรวดเร็วมากอีกด้วย กล่าวโดยคร่าวๆ เวอร์ชันอินพุตไบนารี่ประกอบด้วยการวนซ้ำ 3 ขั้นตอน ซึ่งผู้เล่นที่ฉันส่งเพียงครั้งเดียว ส่งข้อความ mi ถึงผู้เล่นคนอื่นๆ ทั้งหมด ดำเนินการในเครือข่ายที่สมบูรณ์และซิงโครนัสและอีกมากมาย ผู้เล่นมากกว่า 2/3 ที่มีความซื่อสัตย์ โดยมีความน่าจะเป็น > 1/3 หลังจากแต่ละวงสิ้นสุดโปรโตคอล ข้อตกลง (เราเน้นย้ำว่าระเบียบการ BA⋆ เป็นไปตามคำจำกัดความดั้งเดิมของข้อตกลงไบแซนไทน์ ของ Pease, Shostak และ Lamport [31] โดยไม่มีจุดอ่อนใดๆ) Algorand ใช้ประโยชน์จากโปรโตคอล BA ไบนารีนี้เพื่อบรรลุข้อตกลงในการสื่อสารที่แตกต่างของเรา โมเดลในแต่ละบล็อกใหม่ บล็อกที่ตกลงกันไว้จะได้รับการรับรองตามจำนวนที่กำหนด ลายเซ็นดิจิทัลของผู้ตรวจสอบที่เหมาะสม และเผยแพร่ผ่านเครือข่าย 2. การเรียงลำดับการเข้ารหัส แม้ว่าจะรวดเร็วมาก แต่โปรโตคอล BA⋆ ก็จะได้รับประโยชน์เพิ่มเติม ความเร็วเมื่อเล่นโดยผู้ใช้หลายล้านคน ดังนั้น Algorand จึงเลือกผู้เล่นของ BA⋆ ให้เป็นชุดย่อยที่เล็กกว่ามากของกลุ่มผู้ใช้ทั้งหมด เพื่อหลีกเลี่ยงการรวมตัวของอำนาจที่แตกต่างกัน ปัญหา แต่ละบล็อกใหม่ Br จะถูกสร้างขึ้นและตกลงกัน ผ่านการดำเนินการใหม่ของ BA⋆ โดยชุดผู้ตรวจสอบที่เลือกแยกกัน SV r. โดยหลักการแล้วการเลือกชุดดังกล่าวอาจจะยากพอๆ กัน การเลือก Br โดยตรง เราแก้ไขปัญหาที่อาจเกิดขึ้นนี้ด้วยแนวทางที่เรายึดถือ คำแนะนำอันชาญฉลาดของ Maurice Herlihy การเรียงลำดับการเข้ารหัส การเรียงลำดับคือการปฏิบัติของ สุ่มเลือกเจ้าหน้าที่จากบุคคลที่มีสิทธิ์จำนวนมาก [6] (มีการฝึกฝนการเรียงลำดับ ตลอดหลายศตวรรษ เช่น โดยสาธารณรัฐเอเธนส์ ฟลอเรนซ์ และเวนิส ในการพิจารณาคดีสมัยใหม่ ระบบการสุ่มเลือกมักใช้ในการเลือกคณะลูกขุน การสุ่มตัวอย่างก็เพิ่งเกิดขึ้นเช่นกัน สนับสนุนการเลือกตั้งโดย David Chaum [9].) แน่นอนว่าในระบบกระจายอำนาจ การเลือก เหรียญสุ่มที่จำเป็นในการสุ่มเลือกสมาชิกของชุดผู้ตรวจสอบแต่ละชุด SV r เป็นปัญหา ดังนั้นเราจึงใช้การเข้ารหัสเพื่อเลือกชุดผู้ตรวจสอบแต่ละชุดจากประชากรของผู้ใช้ทั้งหมด ในลักษณะที่รับประกันว่าเป็นไปโดยอัตโนมัติ (เช่น ไม่ต้องมีการแลกเปลี่ยนข้อความ) และสุ่ม โดยพื้นฐานแล้ว เราใช้ฟังก์ชันการเข้ารหัสเพื่อกำหนดโดยอัตโนมัติจากบล็อกก่อนหน้า Br−1 ผู้ใช้ ผู้นำ รับผิดชอบในการเสนอบล็อกใหม่ Br และผู้ตรวจสอบตั้งค่า SV r ใน เรียกเก็บเงินเพื่อบรรลุข้อตกลงในบล็อกที่เสนอโดยผู้นำ เนื่องจากผู้ใช้ที่เป็นอันตรายสามารถส่งผลกระทบได้ องค์ประกอบของ Br−1 (เช่น โดยการเลือกการชำระเงินบางส่วน) เราสร้างและใช้งานเป็นพิเศษ อินพุตเพิ่มเติมเพื่อพิสูจน์ว่าตัวนำสำหรับบล็อก rth และชุดตัวตรวจสอบ SV r เป็นจริง สุ่มเลือก 3. ปริมาณ (เมล็ด) Qr. เราใช้บล็อกสุดท้าย Br−1 ใน blockchain เพื่อที่จะ กำหนดชุดตรวจสอบถัดไปและผู้นำที่รับผิดชอบในการสร้างบล็อกใหม่โดยอัตโนมัติ บ. ความท้าทายของแนวทางนี้คือ โดยเพียงแค่เลือกการชำระเงินที่แตกต่างกันเล็กน้อยใน รอบที่แล้ว ศัตรูที่ทรงพลังของเราจะควบคุมผู้นำคนต่อไปได้อย่างมหาศาล แม้ว่าเขา ควบคุมผู้เล่น/เงินในระบบได้เพียง 1/1000 เท่านั้น เขาสามารถมั่นใจได้ว่าผู้นำทั้งหมดจะเป็นเช่นนั้น เป็นอันตราย (ดูสัญชาตญาณมาตรา 4.1) ความท้าทายนี้เป็นศูนย์กลางของแนวทาง proof-of-stake ทั้งหมด และเท่าที่ทราบมาจนถึงตอนนี้ก็ยังไม่ได้รับการแก้ไขอย่างน่าพอใจ เพื่อตอบสนองความท้าทายนี้ เราตั้งใจสร้างและปรับปรุงอย่างต่อเนื่อง แยกต่างหากและระมัดระวัง ปริมาณที่กำหนด (Qr) ซึ่งพิสูจน์ได้ว่าไม่เพียงแต่คาดเดาไม่ได้ แต่ยังวัดไม่ได้ด้วย ศัตรูที่ทรงพลัง เราอาจเรียก Qr ว่าเป็นเมล็ดที่ r เนื่องจากมาจาก Qr ที่ Algorand เลือก ผ่านการเรียงลำดับการเข้ารหัสลับ ผู้ใช้ทั้งหมดที่จะมีบทบาทพิเศษในยุคของ บล็อกที่ 1 4. การเรียงลำดับด้วยการเข้ารหัสลับและข้อมูลประจำตัวที่เป็นความลับ สุ่มและไม่คลุมเครือโดยใช้บล็อกสุดท้ายปัจจุบัน Br−1 เพื่อเลือกชุดผู้ตรวจสอบและผู้นำที่รับผิดชอบ การสร้างบล็อกใหม่ Br นั้นยังไม่เพียงพอ เนื่องจากต้องรู้จัก Br−1 ก่อนสร้าง Br ปริมาณ Qr−1 ที่ไม่สามารถประเมินได้สุดท้ายที่มีอยู่ใน Br−1 จะต้องทราบด้วย ตามนั้นครับ เป็นผู้ตรวจสอบและเป็นผู้นำที่รับผิดชอบในการคำนวณบล็อก Br. ดังนั้นศัตรูผู้ทรงพลังของเรา อาจทำให้ทุกคนเสียหายทันที ก่อนที่พวกเขาจะพูดคุยเรื่อง Br เพื่อให้ได้มา ควบคุมบล็อกที่พวกเขารับรองได้อย่างสมบูรณ์ เพื่อป้องกันปัญหานี้ ผู้นำ (และผู้ตรวจสอบด้วย) แอบเรียนรู้เกี่ยวกับบทบาทของตน แต่ก็สามารถทำได้ คำนวณข้อมูลประจำตัวที่เหมาะสม สามารถพิสูจน์ให้ทุกคนที่มีบทบาทนั้นได้อย่างแท้จริง เมื่อ ผู้ใช้ตระหนักเป็นการส่วนตัวว่าเขาเป็นผู้นำในบล็อกถัดไป อันดับแรกเขาแอบรวบรวมบล็อกของเขา เสนอบล็อกใหม่ของตนเองแล้วเผยแพร่ (เพื่อให้ได้รับการรับรอง) ร่วมกับบล็อกของตนเอง หนังสือรับรอง ด้วยวิธีนี้แม้ว่าฝ่ายตรงข้ามจะรู้ได้ทันทีว่าใครคือผู้นำคนต่อไป ถูกบล็อก และถึงแม้ว่าเขาจะทำให้เขาเสียหายได้ในทันที แต่ก็สายเกินไปที่ฝ่ายตรงข้ามจะทำได้ มีอิทธิพลต่อการเลือกบล็อกใหม่ แท้จริงแล้วเขาไม่สามารถ "โทรกลับ" ข้อความของผู้นำได้อีกต่อไปเกินกว่าที่รัฐบาลที่มีอำนาจจะสามารถนำข้อความที่ WikiLeaks แพร่กระจายแบบไวรัลกลับเข้าไปในขวดได้ ดังที่เราจะได้เห็น เราไม่สามารถรับประกันเอกลักษณ์ของผู้นำได้ และทุกคนก็ไม่แน่ใจว่าใครเป็นผู้นำ รวมถึงตัวผู้นำเองด้วย! แต่ใน Algorand รับประกันความก้าวหน้าที่ชัดเจน 5. ความสามารถในการเปลี่ยนผู้เล่น หลังจากที่เขาเสนอบล็อกใหม่ ผู้นำอาจจะ "ตาย" เช่นกัน (หรือเป็น) ถูกปรปักษ์เสียหาย) เพราะงานของเขาเสร็จแล้ว แต่สำหรับผู้ตรวจสอบใน SV r สิ่งต่างๆ ยังน้อยอยู่ เรียบง่าย โดยแท้จริงแล้ว มีหน้าที่รับรองบล็อกใหม่ Br พร้อมด้วยลายเซ็นมากมายเพียงพอ พวกเขาจะต้องดำเนินการตามข้อตกลงไบแซนไทน์ในบล็อกที่ผู้นำเสนอก่อน ปัญหาก็คือว่า ไม่ว่าจะมีประสิทธิภาพเพียงใด BA⋆ต้องการหลายขั้นตอนและความซื่อสัตย์ของผู้เล่น> 2/3 นี่เป็นปัญหา เพราะด้วยเหตุผลด้านประสิทธิภาพ ชุดผู้เล่นของ BA⋆ ประกอบด้วยชุดเล็ก SV r สุ่มเลือกจากชุดผู้ใช้ทั้งหมด ดังนั้นศัตรูผู้ทรงพลังของเราถึงแม้จะทำไม่ได้ก็ตาม เสียหาย 1/3 ของผู้ใช้ทั้งหมด สามารถทำให้สมาชิก SV r ทุกคนเสียหายได้อย่างแน่นอน! โชคดีที่เราจะพิสูจน์ได้ว่าโปรโตคอล BA⋆ ซึ่งดำเนินการโดยการเผยแพร่ข้อความในลักษณะเพียร์โทเพียร์นั้นเป็นสิ่งที่ผู้เล่นสามารถแทนที่ได้ ข้อกำหนดใหม่นี้หมายความว่าโปรโตคอลถูกต้องและ บรรลุฉันทามติอย่างมีประสิทธิภาพแม้ว่าแต่ละขั้นตอนจะดำเนินการโดยขั้นตอนใหม่ทั้งหมดและแบบสุ่ม และเลือกชุดผู้เล่นอย่างอิสระ ดังนั้นด้วยจำนวนผู้ใช้หลายล้านคน แต่ละกลุ่มผู้เล่นเล็กๆ ที่เกี่ยวข้องกับขั้นตอนของ BA ⋆ส่วนใหญ่น่าจะมีจุดตัดว่างกับเซตถัดไป นอกจากนี้ ชุดของผู้เล่นที่มีขั้นตอนต่างกันของ BA⋆ อาจจะมีความแตกต่างกันโดยสิ้นเชิง ภาวะคาร์ดินัล นอกจากนี้สมาชิกของแต่ละชุดยังไม่รู้ว่าผู้เล่นชุดต่อไปจะเป็นใคร เป็นและไม่แอบผ่านสภาพภายในใด ๆ คุณสมบัติของผู้เล่นที่ทดแทนได้นั้นมีความสำคัญอย่างยิ่งในการเอาชนะความไดนามิกและทรงพลังมาก ศัตรูที่เราจินตนาการ เราเชื่อว่าโปรโตคอลของผู้เล่นที่ทดแทนได้จะพิสูจน์ได้ว่ามีความสำคัญในหลายๆ อย่าง บริบทและการประยุกต์ โดยเฉพาะอย่างยิ่ง สิ่งเหล่านี้จะมีความสำคัญอย่างยิ่งในการรันโปรโตคอลย่อยขนาดเล็กอย่างปลอดภัย ฝังอยู่ในจักรวาลที่ใหญ่ขึ้นของผู้เล่นพร้อมกับศัตรูที่มีพลังซึ่งสามารถทำลายล้างได้ เป็นส่วนเล็กๆ ของผู้เล่นทั้งหมด ไม่มีความยุ่งยากในการทำให้ผู้เล่นในกลุ่มเล็กๆ เสียหายทั้งหมด โปรโตคอลย่อย คุณสมบัติ/เทคนิคเพิ่มเติม: Lazy Honesty ผู้ใช้ที่ซื่อสัตย์ปฏิบัติตามคำสั่งของเขา คำแนะนำซึ่งรวมถึงการออนไลน์และเรียกใช้โปรโตคอล เนื่องจาก Algorand มีเพียงความเรียบง่ายเท่านั้น ข้อกำหนดด้านการคำนวณและการสื่อสาร ออนไลน์และใช้งานโปรโตคอล “ใน พื้นหลัง” ไม่ใช่การเสียสละครั้งใหญ่ แน่นอนว่ามี "การขาดหายไป" บ้างในหมู่ผู้เล่นที่ซื่อสัตย์เช่นเดียวกับพวกเขา เนื่องจากการสูญเสียการเชื่อมต่ออย่างกะทันหันหรือจำเป็นต้องรีบูตเครื่อง จะต้องได้รับการยอมรับโดยอัตโนมัติ (เพราะ เราถือว่าผู้เล่นไม่กี่คนดังกล่าวเป็นอันตรายชั่วคราวได้เสมอ) ให้เราชี้ให้เห็นว่าอย่างไรก็ตาม Algorand นั้นสามารถปรับเปลี่ยนได้อย่างง่ายดายเพื่อให้ทำงานในรูปแบบใหม่ซึ่งผู้ใช้ที่ซื่อสัตย์จะเป็น มักจะไม่เป็นเช่นนั้น รุ่นใหม่ของเราสามารถแนะนำอย่างไม่เป็นทางการได้ดังนี้ ขี้เกียจซื่อสัตย์. พูดโดยคร่าวๆ ผู้ใช้ที่ฉันขี้เกียจแต่ซื่อสัตย์ถ้า (1) เขาปฏิบัติตามที่เขากำหนดไว้ทั้งหมด คำแนะนำ เมื่อเขาถูกขอให้เข้าร่วมในระเบียบการ และ (2) เขาถูกขอให้เข้าร่วม ถึงโปรโตคอลเพียงเล็กน้อยเท่านั้น และมีการแจ้งล่วงหน้าที่เหมาะสม ด้วยแนวคิดที่ผ่อนคลายในเรื่องความซื่อสัตย์ เราอาจมั่นใจมากขึ้นว่าคนที่ซื่อสัตย์จะเป็นเช่นไร พร้อมเสมอเมื่อเราต้องการ และ Algorand รับประกันว่า เมื่อเป็นกรณีนี้ ระบบทำงานอย่างปลอดภัย แม้ว่า ณ เวลาที่กำหนด ผู้เล่นที่เข้าร่วมส่วนใหญ่เป็นคนที่เป็นอันตราย1.3 งานที่เกี่ยวข้องอย่างใกล้ชิด วิธีการพิสูจน์การทำงาน (เช่น [29] และ [4] ที่อ้างถึง) ค่อนข้างตั้งฉากกับแนวทางของเรา ก็เช่นกัน วิธีการตามข้อตกลงไบเซนไทน์ในการส่งข้อความหรือการยอมรับข้อบกพร่องของไบแซนไทน์ในทางปฏิบัติ (เช่นที่อ้างถึง [8]) แท้จริงแล้ว โปรโตคอลเหล่านี้ไม่สามารถทำงานในกลุ่มผู้ใช้ทั้งหมดได้ และไม่สามารถ ในโมเดลของเรา ให้จำกัดเฉพาะผู้ใช้กลุ่มเล็กๆ ที่เหมาะสม อันที่จริงศัตรูที่ทรงพลังของเราของฉัน สร้างความเสียหายให้กับผู้ใช้ทั้งหมดที่เกี่ยวข้องกับชุดเล็ก ๆ ที่ถูกกล่าวหาว่าใช้งานโปรโตคอล BA จริง ๆ ทันที แนวทางของเราถือได้ว่าเกี่ยวข้องกับหลักฐานการมีส่วนได้ส่วนเสีย [2] ในแง่ที่ว่า "อำนาจ" ของผู้ใช้ ในการสร้างบล็อกจะเป็นสัดส่วนกับเงินที่พวกเขาเป็นเจ้าของในระบบ (ตรงข้ามกับ —พูด— ถึง เงินที่พวกเขาใส่ไว้ใน “เอสโครว์”) บทความที่ใกล้เคียงที่สุดของเราคือ Sleepy Consensus Model ของ Pass และ Shi [30] เพื่อหลีกเลี่ยง การคำนวณจำนวนมากที่จำเป็นในแนวทาง proof-of-work เอกสารของพวกเขาอาศัย (และกรุณา เครดิต) Algorand การเรียงลำดับการเข้ารหัสลับ โดยมีประเด็นสำคัญหลายประการที่เหมือนกันหลายประการ มีความแตกต่างที่สำคัญระหว่างเอกสารของเรา โดยเฉพาะอย่างยิ่ง (1) การตั้งค่าของพวกเขาได้รับอนุญาตเท่านั้น ในทางตรงกันข้าม Algorand ก็เป็นระบบที่ไม่ได้รับอนุญาตเช่นกัน (2) พวกเขาใช้โปรโตคอลสไตล์ Nakamoto และทำให้ blockchain ของพวกเขาแยกบ่อยครั้ง แม้ว่า แจกจ่าย proof-of-work ในระเบียบการของพวกเขา ผู้นำที่ได้รับการคัดเลือกอย่างลับๆ จะถูกขอให้ยืดเวลา ใช้ได้ยาวนานที่สุด (ในแง่ที่สมบูรณ์ยิ่งขึ้น) blockchain ดังนั้นจึงหลีกเลี่ยงไม่ได้ที่จะต้องใช้ส้อมและต้องรอ บล็อกนั้นมี "ความลึก" เพียงพอในห่วงโซ่ แท้จริงแล้วการบรรลุเป้าหมายร่วมกับศัตรู ความสามารถในการเสียหายแบบปรับตัวได้ พวกเขาต้องการบล็อกที่มีความลึกแบบโพลี (N) โดยที่ N แสดงถึง จำนวนผู้ใช้ทั้งหมดในระบบ โปรดสังเกตว่า แม้จะสมมติว่าสามารถสร้างบล็อกได้ ในหนึ่งนาที หากมีผู้ใช้ N = 1 ล้านคน ก็จะต้องรอประมาณ 2 ล้านปี บล็อกจะกลายเป็น N ลึก และใช้เวลาประมาณ 2 ปีกว่าบล็อกจะกลายเป็น N ลึก ในทางตรงกันข้าม blockchain ของ Algorand ส้อมด้วยความน่าจะเป็นเพียงเล็กน้อยเท่านั้น แม้ว่าฝ่ายตรงข้ามจะเสียหาย ผู้ใช้ทันทีและปรับเปลี่ยนได้ และสามารถพึ่งพาบล็อกใหม่ได้ทันที (3) พวกเขาไม่ได้จัดการข้อตกลงไบเซนไทน์แต่ละรายการ ในแง่หนึ่งพวกเขารับประกันเท่านั้น “ฉันทามติในที่สุดเกี่ยวกับลำดับค่านิยมที่เพิ่มขึ้น” พวกเขาเป็นโปรโตคอลการจำลองแบบของรัฐ กว่า BA one และไม่สามารถใช้เพื่อบรรลุข้อตกลง Byzantine เกี่ยวกับมูลค่าดอกเบี้ยส่วนบุคคลได้ ในทางตรงกันข้าม Algorand สามารถใช้เพียงครั้งเดียว หากต้องการ เพื่อให้ผู้ใช้หลายล้านคนสามารถใช้งานได้อย่างรวดเร็ว บรรลุข้อตกลงไบเซนไทน์เกี่ยวกับมูลค่าดอกเบี้ยเฉพาะ (4) พวกเขาต้องการนาฬิกาที่ซิงโครไนซ์อย่างอ่อน นั่นคือนาฬิกาของผู้ใช้ทุกคนจะถูกตั้งเวลาเพียงเล็กน้อย δ. ในทางตรงกันข้าม ใน Algorand นาฬิกาจำเป็นต้องมี "ความเร็ว" ที่เท่ากัน (โดยพื้นฐานแล้ว) เท่านั้น (5) โปรโตคอลของพวกเขาใช้งานได้กับผู้ใช้ที่ขี้เกียจแต่ซื่อสัตย์หรือกับผู้ใช้ออนไลน์ส่วนใหญ่ที่ซื่อสัตย์ พวกเขากรุณาให้เครดิต Algorand สำหรับการหยิบยกปัญหาของผู้ใช้ที่ซื่อสัตย์ออกไปเป็นจำนวนมาก และสำหรับ หยิบยกโมเดลความซื่อสัตย์ที่เกียจคร้านมาตอบสนอง โปรโตคอลของพวกเขาไม่เพียงแต่ใช้งานได้กับคนขี้เกียจเท่านั้น รูปแบบความซื่อสัตย์ แต่ยังอยู่ในรูปแบบง่วงนอนของฝ่ายตรงข้ามด้วย โดยที่ฝ่ายตรงข้ามเลือกว่าผู้ใช้รายใด ออนไลน์และเป็นของออฟไลน์ โดยมีเงื่อนไขว่าผู้ใช้ออนไลน์ส่วนใหญ่มีความซื่อสัตย์ตลอดเวลา2 2รายงานฉบับดั้งเดิมถือว่าเป็นเพียงการรักษาความปลอดภัยในรูปแบบง่วงนอนของฝ่ายตรงข้ามเท่านั้น ที่ เวอร์ชันดั้งเดิมของ Algorand ซึ่งอยู่ก่อนหน้าเวอร์ชันของพวกเขา ยังมองเห็นอย่างชัดเจนโดยสมมติว่าส่วนใหญ่ที่กำหนด ผู้เล่นออนไลน์มีความซื่อสัตย์อยู่เสมอ แต่ได้แยกออกจากการพิจารณาอย่างชัดเจน เพื่อสนับสนุนโมเดลความซื่อสัตย์ที่ขี้เกียจ (ตัวอย่างเช่น หาก ณ จุดใดจุดหนึ่งของผู้ใช้ที่ซื่อสัตย์เลือกที่จะออฟไลน์ ผู้ใช้ส่วนใหญ่ ออนไลน์อาจเป็นอันตรายได้ ดังนั้น เพื่อป้องกันไม่ให้สิ่งนี้เกิดขึ้น ปฏิปักษ์ควรบังคับส่วนใหญ่ของเขา ผู้เล่นที่เสียหายให้ไปออฟไลน์ด้วย ซึ่งเห็นได้ชัดว่าขัดต่อผลประโยชน์ของตนเอง) โปรดสังเกตว่าโปรโตคอลที่มีเสียงข้างมาก ของผู้เล่นที่เกียจคร้านแต่ซื่อสัตย์จะทำงานได้ดีหากผู้ใช้ออนไลน์ส่วนใหญ่มักเป็นอันตราย ที่เป็นเช่นนี้ก็เพราะว่า ผู้เล่นที่ซื่อสัตย์จำนวนเพียงพอ โดยรู้ว่าพวกเขาจะมีความสำคัญในช่วงเวลาที่หายาก จะเลือก ย่อมไม่หลุดพ้นไปในขณะนั้น และมิให้ปรปักษ์บังคับให้หลุดพ้นได้ เพราะไม่รู้ว่าใครเป็นผู้ ผู้เล่นที่ซื่อสัตย์ที่สำคัญอาจเป็นได้(6) พวกเขาต้องการเสียงส่วนใหญ่ที่ซื่อสัตย์ ในทางตรงกันข้าม Algorand ต้องใช้เวอร์ชันปัจจุบัน 2/3 ส่วนใหญ่ที่ซื่อสัตย์ เอกสารอีกฉบับที่อยู่ใกล้เราคือ Ouroboros: โปรโตคอล Blockchain ที่พิสูจน์ได้ว่ามีความปลอดภัยที่พิสูจน์ได้ โดย Kiayias, Russell, David และ Oliynykov [20] ระบบของพวกเขาก็ปรากฏตามหลังเราด้วย มันยัง ใช้การเรียงลำดับด้วยความเย็นเพื่อแจกจ่ายหลักฐานการทำงานในลักษณะที่พิสูจน์ได้ อย่างไรก็ตามของพวกเขา ระบบเป็นโปรโตคอลสไตล์ Nakamoto อีกครั้งซึ่งทางแยกเป็นสิ่งที่หลีกเลี่ยงไม่ได้และบ่อยครั้ง (อย่างไรก็ตาม ในโมเดลของพวกเขา บล็อกไม่จำเป็นต้องลึกเท่ากับโมเดลฉันทามติที่ง่วงนอน) นอกจากนี้ ระบบของพวกเขาขึ้นอยู่กับสมมติฐานดังต่อไปนี้: ตามคำพูดของผู้เขียนเอง "(1) เครือข่ายมีการซิงโครไนซ์สูง (2) ผู้มีส่วนได้ส่วนเสียส่วนใหญ่ที่ได้รับการคัดเลือกพร้อมให้บริการตามความจำเป็น ที่จะเข้าร่วมในแต่ละยุค (3) ผู้มีส่วนได้ส่วนเสียจะไม่ถูกเปิดเผยเป็นเวลานาน (4) การปรับตัวของการทุจริตอาจมีความล่าช้าเล็กน้อยซึ่งวัดเป็นเส้นตรง พารามิเตอร์ความปลอดภัย” ในทางตรงกันข้าม Algorand มีความน่าจะเป็นอย่างล้นหลาม ไม่มีการฟอร์ค และ ไม่ได้ขึ้นอยู่กับสมมติฐานทั้ง 4 ข้อนี้ โดยเฉพาะอย่างยิ่งใน Algorand ฝ่ายตรงข้ามสามารถทำได้ สร้างความเสียหายให้กับผู้ใช้ที่เขาต้องการควบคุมทันที
เบื้องต้น
2.1 การเข้ารหัสลับเบื้องต้น การแฮชในอุดมคติ เราจะพึ่งพาฟังก์ชัน hash การเข้ารหัสลับที่สามารถคำนวณได้อย่างมีประสิทธิภาพ H ซึ่ง จับคู่สตริงที่ยาวตามอำเภอใจกับสตริงไบนารีที่มีความยาวคงที่ ตามประเพณีอันยาวนาน เราสร้างแบบจำลอง H เป็นแบบสุ่ม oracle โดยพื้นฐานแล้วฟังก์ชันที่แมปแต่ละสตริงที่เป็นไปได้ s กับการสุ่มและ สตริงไบนารีที่เลือกอย่างอิสระ (และแก้ไขแล้ว) H(s) ของความยาวที่เลือก ในบทความนี้ H มีเอาต์พุตยาว 256 บิต แท้จริงแล้วความยาวดังกล่าวสั้นพอที่จะทำให้ ระบบมีประสิทธิภาพและยาวนานเพียงพอที่จะทำให้ระบบมีความปลอดภัย ตัวอย่างเช่น เราต้องการให้ H มีความยืดหยุ่นในการชนกัน กล่าวคือ มันควรจะเป็นเรื่องยากที่จะหาสตริง x และ y สองสตริงที่แตกต่างกันเพื่อให้ H(x) = H(y) เมื่อ H เป็น oracle แบบสุ่มที่มีเอาต์พุตยาว 256 บิต การค้นหาคู่ของสตริงดังกล่าวย่อมเป็นเช่นนั้น ความยากลำบาก (ลองสุ่มแล้วอาศัยความขัดแย้งวันเกิดจะได้ 2256/2 = 2128 การทดลอง) การลงนามแบบดิจิทัล ลายเซ็นดิจิทัลช่วยให้ผู้ใช้สามารถตรวจสอบข้อมูลระหว่างกันได้ โดยไม่ต้องแชร์คีย์ลับใดๆ ร่วมกัน รูปแบบลายเซ็นดิจิทัลประกอบด้วยสามอย่างรวดเร็ว อัลกอริธึม: ตัวสร้างคีย์ความน่าจะเป็น G อัลกอริธึมการลงนาม S และอัลกอริธึมการตรวจสอบ V เมื่อกำหนดพารามิเตอร์ความปลอดภัย k ซึ่งเป็นจำนวนเต็มที่สูงพอสมควร ผู้ใช้ i ใช้ G เพื่อสร้างคู่ของ คีย์ k-bit (เช่น สตริง): pki คีย์ "สาธารณะ" และสกีคีย์เซ็นชื่อ "ลับ" ที่ตรงกัน สิ่งสำคัญที่สุดคือ รหัสสาธารณะไม่ได้ "ทรยศ" รหัสลับที่เกี่ยวข้อง นั่นคือแม้จะได้รับความรู้เกี่ยวกับ pki แล้วก็ตาม อีกอย่างหนึ่งคือฉันสามารถคำนวณสกีได้ในเวลาน้อยกว่าทางดาราศาสตร์ ผู้ใช้ฉันใช้สกีเพื่อเซ็นข้อความแบบดิจิทัล สำหรับแต่ละข้อความที่เป็นไปได้ (สตริงไบนารี่) m อันดับแรก hashes m จากนั้นรันอัลกอริทึม S บนอินพุต H(m) และ ski เพื่อสร้างสตริง k-bit sigpki(m) \(\triangleq\)S(H(m), สกี) .3 3เนื่องจาก H ทนทานต่อการชน จึงเป็นไปไม่ได้ในทางปฏิบัติที่การลงนาม m จะเป็นการ "ส่งสัญญาณ" ที่แตกต่างโดยไม่ได้ตั้งใจ ข้อความม'สตริงไบนารี่ sigpki(m) เรียกว่าลายเซ็นดิจิทัลของ i ของ m (สัมพันธ์กับ pki) และสามารถเป็น แสดงได้ง่ายยิ่งขึ้นด้วย sigi(m) เมื่อกุญแจสาธารณะ pki นั้นชัดเจนจากบริบท ทุกคนที่รู้จัก pki สามารถใช้มันเพื่อตรวจสอบลายเซ็นดิจิทัลที่สร้างโดย i โดยเฉพาะเปิด อินพุต (a) คีย์สาธารณะ pki ของผู้เล่น i, (b) ข้อความ m และ (c) สตริง s นั่นคือฉันถูกกล่าวหาว่า ลายเซ็นดิจิทัลของข้อความ m อัลกอริธึมการยืนยัน V จะส่งเอาต์พุต YES หรือ NO คุณสมบัติที่เราต้องการจากแผนลายเซ็นดิจิทัลคือ: 1. ลายเซ็นที่ถูกต้องตามกฎหมายจะได้รับการตรวจสอบเสมอ: ถ้า s = sigi(m) ดังนั้น V (pki, m, s) = Y ES; และ 2. ลายเซ็นดิจิทัลนั้นปลอมแปลงได้ยาก: หากปราศจากความรู้เรื่องการเล่นสกีก็ถึงเวลาที่จะค้นหาสตริงเช่นนั้น V (pki, m, s) = Y ES สำหรับข้อความที่ m ไม่เคยลงนามโดย i นั้นยาวมาก (ตามข้อกำหนดด้านความปลอดภัยที่เข้มงวดของ Goldwasser, Micali และ Rivest [17] นี่เป็นเรื่องจริง แม้ว่าจะสามารถรับลายเซ็นของข้อความอื่นก็ตาม) ด้วยเหตุนี้ เพื่อป้องกันไม่ให้ใครก็ตามเซ็นข้อความในนามของเขา ผู้เล่นคนหนึ่งจะต้องรักษาเขาไว้ การลงนามความลับของสกีที่สำคัญ (ดังนั้นคำว่า "รหัสลับ") และเพื่อให้ทุกคนสามารถตรวจสอบข้อความได้ เขาลงนาม ฉันมีความสนใจในการเผยแพร่ pki คีย์ของเขา (เพราะฉะนั้นคำว่า "คีย์สาธารณะ") โดยทั่วไป ข้อความ m ไม่สามารถเรียกได้จากลายเซ็น sigi(m) เพื่อที่จะจัดการได้อย่างแท้จริง ด้วยลายเซ็นดิจิทัลที่ตอบสนองคุณสมบัติ "ความสามารถในการเรียกคืน" ที่สะดวกตามแนวคิด (เช่น ถึง รับประกันว่าผู้ลงนามและข้อความสามารถคำนวณได้อย่างง่ายดายจากลายเซ็น เรากำหนดไว้ SIGpki(ม.) = (i, m, sigpki(ม.)) และ SIGi(m) = (i, m, sigi(m)) ถ้า pki ชัดเจน การลงนามดิจิทัลที่ไม่ซ้ำใคร นอกจากนี้เรายังพิจารณารูปแบบลายเซ็นดิจิทัล (G, S, V ) ที่เป็นไปตามข้อกำหนด ดังต่อไปนี้ทรัพย์สินเพิ่มเติม 3. เอกลักษณ์ เป็นการยากที่จะหาสตริง pk′, m, s และ s′ เช่นนั้น ส ̸= ส′ และ V (pk′, m, s) = V (pk′, m, s′) = 1 (โปรดทราบว่าคุณสมบัติเฉพาะนั้นมีไว้สำหรับสตริง pk′ ที่ไม่ได้สร้างขึ้นอย่างถูกกฎหมายด้วย กุญแจสาธารณะ อย่างไรก็ตาม โดยเฉพาะอย่างยิ่ง คุณสมบัติเอกลักษณ์บ่งบอกว่า ถ้าใครใช้ ตัวสร้างคีย์ที่ระบุ G เพื่อคำนวณคีย์สาธารณะ pk พร้อมกับคีย์ลับที่ตรงกัน sk และด้วยเหตุนี้ เมื่อรู้จัก sk มันคงเป็นไปไม่ได้เลยที่เขาจะค้นพบดิจิทัลสองแบบที่แตกต่างกัน ลายเซ็นของข้อความเดียวกันที่เกี่ยวข้องกับ pk) หมายเหตุ • จากลายเซ็นเฉพาะไปจนถึงฟังก์ชันสุ่มที่ตรวจสอบได้ สัมพันธ์กับดิจิทัล รูปแบบลายเซ็นที่มีคุณสมบัติเฉพาะตัว การแมป m \(\to\) H(sigi(m)) เชื่อมโยงถึง แต่ละสตริง m ที่เป็นไปได้ สตริง 256 บิตที่ไม่ซ้ำใคร สุ่มเลือก และความถูกต้องของสิ่งนี้ การทำแผนที่สามารถพิสูจน์ได้ด้วยลายเซ็น sigi(m) นั่นคือ hashing ในอุดมคติและโครงร่างลายเซ็นดิจิทัลที่ตอบสนองคุณสมบัติที่เป็นเอกลักษณ์โดยพื้นฐานแล้ว จัดให้มีการใช้งานเบื้องต้นของฟังก์ชันสุ่มที่ตรวจสอบได้ ตามที่แนะนำและโดย มิกาลี ราบิน และวาดาน [27]. (การนำไปปฏิบัติดั้งเดิมนั้นจำเป็นต้องซับซ้อนกว่านี้ เนื่องจากพวกเขาไม่ได้พึ่งพาอุดมคติ hashing)• ความต้องการที่แตกต่างกันสามประการสำหรับลายเซ็นดิจิทัล ใน Algorand ผู้ใช้ที่ฉันพึ่งพาดิจิทัล ลายเซ็นสำหรับ (1) ตรวจสอบการชำระเงินของตัวเอง ในแอปพลิเคชันนี้ คีย์อาจเป็น "ระยะยาว" (เช่น ใช้เพื่อ ลงนามข้อความจำนวนมากในช่วงเวลานาน) และมาจากรูปแบบลายเซ็นทั่วไป (2) การสร้างข้อมูลรับรองเพื่อพิสูจน์ว่าฉันมีสิทธิ์ดำเนินการในบางขั้นตอนของรอบ r ที่นี่ คีย์อาจเป็นระยะยาวได้ แต่ต้องมาจากรูปแบบที่ตอบสนองคุณสมบัติที่เป็นเอกลักษณ์ (3) ตรวจสอบข้อความที่ฉันส่งในแต่ละขั้นตอนที่เขาดำเนินการ ที่นี่ต้องมีกุญแจ ชั่วคราว (เช่น ถูกทำลายหลังจากการใช้งานครั้งแรก) แต่อาจมาจากรูปแบบลายเซ็นธรรมดา • ลดความซับซ้อนด้วยต้นทุนเพียงเล็กน้อย เพื่อความเรียบง่าย เราจินตนาการว่าผู้ใช้แต่ละคน i จะมีคีย์ระยะยาวเพียงคีย์เดียว ดังนั้นคีย์ดังกล่าวจะต้องมาจากรูปแบบลายเซ็นที่มีเอกลักษณ์เฉพาะตัว ทรัพย์สิน ความเรียบง่ายดังกล่าวมีต้นทุนการคำนวณเพียงเล็กน้อย โดยทั่วไปแล้ว ในความเป็นจริงแล้ว ดิจิทัลที่มีเอกลักษณ์เฉพาะตัว ลายเซ็นมีราคาแพงกว่าเล็กน้อยในการผลิตและตรวจสอบมากกว่าลายเซ็นทั่วไป 2.2 บัญชีแยกประเภทสาธารณะในอุดมคติ Algorand พยายามเลียนแบบระบบการชำระเงินต่อไปนี้ โดยอิงตามบัญชีแยกประเภทสาธารณะในอุดมคติ 1. สถานะเริ่มต้น เงินมีความเกี่ยวข้องกับกุญแจสาธารณะส่วนบุคคล (สร้างขึ้นโดยส่วนตัวและ เป็นเจ้าของโดยผู้ใช้) ให้ pk1, . . . , pkj เป็นกุญแจสาธารณะเริ่มต้นและ a1, . . , aj ตามลำดับ จำนวนเงินเริ่มต้นของหน่วยเงิน จากนั้นสถานะเริ่มต้นคือ S0 = (พีเค 1, เอ 1), . . . , (pkj, aj) , ซึ่งถือเป็นความรู้ทั่วไปในระบบ 2. การชำระเงิน ให้ pk เป็นกุญแจสาธารณะในปัจจุบันที่มีหน่วยเงิน \(\geq\)0 และ pk′ สาธารณะอีกอันหนึ่ง คีย์ และ a′ เป็นจำนวนที่ไม่เป็นลบซึ่งไม่มากกว่า a จากนั้น การชำระเงิน (ถูกต้อง) \(\wp\) จะเป็นดิจิทัล ลายเซ็นสัมพันธ์กับ pk โดยระบุการโอน a′ หน่วยการเงินจาก pk ไปยัง pk′ พร้อมกัน พร้อมข้อมูลเพิ่มเติมบางอย่าง ในสัญลักษณ์ \(\wp\)= SIGpk(pk, pk′, a′, I, H(I)), โดยที่ฉันแสดงข้อมูลเพิ่มเติมใด ๆ ที่ถือว่ามีประโยชน์แต่ไม่ละเอียดอ่อน (เช่น เวลา ข้อมูลและตัวระบุการชำระเงิน) และฉันข้อมูลเพิ่มเติมใด ๆ ที่ถือว่าละเอียดอ่อน (เช่น เหตุผลในการชำระเงิน อาจเป็นข้อมูลประจำตัวของเจ้าของ pk และ pk′ เป็นต้น) เราเรียก pk (หรือเจ้าของ) ว่าเป็นผู้ชำระเงิน โดยเรียก pk′ (หรือเจ้าของ) แต่ละรายว่าเป็นผู้รับเงิน และ a′ เป็น จำนวนเงินที่ชำระ \(\wp\) เข้าร่วมฟรีผ่านการชำระเงิน โปรดทราบว่าผู้ใช้สามารถเข้าร่วมระบบได้ทุกเมื่อที่ต้องการ สร้างคู่คีย์สาธารณะ/คีย์ลับของตนเอง ดังนั้นรหัสสาธารณะ pk′ ที่ปรากฏใน การชำระเงิน\(\wp\)ด้านบนอาจเป็นรหัสสาธารณะที่สร้างขึ้นใหม่ซึ่งไม่เคย "เป็นเจ้าของ" เงินใดๆ ก่อน 3. บัญชีแยกประเภทเวทย์มนตร์ ในระบบอุดมคติ การชำระเงินทั้งหมดถูกต้องและปรากฏอยู่ในหลักฐานการงัดแงะ รายการ L ชุดการชำระเงิน “โพสต์บนท้องฟ้า” ให้ทุกคนเห็น: L = จ่าย 1, จ่าย 2, . . . ,แต่ละบล็อก PAY r+1 ประกอบด้วยชุดการชำระเงินทั้งหมดที่ทำตั้งแต่การปรากฏตัวของบล็อก จ่ายอาร์ ในระบบอุดมคติ บล็อกใหม่จะปรากฏขึ้นหลังจากระยะเวลาที่กำหนด (หรือจำกัด) การอภิปราย. • การชำระเงินทั่วไปเพิ่มเติมและธุรกรรมที่ยังไม่ได้ใช้ โดยทั่วไปถ้าเป็นกุญแจสาธารณะ pk เป็นเจ้าของจำนวนเงิน a ดังนั้นการชำระเงินที่ถูกต้อง \(\wp\)ของ pk อาจโอนจำนวนเงิน a′ 1, อ' 2, . . ., ตามลำดับกับคีย์ pk′ 1, พีเค' 2, . . . ตราบใดที่ P เจ' เจ \(\leq\)a ใน Bitcoin และระบบที่คล้ายกัน เงินที่เป็นของกุญแจสาธารณะ pk จะถูกแยกออกเป็นสองส่วน จำนวนเงินและการชำระเงิน\(\wp\)ที่ทำโดย pk จะต้องโอนจำนวนเงินที่แยกออกมาดังกล่าว a ทั้งหมด หาก pk ต้องการถ่ายโอนเพียงเศษส่วน a′ < a ของ a ไปยังคีย์อื่น ก็จะต้องถ่ายโอน the ด้วย ยอดคงเหลือ, เอาต์พุตธุรกรรมที่ยังไม่ได้ใช้, ไปยังคีย์อื่น, อาจเป็น pk เอง Algorand ยังใช้งานได้กับคีย์ที่มีจำนวนแยกกัน อย่างไรก็ตามเพื่อที่จะให้ความสำคัญกับการ แง่มุมใหม่ๆ ของ Algorand ตามแนวคิดแล้ว ง่ายกว่าที่จะยึดติดกับรูปแบบการชำระเงินที่ง่ายกว่าของเรา และกุญแจที่มีจำนวนเดียวที่เกี่ยวข้องกัน • สถานะปัจจุบัน โครงการอุดมคติไม่ได้ให้ข้อมูลเกี่ยวกับปัจจุบันโดยตรง สถานะของระบบ (เช่น เกี่ยวกับจำนวนหน่วยเงินที่คีย์สาธารณะแต่ละคีย์มี) ข้อมูลนี้ สามารถสรุปได้จาก Magic Ledger ในระบบอุดมคติ ผู้ใช้ที่ใช้งานอยู่จะจัดเก็บและอัปเดตข้อมูลสถานะล่าสุดอย่างต่อเนื่อง หรือมิฉะนั้นเขาจะต้องสร้างมันขึ้นมาใหม่ ไม่ว่าจะตั้งแต่เริ่มต้นหรือจากครั้งสุดท้ายที่เขา คำนวณมัน (ในเวอร์ชันถัดไปของบทความนี้ เราจะเพิ่ม Algorand เพื่อเปิดใช้งาน ผู้ใช้เพื่อสร้างสถานะปัจจุบันใหม่อย่างมีประสิทธิภาพ) • ความปลอดภัยและ “ความเป็นส่วนตัว” ลายเซ็นดิจิทัลรับประกันว่าจะไม่มีใครสามารถปลอมแปลงการชำระเงินได้ ผู้ใช้รายอื่น ในการชำระเงิน \(\wp\) กุญแจสาธารณะและจำนวนเงินจะไม่ถูกซ่อน แต่เป็นความลับ ข้อมูลฉันเป็น อันที่จริง มีเพียง H(I) เท่านั้นที่ปรากฏใน \(\wp\) และเนื่องจาก H เป็นฟังก์ชัน hash ในอุดมคติ ดังนั้น H(I) เป็นค่าสุ่ม 256 บิต ดังนั้นจึงไม่มีทางที่จะรู้ว่าอะไรดีกว่าฉัน แค่เดาเท่านั้น แต่เพื่อพิสูจน์ว่าฉันเป็นใคร (เช่น เพื่อพิสูจน์เหตุผลในการชำระเงิน) ผู้ชำระเงินอาจเพียงเปิดเผย I ความถูกต้องของข้อมูลที่เปิดเผยสามารถตรวจสอบได้โดยการคำนวณ H(I) และเปรียบเทียบค่าผลลัพธ์กับรายการสุดท้ายของ \(\wp\) อันที่จริง เนื่องจาก H มีความยืดหยุ่นในการชนกัน เป็นการยากที่จะหาค่าที่สอง I′ โดยที่ H(I) = H(I′) 2.3 แนวคิดพื้นฐานและสัญลักษณ์ คีย์ ผู้ใช้ และเจ้าของ คีย์สาธารณะแต่ละคีย์ ("คีย์" เรียกสั้น ๆ ) คีย์สาธารณะแต่ละคีย์จะมีระยะยาวและสัมพันธ์กับรูปแบบลายเซ็นดิจิทัลที่มีคุณสมบัติเฉพาะตัว เว้นแต่จะระบุไว้เป็นอย่างอื่น รหัสสาธารณะที่ฉันเข้าร่วม ระบบเมื่อมีคีย์สาธารณะ j อื่นอยู่แล้วในระบบชำระเงินให้กับ i สำหรับสี เรากำหนดลักษณะเฉพาะของกุญแจ เราเรียกคีย์ i ว่า "เขา" บอกว่าฉันซื่อสัตย์ที่ฉันส่งไป และรับข้อความ ฯลฯ User เป็นคำพ้องความหมายสำหรับคีย์ เมื่อเราต้องการแยกแยะคีย์จาก บุคคลที่เป็นเจ้าของ เราใช้คำว่า "กุญแจดิจิทัล" และ "เจ้าของ" ตามลำดับ ระบบที่ไม่ได้รับอนุญาตและได้รับอนุญาต ระบบไม่ได้รับอนุญาตหากกุญแจดิจิทัลว่าง เพื่อเข้าร่วมได้ตลอดเวลาและเจ้าของสามารถเป็นเจ้าของกุญแจดิจิทัลได้หลายอัน และได้รับอนุญาตเป็นอย่างอื่นการนำเสนอที่ไม่ซ้ำใคร แต่ละอ็อบเจ็กต์ใน Algorand มีการแสดงที่เป็นเอกลักษณ์ โดยเฉพาะอย่างยิ่ง แต่ละเซต {(x, y, z, . . .) : x \(\in\)X, y \(\in\)Y, z \(\in\)Z, . . .} ถูกเรียงลำดับในลักษณะที่กำหนดไว้ล่วงหน้า: เช่น อันดับแรก พจนานุกรมใน x จากนั้นใน y เป็นต้น นาฬิกาความเร็วเดียวกัน ไม่มีนาฬิกาทั่วโลก แต่ผู้ใช้แต่ละคนมีนาฬิกาของตัวเอง นาฬิกาของผู้ใช้ ไม่จำเป็นต้องซิงโครไนซ์แต่อย่างใด อย่างไรก็ตาม เราถือว่าพวกมันทั้งหมดมีความเร็วเท่ากัน ตัวอย่างเช่น เมื่อเป็นเวลา 12.00 น. ตามนาฬิกาของผู้ใช้ i อาจเป็น 14.30 น. ตามเวลา นาฬิกาของผู้ใช้อื่น j แต่เมื่อเป็น 12:01 ตามนาฬิกาของฉันจะเป็น 2:31 ตาม ไปที่นาฬิกาของเจ นั่นคือ “หนึ่งนาทีจะเท่ากัน (โดยพื้นฐานแล้วเหมือนกัน) สำหรับผู้ใช้ทุกคน” รอบ Algorand ถูกจัดเรียงเป็นหน่วยทางลอจิคัล r = 0, 1, . ., เรียกว่ารอบ. เราใช้ตัวยกเพื่อระบุรอบอย่างสม่ำเสมอ เพื่อระบุว่าปริมาณที่ไม่ใช่ตัวเลข Q (เช่น สตริง คีย์สาธารณะ ชุด ลายเซ็นดิจิทัล ฯลฯ) หมายถึงรอบ r เราเพียงแค่เขียน Qr เฉพาะเมื่อ Q เป็นตัวเลขแท้ (ตรงข้ามกับสตริงไบนารี่ที่สามารถตีความได้ว่าเป็นตัวเลข) ให้ทำ เราเขียน Q(r) ดังนั้นสัญลักษณ์ r จึงไม่สามารถตีความได้ว่าเป็นเลขชี้กำลังของ Q ที่ (จุดเริ่มต้นของ a) รอบ r > 0 ชุดของกุญแจสาธารณะทั้งหมดคือ PKr และสถานะของระบบคือ ซีเนียร์ = n ฉัน เป็น(r) ฉัน , . . . : ฉัน \(\in\)PKro , ที่ไหน (r) ฉัน คือจำนวนเงินที่มีให้กับกุญแจสาธารณะ i โปรดทราบว่า PKr สามารถอนุมานได้จาก Sr และ Sr นั้นอาจระบุส่วนประกอบอื่น ๆ สำหรับกุญแจสาธารณะแต่ละตัว i สำหรับรอบ 0 PK0 คือชุดของคีย์สาธารณะเริ่มต้น และ S0 คือสถานะเริ่มต้น ทั้ง PK0 และ S0 ถือเป็นความรู้ทั่วไปในระบบ เพื่อความง่าย เมื่อเริ่มรอบ r ดังนั้น คือ PK1, . . . , PKr และ S1, . . . , ซีเนียร์ ในรอบ r สถานะของระบบจะเปลี่ยนจาก Sr เป็น Sr+1: ในเชิงสัญลักษณ์ รอบ r: Sr −→Sr+1 การชำระเงิน ใน Algorand ผู้ใช้ชำระเงินอย่างต่อเนื่อง (และเผยแพร่ในลักษณะดังกล่าว) อธิบายไว้ในหัวข้อย่อย 2.7) การชำระเงิน \(\wp\) ของผู้ใช้ i \(\in\)PKr มีรูปแบบและความหมายเหมือนกัน เช่นเดียวกับในระบบอุดมคติ กล่าวคือ \(\wp\)= SIGi(i, i′, a, I, H(I)) . การชำระเงิน \(\wp\) ใช้ได้เป็นรายบุคคลในรอบ r (เป็นการชำระแบบรอบ r หรือเรียกสั้น ๆ ) หาก (1) จำนวนเงิน a น้อยกว่าหรือเท่ากับ a(r) i และ (2) ไม่ปรากฏในชุดการจ่ายเงินอย่างเป็นทางการใดๆ PAY r′ สำหรับ r′ < r (ตามที่อธิบายไว้ด้านล่าง เงื่อนไขที่สองหมายความว่า \(\wp\) ยังไม่มีผลบังคับใช้ ชุดการจ่ายแบบปัดเศษของ i จะมีผลรวมหากผลรวมของจำนวนเงินนั้นไม่เกิน a(r) ฉัน ชุดจ่ายเงิน ชุดการจ่ายเงินแบบ Round-r P คือชุดของการชำระเงินแบบ Round-r โดยที่การชำระเงินสำหรับผู้ใช้แต่ละราย i ของ i ใน P (อาจไม่มีเลย) ใช้ได้โดยรวม ชุดของการจ่ายเงินทุกรอบคือ PAY(r) รอบ-r payset P จะเป็นค่าสูงสุด หากไม่มี superset ของ P เป็น payset แบบปัดเศษ จริงๆ แล้ว เราแนะนำว่าการชำระเงิน \(\wp\)ยังระบุรอบ \(\rho\), \(\wp\)= SIGi(\(\rho\), i, i′, a, I, H(I)) , และไม่สามารถใช้ในรอบใดๆ ภายนอก [\(\rho\), \(\rho\) + k] สำหรับจำนวนเต็มคงที่ที่ไม่ใช่ลบ k.4 4วิธีนี้ทำให้การตรวจสอบง่ายขึ้นว่า \(\wp\) กลายเป็น "มีประสิทธิภาพ" หรือไม่ (เช่น ทำให้การพิจารณาว่าชุดจ่ายเงินบางชุดง่ายขึ้นหรือไม่ PAY r มี \(\wp\) เมื่อ k = 0 ถ้า \(\wp\)= SIGi(r, i, i′, a, I, H(I)) และ \(\wp\)/\(\in\)PAY r แล้วฉันต้องส่ง \(\wp\) ใหม่การจ่ายเงินอย่างเป็นทางการ สำหรับทุกรอบ r Algorand จะเลือกแบบสาธารณะ (ในลักษณะที่อธิบายไว้ในภายหลัง) ชุดจ่ายเงินเดียว (อาจว่างเปล่า), PAY r, ชุดจ่ายเงินอย่างเป็นทางการของรอบ (โดยพื้นฐานแล้ว PAY r แสดงถึง การชำระรอบที่ "เกิดขึ้นจริง" ) เช่นเดียวกับในระบบอุดมคติ (และ Bitcoin) (1) วิธีเดียวที่ผู้ใช้ใหม่ j จะเข้าสู่ระบบได้ คือการเป็นผู้รับการชำระเงินที่อยู่ในชุดการชำระเงินอย่างเป็นทางการ PAY r ของรอบที่กำหนด r; และ (2) PAY r กำหนดสถานะของรอบต่อไป Sr+1 จากรอบปัจจุบัน Sr ในเชิงสัญลักษณ์ จ่าย r : Sr −→Sr+1 โดยเฉพาะ 1. ชุดกุญแจสาธารณะของรอบ r + 1, PKr+1 ประกอบด้วยการรวมกันของ PKr และชุดของทั้งหมด รหัสผู้รับเงินที่ปรากฏเป็นครั้งแรกในการชำระเงิน PAY r; และ 2. จำนวนเงิน a(r+1) ฉัน ที่ผู้ใช้ที่ฉันเป็นเจ้าของในรอบ r + 1 คือผลรวมของ ai(r) —i.e. จำนวนเงินที่ฉันเป็นเจ้าของในรอบที่แล้ว (0 ถ้า i ̸\(\in\)PKr)— และผลรวมของจำนวนเงิน จ่ายให้กับฉันตามการชำระเงินของ PAY r โดยสรุป เช่นเดียวกับในระบบอุดมคติ แต่ละสถานะ Sr+1 สามารถหักจากประวัติการชำระเงินครั้งก่อนได้: จ่าย 0, . . . , จ่าย r. 2.4 บล็อกและบล็อกที่พิสูจน์แล้ว ใน Algorand0 บล็อก Br สอดคล้องกับรอบ r ระบุ: r ตัวมันเอง; ชุดการชำระเงินของ รอบ r, จ่าย r; ปริมาณ Qr ที่จะอธิบาย และ hash ของบล็อกก่อนหน้า H(Br−1) ดังนั้น เริ่มต้นจากบล็อกคงที่ B0 เรามี blockchain แบบเดิม: B1 = (1, จ่าย 1, Q0, H(B0)), B2 = (2, จ่าย 2, Q1, H(B1)), B3 = (3, จ่าย 3, Q2, H(B2)), . . . ใน Algorand ความถูกต้องของบล็อกนั้นได้รับการรับรองโดยข้อมูลที่แยกต่างหาก “ใบรับรองบล็อก” CERT r ซึ่งเปลี่ยน Br ให้เป็นบล็อกที่ได้รับการพิสูจน์แล้ว Br. ดังนั้นบัญชีแยกประเภทเวทย์มนตร์ ถูกนำมาใช้ตามลำดับของบล็อกที่พิสูจน์แล้ว บี1 บี2 . . . การอภิปราย ดังที่เราจะได้เห็น CERT r ประกอบด้วยชุดลายเซ็นดิจิทัลสำหรับ H(Br) ของ a สมาชิกส่วนใหญ่ของ SV r พร้อมด้วยหลักฐานว่าสมาชิกแต่ละคนเป็นสมาชิกจริงๆ ถึง SV อาร์ แน่นอนว่าเราสามารถรวมใบรับรอง CERT r ไว้ในบล็อกได้ แต่ก็พบว่า สะอาดยิ่งขึ้นเพื่อแยกมันออกจากกัน) ใน Bitcoin แต่ละบล็อกจะต้องเป็นไปตามคุณสมบัติพิเศษ กล่าวคือ ต้อง "ประกอบด้วยวิธีแก้ปัญหาของ crypto puzzle” ซึ่งทำให้การสร้างบล็อกมีความเข้มข้นในการคำนวณและทางแยกเป็นสิ่งที่หลีกเลี่ยงไม่ได้ และไม่หายาก ในทางตรงกันข้าม blockchain ของ Algorand มีข้อดีหลักสองประการ: มันถูกสร้างขึ้นด้วย การคำนวณขั้นต่ำ และจะไม่แยกความเป็นไปได้สูงอย่างท่วมท้น แต่ละบล็อกบินั้น สิ้นสุดอย่างปลอดภัยทันทีที่เข้าสู่ blockchain2.5 ความน่าจะเป็นของความล้มเหลวที่ยอมรับได้ เพื่อวิเคราะห์ความปลอดภัยของ Algorand เราระบุความน่าจะเป็น F ที่เรายินดี ยอมรับว่ามีบางอย่างผิดพลาด (เช่น ชุดผู้ตรวจสอบ SV r ไม่มีเสียงส่วนใหญ่ที่ซื่อสัตย์) เช่นเดียวกับในกรณีของความยาวเอาต์พุตของฟังก์ชันการเข้ารหัส hash H F ก็เป็นพารามิเตอร์เช่นกัน แต่ในกรณีนั้น เราพบว่าการตั้งค่า F ให้เป็นค่าที่เป็นรูปธรรมนั้นมีประโยชน์ เพื่อให้ได้สัญชาตญาณมากขึ้น เข้าใจถึงความจริงที่ว่าเป็นไปได้จริงใน Algorand ที่จะเพลิดเพลินกับการรักษาความปลอดภัยที่เพียงพอไปพร้อมๆ กัน และประสิทธิภาพที่เพียงพอ เพื่อเน้นย้ำว่า F เป็นพารามิเตอร์ที่สามารถตั้งค่าได้ตามต้องการในตอนแรก และรูปลักษณ์ที่สองที่เรากำหนดไว้ตามลำดับ ฉ = 10−12 และ ฉ = 10−18 . การอภิปราย โปรดทราบว่าจริงๆ แล้ว 10−12 นั้นน้อยกว่าหนึ่งในล้านล้าน และเราเชื่อว่า a การเลือก F นั้นเพียงพอในใบสมัครของเรา ให้เราเน้นว่า 10−12 ไม่ใช่ความน่าจะเป็น ซึ่งฝ่ายตรงข้ามสามารถปลอมแปลงการชำระเงินของผู้ใช้ที่ซื่อสัตย์ได้ การชำระเงินทั้งหมดเป็นแบบดิจิทัล ลงนาม ดังนั้น หากใช้ลายเซ็นดิจิทัลที่เหมาะสม ความน่าจะเป็นในการปลอมการชำระเงินก็คือ ต่ำกว่า 10−12 มาก และแท้จริงแล้วคือ 0 เหตุการณ์เลวร้ายที่เรายินดีจะยอมรับ ด้วยความน่าจะเป็น F คือทางแยกของ Algorand blockchain โปรดสังเกตว่า ด้วยการตั้งค่าของเราเป็น F และ รอบยาวหนึ่งนาที คาดว่าทางแยกจะเกิดขึ้นใน Algorand's blockchain ไม่บ่อยนัก (ประมาณ) หนึ่งครั้งใน 1.9 ล้านปี ในทางตรงกันข้าม ใน Bitcoin การ fork เกิดขึ้นค่อนข้างบ่อย คนที่มีความต้องการมากกว่าอาจตั้งค่า F ให้เป็นค่าที่ต่ำกว่า ด้วยเหตุนี้ ในรูปลักษณ์ที่สองของเรา เราพิจารณาตั้งค่า F เป็น 10−18 โปรดทราบว่า สมมติว่ามีการสร้างบล็อกทุกวินาที 1,018 คือจำนวนวินาทีโดยประมาณที่เอกภพทำได้ตั้งแต่บิกแบงจนถึงปัจจุบัน เวลา. ดังนั้น เมื่อ F = 10−18 ถ้าบล็อกถูกสร้างขึ้นในหนึ่งวินาที เราควรจะคาดหวังได้ว่าจะมีอายุเท่ากับ จักรวาลจะเห็นทางแยก 2.6 โมเดลปฏิปักษ์ Algorand ได้รับการออกแบบให้มีความปลอดภัยในรูปแบบที่ไม่เป็นมิตร ให้เราอธิบาย ผู้ใช้ที่ซื่อสัตย์และเป็นอันตราย ผู้ใช้จะซื่อสัตย์หากเขาปฏิบัติตามคำแนะนำโปรโตคอลทั้งหมดของเขาและ สามารถส่งและรับข้อความได้อย่างสมบูรณ์แบบ ผู้ใช้เป็นอันตราย (เช่น Byzantine ในไฟล์ คำพูดของการคำนวณแบบกระจาย) หากเขาสามารถเบี่ยงเบนไปจากคำสั่งที่เขากำหนดโดยพลการ ศัตรู ฝ่ายตรงข้ามเป็นอัลกอริธึมที่มีประสิทธิภาพ (ในทางเทคนิคพหุนาม-เวลา) ซึ่งสร้างขึ้นตามสี ซึ่งสามารถสร้างอันตรายให้กับผู้ใช้คนใดก็ตามที่เขาต้องการได้ทันที ในเวลาใดก็ได้ที่เขาต้องการ (หัวเรื่อง เฉพาะขอบเขตบนของจำนวนผู้ใช้ที่เขาสามารถคอร์รัปชั่นได้) Adversary ควบคุมและประสานงานผู้ใช้ที่เป็นอันตรายทั้งหมดได้อย่างสมบูรณ์แบบ เขาดำเนินการทั้งหมด ในนามของตนรวมทั้งรับและส่งข้อความของตนทั้งหมดและสามารถปล่อยให้เบี่ยงเบนไปจากได้ คำแนะนำที่กำหนดไว้โดยพลการ หรือเขาสามารถแยกการส่งผู้ใช้ที่เสียหายออกไปได้ และรับข้อความ ให้เราชี้แจงว่าไม่มีใครเรียนรู้โดยอัตโนมัติว่าผู้ใช้ที่ฉันเป็นอันตราย แม้ว่าความมุ่งร้ายของฉันอาจเกิดขึ้นได้จากการกระทำของปฏิปักษ์ที่ทำให้เขาทำ ศัตรูที่ทรงพลังนี้อย่างไรก็ตาม • ไม่มีพลังในการคำนวณที่ไม่จำกัด และไม่สามารถปลอมแปลงดิจิทัลได้สำเร็จ ลายเซ็นของผู้ใช้ที่ซื่อสัตย์ ยกเว้นความน่าจะเป็นเล็กน้อย และ• ไม่สามารถแทรกแซงการแลกเปลี่ยนข้อความระหว่างผู้ใช้ที่ซื่อสัตย์ในทางใดทางหนึ่ง นอกจากนี้ ความสามารถของเขาในการโจมตีผู้ใช้ที่ซื่อสัตย์นั้นถูกผูกไว้ด้วยสมมติฐานข้อใดข้อหนึ่งต่อไปนี้ เงินส่วนใหญ่ที่ซื่อสัตย์ เราพิจารณาความต่อเนื่องของ Honest Majority of Money (HMM) สมมติฐาน: กล่าวคือ สำหรับจำนวนเต็มที่ไม่ใช่ลบแต่ละตัว k และจำนวนจริง h > 1/2 HHMk > h: ผู้ใช้ที่ซื่อสัตย์ในทุกรอบ r เป็นเจ้าของเศษส่วนที่มากกว่า h ของเงินทั้งหมด ระบบที่รอบ r −k การอภิปราย. สมมติว่าผู้ใช้ที่เป็นอันตรายทั้งหมดประสานการกระทำของตนได้อย่างสมบูรณ์แบบ (ราวกับถูกควบคุม โดยเอนทิตีเดียวคือปฏิปักษ์) เป็นสมมติฐานที่ค่อนข้างมองโลกในแง่ร้าย การประสานงานที่สมบูรณ์แบบระหว่างกันด้วย บุคคลจำนวนมากเป็นเรื่องยากที่จะบรรลุเป้าหมาย บางทีการประสานงานอาจเกิดขึ้นเฉพาะภายในกลุ่มที่แยกจากกันเท่านั้น ของผู้เล่นตัวร้าย แต่เนื่องจากไม่มีใครแน่ใจเกี่ยวกับระดับการประสานงานของผู้ใช้ที่เป็นอันตราย อาจจะสนุกได้ เราควรปลอดภัยดีกว่าเสียใจ สมมติว่าฝ่ายตรงข้ามสามารถโจมตีผู้ใช้อย่างลับๆ ไดนามิก และเสียหายได้ทันทีเช่นกัน ในแง่ร้าย ท้ายที่สุดแล้ว ตามความเป็นจริงแล้ว การควบคุมการดำเนินงานของผู้ใช้อย่างสมบูรณ์ควรใช้เวลาสักระยะหนึ่ง สมมติฐาน HMMk > h บ่งบอกเป็นนัย เช่น หากมีการใช้รอบ (โดยเฉลี่ย) ภายในหนึ่งนาที เงินส่วนใหญ่ในรอบที่กำหนดจะยังคงอยู่ในมือของผู้ที่ซื่อสัตย์ อย่างน้อยสองชั่วโมง ถ้า k = 120 และอย่างน้อยหนึ่งสัปดาห์ ถ้า k = 10, 000 โปรดทราบว่าสมมติฐาน HMM และพลังการประมวลผลส่วนใหญ่ที่ซื่อสัตย์ก่อนหน้านี้ สมมติฐานมีความเกี่ยวข้องในแง่ที่ว่า เนื่องจากพลังการประมวลผลสามารถซื้อได้ด้วยเงิน หากผู้ใช้ที่เป็นอันตรายเป็นเจ้าของเงินส่วนใหญ่ พวกเขาก็จะสามารถรับพลังการประมวลผลส่วนใหญ่ได้ 2.7 รูปแบบการสื่อสาร เรามองเห็นการเผยแพร่ข้อความ —เช่น “การนินทาแบบเพื่อนต่อเพื่อน”5— เป็นเพียงวิธีเดียวในการ การสื่อสาร ข้อสันนิษฐานชั่วคราว: การส่งข้อความในเครือข่ายทั้งหมดอย่างทันท่วงที สำหรับ ส่วนใหญ่ของบทความนี้เราถือว่าข้อความที่เผยแพร่ทุกข้อความเข้าถึงผู้ใช้ที่ซื่อสัตย์เกือบทั้งหมด ในเวลาที่เหมาะสม เราจะลบสมมติฐานนี้ในมาตรา 10 ที่เราจัดการกับเครือข่าย พาร์ทิชันทั้งที่เกิดขึ้นตามธรรมชาติหรือถูกชักนำให้เกิดปฏิปักษ์ (ดังที่เราจะได้เห็นเราเพียงสันนิษฐานเท่านั้น การส่งข้อความภายในแต่ละองค์ประกอบที่เชื่อมต่อของเครือข่ายอย่างทันท่วงที) วิธีหนึ่งที่เป็นรูปธรรมในการจับภาพการส่งข้อความที่เผยแพร่อย่างทันท่วงที (ในเครือข่ายทั้งหมด) คือ ต่อไปนี้: สำหรับความสามารถในการเข้าถึงทั้งหมด \(\rho\) > 95% และขนาดข้อความ \(\mu\) \(\in\)Z+ จะมี \(\gamma\) \(\rho\),\(\mu\) อยู่เช่นนั้น ถ้าผู้ใช้จริงเผยแพร่ข้อความ \(\mu\)-ไบต์ m ณ เวลา t จากนั้น m ถึง ตามเวลา t + \(\gamma\) \(\rho\),\(\mu\) อย่างน้อยก็เศษส่วน \(\rho\) ของผู้ใช้ที่ซื่อสัตย์ 5โดยพื้นฐานแล้ว เช่นเดียวกับใน Bitcoin เมื่อผู้ใช้เผยแพร่ข้อความ m ผู้ใช้ที่ใช้งานอยู่ทุกคนที่ฉันได้รับ m เป็นครั้งแรก สุ่มและสุ่มเลือกผู้ใช้งานจำนวนน้อยที่เหมาะสมซึ่งเป็น "เพื่อนบ้าน" ของเขาซึ่งเขาส่งต่อให้ m อาจจะจนกว่าเขาจะได้รับการยอมรับจากพวกเขา การแพร่กระจายของ m สิ้นสุดลงเมื่อไม่มีผู้ใช้ได้รับ ม. เป็นครั้งแรกอย่างไรก็ตาม คุณสมบัติข้างต้นไม่สามารถรองรับโปรโตคอล Algorand ของเราได้ หากไม่มีการมองเห็นกลไกในการรับ blockchain ล่าสุดอย่างชัดเจนและแยกจากกัน — โดยผู้ใช้/คลังข้อมูล/อื่นๆ อื่น ในความเป็นจริง การสร้างบล็อกใหม่ Br ไม่เพียงแต่ชุดผู้ตรวจสอบที่เหมาะสมจะได้รับ Round-r ในเวลาที่เหมาะสมเท่านั้น ข้อความ แต่ยังรวมถึงข้อความของรอบที่แล้วด้วย เพื่อจะได้ทราบ Br−1 และข้อความอื่นๆ ทั้งหมดก่อนหน้านี้ บล็อกซึ่งจำเป็นในการพิจารณาว่าการชำระเงินใน Br นั้นถูกต้องหรือไม่ ต่อไปนี้ สมมติฐานกลับประสบผลสำเร็จ สมมติฐานการเผยแพร่ข้อความ (MP): สำหรับ \(\rho\) ทั้งหมด > 95% และ \(\mu\) \(\in\)Z+ จะมี \(\gamma\) \(\rho\),\(\mu\) อยู่ เช่นนั้นตลอดเวลา t และข้อความ \(\mu\)-byte ทั้งหมด m เผยแพร่โดยผู้ใช้ที่ซื่อสัตย์ก่อน t −\(\gamma\) \(\rho\),\(\mu\), m ได้รับตามเวลา t อย่างน้อยก็เศษส่วน \(\rho\) ของผู้ใช้ที่ซื่อสัตย์ โปรโตคอล Algorand ′ จริงๆ แล้วแนะนำผู้ใช้แต่ละรายในจำนวนเล็กน้อย (เช่น ผู้ตรวจสอบของ กำหนดขั้นตอนของรอบใน Algorand ′ เพื่อเผยแพร่ข้อความแยกต่างหากในขนาดที่กำหนด (เล็ก) และเราต้องจำกัดเวลาที่จำเป็นเพื่อปฏิบัติตามคำแนะนำเหล่านี้ เราทำเช่นนั้นโดยการเพิ่มคุณค่าให้กับ MP สมมติฐานดังต่อไปนี้ สำหรับทั้งหมด n, \(\rho\) > 95% และ \(\mu\) \(\in\)Z+ จะมี \(\lambda\)n,\(\rho\),\(\mu\) ในลักษณะที่ว่า สำหรับทุกเวลา t และ \(\mu\)-ไบต์ทั้งหมด ข้อความ m1, . . . , mn แต่ละรายการเผยแพร่โดยผู้ใช้ที่ซื่อสัตย์ก่อน t −\(\gamma\)n,\(\rho\),\(\mu\), m1, . . , ล้านที่ได้รับ ตามเวลา t อย่างน้อยก็เศษ \(\rho\) ของผู้ใช้ที่ซื่อสัตย์ หมายเหตุ • สมมติฐานข้างต้นจงใจเรียบง่าย แต่ยังแข็งแกร่งเกินความจำเป็นในรายงานของเรา6 • เพื่อความง่าย เราถือว่า \(\rho\) = 1 และเลิกกล่าวถึง \(\rho\) • เราสันนิษฐานในแง่ร้ายว่า หากเขาไม่ละเมิดสมมติฐานของ MP นั่นก็คือปฏิปักษ์ ควบคุมการส่งข้อความทั้งหมดโดยสิ้นเชิง โดยเฉพาะโดยไม่ถูกสังเกตจากคนซื่อสัตย์ ผู้ใช้ ฝ่ายตรงข้าม เขาสามารถตัดสินใจได้โดยพลการว่าผู้เล่นที่ซื่อสัตย์คนใดจะได้รับข้อความใดเมื่อใด และเร่งส่งข้อความใด ๆ ที่เขาต้องการโดยพลการ7
พิธีสาร BA ⋆ในการตั้งค่าแบบดั้งเดิม
ตามที่ได้เน้นย้ำไปแล้ว ข้อตกลงไบเซนไทน์เป็นองค์ประกอบสำคัญของ Algorand จริงอยู่ว่ามันผ่านไปแล้ว การใช้โปรโตคอล BA ที่ Algorand ไม่ได้รับอิทธิพลจากส้อม อย่างไรก็ตามเพื่อความปลอดภัยของเรา ฝ่ายตรงข้ามที่ทรงพลัง Algorand ต้องพึ่งพาโปรโตคอล BA ที่ตอบสนองความสามารถในการเปลี่ยนผู้เล่นใหม่ ข้อ จำกัด นอกจากนี้ เพื่อให้ Algorand มีประสิทธิภาพ โปรโตคอล BA ดังกล่าวจะต้องมีประสิทธิภาพอย่างมาก โปรโตคอล BA ถูกกำหนดครั้งแรกสำหรับรูปแบบการสื่อสารในอุดมคติ ซิงโครนัสสมบูรณ์ เครือข่าย (เครือข่าย SC) โมเดลดังกล่าวช่วยให้การออกแบบและการวิเคราะห์โปรโตคอล BA ง่ายขึ้น 6เมื่อพิจารณาจากเปอร์เซ็นต์ h ที่แท้จริงและความน่าจะเป็นความล้มเหลวที่ยอมรับได้ F, Algorand คำนวณขอบเขตบน, N, จนถึงจำนวนสมาชิกของผู้ตรวจสอบสูงสุดในขั้นตอนเดียว ดังนั้นสมมติฐานของ MP จำเป็นต้องคงไว้เพียง n \(\leq\)N เท่านั้น นอกจากนี้ตามที่ระบุไว้ ข้อสันนิษฐานของ MP ยังคงอยู่ไม่ว่าจะมีข้อความอื่น ๆ อีกกี่ข้อความที่สามารถเผยแพร่ควบคู่ไปกับก็ตาม เอ็มเจ ดังที่เราจะได้เห็นใน Algorand ข้อความที่ ได้รับการเผยแพร่ในเวลาที่ไม่ทับซ้อนกัน ช่วงเวลา ในระหว่างที่มีการแพร่กระจายบล็อกเดียวหรือผู้ตรวจสอบ N ส่วนใหญ่เผยแพร่ขนาดเล็ก (เช่น 200B) ข้อความ ดังนั้นเราจึงสามารถย้ำสมมติฐานของ MP ด้วยวิธีที่อ่อนแอกว่า แต่ก็ซับซ้อนกว่าเช่นกัน 7ตัวอย่างเช่น เขาสามารถเรียนรู้ข้อความที่ผู้เล่นซื่อสัตย์ส่งมาได้ทันที ดังนั้นผู้ใช้ที่เป็นอันตราย i′ ซึ่งเป็น ขอให้เผยแพร่ข้อความพร้อมกันกับผู้ใช้ที่ซื่อสัตย์ i สามารถเลือกข้อความของตัวเองได้ตลอดเวลา m′ ตาม ข้อความ m เผยแพร่จริงโดย i ความสามารถนี้เกี่ยวข้องกับการวิ่ง ในสำนวนของการคำนวณแบบกระจาย วรรณกรรมดังนั้น ในส่วนนี้ เราจึงแนะนำโปรโตคอล BA ใหม่ BA⋆ สำหรับเครือข่าย SC และไม่สนใจ ปัญหาเรื่องการเปลี่ยนตัวผู้เล่นโดยสิ้นเชิง โปรโตคอล BA⋆เป็นการมีส่วนร่วมของค่าที่แยกจากกัน แท้จริงแล้ว มันเป็นโปรโตคอล BA เข้ารหัสที่มีประสิทธิภาพมากที่สุดสำหรับเครือข่าย SC ที่รู้จักกันจนถึงตอนนี้ หากต้องการใช้ภายในโปรโตคอล Algorand ของเรา เราจะแก้ไข BA⋆ เล็กน้อย เพื่อที่จะคำนึงถึงความแตกต่างของเรา รูปแบบการสื่อสารและบริบท แต่ต้องแน่ใจว่าในส่วน X เพื่อเน้นวิธีการใช้ BA⋆ ภายในโปรโตคอลจริงของเรา Algorand ′ เราเริ่มต้นด้วยการนึกถึงแบบจำลองที่BA⋆ดำเนินการและแนวคิดของข้อตกลงไบแซนไทน์ 3.1 เครือข่ายที่สมบูรณ์แบบซิงโครนัสและการจับคู่ฝ่ายตรงข้าม ในเครือข่าย SC มีนาฬิกาทั่วไป โดยทำเครื่องหมายที่แต่ละเวลารวม r = 1, 2, . . ในแต่ละช่วงเวลาให้คลิก r ผู้เล่นแต่ละคนที่ฉันจะส่งหนึ่งรายการพร้อมกันทันที ส่งข้อความถึงคุณ i,j (อาจเป็นข้อความว่างเปล่า) ถึงผู้เล่นแต่ละคน j รวมถึงตัวเขาเองด้วย นายแต่ละคน i,j ได้รับแล้ว ในเวลาคลิก r + 1 โดยผู้เล่น j พร้อมด้วยตัวตนของผู้ส่ง i อีกครั้งในโปรโตคอลการสื่อสาร ผู้เล่นจะต้องซื่อสัตย์หากเขาปฏิบัติตามคำสั่งทั้งหมดของเขา คำแนะนำและเป็นอันตรายอย่างอื่น ผู้เล่นที่เป็นอันตรายทั้งหมดได้รับการควบคุมอย่างสมบูรณ์และสมบูรณ์แบบ ประสานงานโดยฝ่ายตรงข้ามซึ่งโดยเฉพาะจะได้รับข้อความทั้งหมดที่จ่าหน้าถึงทันที ผู้เล่นที่เป็นอันตราย และเลือกข้อความที่พวกเขาส่ง ฝ่ายตรงข้ามสามารถสร้างอันตรายให้กับผู้ใช้ที่ซื่อสัตย์ที่เขาต้องการได้ทันทีเมื่อคลิกในเวลาคี่ เขาต้องการ ขึ้นอยู่กับขอบเขตบนที่เป็นไปได้เท่านั้นกับจำนวนผู้เล่นที่เป็นอันตราย นั่นคือ ฝ่ายตรงข้าม "ไม่สามารถรบกวนข้อความที่ส่งโดยผู้ใช้ที่ซื่อสัตย์ i" ซึ่งจะเป็นได้ จัดส่งตามปกติ ฝ่ายตรงข้ามมีความสามารถเพิ่มเติมในการมองเห็นได้ทันทีในแต่ละรอบคู่ ข้อความที่ผู้เล่นที่ซื่อสัตย์ในปัจจุบันส่งและใช้ข้อมูลนี้เพื่อเลือกทันที ข้อความที่ผู้เล่นที่เป็นอันตรายส่งพร้อมกันถูกทำเครื่องหมาย หมายเหตุ • อำนาจของฝ่ายตรงข้าม การตั้งค่าข้างต้นเป็นปฏิปักษ์อย่างมาก แท้จริงแล้วในข้อตกลงไบแซนไทน์ วรรณกรรม การตั้งค่าหลายอย่างมีความขัดแย้งน้อยกว่า อย่างไรก็ตาม มีการตั้งค่าฝ่ายตรงข้ามเพิ่มเติมบางประการ ยังได้รับการพิจารณาว่าฝ่ายตรงข้ามหลังจากเห็นข้อความที่ส่งมาจากผู้เล่นที่ซื่อสัตย์แล้ว ในเวลาที่กำหนดให้คลิก r มีความสามารถในการลบข้อความเหล่านี้ทั้งหมดออกจากเครือข่ายได้ทันที เสียหายฉันเลือกข้อความที่ฉันส่งที่เป็นอันตรายตอนนี้คลิก r และให้พวกเขา จัดส่งตามปกติ พลังที่จินตนาการไว้ของฝ่ายตรงข้ามตรงกับที่เขามีในสภาพแวดล้อมของเรา • สิ่งที่เป็นนามธรรมทางกายภาพ รูปแบบการสื่อสารที่จินตนาการไว้จะเป็นนามธรรมของแบบจำลองทางกายภาพมากขึ้น โดยที่ผู้เล่นแต่ละคู่ (i, j) เชื่อมโยงกันด้วยสายสื่อสารส่วนตัวที่แยกจากกัน li,j นั่นคือไม่มีใครสามารถแทรกแซงหรือรับข้อมูลเกี่ยวกับข้อความที่ส่งไปได้ ลี เจ วิธีเดียวที่ฝ่ายตรงข้ามจะสามารถเข้าถึง li,j ได้คือการทำให้ i หรือ j เสียหาย • ความเป็นส่วนตัวและการรับรองความถูกต้อง ในเครือข่าย SC รับประกันความเป็นส่วนตัวและการรับรองความถูกต้องของข้อความ โดยสมมติฐาน ในทางตรงกันข้าม ในเครือข่ายการสื่อสารของเราซึ่งมีการเผยแพร่ข้อความ จากเพียร์ทูเพียร์ การรับรองความถูกต้องรับประกันด้วยลายเซ็นดิจิทัล และไม่มีความเป็นส่วนตัว ดังนั้น เพื่อนำโปรโตคอล BA⋆ มาใช้กับการตั้งค่าของเรา แต่ละข้อความที่แลกเปลี่ยนควรมีการเซ็นชื่อแบบดิจิทัล (ระบุสถานะที่ถูกส่งต่อไป) โชคดีที่ระเบียบการบริติชแอร์เวย์ที่เรา พิจารณาใช้ใน Algorand ไม่ต้องการความเป็นส่วนตัวของข้อความ3.2 แนวคิดของข้อตกลงไบเซนไทน์ แนวคิดเรื่องข้อตกลงไบแซนไทน์ได้รับการเสนอโดย Pease Shostak และ Lamport [31] สำหรับ กรณีไบนารี นั่นคือเมื่อทุกค่าเริ่มต้นประกอบด้วยบิต อย่างไรก็ตาม ได้มีการขยายออกไปอย่างรวดเร็ว เป็นค่าเริ่มต้นตามอำเภอใจ (ดูการสำรวจของ Fischer [16] และ Chor และ Dwork [10].) โดย BA โปรโตคอล เราหมายถึงหนึ่งค่าที่กำหนดเอง คำจำกัดความ 3.1 ในเครือข่ายซิงโครนัส ให้ P เป็นโปรโตคอล n-player ซึ่งชุดผู้เล่นเป็นเรื่องธรรมดา ความรู้ในหมู่ผู้เล่น t จำนวนเต็มบวก โดยที่ n \(\geq\)2t + 1 เราบอกว่า P คือ an ค่าตามอำเภอใจ (ตามลำดับไบนารี่) (n, t) - โปรโตคอลข้อตกลงไบแซนไทน์ที่มีความสมบูรณ์ \(\sigma\) \(\in\) (0, 1) ถ้าสำหรับทุกชุดของค่า V ที่ไม่มีสัญลักษณ์พิเศษ \(\bot\) (ตามลำดับ สำหรับ V = {0, 1}) ใน การดำเนินการที่ผู้เล่นส่วนใหญ่เป็นอันตรายและผู้เล่นทุกคนที่ฉันเริ่มต้นด้วย ค่าเริ่มต้น vi \(\in\)V ผู้เล่นที่ซื่อสัตย์ทุกคน j หยุดด้วยความน่าจะเป็น 1 โดยส่งออกค่า outi \(\in\)V \(\cup\){\(\bot\)} เพื่อให้เป็นไปตามเงื่อนไขสองประการต่อไปนี้ด้วยความน่าจะเป็นอย่างน้อย \(\sigma\): 1. ข้อตกลง: มี \(\in\)V \(\cup\){\(\bot\)} อยู่ ซึ่ง outi = out สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน i 2. ความสม่ำเสมอ: ถ้าสำหรับค่าบางค่า v \(\in\)V , vi = v สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน แล้ว out = v เราเรียก out ว่าเป็นเอาต์พุตของ P และเรียก outi แต่ละรายการว่าเป็นเอาต์พุตของผู้เล่น 3.3 สัญกรณ์ BA # ในระเบียบการ BA ของเรา ผู้เล่นจะต้องนับจำนวนผู้เล่นที่ส่งข้อความถึงเขา ขั้นตอนที่กำหนด ดังนั้น สำหรับแต่ละค่าที่เป็นไปได้ v ที่อาจถูกส่งไป
ส
ฉัน(วี) (หรือเพียงแค่ #i(v) เมื่อ s ชัดเจน) คือจำนวนผู้เล่น j ที่ฉันได้รับ v ในขั้นตอน s จำได้ว่าผู้เล่นคนหนึ่งฉันได้รับข้อความหนึ่งข้อความจากผู้เล่นแต่ละคน j ถ้าเป็นจำนวน ผู้เล่นคือ n ดังนั้นสำหรับทุก i และ s, P วี #ส ผม(วี) = n. 3.4 ไบนารี BA Protocol BBA⋆ ในส่วนนี้เราจะนำเสนอโปรโตคอล BA ไบนารีใหม่ BBA⋆ ซึ่งอาศัยความซื่อสัตย์มากกว่า มากกว่าสองในสามของผู้เล่นและเร็วมาก ไม่ว่าผู้เล่นที่เป็นอันตรายจะทำอะไรก็ตาม การดำเนินการของลูปหลักแต่ละครั้งจะทำให้ผู้เล่นตกลงกับความน่าจะเป็น 1/3 ผู้เล่นแต่ละคนมีกุญแจสาธารณะของตนเองสำหรับรูปแบบลายเซ็นดิจิทัลที่สอดคล้องกับลายเซ็นที่เป็นเอกลักษณ์ ทรัพย์สิน เนื่องจากโปรโตคอลนี้มีวัตถุประสงค์เพื่อให้ทำงานบนเครือข่ายแบบซิงโครนัสที่สมบูรณ์ จึงไม่มี ต้องการผู้เล่นที่จะลงนามในข้อความของเขาแต่ละข้อความ ลายเซ็นดิจิทัลใช้เพื่อสร้างบิตสุ่มทั่วไปเพียงพอในขั้นตอนที่ 3 (ใน Algorand ลายเซ็นดิจิทัลจะใช้ในการตรวจสอบข้อความอื่นๆ ทั้งหมดเช่นกัน) โปรโตคอลต้องการการตั้งค่าขั้นต่ำ: สตริงสุ่มทั่วไป r โดยไม่ขึ้นกับผู้เล่น กุญแจ (ใน Algorand จริงๆ แล้ว r จะถูกแทนที่ด้วยปริมาณ Qr) Protocol BBA⋆เป็นการวนซ้ำ 3 ขั้นตอนที่ผู้เล่นแลกเปลี่ยนค่าบูลีนซ้ำ ๆ และ ผู้เล่นที่แตกต่างกันอาจออกจากวงนี้ในเวลาที่แตกต่างกัน ผู้เล่นที่ฉันออกจากวงนี้โดยการแพร่กระจาย ในบางขั้นตอน ไม่ว่าจะเป็นค่าพิเศษ 0∗ หรือค่าพิเศษ 1∗ ดังนั้นจึงแนะนำให้ผู้เล่นทุกคน “แกล้งทำเป็น” พวกเขาได้รับ 0 และ 1 จาก i ตามลำดับในขั้นตอนต่อๆ ไป (อีกนัยหนึ่งกล่าวว่า: สมมติว่าข้อความสุดท้ายที่ผู้เล่น j ได้รับจากผู้เล่นคนอื่น ฉันค่อนข้างจะ b แล้วในขั้นตอนใดก็ตาม โดยที่เขาไม่ได้รับข้อความใด ๆ จาก i, j ทำท่าเหมือนกับว่าฉันส่งบิตไปให้เขา b.) โปรโตคอลใช้ตัวนับ \(\gamma\) ซึ่งแสดงถึงจำนวนครั้งที่ดำเนินการวนซ้ำ 3 ขั้นตอน ที่จุดเริ่มต้นของ BBA⋆ \(\gamma\) = 0 (บางคนอาจคิดว่า \(\gamma\) เป็นตัวนับทั่วโลก แต่จริงๆ แล้วเพิ่มขึ้น โดยผู้เล่นแต่ละคนทุกครั้งที่มีการวนซ้ำ) มี n \(\geq\)3t + 1 โดยที่ t คือจำนวนผู้เล่นที่เป็นอันตรายสูงสุดที่เป็นไปได้ ไบนารี สตริง x ถูกระบุด้วยจำนวนเต็มที่มีการแทนค่าไบนารี่ (โดยมี 0 นำหน้าที่เป็นไปได้) คือ x; และ lsb(x) หมายถึงบิตที่มีนัยสำคัญน้อยที่สุดของ x พิธีสาร BBA⋆ (การสื่อสาร) ขั้นตอนที่ 1. [ขั้นตอน Coin-Fixed-To-0] ผู้เล่นแต่ละคนที่ฉันส่งไป 1.1 ถ้า #1 i (0) \(\geq\)2t + 1 จากนั้นฉันตั้งค่า bi = 0 ส่ง 0∗ เอาต์พุต outi = 0 และหยุด 1.2 ถ้า #1 i (1) \(\geq\)2t + 1 จากนั้น i ตั้งค่า bi = 1 1.3 อย่างอื่น ผมตั้งค่า bi = 0 (การสื่อสาร) ขั้นตอนที่ 2 [ขั้นตอน Coin-Fixed-To-1] ผู้เล่นแต่ละคนที่ฉันส่ง Bi 2.1 ถ้า #2 i (1) \(\geq\)2t + 1 จากนั้นฉันตั้งค่า bi = 1 ส่ง 1∗, เอาต์พุตออก = 1, และหยุด 2.2 ถ้า #2 i (0) \(\geq\)2t + 1 จากนั้นฉันตั้งค่า bi = 0 2.3 อย่างอื่น ผมกำหนด bi = 1 (การสื่อสาร) ขั้นตอนที่ 3 [ขั้นตอนการพลิกเหรียญอย่างแท้จริง] ผู้เล่นแต่ละคนที่ฉันส่ง bi และ SIGi(r, \(\gamma\)) 3.1 ถ้า #3 i (0) \(\geq\)2t + 1 จากนั้น i กำหนดให้ bi = 0 3.2 ถ้า #3 i (1) \(\geq\)2t + 1 จากนั้น i กำหนดให้ bi = 1 3.3 มิฉะนั้น ให้ Si = {j \(\in\)N ที่ส่งข้อความที่ถูกต้องให้ฉันในขั้นตอนที่ 3 } ฉันตั้งค่า bi = c \(\triangleq\)lsb(minj\(\in\)Si H(SIGi(r, \(\gamma\)))); เพิ่ม\(\gamma\)i 1; และกลับสู่ขั้นตอนที่ 1 ทฤษฎีบท 3.1 เมื่อใดก็ตามที่ n \(\geq\)3t + 1 BBA⋆เป็นโปรโตคอลไบนารี (n, t)-BA ที่มีความสมบูรณ์ 1 การพิสูจน์ทฤษฎีบท 3.1 ให้ไว้ใน [26] การปรับให้เข้ากับการตั้งค่าของเรา และความสามารถในการเปลี่ยนผู้เล่นได้ ทรัพย์สินเป็นเรื่องแปลกใหม่ หมายเหตุทางประวัติศาสตร์ โปรโตคอล BA ไบนารีที่น่าจะเป็นถูกเสนอครั้งแรกโดย Ben-Or ใน การตั้งค่าแบบอะซิงโครนัส [7] Protocol BBA⋆เป็นการดัดแปลงแบบใหม่ให้เข้ากับการตั้งค่าคีย์สาธารณะของเรา โปรโตคอล BA ไบนารีของ Feldman และ Micali [15] ระเบียบวิธีของพวกเขาเป็นสิ่งแรกที่ทำงานตามที่คาดหวัง จำนวนขั้นตอนคงที่ มันทำงานโดยให้ผู้เล่นใช้เหรียญทั่วไป แนวคิดที่เสนอโดย Rabin ซึ่งนำไปใช้ผ่านฝ่ายที่เชื่อถือได้ภายนอก [32]3.5 ฉันทามติแบบให้คะแนนและพิธีสาร GC ให้เราระลึกถึงคุณค่าตามอำเภอใจ แนวคิดฉันทามติที่อ่อนแอกว่าข้อตกลงไบเซนไทน์มาก คำจำกัดความ 3.2 ให้ P เป็นโปรโตคอลที่ชุดของผู้เล่นทุกคนเป็นความรู้ทั่วไปและแต่ละชุด ผู้เล่น โดยส่วนตัวแล้วฉันรู้ค่าเริ่มต้นโดยพลการ v′ ฉัน เราบอกว่า P เป็นโปรโตคอลฉันทามติแบบให้คะแนน (n, t) หากในทุกการดำเนินการที่มีผู้เล่น n คน ที่ ซึ่งส่วนใหญ่เป็นอันตราย ผู้เล่นที่ซื่อสัตย์ทุกคนฉันหยุดส่งออกคู่ระดับมูลค่า (vi, gi) โดยที่ gi \(\in\){0, 1, 2} เพื่อให้เป็นไปตามเงื่อนไขสามประการต่อไปนี้: 1. สำหรับผู้เล่นตัวจริงทุกคน i และ j |gi −gj| \(\leq\)1 2. สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน i และ j, gi, gj > 0 ⇒vi = vj 3. ถ้า v′ 1 = \(\cdots\) = วี′ n = v สำหรับค่า v บางส่วน จากนั้น vi = v และ gi = 2 สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน i หมายเหตุทางประวัติศาสตร์ แนวคิดของการให้คะแนนอย่างเป็นเอกฉันท์นั้นได้มาจากแนวคิดของการให้คะแนนอย่างเป็นเอกฉันท์ ออกอากาศ นำเสนอโดย Feldman และ Micali ใน [15] โดยการเสริมสร้างแนวคิดของสงครามครูเสด ตามที่แนะนำโดย Dolev [12] และปรับปรุงโดย Turpin และ Coan [33].8 ใน [15] ผู้เขียนยังได้จัดเตรียมโปรโตคอลการออกอากาศแบบให้คะแนน 3 ขั้นตอน (n, t) เกรดแคสต์ สำหรับ n \(\geq\)3t+1 พบโปรโตคอลการออกอากาศแบบให้คะแนนที่ซับซ้อนมากขึ้น (n, t) สำหรับ n > 2t+1 ในภายหลัง โดย แคทซ์ และคู [19]. GC โปรโตคอลสองขั้นตอนต่อไปนี้ประกอบด้วยสองขั้นตอนสุดท้ายของ gradecast ดังที่แสดงในของเรา สัญกรณ์ เพื่อเน้นย้ำข้อเท็จจริงนี้ และเพื่อให้ตรงกับขั้นตอนของโปรโตคอล Algorand ′ ของหัวข้อ 4.1 เรา ตั้งชื่อขั้นตอนที่ 2 และ 3 ของ GC ตามลำดับ พิธีสาร GC ขั้นตอนที่ 2 ผู้เล่นแต่ละคนที่ฉันส่ง v′ ฉันถึงผู้เล่นทุกคน ขั้นตอนที่ 3 ผู้เล่นแต่ละคนที่ฉันส่งสตริง x ให้กับผู้เล่นทุกคนถ้าหาก #2 ผม (x) \(\geq\)2t + 1 การกำหนดเอาท์พุท ผู้เล่นแต่ละคน i ส่งออกคู่ (vi, gi) ที่คำนวณดังนี้: • ถ้าสำหรับ x บางอัน #3 i (x) \(\geq\)2t + 1 จากนั้น vi = x และ gi = 2 • ถ้าสำหรับ x บางอัน #3 i (x) \(\geq\)t + 1 จากนั้น vi = x และ gi = 1 • อย่างอื่น vi = \(\bot\) และ gi = 0 ทฤษฎีบท 3.2 ถ้า n \(\geq\)3t + 1 ดังนั้น GC จะเป็นโปรโตคอลการออกอากาศแบบให้คะแนน (n, t) การพิสูจน์จะตามมาจากโปรโตคอล gradecast ใน [15] ทันที และละเว้นไว้ 9 8โดยพื้นฐานแล้ว ในโปรโตคอลการออกอากาศแบบแบ่งระดับ (ก) ข้อมูลของผู้เล่นทุกคนคืออัตลักษณ์ของผู้มีความโดดเด่น ผู้เล่น ผู้ส่ง ซึ่งมีค่า v เป็นอินพุตส่วนตัวเพิ่มเติม และ (b) เอาต์พุตต้องเป็นไปตามข้อกำหนด คุณสมบัติเดียวกัน 1 และ 2 ของคะแนนฉันทามติ บวกคุณสมบัติต่อไปนี้ 3′: หากผู้ส่งซื่อสัตย์ ดังนั้น vi = v และ gi = 2 สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน i 9แท้จริงแล้ว ในโปรโตคอลของพวกเขา ในขั้นตอนที่ 1 ผู้ส่งส่งมูลค่าส่วนตัวของเขาเอง v ไปยังผู้เล่นทุกคน และผู้เล่นแต่ละคนที่ฉันอนุญาต วี' ฉันประกอบด้วยมูลค่าที่เขาได้รับจริงจากผู้ส่งในขั้นตอนที่ 13.6 พิธีสาร BA⋆ ตอนนี้เราอธิบายโปรโตคอล BA มูลค่าตามอำเภอใจผ่านโปรโตคอล BA ไบนารี BBA⋆และ โปรโตคอลฉันทามติแบบให้คะแนน GC ด้านล่างนี้คือค่าเริ่มต้นของผู้เล่นแต่ละคน i คือ v′ ฉัน พิธีสารBA⋆ ขั้นตอนที่ 1 และ 2 ผู้เล่นแต่ละคนที่ฉันเรียกใช้งาน GC บนอินพุต v′ ฉัน เพื่อคำนวณคู่ (vi, gi) ขั้นตอนที่ 3, . . . ผู้เล่นแต่ละคนที่ฉันรัน BBA⋆—ด้วยอินพุตเริ่มต้น 0 ถ้า gi = 2 และ 1 มิฉะนั้น— ดังนั้น ในการคำนวณบิต outi การกำหนดเอาท์พุท ผู้เล่นแต่ละคน i ส่งออก vi ถ้า outi = 0 และ \(\bot\) มิฉะนั้น ทฤษฎีบท 3.3 เมื่อใดก็ตามที่ n \(\geq\)3t + 1 BA⋆เป็นโปรโตคอล (n, t)-BA ที่มีความสมบูรณ์ 1 หลักฐาน ก่อนอื่นเราพิสูจน์ความสม่ำเสมอ จากนั้นจึงตกลง หลักฐานความสม่ำเสมอ สมมติว่าสำหรับค่าบางค่า v \(\in\)V , v′ i = v จากนั้นตามคุณสมบัติ 3 ของ ฉันทามติอย่างให้คะแนน หลังจากการดำเนินการของ GC ผู้เล่นที่ซื่อสัตย์ทุกคนก็เอาท์พุต (v, 2) ดังนั้น 0 คือ บิตเริ่มต้นของผู้เล่นที่ซื่อสัตย์ทุกคนในตอนท้ายของการดำเนินการ BBA⋆ ดังนั้นตามข้อตกลง คุณสมบัติของข้อตกลงไบเซนไทน์ไบนารี เมื่อสิ้นสุดการดำเนินการของ BA⋆, outi = 0 สำหรับทุกความซื่อสัตย์ ผู้เล่น นี่หมายความว่าผลลัพธ์ของผู้เล่นที่ซื่อสัตย์แต่ละคน i ใน BA⋆is vi = v ✷ หลักฐานข้อตกลง เนื่องจาก BBA⋆เป็นโปรโตคอล BA แบบไบนารีเช่นกัน (A) outi = 1 สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน i หรือ (B) outi = 0 สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน i. ในกรณี A ผู้เล่นที่ซื่อสัตย์ทุกคนจะส่งออก \(\bot\) ใน BA⋆ และด้วยเหตุนี้ ข้อตกลงจึงถืออยู่ พิจารณากรณี B. In ในกรณีนี้ ในการดำเนินการ BBA⋆ บิตเริ่มต้นของผู้เล่นที่ซื่อสัตย์อย่างน้อยหนึ่งคน i จะเป็น 0 (อันที่จริง ถ้า บิตเริ่มต้นของผู้เล่นที่ซื่อสัตย์ทั้งหมดคือ 1 จากนั้นด้วยคุณสมบัติความสม่ำเสมอของ BBA⋆ เราจะได้ outj = 1 สำหรับทุก j.) ดังนั้น หลังจากดำเนินการ GC แล้ว i จะเอาท์พุตคู่ (v, 2) สำหรับบางค่า ค่า v ดังนั้น ตามคุณสมบัติ 1 ของคะแนนฉันทามติ gj > 0 สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน j ตามนั้น โดย คุณสมบัติ 2 ของคะแนนฉันทามติ vj = v สำหรับผู้เล่นที่ซื่อสัตย์ทุกคน j นี่ก็หมายความว่าในตอนท้ายของ BA⋆ ผู้เล่นที่ซื่อสัตย์ทุกคน j เอาท์พุต v ดังนั้นข้อตกลงจึงถือเป็นกรณี B ✷ เนื่องจากทั้งความสอดคล้องและข้อตกลงถือ BA⋆เป็นโปรโตคอล BA ที่มีมูลค่าตามอำเภอใจ หมายเหตุทางประวัติศาสตร์ เทอร์ปินและโคอันเป็นคนแรกที่แสดงให้เห็นว่า สำหรับ n \(\geq\)3t+1 ไบนารีใดๆ (n, t)-BA โปรโตคอลสามารถแปลงเป็นโปรโตคอลค่าใดก็ได้ (n, t) -BA การลดค่าตามอำเภอใจ ข้อตกลงไบเซนไทน์กับข้อตกลงไบเซนไทน์แบบไบนารีผ่านฉันทามติแบบให้คะแนนเป็นแบบแยกส่วนมากกว่าและ สะอาดยิ่งขึ้น และลดความยุ่งยากในการวิเคราะห์โปรโตคอล Algorand ของเรา Algorand ′ การสรุปBA⋆สำหรับใช้ใน Algorand Algorand ทำงานได้แม้ว่าการสื่อสารทั้งหมดจะผ่านก็ตาม นินทา อย่างไรก็ตามแม้จะนำเสนอในรูปแบบเครือข่ายการสื่อสารแบบดั้งเดิมและคุ้นเคยก็ตาม เพื่อให้การเปรียบเทียบที่ดีขึ้นกับงานศิลปะก่อนหน้าและความเข้าใจที่ง่ายขึ้น โปรโตคอล BA⋆works ในเครือข่ายซุบซิบด้วย ในความเป็นจริง ในรูปลักษณ์โดยละเอียดของเราของ Algorand เราจะนำเสนอมัน โดยตรงสำหรับเครือข่ายซุบซิบ นอกจากนี้เรายังจะชี้ให้เห็นว่าสิ่งนี้ทำให้สามารถเปลี่ยนผู้เล่นได้ คุณสมบัติที่มีความสำคัญสำหรับ Algorand ให้มีความปลอดภัยในรูปแบบที่เป็นปฏิปักษ์ที่คิดไว้
โปรโตคอลที่เปลี่ยนผู้เล่น BA ใด ๆ ที่ทำงานอยู่ในเครือข่ายการสื่อสารซุบซิบสามารถทำได้ ทำงานอย่างปลอดภัยภายในระบบ Algorand ที่สร้างสรรค์ โดยเฉพาะมิคาลีและไวกุนธนาธาน ได้ขยายขอบเขต BA⋆ ให้ทำงานอย่างมีประสิทธิภาพอย่างมากกับผู้เล่นที่ซื่อสัตย์ส่วนใหญ่ นั่น โปรโตคอลก็สามารถใช้ใน Algorand ได้เช่นกัน
สองรูปลักษณ์ของ Algorand
ตามที่กล่าวไว้แล้ว ในระดับที่สูงมาก รอบที่ Algorand จะดำเนินไปอย่างเหมาะสมดังนี้ ขั้นแรกให้สุ่ม ผู้ใช้ที่เลือกซึ่งเป็นผู้นำเสนอและหมุนเวียนบล็อกใหม่ (กระบวนการนี้รวมถึงในขั้นต้นด้วย เลือกผู้นำที่มีศักยภาพสักสองสามคน จากนั้นตรวจสอบให้แน่ใจว่าอย่างน้อยก็มีส่วนที่ดีของเวลา ก ผู้นำร่วมคนเดียวปรากฏตัวออกมา) ประการที่สอง คณะกรรมการผู้ใช้ที่ได้รับการสุ่มเลือกจะถูกเลือก และ บรรลุข้อตกลงไบแซนไทน์ในบล็อกที่ผู้นำเสนอ (กระบวนการนี้รวมถึงสิ่งนั้นด้วย แต่ละขั้นตอนของโปรโตคอล BA ดำเนินการโดยคณะกรรมการที่ได้รับการคัดเลือกแยกต่างหาก) บล็อกที่ตกลงกันไว้ จากนั้นจะมีการลงนามแบบดิจิทัลโดยเกณฑ์ที่กำหนด (TH) ของสมาชิกคณะกรรมการ ลายเซ็นดิจิทัลเหล่านี้ มีการหมุนเวียนเพื่อให้ทุกคนมั่นใจได้ว่าเป็นบล็อกใหม่ (ซึ่งรวมถึงการหมุนเวียนของ ข้อมูลรับรองของผู้ลงนาม และรับรองความถูกต้องเพียง hash ของบล็อกใหม่ เพื่อให้มั่นใจว่าทุกคน รับประกันว่าจะเรียนรู้บล็อก เมื่อ hash ถูกทำให้ชัดเจน) ในสองส่วนถัดไป เราจะนำเสนอสองรูปลักษณ์ของ Algorand, Algorand ′ 1 และ Algorand ′ 2, ที่ทำงานภายใต้สมมติฐานของผู้ใช้ส่วนใหญ่ที่ซื่อสัตย์ ในส่วนที่ 8 เราจะแสดงวิธีนำสิ่งเหล่านี้ไปใช้ รูปลักษณ์ที่จะทำงานภายใต้สมมติฐานที่ซื่อสัตย์โดยส่วนใหญ่ของเงิน Algorand ′ 1 เพียงจินตนาการว่า > 2/3 ของสมาชิกคณะกรรมการมีความซื่อสัตย์ นอกจากนี้ใน Algorand ′ 1 จำนวนขั้นตอนในการบรรลุข้อตกลงไบเซนไทน์ถูกจำกัดไว้ที่ระดับสูงพอสมควร จำนวน ดังนั้นข้อตกลงดังกล่าวจึงรับประกันว่าจะบรรลุข้อตกลงด้วยความน่าจะเป็นอย่างล้นหลามภายใน จำนวนขั้นตอนคงที่ (แต่อาจต้องใช้เวลานานกว่าขั้นตอนของ Algorand ′ 2). ใน กรณีระยะไกลที่ยังไม่บรรลุข้อตกลงในขั้นตอนสุดท้าย คณะกรรมการเห็นชอบด้วย บล็อกว่างซึ่งใช้ได้เสมอ Algorand ′ 2 คิดว่าจำนวนสมาชิกที่ซื่อสัตย์ในคณะกรรมการจะมีมากกว่าเสมอ หรือเท่ากับเกณฑ์คงที่ (ซึ่งรับประกันว่า อย่างน้อยก็มีความน่าจะเป็นอย่างท่วมท้น) 2/3 ของกรรมการมีความซื่อสัตย์) นอกจากนี้ Algorand ′ 2 อนุญาตให้มีข้อตกลงไบแซนไทน์ สามารถเข้าถึงได้ในจำนวนขั้นตอนที่กำหนดเอง (แต่อาจใช้เวลาน้อยกว่า Algorand ′ 1). เป็นเรื่องง่ายที่จะได้มาซึ่งแวเรียนต์จำนวนมากของรูปลักษณ์พื้นฐานเหล่านี้ โดยเฉพาะอย่างยิ่งมันเป็นเรื่องง่าย Algorand ′ 2 เพื่อแก้ไข Algorand ′ 1 เพื่อให้สามารถบรรลุข้อตกลงไบเซนไทน์ได้ตามอำเภอใจ จำนวนขั้นตอน ทั้งสองรูปลักษณ์มีแกนกลาง สัญลักษณ์ แนวคิด และพารามิเตอร์ร่วมกันดังต่อไปนี้ 4.1 แกนกลางทั่วไป วัตถุประสงค์ ตามหลักการแล้ว สำหรับแต่ละรอบ r Algorand จะเป็นไปตามคุณสมบัติต่อไปนี้: 1. ความถูกต้องสมบูรณ์แบบ ผู้ใช้ที่ซื่อสัตย์ทุกคนเห็นด้วยกับบล็อกเดียวกัน Br. 2. ความสมบูรณ์ 1. ด้วยความน่าจะเป็น 1 ชุดการจ่ายเงินของ Br, PAY r มีค่าสูงสุด 10 10เนื่องจากชุดการจ่ายเงินถูกกำหนดให้มีการชำระเงินที่ถูกต้อง และผู้ใช้ที่ซื่อสัตย์จะชำระเงินที่ถูกต้องเท่านั้น PAY r ประกอบด้วยการชำระเงิน "ค้างชำระในปัจจุบัน" ของผู้ใช้ที่ซื่อสัตย์ทั้งหมดแน่นอนว่าการรับประกันความถูกต้องสมบูรณ์แบบเพียงอย่างเดียวนั้นเป็นเรื่องเล็กน้อย ทุกคนมักจะเลือกสิ่งที่เป็นทางการเสมอ payset PAY r ให้ว่างเปล่า แต่ในกรณีนี้ระบบก็จะมีความสมบูรณ์เป็น 0 น่าเสียดาย การรับประกันทั้งความถูกต้องและครบถ้วนสมบูรณ์ 1 ไม่ใช่เรื่องง่ายเมื่อมีผู้ประสงค์ร้าย ผู้ใช้ Algorand จึงใช้วัตถุประสงค์ที่สมจริงยิ่งขึ้น อย่างไม่เป็นทางการ ให้ h แทนเปอร์เซ็นต์ ของผู้ใช้ที่มีความซื่อสัตย์ h > 2/3 เป้าหมายของ Algorand คือ รับประกันความน่าจะเป็นอย่างล้นหลาม ความถูกต้องสมบูรณ์แบบและครบถ้วนใกล้เคียงกับ h สิทธิพิเศษความถูกต้องเหนือความครบถ้วนดูเหมือนเป็นทางเลือกที่สมเหตุสมผล: การชำระเงินไม่ได้รับการประมวลผล รอบหนึ่งสามารถดำเนินการได้ในรอบถัดไป แต่ควรหลีกเลี่ยงทางแยกหากเป็นไปได้ ข้อตกลงนำไบแซนไทน์ สามารถรับประกันความถูกต้องสมบูรณ์แบบได้ดังนี้ ในช่วงเริ่มต้น ของรอบ r ผู้ใช้แต่ละคนที่ฉันสร้างบล็อกผู้สมัครของตัวเอง Br ฉัน จากนั้นผู้ใช้ทั้งหมดจะเข้าถึง Byzantine ข้อตกลงในหนึ่งกลุ่มผู้สมัคร ตามการแนะนำของเรา ต้องใช้ระเบียบวิธี BA ที่ใช้ ส่วนใหญ่ซื่อสัตย์ 2/3 และสามารถเปลี่ยนผู้เล่นได้ แต่ละขั้นตอนสามารถดำเนินการได้โดยกลุ่มเล็กๆ และ ชุดผู้ตรวจสอบที่เลือกแบบสุ่ม ซึ่งไม่มีตัวแปรภายในใด ๆ ร่วมกัน น่าเสียดายที่แนวทางนี้ไม่รับประกันความสมบูรณ์ ที่เป็นเช่นนี้เพราะว่าผู้สมัคร การบล็อกของผู้ใช้ที่ซื่อสัตย์มักจะมีความแตกต่างกันโดยสิ้นเชิง ดังนั้นในที่สุด การบล็อกที่ตกลงไว้อาจเป็นหนึ่งเดียวกับการจ่ายเงินที่ไม่สูงสุดเสมอ จริงๆแล้วมันอาจจะเป็นเสมอไป บล็อกว่าง B\(\varepsilon\) นั่นคือบล็อกที่ชุดการจ่ายเงินว่างเปล่า เป็นค่าเริ่มต้นอันว่างเปล่า Algorand ′ หลีกเลี่ยงปัญหาความสมบูรณ์นี้ดังนี้ ขั้นแรก มีการเลือกผู้นำสำหรับรอบ r, ër จากนั้น ër เผยแพร่บล็อกผู้สมัครของเขาเอง Br lr. ในที่สุดผู้ใช้ก็บรรลุข้อตกลงในบล็อก พวกเขาได้รับจาก ër จริงๆ เพราะทุกครั้งที่มีความซื่อสัตย์ความถูกต้องสมบูรณ์และความสมบูรณ์ 1 ถือทั้งคู่ Algorand ′ ทำให้แน่ใจได้ว่า ër ซื่อสัตย์กับความน่าจะเป็นที่ใกล้กับ h (เมื่อผู้นำเป็น เป็นอันตราย เราไม่สนใจว่าบล็อกที่ตกลงกันไว้นั้นเป็นบล็อคที่มีการจ่ายเงินว่างเปล่าหรือไม่ ท้ายที่สุดแล้ว ผู้นำที่ประสงค์ร้าย ër อาจเลือก Br ในทางที่มุ่งร้ายเสมอ ërเป็นบล็อกว่างแล้วบอกตามตรง เผยแพร่จึงบังคับให้ผู้ใช้ที่ซื่อสัตย์เห็นด้วยกับบล็อกว่าง) การคัดเลือกผู้นำ ใน Algorand บล็อก r อยู่ในรูปแบบ Br = (r, PAY r, Qr, H(Br−1) ดังที่ได้กล่าวไปแล้วในบทนำ ปริมาณ Qr−1 ได้รับการสร้างขึ้นอย่างระมัดระวังเพื่อที่จะเป็น โดยพื้นฐานแล้วไม่สามารถจัดการได้โดยศัตรูที่ทรงพลังมากของเรา (ต่อไปในส่วนนี้เราจะ ให้สัญชาตญาณว่าทำไมถึงเป็นเช่นนี้) เมื่อเริ่มต้นรอบ r ผู้ใช้ทุกคนจะทราบดี blockchain จนถึงตอนนี้ B0, . . . , Br−1 ซึ่งพวกเขาอนุมานชุดผู้ใช้ของทุกรอบก่อนหน้า: นั่น คือ PK1, . . . , PKr−1 ผู้นำที่มีศักยภาพของ Round r คือผู้ใช้ i เช่นนั้น .H ซิจี r, 1, Qr−1 \(\leq\)p ให้เราอธิบาย โปรดสังเกตว่า เนื่องจากปริมาณ Qr−1 เป็นส่วนหนึ่งของบล็อก Br−1 และปริมาณที่อยู่ข้างใต้ รูปแบบลายเซ็นเป็นไปตามคุณสมบัติที่เป็นเอกลักษณ์ SIGi r, 1, Qr−1 เป็นสตริงไบนารี่ที่ไม่ซ้ำใคร เกี่ยวข้องกับฉันและอาร์ ดังนั้น เนื่องจาก H เป็นการสุ่ม oracle, H ซิจี r, 1, Qr−1 เป็นการสุ่ม 256 บิต สตริงยาวที่เกี่ยวข้องกับ i และ r โดยเฉพาะ สัญลักษณ์ “” ด้านหน้าของ H ซิจี r, 1, Qr−1 คือ จุดทศนิยม (ในกรณีของเราคือไบนารี่) ดังนั้น ri \(\triangleq\).H ซิจี r, 1, Qr−1 คือการขยายตัวแบบไบนารีของ a ตัวเลขสุ่ม 256 บิตระหว่าง 0 ถึง 1 ที่เกี่ยวข้องกับ i และ r โดยเฉพาะ ดังนั้นความน่าจะเป็นนั้น ri น้อยกว่าหรือเท่ากับ p โดยพื้นฐานแล้วคือ p (กลไกการคัดเลือกผู้นำที่มีศักยภาพของเราคือ แรงบันดาลใจจากรูปแบบการชำระเงินแบบไมโครของ Micali และ Rivest [28].) ความน่าจะเป็น p ถูกเลือกเพื่อให้มีความน่าจะเป็นอย่างท่วมท้น (เช่น 1 −F) อย่างน้อยหนึ่งค่า ผู้ตรวจสอบที่มีศักยภาพมีความซื่อสัตย์ (หากข้อเท็จจริง เลือก p ให้เป็นความน่าจะเป็นที่น้อยที่สุด)โปรดทราบว่าเนื่องจากฉันเป็นเพียงคนเดียวที่สามารถคำนวณลายเซ็นของเขาเองได้ เขาคนเดียวจึงสามารถทำได้ ตรวจสอบว่าเขาเป็นผู้ตรวจสอบที่มีศักยภาพของรอบที่ 1 หรือไม่ อย่างไรก็ตาม ด้วยการเปิดเผยข้อมูลประจำตัวของเขาเอง ซิร ฉัน \(\triangleq\)SIGi r, 1, Qr−1 ฉันสามารถพิสูจน์ให้ทุกคนเห็นว่าเป็นผู้ตรวจสอบที่มีศักยภาพของรอบ r ผู้นำ ër ถูกกำหนดให้เป็นผู้นำที่มีศักยภาพซึ่งข้อมูลประจำตัว hashed น้อยกว่าที่ hashed หนังสือรับรองของผู้ที่มีศักยภาพเป็นผู้นำคนอื่นๆ ทั้งหมด j: นั่นคือ H(\(\sigma\)r,s มอร์ ) \(\leq\)H(\(\sigma\)r,s เจ) โปรดทราบว่า เนื่องจากผู้ประสงค์ร้าย ër อาจไม่เปิดเผยข้อมูลประจำตัวของเขา ผู้นำที่ถูกต้องของรอบ r อาจ ไม่เคยมีใครรู้ และนั่น ยกเว้นความสัมพันธ์ที่ไม่น่าจะเป็นไปได้ ër เป็นผู้นำเพียงคนเดียวของรอบ r ในที่สุดเราจะนำเสนอรายละเอียดสุดท้ายแต่สำคัญ: ผู้ใช้ที่ฉันสามารถเป็นผู้นำที่มีศักยภาพได้ (และด้วยเหตุนี้ ผู้นำ) ของรอบ r เฉพาะในกรณีที่เขาอยู่ในระบบอย่างน้อย k รอบ นี้รับประกัน การไม่สามารถจัดการได้ของ Qr และปริมาณ Q ในอนาคตทั้งหมด อันที่จริงแล้วหนึ่งในผู้นำที่มีศักยภาพ จะกำหนดคิวอาร์จริงๆ การเลือกผู้ตรวจสอบ แต่ละขั้นตอน s > 1 ของรอบ r จะถูกดำเนินการโดยชุดตรวจสอบขนาดเล็ก SV r,s อีกครั้ง แต่ละ veriifier i \(\in\)SV r,s จะถูกสุ่มเลือกจากผู้ใช้ที่อยู่ในระบบ k รอบ ก่อน r และอีกครั้งผ่านปริมาณพิเศษ Qr−1 โดยเฉพาะอย่างยิ่ง i \(\in\)PKr−k เป็นตัวยืนยันใน SV r,s ถ้า .H ซิจี r, s, Qr−1 \(\leq\)p′ . อีกครั้งหนึ่ง มีเพียงฉันเท่านั้นที่รู้ว่าเขาเป็นของ SV r,s หรือไม่ แต่ถ้าเป็นกรณีนี้ เขาพิสูจน์ได้โดย แสดงหนังสือรับรองของเขา \(\sigma\)r, s ฉัน \(\triangleq\)H(SIGi r, s, Qr−1 ). ผู้ตรวจสอบ i \(\in\)SV r,s ส่งข้อความ mr,s ฉัน ใน ขั้นตอนที่ s ของรอบ r และข้อความนี้รวมข้อมูลรับรอง \(\sigma\)r,s ของเขาด้วย ฉัน เพื่อที่จะเปิดใช้งานผู้ตรวจสอบ f ขั้นทำรังให้รู้ว่าคุณนาย ฉัน เป็นข้อความขั้นตอนที่ถูกต้องตามกฎหมาย ความน่าจะเป็น p′ ถูกเลือกเพื่อให้แน่ใจว่า ใน SV r,s ให้ #good เป็นจำนวนของ ผู้ใช้ที่ซื่อสัตย์และ #bad จำนวนผู้ใช้ที่เป็นอันตราย โดยมีความน่าจะเป็นอย่างล้นหลามดังต่อไปนี้ ถือสองเงื่อนไข สำหรับศูนย์รวม Algorand ′ 1: (1) #ดี > 2 \(\cdot\) #ไม่ดี และ (2) #ดี + 4 \(\cdot\) #ไม่ดี < 2n โดยที่ n คือจำนวนเชิงการนับที่คาดหวังของ SV r,s สำหรับศูนย์รวม Algorand ′ 2: (1) #ดี > ทและ (2) #ดี + 2#ไม่ดี < 2tH โดยที่ th เป็นเกณฑ์ที่กำหนด เงื่อนไขเหล่านี้บอกเป็นนัยว่า ด้วยความเป็นไปได้สูงพอสมควร (a) ในขั้นตอนสุดท้ายของ BA โปรโตคอล อย่างน้อยก็จะมีผู้เล่นที่ซื่อสัตย์จำนวนหนึ่งให้ลงนามแบบดิจิทัลในบล็อกใหม่ Br (b) เพียงหนึ่งบล็อกต่อรอบอาจมีจำนวนลายเซ็นที่จำเป็น และ (c) BA ที่ใช้ โปรโตคอลมี (ในแต่ละขั้นตอน) เสียงข้างมากที่ซื่อสัตย์ 2/3 ที่จำเป็น ชี้แจงการสร้างบล็อก ถ้าผู้นำ Round-r ër ซื่อสัตย์ บล็อกที่เกี่ยวข้อง อยู่ในรูปแบบ บร = r, จ่าย r, SIGLRr Qr−1 , เอช เบอร์−1 , โดยที่ payset PAY r มีค่าสูงสุด (โปรดจำไว้ว่าชุดการจ่ายเงินทั้งหมดมีผลใช้ได้โดยรวม) อย่างอื่น (เช่น ถ้า ër เป็นอันตราย) Br จะมีรูปแบบใดรูปแบบหนึ่งจากสองรูปแบบต่อไปนี้: บร = r, จ่าย r, SIgi คิวอาร์−1 , เอช เบอร์−1 และ บร = บร \(\varepsilon\) \(\triangleq\) r, \(\emptyset\), Qr−1, H เบอร์−1 .ในรูปแบบแรก PAY r คือชุดการจ่ายเงิน (สูงสุดที่ไม่จำเป็น) และอาจเป็น PAY r = \(\emptyset\); และฉันคือ ผู้นำที่มีศักยภาพของรอบ r (แต่ผมอาจไม่ใช่หัวหน้านะ เรื่องนี้อาจจะเกิดขึ้นได้ถ้าถ้า (หมอเก็บความลับข้อมูลประจำตัวของเขาไว้และไม่เปิดเผยตัวเอง) รูปแบบที่สองเกิดขึ้นเมื่อในการดำเนินการตามระเบียบการของ BA ผู้เล่นที่ซื่อสัตย์ทุกคน ส่งออกค่าเริ่มต้นซึ่งเป็นบล็อกว่าง Br \(\varepsilon\)ในใบสมัครของเรา (โดยนิยามแล้วเป็นไปได้. เอาต์พุตของโปรโตคอล BA จะมีค่าเริ่มต้น ซึ่งแสดงโดยทั่วไปด้วย \(\bot\) ดูหัวข้อ 3.2.) โปรดทราบว่าแม้ว่าชุดการจ่ายเงินจะว่างเปล่าในทั้งสองกรณี แต่ Br = r, \(\emptyset\), SIGI คิวอาร์−1 , เอช เบอร์−1 และบรา \(\varepsilon\) เป็นบล็อกที่แตกต่างกันทางวากยสัมพันธ์และเกิดขึ้นในสองสถานการณ์ที่แตกต่างกัน: ตามลำดับ “ทั้งหมด ดำเนินไปอย่างราบรื่นเพียงพอในการดำเนินการตามโปรโตคอล BA” และ “มีบางอย่างผิดพลาดใน โปรโตคอล BA และค่าเริ่มต้นคือเอาต์พุต” ตอนนี้ให้เราอธิบายอย่างสังหรณ์ใจว่าการสร้างบล็อก Br ดำเนินไปอย่างไรในรอบ r ของ Algorand ′ ในขั้นตอนแรก ผู้เล่นแต่ละคนที่มีสิทธิ์ นั่นคือ ผู้เล่นแต่ละคน i \(\in\)PKr−k ตรวจสอบว่าเขามีศักยภาพหรือไม่ ผู้นำ หากเป็นกรณีนี้ ฉันจะถูกขอให้ใช้การชำระเงินทั้งหมดที่เขาเห็นมาและ ปัจจุบัน blockchain, B0, . . . , Br−1 เพื่อแอบเตรียมชุดการชำระเงินสูงสุด PAY r ฉัน และอย่างลับๆ ประกอบบล็อกผู้สมัครของเขา Br = r จ่าย r ฉัน , SIGI คิวอาร์−1 , เอช เบอร์−1 . นั่นคือไม่เพียงแต่เขาเท่านั้น รวมไว้ใน Br i เป็นองค์ประกอบที่สองของชุดจ่ายเงินที่เพิ่งเตรียมไว้ แต่ยังเป็นองค์ประกอบที่สามด้วย ลายเซ็นของเขาเองของ Qr−1 ซึ่งเป็นองค์ประกอบที่สามของบล็อกสุดท้าย Br−1 ในที่สุดเขาก็เผยแพร่ของเขา ข้อความรอบ-r-ขั้นตอน-1 คุณ 1 ฉัน ซึ่งรวมถึง (ก) บล็อกผู้สมัครของเขา Br ฉัน , (b) ลายเซ็นที่ถูกต้องของเขา ของบล็อกผู้สมัครของเขา (เช่น ลายเซ็นของเขา hash ของ Br ฉัน และ (c) หนังสือรับรองของเขาเอง \(\sigma\)r,1 ฉัน, พิสูจน์ ว่าเขาเป็นผู้ตรวจสอบที่มีศักยภาพของรอบ r จริงๆ (โปรดทราบว่า จนกว่าฉันจะซื่อสัตย์ ฉันส่งข้อความถึงนาย 1) ฉัน ปฏิปักษ์ไม่มีเบาะแสว่าฉันเป็น ผู้ตรวจสอบศักยภาพ หากเขาต้องการจะทำให้ผู้นำที่ซื่อสัตย์เสื่อมเสีย ปฏิปักษ์ก็อาจทำได้เช่นกัน ผู้เล่นที่ซื่อสัตย์สุ่มทุจริต อย่างไรก็ตาม เมื่อเขาได้พบกับนาย 1 ฉัน เนื่องจากมีข้อมูลประจำตัวของฉัน ฝ่ายตรงข้ามรู้และอาจทุจริตได้ แต่ไม่สามารถป้องกันนายได้1 ฉัน ซึ่งมีการแพร่กระจายของไวรัสจาก เข้าถึงผู้ใช้งานทุกคนในระบบ) ในขั้นตอนที่สอง ผู้ตรวจสอบที่เลือกแต่ละคน j \(\in\)SV r,2 จะพยายามระบุผู้นำของรอบ โดยเฉพาะอย่างยิ่ง j ใช้ข้อมูลรับรองขั้นตอนที่ 1, \(\sigma\)r,1 i1 , . . . , \(\sigma\)r,1 ใน ซึ่งมีอยู่ในข้อความขั้นตอนที่ 1 ที่เหมาะสม mr,1 ฉัน เขาได้รับ; hashes ทั้งหมดนั่นคือคำนวณ H ซิร,1 i1 , . . . , เอช ซิร,1 ใน ; ค้นหาหนังสือรับรอง ซิร,1 ëj ซึ่ง hash เป็นคำศัพท์ขั้นต่ำ; และถือว่า LRr j เป็นผู้นำของรอบ r โปรดจำไว้ว่าข้อมูลประจำตัวที่พิจารณาแต่ละรายการนั้นเป็นลายเซ็นดิจิทัลของ Qr−1 ซึ่ง SIGi นั้น r, 1, Qr−1 คือ ถูกกำหนดโดยไม่ซ้ำกันโดย i และ Qr−1 ว่า H นั้นเป็นแบบสุ่ม oracle และด้วยเหตุนี้ แต่ละ H(SIGi r, 1, Qr−1 เป็นสตริงสุ่มแบบยาว 256 บิตที่ไม่ซ้ำกันสำหรับผู้นำที่มีศักยภาพ i แต่ละคนของรอบ r จากนี้เราสามารถสรุปได้ว่า ถ้าสตริง 256 บิต Qr−1 เป็นตัวของตัวเองแบบสุ่มและเป็นอิสระ เลือกไว้ ยิ่งกว่านั้นจะเป็นข้อมูลรับรอง hashed ของผู้นำที่มีศักยภาพทั้งหมดในรอบ r ในความเป็นจริงทั้งหมด ผู้ที่อาจเป็นผู้นำนั้นได้รับการกำหนดอย่างดี และข้อมูลประจำตัวของพวกเขาก็เช่นกัน (ไม่ว่าจะคำนวณจริงหรือ ไม่) นอกจากนี้ ชุดของผู้นำที่มีศักยภาพของรอบ r ยังเป็นสับเซตแบบสุ่มของผู้ใช้ของรอบ r −k และผู้นำที่มีศักยภาพที่ซื่อสัตย์ ฉันมักจะสร้างและเผยแพร่ข้อความของเขาอย่างเหมาะสมเสมอ ฉัน ซึ่งมีข้อมูลรับรองของฉัน ดังนั้น เนื่องจากเปอร์เซ็นต์ของผู้ใช้ที่ซื่อสัตย์คือ h ไม่ว่าจะอย่างไรก็ตาม ผู้ที่อาจเป็นผู้นำที่เป็นอันตรายอาจทำ (เช่น เปิดเผยหรือปกปิดข้อมูลประจำตัวของตนเอง) น้อยที่สุด hashed ข้อมูลรับรองที่มีศักยภาพในการเป็นผู้นำเป็นของผู้ใช้ที่ซื่อสัตย์ ซึ่งทุกคนจำเป็นต้องระบุตัวตน เพื่อเป็นผู้นำของรอบr ดังนั้น ถ้าสตริง 256 บิต Qr−1 เป็นตัวสุ่มและ เลือกอย่างอิสระ โดยมีความน่าจะเป็นอย่างแน่นอน h (a) ผู้นำ ër ซื่อสัตย์และ (b) ëj = ër สำหรับทุกคน ผู้ตรวจสอบขั้นตอนที่ 2 อย่างซื่อสัตย์ ในความเป็นจริง หนังสือรับรอง hashed ใช่ เป็นการสุ่มเลือก แต่ขึ้นอยู่กับ Qr−1 ซึ่งก็คือไม่ใช่การสุ่มและคัดเลือกอย่างอิสระ อย่างไรก็ตาม เราจะพิสูจน์ในการวิเคราะห์ของเราว่า Qr−1 เป็นเช่นนั้น ไม่สามารถจัดการได้อย่างเหมาะสมเพื่อรับประกันว่าผู้นำของรอบจะซื่อสัตย์กับความน่าจะเป็น h′ ใกล้เคียงกับ h มากพอ กล่าวคือ h′ > h2(1 + h −h2) ตัวอย่างเช่น ถ้า h = 80% แล้ว h′ > .7424 โดยระบุผู้นำของรอบแล้ว (ซึ่งจะทำอย่างถูกต้องเมื่อผู้นำ ër ซื่อสัตย์) งานของผู้ตรวจสอบขั้นตอนที่ 2 คือการเริ่มดำเนินการ BA โดยใช้ค่าเริ่มต้นในสิ่งที่พวกเขาเชื่อ เพื่อเป็นแกนนำของผู้นำ จริงๆ แล้ว เพื่อลดปริมาณการสื่อสารที่จำเป็นให้เหลือน้อยที่สุด ผู้ตรวจสอบ j \(\in\)SV r,2 ไม่ได้ใช้ เนื่องจากเป็นค่าอินพุต v′ j ไปยังโปรโตคอล Byzantine บล็อก Bj นั้น เขาได้รับจริงๆ จาก ëj (ผู้ใช้ j เชื่อว่าเป็นผู้นำ) แต่เป็นผู้นำ แต่ hash ของบล็อกนั้น นั่นคือ v′ เจ = H(บี) ดังนั้น เมื่อยกเลิกโปรโตคอล BA ผู้ตรวจสอบ ของขั้นตอนสุดท้ายไม่ได้คำนวณบล็อก round-r Br ที่ต้องการ แต่คำนวณ (authenticate and เผยแพร่) H(Br) ดังนั้น เนื่องจาก H(Br) ได้รับการลงนามแบบดิจิทัลโดยผู้ตรวจสอบจำนวนมากเพียงพอ ขั้นตอนสุดท้ายของโปรโตคอล BA ผู้ใช้ในระบบจะทราบว่า H(Br) คือ hash ของใหม่ บล็อก อย่างไรก็ตาม พวกเขายังต้องดึงข้อมูล (หรือรอ เนื่องจากการดำเนินการค่อนข้างไม่พร้อมกัน) บล็อก Br เอง ซึ่งโปรโตคอลทำให้มั่นใจได้ว่าจะพร้อมใช้งานจริง ไม่ว่าฝ่ายตรงข้ามจะเป็นอย่างไรก็ตาม อาจจะทำ ความไม่ตรงกันและการกำหนดเวลา Algorand ′ 1 และ Algorand ′ 2 มีระดับความไม่ตรงกันอย่างมีนัยสำคัญ ที่เป็นเช่นนี้เพราะปฏิปักษ์มีละติจูดมากในการจัดตารางเวลาการส่งข้อความ แพร่กระจาย นอกจากนี้ไม่ว่าจำนวนก้าวทั้งหมดในแต่ละรอบจะจำกัดหรือไม่ก็ตาม ความแปรปรวนมีส่วนช่วยตามจำนวนขั้นตอนที่ดำเนินการจริง ทันทีที่เขาเรียนรู้ใบรับรองของ B0 . . , Br−1 ผู้ใช้ที่ฉันคำนวณ Qr−1 และเริ่มทำงาน ในรอบ r ตรวจสอบว่าเขาเป็นผู้นำที่มีศักยภาพหรือเป็นผู้ตรวจสอบในบางขั้นตอนของรอบ r สมมติว่าฉันต้องดำเนินการในขั้นตอน s เนื่องจากความไม่ซิงโครนัสที่กล่าวถึง ฉันอาศัยปัจจัยต่างๆ กลยุทธ์เพื่อให้แน่ใจว่าเขามีข้อมูลที่เพียงพอก่อนดำเนินการ ตัวอย่างเช่น เขาอาจรอรับข้อความอย่างน้อยตามจำนวนที่กำหนดจากผู้ตรวจสอบ ขั้นที่แล้ว หรือรอสักระยะ เพื่อให้ได้รับข้อความอย่างเพียงพอ ผู้ตรวจสอบจำนวนมากของขั้นตอนก่อนหน้า Seed Qr และพารามิเตอร์ Look-Back k จำไว้ว่าตามหลักการแล้ว ปริมาณ Qr ควรจะเป็น สุ่มและเป็นอิสระ แม้ว่าพวกเขาจะไม่ถูกควบคุมโดย ฝ่ายตรงข้าม เมื่อมองแวบแรก เราสามารถเลือก Qr−1 ให้ตรงกับ H จ่าย r−1 และด้วยเหตุนี้จึงหลีกเลี่ยงที่จะ ระบุ Qr−1 อย่างชัดเจนใน Br−1 อย่างไรก็ตาม การวิเคราะห์เบื้องต้นเผยให้เห็นว่าผู้ใช้ที่เป็นอันตรายอาจทำได้ ใช้ประโยชน์จากกลไกการคัดเลือกนี้11 ความพยายามเพิ่มเติมบางอย่างแสดงให้เห็นว่ามีกลไกอื่นๆ มากมาย 11เราอยู่ที่จุดเริ่มต้นของรอบ r −1 ดังนั้น Qr−2 = PAY r−2 จึงเป็นที่รู้จักอย่างเปิดเผย และปฏิปักษ์เป็นการส่วนตัว รู้ว่าใครคือผู้นำที่มีศักยภาพที่เขาควบคุม สมมติว่าฝ่ายตรงข้ามควบคุมผู้ใช้ 10% และ ด้วยความน่าจะเป็นที่สูงมาก ผู้ใช้ที่เป็นอันตราย w เป็นผู้นำที่มีศักยภาพของรอบ r −1 นั่นก็คือ สมมุติว่า ฮ เอสไอจี r −2, 1, Qr−2 มีขนาดเล็กมากจนไม่น่าเป็นไปได้อย่างยิ่งที่ผู้นำที่ซื่อสัตย์จะเป็นเช่นนั้นจริงๆ ผู้นำของรอบ r −1 (โปรดจำไว้ว่า เนื่องจากเราเลือกผู้นำที่มีศักยภาพผ่านกลไกการเรียงลำดับการเข้ารหัสลับ ปฏิปักษ์ไม่รู้ว่าใครเป็นผู้นำที่ซื่อสัตย์) ปฏิปักษ์จึงอยู่ในที่น่าอิจฉา ตำแหน่งในการเลือกชุดการจ่ายเงิน PAY ′ ที่เขาต้องการ และให้กลายเป็นชุดการจ่ายเงินอย่างเป็นทางการของรอบ r −1 อย่างไรก็ตาม เขาสามารถทำได้มากกว่านี้ เขายังสามารถมั่นใจได้ว่า มีความเป็นไปได้สูงที่ () ผู้ใช้ที่เป็นอันตรายรายหนึ่งของเขาจะเป็นผู้นำ ของรอบ r ด้วย เพื่อให้เขาสามารถเลือกได้ว่า PAY r จะเป็นอย่างไร (และอื่นๆ อย่างน้อยก็เป็นเวลานานๆ นั่นก็คือ ตราบใดที่เหตุการณ์ความน่าจะเป็นสูงเหล่านี้เกิดขึ้นจริง) เพื่อรับประกัน () ฝ่ายตรงข้ามจะดำเนินการดังต่อไปนี้ ให้จ่าย ′ เป็นค่าตอบแทนที่ฝ่ายตรงข้ามชอบสำหรับรอบ r −1 จากนั้น เขาจะคำนวณ H(PAY ′) และตรวจสอบว่าสำหรับบางส่วนหรือไม่ ผู้เล่นที่เป็นอันตรายอยู่แล้ว z, SIGz(r, 1, H(PAY ′)) มีขนาดเล็กเป็นพิเศษ นั่นคือ เล็กพอที่จะมีค่าสูงมาก ความน่าจะเป็น z จะเป็นผู้นำของรอบ r หากเป็นกรณีนี้ เขาสั่งให้ w เลือกกลุ่มผู้สมัครของเขาที่จะเป็นทางเลือกอื่นซึ่งขึ้นอยู่กับปริมาณบล็อกแบบดั้งเดิมนั้นฝ่ายตรงข้ามสามารถหาประโยชน์ได้อย่างง่ายดายเพื่อให้มั่นใจ ที่ผู้นำใจร้ายมีบ่อยมาก เรากลับกำหนดแบรนด์ของเราอย่างเจาะจงและจูงใจแทน ปริมาณใหม่ Qr เพื่อที่จะสามารถพิสูจน์ได้ว่าฝ่ายตรงข้ามไม่สามารถจัดการได้ กล่าวคือ Qr \(\triangleq\)H(SIGër(Qr−1), r) ถ้า Br ไม่ใช่บล็อกว่าง และ Qr \(\triangleq\)H(Qr−1, r) มิฉะนั้น สัญชาตญาณว่าทำไมการก่อสร้างงาน Qr จึงมีดังต่อไปนี้ สมมติสักครู่ว่า Qr−1 ถูกเลือกแบบสุ่มและเป็นอิสระอย่างแท้จริง แล้วจะเป็น Qr ไหม? เมื่อ LRr ซื่อสัตย์ คำตอบคือ (พูดประมาณ) ใช่ ที่เป็นเช่นนี้ก็เพราะว่า H(SIGLRr( \(\cdot\) ), r) : {0, 1}256 −→{0, 1}256 เป็นฟังก์ชันสุ่ม อย่างไรก็ตาม เมื่อ ër เป็นอันตราย Qr จะไม่ถูกกำหนดจาก Qr−1 อีกต่อไป และ LRr มีค่าแยกกันอย่างน้อยสองค่าสำหรับ Qr หนึ่งยังคงเป็น Qr \(\triangleq\)H(SIGër(Qr−1), r) และอีกอันคือ H(Qr−1, r) ก่อนอื่นให้เราโต้แย้งว่า แม้ว่าตัวเลือกที่สองจะค่อนข้างจะไร้เหตุผล ทางเลือกที่สองเป็นสิ่งจำเป็นอย่างยิ่ง เหตุผลก็คือผู้ประสงค์ร้ายสามารถก่อเหตุได้เสมอ บล็อกผู้สมัครที่แตกต่างกันโดยสิ้นเชิงที่จะได้รับโดยผู้ตรวจสอบที่ซื่อสัตย์ของขั้นตอนที่สอง 12 หนึ่งครั้ง ในกรณีนี้ มันเป็นเรื่องง่ายที่จะตรวจสอบให้แน่ใจว่าในที่สุดบล็อกก็ตกลงกันผ่านโปรโตคอล BA ของ รอบ r จะเป็นค่าดีฟอลต์ และจะไม่มีลายเซ็นดิจิทัลของ Qr−1 ของใครเลย แต่ ระบบจะต้องดำเนินต่อไป และเพื่อสิ่งนี้ มันต้องมีผู้นำในรอบ r หากผู้นำคนนี้เป็นไปโดยอัตโนมัติ และเลือกอย่างเปิดเผย แล้วปฏิปักษ์ก็จะทำร้ายเขาเล็กน้อย หากถูกเลือกโดยก่อนหน้านี้ Qr−1 ผ่านกระบวนการเดียวกัน มากกว่า ër จะเป็นผู้นำในรอบ r+1 อีกครั้ง เราเสนอให้โดยเฉพาะ ใช้กลไกการเรียงลำดับการเข้ารหัสลับแบบเดียวกัน แต่นำไปใช้กับปริมาณ Q ใหม่: กล่าวคือ H(Qr−1, r) การให้ปริมาณนี้เป็นเอาท์พุตของ H รับประกันว่าเอาท์พุตจะเป็นแบบสุ่ม และโดยการรวม r เป็นอินพุตที่สองของ H ในขณะที่การใช้ H อื่น ๆ ทั้งหมดมีอินพุตหนึ่งหรือ 3+ “รับประกัน” ว่า Qr ดังกล่าวได้รับการคัดเลือกอย่างอิสระ อีกครั้ง ตัวเลือก Qr ทางเลือกเฉพาะของเรา ไม่สำคัญ สิ่งที่สำคัญคือ ër มีทางเลือกสองทางสำหรับ Qr และด้วยเหตุนี้เขาจึงสามารถเพิ่มโอกาสเป็นสองเท่าได้ เพื่อให้มีผู้ใช้ที่เป็นอันตรายรายอื่นเป็นผู้นำคนต่อไป ตัวเลือกสำหรับ Qr อาจมีมากมายสำหรับฝ่ายตรงข้ามที่ควบคุม ër ที่เป็นอันตราย ตัวอย่างเช่น ให้ x, y และ z เป็นผู้นำที่มีศักยภาพอันตรายสามคนของรอบ r เช่นนั้น ฮ ซิร,1 x < ฮ ซิร,1 ย < ฮ ซิร,1 z และเอช ซิร,1 z มีขนาดเล็กเป็นพิเศษ นั่นคือน้อยมากจนมีโอกาสที่ดีที่ H ซิร,1 z คือ น้อยกว่าข้อมูลรับรอง hashed ของผู้ที่มีศักยภาพเป็นผู้นำที่ซื่อสัตย์ทุกคน จากนั้นโดยขอให้ x ซ่อนของเขา หนังสือรับรอง ฝ่ายตรงข้ามมีโอกาสที่ดีที่จะให้ y เป็นผู้นำของรอบ r −1 นี้ บ่งบอกเป็นนัยว่าเขามีทางเลือกอื่นสำหรับ Qr: คือ SIGy คิวอาร์−1 . ปฏิปักษ์ก็อาจทำเช่นเดียวกัน ขอให้ทั้ง x และ y ระงับข้อมูลประจำตัวของตน เพื่อให้ z เป็นผู้นำของรอบ r −1 และได้รับตัวเลือกอื่นสำหรับ Qr: คือ SIGz คิวอาร์−1 . อย่างไรก็ตาม แน่นอนว่าแต่ละตัวเลือกเหล่านี้และตัวเลือกอื่นๆ มีโอกาสล้มเหลวไม่เป็นศูนย์ เพราะว่า ฝ่ายตรงข้ามไม่สามารถคาดเดา hash ของลายเซ็นดิจิทัลของผู้ใช้ที่ซื่อสัตย์ได้ เบอร์−1 ฉัน = (r −1, PAY ′, H(Br−2) มิฉะนั้น เขามีผู้ใช้ที่เป็นอันตรายอีกสองคน x และ y เพื่อสร้างการชำระเงินใหม่ต่อไป \(\wp\)′ จากที่หนึ่งไปยังอีกที่หนึ่ง จนกระทั่งสำหรับผู้ใช้ที่เป็นอันตรายบางราย z (หรือแม้แต่สำหรับผู้ใช้คงที่บางราย z) H (SIGz (PAY ′ \(\cup\){\(\wp\)})) คือ เล็กมากเช่นกัน การทดลองนี้จะหยุดลงอย่างรวดเร็ว และเมื่อปฏิปักษ์ร้องขอให้เสนอ บล็อกผู้สมัคร Br−1 ฉัน = (r −1, จ่าย ′ \(\cup\){\(\wp\)}, H(Br−2) 12เช่น เพื่อให้ง่าย (แต่สุดโต่ง) “เมื่อเวลาของขั้นตอนที่สองกำลังจะหมดลง” ër สามารถ ส่งอีเมลถึงบล็อกผู้สมัคร Bi ที่แตกต่างกันโดยตรงไปยังผู้ใช้แต่ละคน i ด้วยวิธีนี้ ไม่ว่าใครก็ตามที่เป็นผู้ตรวจสอบขั้นตอนที่ 2 อาจเป็นพวกเขา จะได้รับบล็อกที่แตกต่างกันโดยสิ้นเชิงการวิเคราะห์อย่างรอบคอบเหมือน Markov-chain แสดงให้เห็นว่า ไม่ว่าฝ่ายตรงข้ามจะเลือกตัวเลือกใดก็ตาม ที่จะทำในรอบ r −1 ตราบใดที่เขาไม่สามารถฉีดผู้ใช้ใหม่เข้าสู่ระบบได้ เขาไม่สามารถลดค่าได้ ความน่าจะเป็นของผู้ใช้ที่ซื่อสัตย์ที่จะเป็นผู้นำของรอบ r + 40 ต่ำกว่า h มาก นี่คือสาเหตุที่ทำให้ ซึ่งเราเรียกร้องให้ผู้นำที่มีศักยภาพของรอบ r เป็นผู้ใช้ที่มีอยู่แล้วในรอบ r −k มันเป็นวิธีที่จะทำให้แน่ใจว่า ในรอบ r −k ปฏิปักษ์ไม่สามารถเปลี่ยนแปลงความน่าจะเป็นที่ ผู้ใช้ที่ซื่อสัตย์จะเป็นผู้นำของ Round r ในความเป็นจริงไม่ว่าเขาจะเพิ่มผู้ใช้คนใดก็ตาม ระบบในรอบ r −k ถึง r พวกเขาไม่มีคุณสมบัติที่จะเป็นผู้นำที่มีศักยภาพ (และ fortiori ผู้นำ) ของรอบ r ดังนั้นพารามิเตอร์การมองย้อนกลับ k ในที่สุดจึงเป็นพารามิเตอร์ความปลอดภัย (ถึงแม้ว่า ดังที่เราจะเห็นในหัวข้อที่ 7 มันสามารถเป็น “พารามิเตอร์ความสะดวกสบาย” ได้เช่นกัน) กุญแจชั่วคราว แม้ว่าการดำเนินการตามโปรโตคอลของเราไม่สามารถสร้างทางแยกได้ ยกเว้นด้วย ความน่าจะเป็นเล็กน้อย ฝ่ายตรงข้ามสามารถสร้างทางแยกที่บล็อก rth หลังจากถูกต้องตามกฎหมาย บล็อก r ถูกสร้างขึ้นแล้ว โดยคร่าวๆ เมื่อ Br ถูกสร้างขึ้น ฝ่ายตรงข้ามจะได้เรียนรู้ว่าใครเป็นผู้ตรวจสอบแต่ละขั้นตอน ของรอบ r คือ ดังนั้นเขาจึงสามารถทุจริตทั้งหมดและบังคับให้พวกเขารับรองบล็อกใหม่ได้ ฉ บ. เนื่องจากบล็อกปลอมนี้อาจเผยแพร่ได้หลังจากบล็อกที่ถูกต้องเท่านั้น นั่นคือผู้ใช้ที่เผยแพร่ไปแล้ว การเอาใจใส่จะไม่ถูกหลอก13 อย่างไรก็ตาม ฉ Br จะถูกทางวากยสัมพันธ์และเรา ต้องการป้องกันไม่ให้ถูกผลิต เราทำเช่นนั้นโดยใช้กฎใหม่ โดยพื้นฐานแล้ว สมาชิกของผู้ตรวจสอบจะตั้งค่า SV r,s ของขั้นตอน s ของรอบ r ใช้กุญแจสาธารณะชั่วคราว pkr,s ฉัน เพื่อเซ็นข้อความแบบดิจิทัล คีย์เหล่านี้เป็นคีย์แบบใช้ครั้งเดียวเท่านั้นและมีคีย์ลับที่เกี่ยวข้อง skr,s ฉัน จะถูกทำลายทันทีที่ใช้ ด้วยวิธีนี้ ถ้ามีผู้ตรวจสอบ เสียหายในภายหลัง ฝ่ายตรงข้ามไม่สามารถบังคับให้เขาลงนามสิ่งอื่นใดที่เขาไม่ได้ลงนามในตอนแรก โดยปกติแล้ว เราต้องแน่ใจว่าเป็นไปไม่ได้ที่ฝ่ายตรงข้ามจะคำนวณคีย์ใหม่ g ประชาสัมพันธ์ ฉัน และโน้มน้าวผู้ใช้โดยสุจริตว่านี่คือคีย์ชั่วคราวที่ถูกต้องของตัวตรวจสอบ i \(\in\)SV r,s ที่จะใช้ในขั้นตอน s 4.2 สรุปทั่วไปของสัญกรณ์ แนวคิด และพารามิเตอร์ สัญกรณ์ • r \(\geq\)0: หมายเลขรอบปัจจุบัน • s \(\geq\)1: หมายเลขขั้นตอนปัจจุบันในรอบ r • Br: บล็อกที่สร้างขึ้นในรอบ r • PKr: ชุดของกุญแจสาธารณะในตอนท้ายของรอบ r −1 และที่จุดเริ่มต้นของรอบ r • Sr: สถานะของระบบเมื่อสิ้นสุดรอบ r −1 และเมื่อเริ่มรอบ r.14 • PAY r: ชุดการจ่ายเงินที่อยู่ใน Br. • ër: ผู้นำแบบ Round-R ër เลือกชุดการจ่ายเงิน PAY r ของรอบ r (และกำหนด Qr ถัดไป) • Qr: เมล็ดของรอบ r ซึ่งเป็นปริมาณ (เช่น สตริงไบนารี่) ที่สร้างขึ้นเมื่อสิ้นสุดรอบ r และใช้เพื่อเลือกผู้ตรวจสอบสำหรับรอบ r + 1 Qr ไม่ขึ้นอยู่กับชุดการจ่ายเงินในบล็อก และไม่สามารถถูกควบคุมโดย LRr ได้ 13พิจารณาสร้างความเสียหายให้กับผู้ประกาศข่าวของเครือข่ายโทรทัศน์รายใหญ่ และผลิตและออกอากาศรายการข่าวในปัจจุบัน แสดงให้เห็นเลขาธิการคลินตันชนะการเลือกตั้งประธานาธิบดีครั้งล่าสุด พวกเราส่วนใหญ่จะรับรู้ว่ามันเป็นเรื่องหลอกลวง แต่ คนที่ออกจากอาการโคม่าอาจถูกหลอกได้ 14ในระบบที่ไม่ซิงโครนัส แนวคิดเรื่อง "จุดสิ้นสุดของรอบ r −1" และ "จุดเริ่มต้นของรอบ r" จำเป็นต้องกำหนดอย่างรอบคอบ ในทางคณิตศาสตร์ PKr และ Sr คำนวณจากสถานะเริ่มต้น S0 และบล็อก บี1, . . . , Br−1• SV r,s: ชุดของตัวตรวจสอบที่เลือกสำหรับขั้นตอน s ของรอบ r • SV r: ชุดของตัวตรวจสอบที่เลือกสำหรับรอบ r, SV r = \(\cup\)s\(\geq\)1SV r,s • MSV r,s และ HSV r,s: ตามลำดับ ชุดของตัวตรวจสอบที่เป็นอันตรายและชุดของตัวตรวจสอบที่ซื่อสัตย์ ใน SV r,s MSV r,s \(\cup\)HSV r,s = SV r,s และ MSV r,s ∩HSV r,s = \(\emptyset\) • n1 \(\in\)Z+ และ n \(\in\)Z+: ตามลำดับ จำนวนที่คาดหวังของผู้นำที่มีศักยภาพในแต่ละ SV r,1 และจำนวนผู้ตรวจสอบที่คาดหวังในแต่ละ SV r,s สำหรับ s > 1 โปรดสังเกตว่า n1 << n เนื่องจากเราต้องการสมาชิกที่ซื่อสัตย์และซื่อสัตย์อย่างน้อยหนึ่งคนใน SV r,1 แต่อย่างน้อย สมาชิกที่ซื่อสัตย์ส่วนใหญ่ในแต่ละ SV r,s สำหรับ s > 1 • h \(\in\)(0, 1): ค่าคงที่มากกว่า 2/3 h คืออัตราส่วนความซื่อสัตย์ในระบบ นั่นก็คือ เศษของผู้ใช้ที่ซื่อสัตย์หรือเงินที่ซื่อสัตย์ ขึ้นอยู่กับสมมติฐานที่ใช้ในแต่ละ PKr อย่างน้อยชั่วโมง • H: ฟังก์ชันการเข้ารหัสลับ hash ซึ่งจำลองเป็นแบบสุ่ม oracle • \(\bot\): สตริงพิเศษที่มีความยาวเท่ากับเอาต์พุตของ H. • F \(\in\)(0, 1): พารามิเตอร์ที่ระบุความน่าจะเป็นของข้อผิดพลาดที่อนุญาต ความน่าจะเป็น \(\leq\)F คือ ถือว่า "เล็กน้อย" และความน่าจะเป็น \(\geq\)1 −F ถือว่า "ล้นหลาม" • ph \(\in\)(0, 1): ความน่าจะเป็นที่ผู้นำของรอบ r, ër มีความเที่ยงตรง ตามหลักการแล้ว ph = h ด้วย การมีอยู่ของฝ่ายตรงข้าม ค่า ph จะถูกกำหนดในการวิเคราะห์ • k \(\in\)Z+: พารามิเตอร์การมองย้อนกลับ นั่นคือ รอบ r −k คือตำแหน่งที่ตัวยืนยันสำหรับรอบ r อยู่ เลือกจาก —ได้แก่ SV r \(\subseteq\)PKr−k.15 • p1 \(\in\)(0, 1): สำหรับขั้นตอนแรกของรอบ r ผู้ใช้ในรอบ r −k จะถูกเลือกให้อยู่ใน SV r,1 ด้วย ความน่าจะเป็น p1 \(\triangleq\) n1 |P Kr−k|. • p \(\in\)(0, 1): สำหรับแต่ละขั้นตอน s > 1 ของรอบ r ผู้ใช้ในรอบ r −k จะถูกเลือกให้อยู่ใน SV r,s โดยมี ความน่าจะเป็น p \(\triangleq\) n |P Kr−k|. • CERT r: ใบรับรองสำหรับ Br. เป็นชุดลายเซ็นต์ของ H(Br) จากผู้ตรวจสอบที่เหมาะสม รอบร. • Br \(\triangleq\)(Br, CERT r) เป็นบล็อกที่ได้รับการพิสูจน์แล้ว ผู้ใช้ที่ฉันรู้จัก Br ว่าเขาครอบครอง (และยืนยันได้สำเร็จ) ทั้งสองส่วนของบล็อกที่พิสูจน์แล้วหรือไม่ โปรดทราบว่า CERT ที่ผู้ใช้รายอื่นเห็นอาจแตกต่างกัน • τ ร i : เวลา (ท้องถิ่น) ที่ผู้ใช้ที่ฉันรู้จัก Br ในโปรโตคอล Algorand ผู้ใช้แต่ละคนมีของเขา นาฬิกาของตัวเอง นาฬิกาของผู้ใช้ที่แตกต่างกันไม่จำเป็นต้องซิงโครไนซ์ แต่ต้องมีความเร็วเท่ากัน เพื่อจุดประสงค์ในการวิเคราะห์เท่านั้น เราจะพิจารณานาฬิกาอ้างอิงและวัดผลผู้เล่น เวลาที่เกี่ยวข้องด้วยความเคารพ • \(\alpha\)r,s ฉัน และ \(\beta\)r,s i : เวลา (ท้องถิ่น) ตามลำดับที่ผู้ใช้ที่ฉันเริ่มต้นและสิ้นสุดการดำเนินการตามขั้นตอน s ของ รอบร. • Λ และ แลมบ์: โดยพื้นฐานแล้ว คือขอบเขตบนของเวลาที่ต้องใช้ในการดำเนินการขั้นตอนที่ 1 และตามลำดับ เวลาที่จำเป็นสำหรับขั้นตอนอื่นใดของโปรโตคอล Algorand พารามิเตอร์ Λ ขอบเขตบนของเวลาในการเผยแพร่บล็อกขนาด 1MB เดียว (ในสัญกรณ์ของเรา Λ = แลร์,1MB. เมื่อนึกถึงสัญกรณ์ของเรา ที่เราตั้งค่า \(\rho\) = 1 เพื่อความเรียบง่าย และบล็อกนั้นก็คือ เลือกให้มีความยาวสูงสุด 1MB เรามี Λ = แลมบ์ดา 1,1,1MB) 15ถ้าพูดอย่างเคร่งครัด “r −k” ควรเป็น “สูงสุด{0, r −k}”พารามิเตอร์ แล เหนือเวลาในการเผยแพร่ข้อความขนาดเล็กหนึ่งข้อความต่อผู้ตรวจสอบในขั้นตอน s > 1 (การใช้ลายเซ็นเส้นโค้งวงรีที่มีคีย์ 32B เช่นเดียวกับใน Bitcoin ข้อความยืนยันจะมีความยาว 200B ดังนั้นในสัญกรณ์ของเรา แล = แลม, \(\rho\), 200B.) เราถือว่า Λ = O(แล) แนวคิด • การเลือกผู้ตรวจสอบ สำหรับแต่ละรอบ r และขั้นตอน s > 1, SV r,s \(\triangleq\){i \(\in\)PKr−k : .H(SIGi(r, s, Qr−1)) \(\leq\)p} แต่ละ ผู้ใช้ i \(\in\)PKr−k คำนวณลายเซ็นของเขาเป็นการส่วนตัวโดยใช้คีย์ระยะยาวของเขาและตัดสินใจว่า ฉัน \(\in\)SV r,s หรือไม่ ถ้า i \(\in\)SV r,s แล้ว SIGi(r, s, Qr−1) จะเป็น i (r, s) -credential แทนด้วยเครื่องหมายย่อ โดย \(\sigma\)r,s ฉัน สำหรับขั้นตอนแรกของรอบ r, SV r,1 และ \(\sigma\)r,1 ฉัน ถูกกำหนดในทำนองเดียวกัน โดยที่ p แทนที่ด้วย p1 ที่ ผู้ตรวจสอบใน SV r,1 เป็นผู้นำที่มีศักยภาพ • การคัดเลือกผู้นำ ผู้ใช้ i \(\in\)SV r,1 เป็นผู้นำของรอบ r เขียนแทนด้วย ër ถ้า H(\(\sigma\)r,1 ผม ) \(\leq\)H(\(\sigma\)r,1 j ) เพื่อศักยภาพทั้งหมด ผู้นำ j \(\in\)SV r,1 เมื่อใดก็ตามที่มีการเปรียบเทียบ hashes ของข้อมูลประจำตัวของผู้เล่นสองคน ในสถานการณ์ที่ไม่น่าเป็นไปได้ ในกรณีที่มีความสัมพันธ์ โปรโตคอลจะตัดความสัมพันธ์ตามพจนานุกรมเสมอตาม (สาธารณะระยะยาว กุญแจของ) ผู้นำที่มีศักยภาพ ตามคำจำกัดความแล้ว ค่า hash ของข้อมูลประจำตัวของผู้เล่น ër ก็มีค่าน้อยที่สุดในบรรดาผู้ใช้ทั้งหมดใน PKr−k โปรดทราบว่าผู้ที่มีศักยภาพเป็นผู้นำไม่สามารถตัดสินใจเป็นการส่วนตัวได้ว่าเขาเป็นผู้นำหรือไม่ โดยไม่เห็นข้อมูลรับรองของผู้ที่อาจเป็นผู้นำคนอื่นๆ เนื่องจากค่า hash เป็นค่าเดียวกันโดยการสุ่ม เมื่อ SV r,1 ไม่ว่างเปล่า ดังนั้น ër จึงมีอยู่เสมอและเป็น ซื่อสัตย์กับความน่าจะเป็นอย่างน้อย h พารามิเตอร์ n1 มีขนาดใหญ่พอที่จะทำให้มั่นใจว่าแต่ละรายการ SV r,1 ไม่ว่างเปล่าและมีความน่าจะเป็นอย่างท่วมท้น • โครงสร้างบล็อก บล็อกที่ไม่ว่างจะมีรูปแบบ Br = (r, PAY r, SIGër(Qr−1), H(Br−1)) และบล็อกว่าง อยู่ในรูปแบบ Br ǫ = (r, \(\emptyset\), Qr−1, H(Br−1)) โปรดทราบว่าบล็อกที่ไม่ว่างเปล่าอาจยังคงมีชุดการจ่ายเงินว่าง PAY r หากไม่มีการชำระเงินเกิดขึ้น รอบนี้หรือถ้าผู้นำมีเจตนาร้าย อย่างไรก็ตาม บล็อกที่ไม่ว่างเปล่าแสดงถึงตัวตนของ ër หนังสือรับรองของเขา \(\sigma\)r,1 ër และ SIGër(Qr−1) ทั้งหมดได้รับการเปิดเผยอย่างทันท่วงที โปรโตคอลรับประกัน ว่าถ้าผู้นำมีความซื่อสัตย์ บล็อกก็จะไม่ว่างเปล่าและมีความเป็นไปได้อย่างท่วมท้น • เมล็ดพันธุ์คิวอาร์ ถ้า Br ไม่ว่างเปล่า ดังนั้น Qr \(\triangleq\)H(SIGër(Qr−1), r) มิฉะนั้น Qr \(\triangleq\)H(Qr−1, r) พารามิเตอร์ • ความสัมพันธ์ระหว่างพารามิเตอร์ต่างๆ — ผู้ตรวจสอบและผู้ที่อาจเป็นผู้นำของรอบ r จะถูกเลือกจากผู้ใช้ใน PKr−k โดยที่ k ถูกเลือกเพื่อให้ปฏิปักษ์ไม่สามารถทำนาย Qr−1 ย้อนกลับไปที่รอบ r −k −1 ด้วยความน่าจะเป็นที่ดีกว่า F: ไม่เช่นนั้นเขาจะสามารถแนะนำผู้ใช้ที่เป็นอันตรายได้ สำหรับรอบ r −k ซึ่งทั้งหมดจะเป็นผู้นำ/ผู้ตรวจสอบในรอบ r สำเร็จ
มีผู้นำที่ประสงค์ร้ายหรือเสียงส่วนใหญ่ที่ประสงค์ร้ายใน SV r สำหรับบางขั้นตอนที่ต้องการ เขา — สำหรับขั้นตอนที่ 1 ของแต่ละรอบ r จะมีการเลือก n1 เพื่อให้มีความน่าจะเป็นอย่างท่วมท้น SV r,1 ̸= \(\emptyset\) • ตัวอย่างตัวเลือกของพารามิเตอร์ที่สำคัญ — ผลลัพธ์ของ H มีความยาว 256 บิต — ชั่วโมง = 80%, n1 = 35 — Λ = 1 นาที และ แล = 10 วินาที • การเริ่มต้นของโปรโตคอล โปรโตคอลเริ่มต้นที่เวลา 0 โดย r = 0 เนื่องจากไม่มี “B−1” หรือ “CERT −1” ทางวากยสัมพันธ์ B−1 เป็นพารามิเตอร์สาธารณะที่มีองค์ประกอบที่สามระบุ Q−1 และผู้ใช้ทั้งหมด ทราบ B−1 ณ เวลา 0
Algorand ′
1 ในส่วนนี้ เราสร้างเวอร์ชันของ Algorand ′ ที่ทำงานภายใต้สมมติฐานต่อไปนี้ ข้อสันนิษฐานของผู้ใช้ส่วนใหญ่ที่ซื่อสัตย์: มากกว่า 2/3 ของผู้ใช้ในแต่ละ PKr มีความซื่อสัตย์ ในส่วนที่ 8 เราจะแสดงวิธีแทนที่สมมติฐานข้างต้นด้วย Honest Majority ที่ต้องการ สมมติฐานเรื่องเงิน 5.1 สัญลักษณ์และพารามิเตอร์เพิ่มเติม สัญกรณ์ • m \(\in\)Z+: จำนวนขั้นตอนสูงสุดในโปรโตคอล BA ไบนารี ซึ่งเป็นผลคูณของ 3 • Lr \(\leq\)m/3: ตัวแปรสุ่มที่แสดงถึงจำนวนการทดลองเบอร์นูลลีที่จำเป็นในการดู 1 เมื่อการทดลองแต่ละครั้งมีค่า 1 ด้วยความน่าจะเป็น ph 2 และมีการทดลองสูงสุด m/3 หากการทดลองทั้งหมดล้มเหลว ซ้าย \(\triangleq\)m/3 Lr จะถูกใช้เพื่อขอบเขตบนของเวลาที่จำเป็นในการสร้างบล็อก Br • TH = 2n 3 + 1: จำนวนลายเซ็นที่จำเป็นในเงื่อนไขการสิ้นสุดของโปรโตคอล • CERT r: ใบรับรองสำหรับ Br. เป็นชุดลายเซ็นต์ของ H(Br) จากผู้ตรวจสอบที่เหมาะสม รอบร. พารามิเตอร์ • ความสัมพันธ์ระหว่างพารามิเตอร์ต่างๆ — สำหรับแต่ละขั้นตอน s > 1 ของรอบ r, n จะถูกเลือก ดังนั้น ด้วยความน่าจะเป็นอย่างล้นหลาม |HSV r,s| > 2|MSV r,s| และ |HSV r,s| + 4|MSV r,s| <2น. ยิ่งค่า h ใกล้ 1 มากเท่าใด n ก็ต้องมีค่าน้อยลงเท่านั้น โดยเฉพาะเราใช้ (variants ของ) ขอบเขตเชอร์โนฟเพื่อให้แน่ใจว่าเงื่อนไขที่ต้องการมีความน่าจะเป็นอย่างล้นหลาม — m ถูกเลือกโดยที่ Lr < m/3 มีความน่าจะเป็นอย่างท่วมท้น • ตัวอย่างตัวเลือกของพารามิเตอร์ที่สำคัญ — ฉ = 10−12. — n asym1500, k = 40 และ m = 1805.2 การใช้คีย์ชั่วคราวใน Algorand ′ 1 ดังที่ได้กล่าวไปแล้ว เราหวังว่าผู้ตรวจสอบ i \(\in\)SV r,s จะลงนามข้อความของเขาแบบดิจิทัล mr,s ฉัน ของขั้นตอน s ในรอบ r สัมพันธ์กับคีย์สาธารณะชั่วคราว pkr,s ฉัน ใช้คีย์ลับชั่วคราว skr,s ฉัน นั่น เขาทำลายทันทีหลังใช้ ดังนั้นเราจึงจำเป็นต้องมีวิธีการที่มีประสิทธิภาพเพื่อให้แน่ใจว่าผู้ใช้ทุกคนสามารถทำได้ ตรวจสอบว่า pkr,s ฉัน เป็นกุญแจสำคัญในการใช้ตรวจสอบลายเซ็นของนาย ฉัน เราทำเช่นนั้นโดย a (ให้ดีที่สุด ความรู้ของเรา) การใช้รูปแบบลายเซ็นตามข้อมูลประจำตัวแบบใหม่ ในระดับสูง ในรูปแบบดังกล่าว หน่วยงานกลาง A จะสร้างคีย์หลักสาธารณะ PMK และรหัสลับที่เกี่ยวข้อง SMK เมื่อพิจารณาถึงตัวตน U ของผู้เล่น U การคำนวณ ผ่าน SMK ซึ่งเป็นคีย์ลายเซ็นลับ skU ที่สัมพันธ์กับคีย์สาธารณะ U และมอบ skU ให้กับแบบส่วนตัว U. (อันที่จริง ในรูปแบบลายเซ็นดิจิทัลตามข้อมูลประจำตัว กุญแจสาธารณะของผู้ใช้ U คือ U นั่นเอง!) ด้วยวิธีนี้ หาก A ทำลาย SMK หลังจากคำนวณคีย์ลับของผู้ใช้ที่เขาต้องการเปิดใช้งาน สร้างลายเซ็นดิจิทัล และไม่เก็บรหัสลับที่คำนวณไว้ ดังนั้น U จึงเป็นคนเดียวที่ สามารถเซ็นข้อความแบบดิจิทัลที่เกี่ยวข้องกับกุญแจสาธารณะ U ได้ ดังนั้นใครก็ตามที่รู้จัก "ชื่อ U" รู้กุญแจสาธารณะของ U โดยอัตโนมัติ และสามารถตรวจสอบลายเซ็นของ U ได้ (อาจใช้ the PMK คีย์หลักสาธารณะ) ในแอปพลิเคชันของเรา สิทธิ์ A คือผู้ใช้ i และชุดของผู้ใช้ที่เป็นไปได้ทั้งหมด U เกิดขึ้นพร้อมกัน คู่ขั้นบันได (r, s) ใน —say— S = {i}\(\times\){r′, . . , r′ +106}\(\times\){1, . . . , m+3} โดยที่ r′ ถูกกำหนดไว้ ปัดเศษ และ m + 3 ขอบเขตบนของจำนวนก้าวที่อาจเกิดขึ้นภายในหนึ่งรอบ นี้ ทาง pkr,s ฉัน \(\triangleq\)(i, r, s) เพื่อให้ทุกคนเห็นลายเซ็นต์ i SIGr,s พีเคอาร์เอส ฉัน (นายส ฉัน ) สามารถทำได้อย่างท่วมท้น ความน่าจะเป็น ให้ตรวจสอบทันทีสำหรับล้านรอบแรก r ต่อไปนี้ r′ กล่าวอีกนัยหนึ่ง ฉันจะสร้าง PMK และ SMK ก่อน แล้วเขาก็ประชาสัมพันธ์ว่า PMK คือผมเจ้านาย กุญแจสาธารณะสำหรับทุกรอบ r \(\in\)[r′, r′ + 106] และใช้ SMK เพื่อสร้างและจัดเก็บความลับเป็นการส่วนตัว คีย์ skr,s ฉัน สำหรับแต่ละสาม (i, r, s) \(\in\)S เสร็จแล้วเขาทำลาย SMK หากเขาตัดสินแล้วว่าไม่ใช่ เป็นส่วนหนึ่งของ SV r,s จากนั้นฉันก็อาจทิ้ง skr,s ไว้ ฉัน เพียงอย่างเดียว (เนื่องจากโปรโตคอลไม่ต้องการให้เขาตรวจสอบสิทธิ์) ข้อความใด ๆ ในขั้นตอนที่ s ของรอบ r) อย่างอื่นฉันใช้ skr,s ก่อน ฉัน เพื่อลงนามข้อความของเขาแบบดิจิทัล ฉัน และ จากนั้นทำลาย skr,s ฉัน โปรดทราบว่าฉันสามารถเผยแพร่คีย์หลักสาธารณะคีย์แรกของเขาได้เมื่อเขาเข้าสู่ระบบครั้งแรก นั่นคือ การจ่ายแบบเดียวกัน \(\wp\)ที่นำ i เข้าสู่ระบบ (ที่รอบ r′ หรือที่รอบที่ใกล้กับ r′) ก็อาจจะเช่นกัน ระบุตามคำร้องขอของฉันว่า i เป็นคีย์หลักสาธารณะสำหรับรอบใด ๆ r \(\in\)[r′, r′ + 106] คือ PMK — เช่น โดย รวมถึงคู่ของแบบฟอร์ม (PMK, [r′, r′ + 106]) โปรดทราบด้วยว่า เนื่องจาก m + 3 คือจำนวนก้าวสูงสุดในรอบ โดยสมมติว่าเป็นรอบ ใช้เวลาสักครู่ กุญแจชั่วคราวที่ผลิตออกมาจะคงอยู่ได้เกือบสองปี ในเวลาเดียวกัน เวลา กุญแจลับชั่วคราวเหล่านี้จะใช้เวลาไม่นานในการสร้าง การใช้เส้นโค้งรูปไข่ ระบบที่มีคีย์ 32B แต่ละคีย์ลับจะถูกคำนวณภายในเวลาไม่กี่ไมโครวินาที ดังนั้น ถ้า m + 3 = 180 ดังนั้นคีย์ลับทั้งหมด 180M จึงสามารถคำนวณได้ภายในเวลาไม่ถึงหนึ่งชั่วโมง เมื่อรอบปัจจุบันเข้าใกล้ r′ + 106 เพื่อรองรับล้านรอบถัดไป i สร้างคู่ใหม่ (PMK′, SMK′) และแจ้งให้ทราบว่ากุญแจชั่วคราวถัดไปของเขาคืออะไร —ตัวอย่าง— ให้ SIGi(PMK′, [r′ + 106 + 1, r′ + 2 \(\cdot\) 106 + 1]) เข้าบล็อกใหม่ โดยอาจเป็น a “ธุรกรรม” แยกกันหรือเป็นข้อมูลเพิ่มเติมบางส่วนที่เป็นส่วนหนึ่งของการชำระเงิน โดยการทำเช่นนั้น ฉันแจ้งให้ทุกคนทราบว่าเขา/เธอควรใช้ PMK′ เพื่อตรวจสอบลายเซ็นชั่วคราวของฉันในครั้งต่อไป ล้านรอบ และอื่นๆ (โปรดทราบว่า การปฏิบัติตามแนวทางพื้นฐานนี้ จะมีวิธีอื่นๆ ในการนำคีย์ชั่วคราวไปใช้โดยไม่ต้องใช้ การใช้ลายเซ็นตามข้อมูลประจำตัวเป็นไปได้อย่างแน่นอน ตัวอย่างเช่น ผ่าน Merkle trees.16) 16ในวิธีนี้ ฉันสร้างคู่คีย์ลับสาธารณะ (pkr,s ฉัน , skr, s ฉัน ) สำหรับแต่ละคู่แบบปัดเศษ (r, s) ใน —say—วิธีอื่นๆ ในการนำคีย์ชั่วคราวไปใช้นั้นเป็นไปได้อย่างแน่นอน เช่น ผ่าน Merkle trees 5.3 จับคู่ขั้นตอนของ Algorand ′ 1 กับ BA⋆ อย่างที่เราบอกไป รอบใน Algorand ′ 1 มีมากที่สุด m + 3 ขั้นตอน ขั้นตอนที่ 1 ในขั้นตอนนี้ ผู้ที่มีศักยภาพเป็นผู้นำแต่ละคน ฉันจะคำนวณและเผยแพร่บล็อกผู้สมัครของเขา Br ฉัน พร้อมด้วยหนังสือรับรองของเขาเอง \(\sigma\)r,1 ฉัน โปรดจำไว้ว่าข้อมูลรับรองนี้ระบุถึง i อย่างชัดเจน ที่เป็นเช่นนี้ เพราะ \(\sigma\)r,1 ฉัน \(\triangleq\)SIGi(r, 1, Qr−1) ผู้ตรวจสอบที่เป็นไปได้ฉันยังเผยแพร่ลายเซ็นดิจิทัลที่เหมาะสมของ H(Br ซึ่งเป็นส่วนหนึ่งของข้อความของเขาด้วย ฉัน) ไม่ได้เกี่ยวข้องกับการชำระเงินหรือหนังสือรับรอง ลายเซ็นของฉันนี้สัมพันธ์กับสาธารณะชั่วคราวของเขา คีย์ pkr,1 ฉัน : นั่นคือเขาเผยแพร่ siggpkr,1 ฉัน (H(Br ฉัน )) ตามแบบแผนของเรา แทนที่จะเผยแพร่บรา ฉัน และ sigpkr,1 ฉัน (H(Br ฉัน )) เขาสามารถมีได้ เผยแพร่ SIGpkr,1 ฉัน (H(Br ฉัน )) อย่างไรก็ตาม ในการวิเคราะห์ของเรา เราจำเป็นต้องเข้าถึงได้อย่างชัดเจน ซิกพีอาร์,1 ฉัน (H(Br ฉัน )) ขั้นตอนที่ 2 ในขั้นตอนนี้ แต่ละผู้ยืนยันที่ฉันตั้งค่า ër ฉันเป็นผู้นำที่มีศักยภาพซึ่งมีใบรับรอง hashed มีขนาดเล็กที่สุดและ Br i เป็นบล็อกที่เสนอโดย LRr ฉัน เนื่องจากเพื่อประโยชน์ด้านประสิทธิภาพ เราจึง ต้องการเห็นด้วยกับ H(Br) แทนที่จะเห็นด้วยกับ Br โดยตรง ฉันเผยแพร่ข้อความที่เขาต้องการ แพร่กระจายในขั้นตอนแรกของ BA⋆ด้วยค่าเริ่มต้น v′ ผม = H(br ฉัน) นั่นคือเขาเผยแพร่ v′ ฉัน หลังจากเซ็นสัญญาชั่วคราวแน่นอน (กล่าวคือหลังจากลงนามแล้วสัมพันธ์กับช่วงเวลาชั่วคราวที่ถูกต้อง พับลิกคีย์ ซึ่งในกรณีนี้คือ pkr,2 ฉัน .) แน่นอน ฉันก็ส่งข้อมูลรับรองของเขาเองด้วย เนื่องจากขั้นตอนแรกของ BA⋆ประกอบด้วยขั้นตอนแรกของโปรโตคอลฉันทามติแบบให้คะแนน GC ขั้นตอน 2 ของ Algorand ′ สอดคล้องกับขั้นตอนแรกของ GC ขั้นตอนที่ 3 ในขั้นตอนนี้ แต่ละผู้ตรวจสอบ i \(\in\)SV r,2 ดำเนินการขั้นตอนที่สองของ BA⋆ นั่นคือเขาส่ง ข้อความเดียวกับที่เขาจะส่งในขั้นตอนที่สองของ GC อีกครั้งข้อความของฉันเป็นเพียงชั่วคราว ลงนามและมาพร้อมกับหนังสือรับรองของฉัน (ตั้งแต่บัดนี้เป็นต้นไปเราจะละเว้นการกล่าวคำยืนยันนั้น ลงนามในข้อความของเขาชั่วคราวและเผยแพร่หนังสือรับรองของเขาด้วย) ขั้นที่ 4 ในขั้นตอนนี้ ผู้ตรวจสอบทุกตัว i \(\in\)SV r,4 จะคำนวณเอาท์พุตของ GC, (vi, gi) และแบบชั่วคราว ลงนามและส่งข้อความเดียวกันกับที่เขาจะส่งในขั้นตอนที่สามของBA⋆ นั่นคือใน ขั้นตอนแรกของ BBA⋆ ด้วยบิตเริ่มต้น 0 ถ้า gi = 2 และ 1 เป็นอย่างอื่น ขั้นตอน ส = 5, . . . , m + 2 ขั้นตอนดังกล่าวหากไปถึงจะสอดคล้องกับขั้นตอน s −1 ของ BA⋆ และด้วยเหตุนี้ ขั้นตอนที่ s −3 ของ BBA⋆ เนื่องจากโมเดลการขยายพันธุ์ของเราเป็นแบบอะซิงโครนัสเพียงพอ เราจึงต้องคำนึงถึงความเป็นไปได้ด้วย ว่าในระหว่างขั้นตอน s นั้น ผู้ตรวจสอบ i \(\in\)SV r,s เข้าถึงได้ด้วยข้อมูลที่พิสูจน์เขา บล็อก Br นั้นได้ถูกเลือกแล้ว ในกรณีนี้ ฉันหยุดการดำเนินการรอบ r ของเขาเอง Algorand ′ และเริ่มดำเนินการตามคำสั่งการปัดเศษ (r + 1) {r', . . . , r′ + 106} \(\times\) {1, . . . , ม. + 3} จากนั้นเขาก็สั่งกุญแจสาธารณะเหล่านี้ด้วยวิธีที่เป็นที่ยอมรับ และจัดเก็บสาธารณะ jth ป้อน jth leaf ของ Merkle tree และคำนวณค่ารูต Ri ซึ่งเขาเผยแพร่ เมื่อเขาต้องการลงนาม ข้อความที่เกี่ยวข้องกับคีย์ pkr,s ฉัน ฉันไม่เพียงแต่จัดเตรียมลายเซ็นจริงเท่านั้น แต่ยังรวมถึงเส้นทางการรับรองความถูกต้องสำหรับ pkr,s ด้วย ฉัน สัมพันธ์กับริ โปรดสังเกตว่าเส้นทางการรับรองความถูกต้องนี้ยังพิสูจน์ว่า pkr,s ฉัน ถูกเก็บไว้ในใบไม้ jth ส่วนที่เหลือ สามารถกรอกรายละเอียดได้อย่างง่ายดายตามนั้น คำแนะนำของผู้ตรวจสอบ i \(\in\)SV r,s นอกเหนือจากคำแนะนำที่เกี่ยวข้องกัน ไปยังขั้นตอนที่ s −3 ของ BBA⋆ รวมถึงการตรวจสอบว่าการดำเนินการของ BBA⋆ ได้หยุดลงก่อนหน้านี้หรือไม่ ขั้นตอน เนื่องจาก BBA⋆สามารถหยุดได้เพียงขั้นตอน Coin-Fixed-to-0 หรือในขั้นตอน Coin-Fixed-to-1 เท่านั้น คำแนะนำแยกแยะได้ว่า A (เงื่อนไขการสิ้นสุด 0): s′ −2 ≡0 mod 3 หรือ B (เงื่อนไขการสิ้นสุด 1): s′ −2 ≡1 mod 3 ในความเป็นจริง ในกรณี A บล็อก Br ไม่ว่างเปล่า และจำเป็นต้องมีคำแนะนำเพิ่มเติม ตรวจสอบให้แน่ใจว่าฉันสร้าง Br ใหม่อย่างถูกต้อง พร้อมด้วยใบรับรอง CERT r ที่เหมาะสม ในกรณี ข บล็อก Br ว่างเปล่า ดังนั้นฉันจึงได้รับคำสั่งให้ตั้งค่า Br = Br \(\varepsilon\) = (r, \(\emptyset\), H(Qr−1, r), H(Br−1)) และเพื่อคำนวณ CERT r หากในระหว่างดำเนินการตามขั้นตอน s ฉันไม่เห็นหลักฐานใด ๆ ที่แสดงว่าบล็อก Br มีอยู่แล้ว ถูกสร้างขึ้น จากนั้นเขาก็ส่งข้อความเดียวกับที่เขาจะส่งในขั้นตอน s −3 ของ BBA⋆ ขั้นตอนที่ m + 3 หากในระหว่างขั้นตอน m + 3 i \(\in\)SV r,m+3 เห็นว่าบล็อก Br ถูกสร้างขึ้นแล้ว ขั้นตอนก่อนหน้า s′ จากนั้นเขาก็ดำเนินการตามที่อธิบายไว้ข้างต้น มิฉะนั้น แทนที่จะส่งข้อความแบบเดียวกับที่เขาจะส่งในขั้นตอน m ของ BBA ⋆ ฉันก็เป็นเช่นนั้น ได้รับคำสั่งตามข้อมูลที่อยู่ในความครอบครองของเขาให้คำนวณ Br และข้อมูลที่เกี่ยวข้อง ใบรับรอง CERT r. จำได้ว่าในความเป็นจริง เรากำหนดขอบเขตบนด้วย m + 3 ซึ่งเป็นจำนวนก้าวทั้งหมดของรอบ 5.4 พิธีสารจริง ระลึกว่าในแต่ละขั้นตอนของรอบ r ผู้ตรวจสอบ i \(\in\)SV r,s ใช้คู่กุญแจลับสาธารณะระยะยาวของเขา เพื่อสร้างหนังสือรับรองของเขา \(\sigma\)r, s ฉัน \(\triangleq\)SIGi(r, s, Qr−1) เช่นเดียวกับ SIGi คิวอาร์−1 ในกรณี s = 1. ผู้ตรวจสอบ i ใช้รหัสลับชั่วคราวของเขา skr,s ฉัน เพื่อลงนามในข้อความของเขา (r, s) คุณ ฉัน เพื่อความง่าย เมื่อ r และ s เป็น ชัดเจน เราเขียน esigi(x) มากกว่า sigpkr,s i (x) เพื่อแสดงถึงลายเซ็นชั่วคราวที่เหมาะสมของค่า x ในขั้นตอน s ของรอบ r และเขียน ESIGi(x) แทน SIGpkr,s i (x) เพื่อแสดงถึง (i, x, esigi(x)) ขั้นตอนที่ 1: บล็อกข้อเสนอ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้นขั้นตอนที่ 1 ของตัวเองของรอบ r ทันทีที่เขา รู้จัก Br−1 • ผู้ใช้ i คำนวณ Qr−1 จากองค์ประกอบที่สามของ Br−1 และตรวจสอบว่า i \(\in\)SV r,1 หรือ ไม่. • ถ้า i /\(\in\)SV r,1, แล้วฉันจะหยุดการดำเนินการขั้นตอนที่ 1 ของเขาเองทันที • ถ้า i \(\in\)SV r,1 นั่นคือ ถ้า i เป็นผู้นำที่มีศักยภาพ เขาจะเรียกเก็บเงินตามรอบที่มี ได้รับการเผยแพร่ไปยังเขาจนถึงตอนนี้และคำนวณ payset สูงสุด PAY r ฉันมาจากพวกเขา ต่อไปเขา คำนวณ "กลุ่มผู้สมัคร" ของเขา i = (r, จ่าย r ผม , SIGI(Qr−1), H(Br−1)) ในที่สุดเขาก็คำนวณ ข้อความคุณ1 ฉัน = (พี่ ฉัน , esigi(H(Br ผม )), \(\sigma\)r,1 i ) ทำลายคีย์ลับชั่วคราวของเขา skr,1 ฉัน แล้ว เผยแพร่นาย 1 ฉันหมายเหตุ. ในทางปฏิบัติ เพื่อลดระยะเวลาการดำเนินการทั่วโลกของขั้นตอนที่ 1 ให้สั้นลง สิ่งสำคัญคือ (r, 1)- ข้อความถูกเผยแพร่แบบเลือกสรร นั่นคือสำหรับผู้ใช้ทุกคนที่อยู่ในระบบ สำหรับครั้งแรก (r, 1)- ข้อความที่เขาได้รับและยืนยันได้สำเร็จ ผู้เล่น 17 คนก็เผยแพร่ตามปกติ สำหรับทั้งหมด อื่น ๆ (r, 1) - ข้อความที่ผู้เล่นที่ฉันได้รับและยืนยันได้สำเร็จ เขาเผยแพร่เฉพาะในกรณีที่ hash ค่าของข้อมูลรับรองที่มีอยู่นั้นน้อยที่สุดในบรรดาค่า hash ของข้อมูลรับรองที่มีอยู่ ในข้อความทั้งหมด (r, 1) ที่เขาได้รับและได้รับการยืนยันเรียบร้อยแล้ว นอกจากนี้ตามที่แนะนำ โดย Georgios Vlachos มันมีประโยชน์ที่ผู้นำที่มีศักยภาพแต่ละคน i จะเผยแพร่ข้อมูลรับรองของเขาด้วย \(\sigma\)r,1 ฉัน แยกจากกัน: ข้อความเล็กๆ เหล่านั้นเดินทางเร็วกว่าบล็อก ทำให้แน่ใจได้ว่าการเผยแพร่ mr,1 จะเป็นไปอย่างทันท่วงที เจ โดยที่ข้อมูลประจำตัวที่มีอยู่มีค่า hash น้อย ในขณะที่ทำให้มีค่า hash ขนาดใหญ่ หายไปอย่างรวดเร็ว ขั้นตอนที่ 2: ขั้นตอนแรกของ GC ของโปรโตคอลฉันทามติแบบให้คะแนน คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้นขั้นตอนที่ 2 ของตัวเองของรอบ r ทันทีที่เขา รู้จัก Br−1 • ผู้ใช้ i คำนวณ Qr−1 จากองค์ประกอบที่สามของ Br−1 และตรวจสอบว่า i \(\in\)SV r,2 หรือ ไม่. • ถ้า i /\(\in\)SV r,2 แล้วฉันจะหยุดการดำเนินการขั้นตอนที่ 2 ของเขาเองทันที • ถ้า i \(\in\)SV r,2 หลังจากรอเป็นระยะเวลาหนึ่ง t2 \(\triangleq\)แล + Λ ฉันจะทำหน้าที่ดังนี้ 1. เขาค้นหาผู้ใช้ ëเช่นนั้น H(\(\sigma\)r,1 มอร์) \(\leq\)H(\(\sigma\)r,1 j ) สำหรับข้อมูลรับรองทั้งหมด \(\sigma\)r,1 เจ ที่เป็นส่วนหนึ่งของ ข้อความที่ได้รับการยืนยันเรียบร้อยแล้ว (r, 1) ที่เขาได้รับจนถึงขณะนี้ 2. หากได้รับข้อความที่ถูกต้องจากคุณ 1 ฎ = (พี่ มอร์, ซิกล์(H(Br ̵)), \(\sigma\)r,1 ̵), b จากนั้นฉันจะตั้งค่า วี' ฉัน \(\triangleq\)H(br ë); มิฉะนั้นฉันจะตั้งค่า v′ ฉัน \(\triangleq\) \(\bot\) 3. ฉันคำนวณข้อความคุณ 2 ฉัน \(\triangleq\)(ESIGi(วี′ ผม), \(\sigma\)r,2 i ),c ทำลายรหัสลับชั่วคราวของเขา เอสเคอาร์,2 ฉัน แล้วเผยแพร่นาย 2 ฉัน โดยพื้นฐานแล้ว ผู้ใช้ i ตัดสินใจเป็นการส่วนตัวว่าผู้นำของรอบ r คือผู้ใช้ ë b ขอย้ำอีกครั้งว่าลายเซ็นของผู้เล่น ë และ hashes ได้รับการตรวจสอบเรียบร้อยแล้ว และชำระเงิน r ริน Br ëเป็นชุดการจ่ายเงินที่ถูกต้องสำหรับ รอบ r —แม้ว่าฉันจะไม่ได้ตรวจสอบว่า PAY r หรือไม่ ̵ เป็นค่าสูงสุดสำหรับ ̃ หรือไม่ คข้อความคุณนาย2 ฉัน ส่งสัญญาณว่าผู้เล่นที่ฉันถือว่า v′ i เป็น hash ของบล็อกถัดไป หรือพิจารณาบล็อกถัดไป บล็อกให้ว่างเปล่า 17นั่นคือ ลายเซ็นทั้งหมดถูกต้อง และทั้งบล็อกและ hash ของมันนั้นถูกต้อง แม้ว่าฉันจะไม่ได้ตรวจสอบก็ตาม ไม่ว่าค่าตอบแทนที่รวมไว้จะเป็นจำนวนสูงสุดสำหรับผู้เสนอหรือไม่
ขั้นตอนที่ 3: ขั้นตอนที่สองของ GC คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้นขั้นตอนที่ 3 ของตัวเองของรอบ r ทันทีที่เขา รู้จัก Br−1 • ผู้ใช้ i คำนวณ Qr−1 จากองค์ประกอบที่สามของ Br−1 และตรวจสอบว่า i \(\in\)SV r,3 หรือ ไม่. • ถ้า i /\(\in\)SV r,3, แล้วฉันจะหยุดการดำเนินการขั้นตอนที่ 3 ของเขาเองทันที • ถ้า i \(\in\)SV r,3 หลังจากรอเป็นระยะเวลาหนึ่ง t3 \(\triangleq\)t2 + 2\(\lambda\) = 3l + Λ ฉันจะทำหน้าที่ดังนี้ 1. หากมีค่า v′ ̸= \(\bot\)เช่นนั้น ในบรรดาข้อความที่ถูกต้อง mr,2 เจ เขาได้รับ มากกว่า 2/3 อยู่ในรูปแบบ (ESIGj(v′), \(\sigma\)r,2 j ) โดยไม่มีความขัดแย้งใดๆ ก จากนั้นเขาก็คำนวณข้อความคุณ 3 ฉัน \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 ฉัน) มิฉะนั้นเขาจะคำนวณนาย 3 ฉัน \(\triangleq\) (ESIGi(\(\bot\)), \(\sigma\)r,3 ฉัน) 2. ฉันทำลายคีย์ลับชั่วคราวของเขา skr3 ฉัน แล้วเผยแพร่นาย 3 ฉัน aนั่นคือเขายังไม่ได้รับข้อความที่ถูกต้องสองข้อความที่มี ESIGj(v′) และ ESIGj(v′′) ที่แตกต่างกันตามลำดับ จากผู้เล่นเจ ที่นี่และต่อจากนี้ ยกเว้นในเงื่อนไขการสิ้นสุดที่กำหนดไว้ในภายหลัง เมื่อใดก็ตามที่เป็นผู้เล่นที่ซื่อสัตย์ ต้องการข้อความในรูปแบบที่กำหนด ข้อความที่ขัดแย้งกันจะไม่นับหรือถือว่าถูกต้องขั้นตอนที่ 4: ผลลัพธ์ของ GC และขั้นตอนแรกของ BBA⋆ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้นขั้นตอนที่ 4 ของตัวเองของรอบ r ทันทีที่เขา รู้จัก Br−1 • ผู้ใช้ i คำนวณ Qr−1 จากองค์ประกอบที่สามของ Br−1 และตรวจสอบว่า i \(\in\)SV r,4 หรือ ไม่. • ถ้า i /\(\in\)SV r,4 แล้ว i เขาจะหยุดการดำเนินการขั้นตอนที่ 4 ทันที • หาก i \(\in\)SV r,4 หลังจากรอเป็นระยะเวลาหนึ่ง t4 \(\triangleq\)t3 + 2แล = 5แล + Λ ฉันจะทำหน้าที่ดังต่อไปนี้ 1. เขาคำนวณ vi และ gi ซึ่งเป็นผลลัพธ์ของ GC ดังนี้ (a) ถ้ามีค่า v′ ̸= \(\bot\)เช่นนั้น ในบรรดาข้อความที่ถูกต้อง mr,3 เจ เขามี ได้รับมากกว่า 2/3 อยู่ในรูปแบบ (ESIGj(v′), \(\sigma\)r,3 j ) จากนั้นเขาก็ตั้งค่า vi \(\triangleq\)v′ และ gi \(\triangleq\)2. (b) มิฉะนั้น ถ้ามีค่า v′ ̸= \(\bot\)เช่นนั้น ในบรรดาข้อความที่ถูกต้องทั้งหมด นาย 3 เจ เขาได้รับ มากกว่า 1/3 อยู่ในรูปแบบ (ESIGj(v′), \(\sigma\)r,3 เจ ) จากนั้น เขาตั้งค่า vi \(\triangleq\)v′ และ gi \(\triangleq\)1.a (c) อย่างอื่นเขากำหนด vi \(\triangleq\)H(Br ǫ ) และ gi \(\triangleq\)0 2. เขาคำนวณ bi ซึ่งเป็นอินพุตของ BBA⋆ ดังนี้: bi \(\triangleq\)0 ถ้า gi = 2 และ bi \(\triangleq\)1 มิฉะนั้น 3. เขาคำนวณข้อความ คุณ4 ฉัน \(\triangleq\)(ESIGi(ไบ), ESIGi(vi), \(\sigma\)r,4 i ) ทำลายช่วงเวลาชั่วคราวของเขา รหัสลับ skr,4 ฉัน แล้วเผยแพร่นาย 4 ฉัน aพิสูจน์ได้ว่า v′ ในกรณี (b) ถ้ามี จะต้องไม่ซ้ำกัน
ขั้นตอนที่ s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3: ขั้นตอน Coin-Fixed-To-0 ของ BBA⋆ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้น Step s ของตัวเองของรอบ r ทันทีที่เขา รู้จัก Br−1 • ผู้ใช้ i คำนวณ Qr−1 จากองค์ประกอบที่สามของ Br−1 และตรวจสอบว่า i \(\in\)SV r,s หรือไม่ • หาก i /\(\in\)SV r,s ฉันจะหยุดการดำเนินการ Step s ของเขาทันที • ถ้า i \(\in\)SV r,s แล้วเขาจะทำหน้าที่ดังต่อไปนี้ – เขารอจนกระทั่งผ่านไประยะเวลาหนึ่ง ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ – เงื่อนไขการสิ้นสุด 0: หากในระหว่างการรอดังกล่าวและ ณ เวลาใด ๆ มี a string v ̸= \(\bot\)และขั้นตอน s′ เช่นนั้น (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 —นั่นคือ ขั้นตอน s′ เป็นขั้นตอน Coin-Fixed-To-0 (b) ฉันได้รับอย่างน้อยแล้ว = 2น 3 + 1 ข้อความที่ถูกต้อง mr,s′−1 เจ = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 เจ ) และ (ค) ฉันได้รับข้อความที่ถูกต้อง คุณ 1 เจ = (พี่ j , esigj(H(Br เจ )), \(\sigma\)r,1 เจ ) ด้วย โวลต์ = H(Br เจ) จากนั้น ฉันจะหยุดการดำเนินการขั้นตอน s ของเขาเอง (และในความเป็นจริงของรอบ r) ทันทีโดยไม่ต้อง เผยแพร่สิ่งใด ๆ เซต Br = Br เจ ; และกำหนดให้ CERT r ของเขาเองเป็นชุดข้อความ นาย,s′−1 เจ ของขั้นตอนย่อย (ข)ข – เงื่อนไขการสิ้นสุดที่ 1: หากในระหว่างการรอดังกล่าวและ ณ เวลาใดก็ตาม มี ขั้นตอนที่ s′ เช่นนั้น (a’) 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 —นั่นคือ Step s′ เป็นขั้นตอน Coin-Fixed-To-1 และ (b’) ฉันได้รับข้อความที่ถูกต้องอย่างน้อย mr,s′−1 เจ = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 เจ ),ค จากนั้น ฉันจะหยุดการดำเนินการขั้นตอน s ของเขาเอง (และในความเป็นจริงของรอบ r) ทันทีโดยไม่ต้อง เผยแพร่สิ่งใด ๆ เซต Br = Br ; และกำหนดให้ CERT r ของเขาเองเป็นชุดข้อความ นาย,s′−1 เจ ของขั้นตอนย่อย (b’) – มิฉะนั้น เมื่อสิ้นสุดการรอ ผู้ใช้จะดำเนินการดังต่อไปนี้ เขากำหนดให้ vi เป็นคะแนนเสียงข้างมากของ vj ในองค์ประกอบที่สองของคะแนนเสียงที่ถูกต้องทั้งหมด นายส−1 เจ เขาได้รับแล้ว เขาคำนวณไบดังนี้ ถ้ามากกว่า 2/3 ของ mr,s−1 ที่ถูกต้องทั้งหมด เจ ที่เขาได้รับนั้นเป็นแบบอย่าง (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็ตั้งค่า bi \(\triangleq\)0 มิฉะนั้น ถ้ามากกว่า 2/3 ของ mr,s−1 ที่ถูกต้องทั้งหมด เจ ที่เขาได้รับนั้นเป็นแบบอย่าง (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็ตั้งค่า bi \(\triangleq\)1 มิฉะนั้นเขาจะตั้งค่า bi \(\triangleq\)0 เขาคำนวณข้อความของคุณนาย ฉัน \(\triangleq\)(ESIGi(ไบ), ESIGi(vi), \(\sigma\)r,s i ) ทำลายช่วงเวลาชั่วคราวของเขา รหัสลับ skr,s ฉัน แล้วเผยแพร่นายส ฉัน aข้อความดังกล่าวจากผู้เล่น j จะถูกนับแม้ว่าผู้เล่น i จะได้รับข้อความจากการลงนาม j สำหรับ 1 ก็ตาม สิ่งที่คล้ายกันสำหรับเงื่อนไขการสิ้นสุด 1 ดังที่แสดงในการวิเคราะห์ การดำเนินการนี้ทำเพื่อให้แน่ใจว่าผู้ใช้ที่ซื่อสัตย์ทุกคนทราบ Br ภายในเวลา แล จากกัน bUser ตอนนี้ฉันรู้จัก Br และรอบสุดท้ายของเขาแล้ว เขายังคงช่วยเผยแพร่ข้อความในฐานะผู้ใช้ทั่วไปแต่ ไม่ได้เริ่มต้นการแพร่กระจายใด ๆ ในฐานะ (r, s) - ผู้ตรวจสอบ โดยเฉพาะเขาได้ช่วยเผยแพร่ข้อความทั้งหมดในตัวเขา CERT r ซึ่งเพียงพอสำหรับโปรโตคอลของเรา โปรดทราบว่าเขาควรตั้งค่า bi \(\triangleq\)0 สำหรับโปรโตคอล BA ไบนารี่ด้วย แต่ตั้งค่าเป็น bi ไม่จำเป็นในกรณีนี้อยู่แล้ว สิ่งที่คล้ายกันสำหรับคำแนะนำทั้งหมดในอนาคต cในกรณีนี้ มันไม่สำคัญว่าวีเจจะเป็นอะไรขั้นตอนที่ s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3: ขั้นตอนแบบ Coin-Fixed-To-1 ของ BBA⋆ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้น Step s ของตัวเองของรอบ r ทันทีที่เขา รู้จัก Br−1 • ผู้ใช้ i คำนวณ Qr−1 จากองค์ประกอบที่สามของ Br−1 และตรวจสอบว่า i \(\in\)SV r,s หรือ ไม่. • หาก i /\(\in\)SV r,s ฉันจะหยุดการดำเนินการ Step s ของเขาทันที • ถ้า i \(\in\)SV r,s แล้วเขาจะทำดังต่อไปนี้ – เขารอจนกระทั่งผ่านไประยะเวลาหนึ่ง ts \(\triangleq\)(2s −3)\(\lambda\) + Λ – เงื่อนไขการสิ้นสุด 0: คำแนะนำเดียวกันกับขั้นตอน Coin-Fixed-To-0 – เงื่อนไขการสิ้นสุด 1: คำแนะนำเดียวกันกับขั้นตอน Coin-Fixed-To-0 – มิฉะนั้น เมื่อสิ้นสุดการรอ ผู้ใช้จะดำเนินการดังต่อไปนี้ เขากำหนดให้ vi เป็นคะแนนเสียงข้างมากของ vj ในองค์ประกอบที่สองของคะแนนเสียงที่ถูกต้องทั้งหมด นายส−1 เจ เขาได้รับแล้ว เขาคำนวณไบดังนี้ ถ้ามากกว่า 2/3 ของ mr,s−1 ที่ถูกต้องทั้งหมด เจ ที่เขาได้รับนั้นเป็นแบบอย่าง (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็ตั้งค่า bi \(\triangleq\)0 มิฉะนั้น ถ้ามากกว่า 2/3 ของ mr,s−1 ที่ถูกต้องทั้งหมด เจ ที่เขาได้รับนั้นเป็นแบบอย่าง (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็ตั้งค่า bi \(\triangleq\)1 มิฉะนั้นเขาจะตั้งค่า bi \(\triangleq\)1 เขาคำนวณข้อความของคุณนาย ฉัน \(\triangleq\)(ESIGi(ไบ), ESIGi(vi), \(\sigma\)r,s i ) ทำลายช่วงเวลาชั่วคราวของเขา รหัสลับ skr,s ฉัน แล้วเผยแพร่นายส ฉัน
ขั้นตอนที่ s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: ขั้นตอนการพลิกเหรียญอย่างแท้จริงของ BBA⋆ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้น Step s ของตัวเองของรอบ r ทันทีที่เขา รู้จัก Br−1 • ผู้ใช้ i คำนวณ Qr−1 จากองค์ประกอบที่สามของ Br−1 และตรวจสอบว่า i \(\in\)SV r,s หรือ ไม่. • หาก i /\(\in\)SV r,s ฉันจะหยุดการดำเนินการ Step s ของเขาทันที • ถ้า i \(\in\)SV r,s แล้วเขาจะทำดังต่อไปนี้ – เขารอจนกระทั่งผ่านไประยะเวลาหนึ่ง ts \(\triangleq\)(2s −3)\(\lambda\) + Λ – เงื่อนไขการสิ้นสุด 0: คำแนะนำเดียวกันกับขั้นตอน Coin-Fixed-To-0 – เงื่อนไขการสิ้นสุด 1: คำแนะนำเดียวกันกับขั้นตอน Coin-Fixed-To-0 – มิฉะนั้น เมื่อสิ้นสุดการรอ ผู้ใช้จะดำเนินการดังต่อไปนี้ เขากำหนดให้ vi เป็นคะแนนเสียงข้างมากของ vj ในองค์ประกอบที่สองของคะแนนเสียงที่ถูกต้องทั้งหมด นายส−1 เจ เขาได้รับแล้ว เขาคำนวณไบดังนี้ ถ้ามากกว่า 2/3 ของ mr,s−1 ที่ถูกต้องทั้งหมด เจ ที่เขาได้รับนั้นเป็นแบบอย่าง (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็ตั้งค่า bi \(\triangleq\)0 มิฉะนั้น ถ้ามากกว่า 2/3 ของ mr,s−1 ที่ถูกต้องทั้งหมด เจ ที่เขาได้รับนั้นเป็นแบบอย่าง (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็ตั้งค่า bi \(\triangleq\)1 มิฉะนั้น ให้ SV r,s−1 ฉัน เป็นเซตของ (r, s −1) - ผู้ตรวจสอบที่เขาได้รับความถูกต้อง ส่งข้อความถึงคุณ s−1 เจ . เขาตั้งค่า bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 ฉัน H(\(\sigma\)r,s−1 เจ )). เขาคำนวณข้อความของคุณนาย ฉัน \(\triangleq\)(ESIGi(ไบ), ESIGi(vi), \(\sigma\)r,s i ) ทำลายช่วงเวลาชั่วคราวของเขา รหัสลับ skr,s ฉัน แล้วเผยแพร่นายส ฉัน
ขั้นตอนที่ m + 3: ขั้นตอนสุดท้ายของ BBA⋆a คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มขั้นตอนของตนเอง m + 3 ของรอบ r ทันทีที่เขา รู้จัก Br−1 • ผู้ใช้ i คำนวณ Qr−1 จากองค์ประกอบที่สามของ Br−1 และตรวจสอบว่า i \(\in\)SV r,m+3 หรือ ไม่. • ถ้า i /\(\in\)SV r,m+3 ฉันจะหยุดการดำเนินการขั้นตอน m + 3 ของเขาเองทันที • ถ้า i \(\in\)SV r,m+3 แล้วเขาจะทำดังต่อไปนี้ – เขารอจนกระทั่งผ่านไประยะเวลาหนึ่ง tm+3 \(\triangleq\)tm+2 + 2\(\lambda\) = (2m + 3)\(\lambda\) + Λ – เงื่อนไขการสิ้นสุด 0: คำแนะนำเดียวกันกับขั้นตอน Coin-Fixed-To-0 – เงื่อนไขการสิ้นสุด 1: คำแนะนำเดียวกันกับขั้นตอน Coin-Fixed-To-0 – มิฉะนั้น เมื่อสิ้นสุดการรอ ผู้ใช้จะดำเนินการดังต่อไปนี้ เขากำหนด \(\triangleq\)1 และ Br \(\triangleq\)Br ī. เขาคำนวณข้อความ mr,m+3 ฉัน = (ESIGi(ออกิ), ESIGi(H(Br)), \(\sigma\)r,m+3 ฉัน ) ทำลายของเขา คีย์ลับชั่วคราว skr,m+3 ฉัน แล้วเผยแพร่ mr,m+3 ฉัน เพื่อรับรอง Br.b aด้วยความน่าจะเป็นอย่างท่วมท้น BBA⋆ได้สิ้นสุดลงก่อนขั้นตอนนี้ และเราระบุขั้นตอนนี้เพื่อความสมบูรณ์ ใบรับรอง ba จากขั้นตอน m + 3 ไม่จำเป็นต้องรวม ESIGi(outi) เรารวมไว้เพื่อความสม่ำเสมอเท่านั้น: ขณะนี้ใบรับรองมีรูปแบบที่เหมือนกันไม่ว่าจะสร้างในขั้นตอนใดก็ตามการสร้าง Round-r Block ขึ้นมาใหม่โดยผู้ที่ไม่ใช่ผู้ตรวจสอบ คำแนะนำสำหรับผู้ใช้ทุกคน i ในระบบ: ผู้ใช้ i เริ่มรอบ r ของตนเองทันทีที่ทราบ Br−1 และรอข้อมูลบล็อกดังนี้ – หากในระหว่างการรอและ ณ เวลาใดก็ตาม มีสตริง v และขั้นตอน s′ ดังกล่าวอยู่ นั่น (a) 5 \(\leq\)s′ \(\leq\)m + 3 โดยมี s′ −2 ≡0 mod 3 (b) ฉันได้รับข้อความที่ถูกต้องอย่างน้อย mr,s′−1 เจ = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 เจ ) และ (ค) ฉันได้รับข้อความที่ถูกต้อง คุณ 1 เจ = (พี่ j , esigj(H(Br เจ )), \(\sigma\)r,1 เจ ) ด้วย โวลต์ = H(Br เจ) จากนั้นฉันก็หยุดการดำเนินการรอบ r ของเขาเองทันที เซต Br = Br เจ; และกำหนด CERT r ของเขาเอง เป็นชุดข้อความ mr,s′−1 เจ ของขั้นตอนย่อย (b) – หากในระหว่างการรอคอยและ ณ จุดใดเวลาหนึ่ง มีขั้นตอนเช่นนั้นอยู่ (a’) 6 \(\leq\)s′ \(\leq\)m + 3 โดยมี s′ −2 ≡1 mod 3 และ (b’) ฉันได้รับข้อความที่ถูกต้องอย่างน้อย mr,s′−1 เจ = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 เจ ) จากนั้นฉันก็หยุดการดำเนินการรอบ r ของเขาเองทันที เซต Br = Br ǫ; และกำหนด CERT r ของเขาเอง เป็นชุดข้อความ mr,s′−1 เจ ของขั้นตอนย่อย (b’) – หากในระหว่างการรอและ ณ เวลาใดก็ตาม ฉันได้รับข้อความที่ถูกต้องเป็นอย่างน้อย คุณม+3 เจ = (ESIGj(1), ESIGj(H(Br ī )), \(\sigma\)r,m+3 เจ ) จากนั้นฉันก็หยุดการประมวลผลรอบ r ของเขาเอง ทันที ให้ตั้ง Br = Br ǫ และตั้งค่า CERT r ของเขาเองให้เป็นชุดข้อความ mr,m+3 เจ สำหรับ 1 และ H(br ǫ) 5.5 การวิเคราะห์ Algorand ′ 1 เราแนะนำสัญลักษณ์ต่อไปนี้สำหรับแต่ละรอบ r \(\geq\)0 ซึ่งใช้ในการวิเคราะห์ • ให้ T r เป็นเวลาที่ผู้ใช้ที่ซื่อสัตย์คนแรกรู้จัก Br−1 • ให้ Ir+1 เป็นช่วง [T r+1, T r+1 + \(\lambda\)] โปรดทราบว่า T 0 = 0 โดยการเริ่มต้นของโปรโตคอล สำหรับแต่ละ s \(\geq\)1 และ i \(\in\)SV r,s ให้จำไว้ เอลอาร์ส ฉัน และ \(\beta\)r,s ฉัน คือเวลาเริ่มต้นและเวลาสิ้นสุดของผู้เล่น i's step s ตามลำดับ นอกจากนี้ จำได้ว่า ts = (2s −3)\(\lambda\) + Λ สำหรับแต่ละ 2 \(\leq\)s \(\leq\)m + 3 นอกจากนี้ ให้ I0 \(\triangleq\){0} และ t1 \(\triangleq\)0 สุดท้ายนี้ จำไว้ว่า Lr \(\leq\)m/3 เป็นตัวแปรสุ่มที่แสดงถึงจำนวนการทดลองเบอร์นูลลี จำเป็นต้องดู 1 เมื่อการทดลองแต่ละครั้งคือ 1 โดยมีความน่าจะเป็น ph 2 และมีการทดลองสูงสุด m/3 ถ้าทั้งหมด การทดลองล้มเหลวจากนั้น Lr \(\triangleq\)m/3 ในการวิเคราะห์ เราไม่สนใจเวลาในการคำนวณ เนื่องจากจริงๆ แล้วมีเวลาน้อยมากเมื่อเทียบกับเวลาที่ต้องการ เพื่อเผยแพร่ข้อความ ไม่ว่าในกรณีใด หากใช้ แลมบ์ดา และ Λ ที่มีขนาดใหญ่ขึ้นเล็กน้อย เวลาในการคำนวณก็สามารถทำได้ เข้าสู่การวิเคราะห์โดยตรง ข้อความด้านล่างส่วนใหญ่ถือ “อย่างล้นหลาม ความน่าจะเป็น” และเราอาจไม่ได้เน้นย้ำข้อเท็จจริงนี้ซ้ำๆ ในการวิเคราะห์5.6 ทฤษฎีบทหลัก ทฤษฎีบท 5.1 คุณสมบัติต่อไปนี้มีความน่าจะเป็นอย่างล้นหลามสำหรับแต่ละรอบ r \(\geq\)0: 1. ผู้ใช้ที่ซื่อสัตย์ทุกคนเห็นด้วยกับบล็อกเดียวกัน Br. 2. เมื่อผู้นำ ër ซื่อสัตย์ บล็อก Br จะถูกสร้างขึ้นโดย ër โดยที่ Br จะมีค่าตอบแทนสูงสุด ได้รับโดย LRr ตามเวลา \(\alpha\)r,1 ër , T r+1 \(\leq\)T r + 8แล + Λ และผู้ใช้ที่ซื่อสัตย์ทุกคนรู้จัก Br ในเวลานั้น ช่วงเวลา Ir+1 3. เมื่อผู้นำ ër เป็นอันตราย T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ และผู้ใช้ที่ซื่อสัตย์ทุกคนจะรู้ Br ในช่วงเวลา Ir+1 4. ph = h2(1 + h −h2) สำหรับ Lr และตัวนำ ër ซื่อสัตย์กับความน่าจะเป็นอย่างน้อย ph ก่อนที่จะพิสูจน์ทฤษฎีบทหลักของเรา ขอให้เราตั้งข้อสังเกตไว้สองประการ หมายเหตุ. • Block-Generation และ True Latency เวลาในการสร้างบล็อก Br ถูกกำหนดให้เป็น T r+1 −T r นั่นคือ มันถูกกำหนดให้เป็นความแตกต่างระหว่างครั้งแรกที่ผู้ใช้ที่ซื่อสัตย์บางคนเรียนรู้ Br และ ครั้งแรกที่ผู้ใช้ที่ซื่อสัตย์เรียนรู้ Br−1 เมื่อผู้นำรอบนั้นซื่อสัตย์ ทรัพย์สินที่ 2 ของเรา ทฤษฎีบทหลักรับประกันว่าเวลาที่แน่นอนในการสร้าง Br คือเวลา 8 แล + Λ ไม่ว่าจะเป็นอะไรก็ตาม ค่าที่แน่นอนของ h > 2/3 อาจเป็นได้ เมื่อผู้นำมีเจตนาร้าย คุณสมบัติที่ 3 หมายความว่า เวลาที่คาดว่าจะสร้าง Br นั้นมีขอบเขตบน ( 12 ph + 10)\(\lambda\) + Λ อีกครั้งไม่ว่าจะแม่นยำแค่ไหนก็ตาม ค่า h.18 อย่างไรก็ตาม เวลาที่คาดว่าจะสร้าง Br ขึ้นอยู่กับค่าที่แน่นอนของ h โดยแท้จริงแล้ว โดยคุณสมบัติ 4, ph = h2(1 + h −h2) และผู้นำมีความซื่อสัตย์กับความน่าจะเป็นเป็นอย่างน้อย ph ดังนั้น E[T r+1 −T r] \(\leq\)h2(1 + h −h2) \(\cdot\) (8แล + Λ) + (1 −h2(1 + h −h2))(( 12 h2(1 + h −h2) + 10)แล + Λ) ตัวอย่างเช่น ถ้า h = 80% แล้ว E[T r+1 −T r] \(\leq\)12.7แล + Λ • แลมบ์ดา กับ Λ. โปรดทราบว่าขนาดของข้อความที่ส่งโดยผู้ตรวจสอบในขั้นตอน Algorand ′ นั้นถูกครอบงำ ตามความยาวของคีย์ลายเซ็นดิจิทัลซึ่งสามารถแก้ไขได้แม้ว่าจะมีจำนวนก็ตาม ผู้ใช้มีมหาศาล โปรดทราบด้วยว่าในขั้นตอนใดๆ > 1 จำนวนผู้ตรวจสอบที่คาดหวังไว้จะเท่ากัน สามารถใช้ได้ไม่ว่าจำนวนผู้ใช้จะเป็น 100K, 100M หรือ 100M ที่เป็นเช่นนี้ก็เพราะว่า n เพียงอย่างเดียว ขึ้นอยู่กับ h และ F โดยสรุปแล้ว หากไม่จำเป็นต้องเพิ่มความยาวของคีย์ลับอย่างกะทันหัน ค่าของ \(\gamma\) ควรคงเดิมไม่ว่าจำนวนผู้ใช้จะมากเพียงใด อนาคตอันใกล้ ในทางตรงกันข้าม สำหรับอัตราธุรกรรมใดๆ จำนวนธุรกรรมจะเพิ่มขึ้นตามจำนวน ผู้ใช้ ดังนั้นเพื่อประมวลผลธุรกรรมใหม่ทั้งหมดให้ทันเวลา ขนาดของบล็อกควรจะเป็น ยังเติบโตตามจำนวนผู้ใช้งาน ทำให้ Λ เติบโตขึ้นด้วย ดังนั้นในระยะยาวเราควรจะมี แล << Λ. ดังนั้นจึงเป็นเรื่องเหมาะสมที่จะมีโคอีfficientที่ใหญ่กว่าสำหรับ แล และจริงๆ แล้ว coefficient จาก 1 สำหรับ Λ. การพิสูจน์ทฤษฎีบท 5.1 เราพิสูจน์คุณสมบัติ 1–3 โดยการเหนี่ยวนํา: สมมติว่าคุณสมบัติเหล่านั้นคงไว้เป็นรอบ r −1 (โดยไม่สูญเสียลักษณะทั่วไป มันจะถือเป็น "รอบ -1" โดยอัตโนมัติเมื่อ r = 0) เราพิสูจน์มันแล้ว รอบร. 18แท้จริงแล้ว E[T r+1 −T r] \(\leq\)(6E[Lr] + 10)แล + Λ = (6 \(\cdot\) 2 ค่า pH + 10)แล + Λ = ( 12 ค่าพีเอช + 10)แล + Λเนื่องจาก Br−1 ถูกกำหนดอย่างไม่ซ้ำกันโดยสมมติฐานอุปนัย เซต SV r,s จึงถูกกำหนดอย่างไม่ซ้ำกัน สำหรับแต่ละขั้นตอนของรอบ r โดยการเลือก n1, SV r,1 ̸= \(\emptyset\) ด้วยความน่าจะเป็นอย่างล้นหลาม เราตอนนี้ ระบุบทแทรกสองบทต่อไปนี้ ซึ่งพิสูจน์แล้วในส่วนที่ 5.7 และ 5.8 ตลอดการปฐมนิเทศและใน การพิสูจน์บทแทรกทั้งสองบทการวิเคราะห์รอบ 0 เกือบจะเหมือนกับขั้นตอนอุปนัย และเราจะเน้นถึงความแตกต่างเมื่อเกิดขึ้น เลมมา 5.2 [ความสมบูรณ์ของเล็มมา] สมมติคุณสมบัติ 1–3 ค้างไว้รอบ r−1 เมื่อผู้นำ ër เป็นคนซื่อสัตย์ ด้วยความน่าจะเป็นอย่างล้นหลาม • ผู้ใช้จริงทุกคนเห็นด้วยกับบล็อกเดียวกัน Br ซึ่งสร้างโดย ër และมีค่าสูงสุด ชุดจ่ายเงินที่ได้รับโดย ër ตามเวลา \(\alpha\)r, 1 ër \(\in\)Ir; และ • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ และผู้ใช้จริงทุกคนจะทราบ Br ในช่วงเวลา Ir+1 เลมมา 5.3 [Soundness Lemma] สมมติคุณสมบัติ 1–3 ค้างไว้รอบ r −1 เมื่อผู้นำ ër เป็นอันตราย ด้วยความน่าจะเป็นอย่างล้นหลาม ผู้ใช้ที่ซื่อสัตย์ทุกคนเห็นด้วยกับบล็อกเดียวกัน Br, T r+1 \(\leq\) T r + (6Lr + 10)\(\lambda\) + Λ และผู้ใช้ที่ซื่อสัตย์ทุกคนทราบ Br ในช่วงเวลา Ir+1 คุณสมบัติ 1–3 คงไว้โดยการใช้บทแทรก 5.2 และ 5.3 กับ r = 0 และกับขั้นตอนอุปนัย สุดท้ายนี้ เรากล่าวย้ำคุณสมบัติ 4 ว่าเป็นบทแทรกต่อไปนี้ ซึ่งพิสูจน์แล้วในส่วนที่ 5.9 เลมมา 5.4 ให้คุณสมบัติ 1–3 สำหรับแต่ละรอบก่อน r, ph = h2(1 + h −h2) สำหรับ Lr และ ผู้นำ ër ซื่อสัตย์กับความน่าจะเป็นอย่างน้อย ph เมื่อรวมบทแทรกสามบทข้างต้นเข้าด้วยกัน ทฤษฎีบท 5.1 ก็ถือได้ ■ บทแทรกด้านล่างระบุคุณสมบัติที่สำคัญหลายประการเกี่ยวกับรอบ r เมื่อพิจารณาจากอุปนัย สมมติฐาน และจะนำไปใช้ในการพิสูจน์บทแทรกสามบทข้างต้น เลมมา 5.5 สมมติว่าคุณสมบัติ 1–3 คงไว้สำหรับรอบ r −1 สำหรับแต่ละขั้นตอน s \(\geq\)1 ของรอบ r และ ผู้ตรวจสอบที่ซื่อสัตย์แต่ละคน i \(\in\)HSV r,s เรามีสิ่งนั้น (ก) \(\alpha\)r, s ฉัน \(\in\)ฉัน; (b) ถ้าผู้เล่นฉันรอมาเป็นระยะเวลา ts แล้ว \(\beta\)r,s ฉัน \(\in\)[T r + ts, T r + \(\lambda\) + ts] สำหรับ r > 0 และ \(\beta\)r,s ฉัน = ts สำหรับ r = 0; และ (c) ถ้าผู้เล่นฉันรอมาเป็นระยะเวลา ts แล้วตามเวลา \(\beta\)r,s ฉัน เขาได้รับข้อความทั้งหมดแล้ว ส่งโดยผู้ตรวจสอบที่ซื่อสัตย์ทุกคน j \(\in\)HSV r,s′ สำหรับทุกขั้นตอน s′ < s ยิ่งไปกว่านั้น สำหรับแต่ละขั้นตอน s \(\geq\)3 เรามีสิ่งนั้น (d) ไม่มีผู้เล่นที่แตกต่างกันสองคน i, i′ \(\in\)SV r,s และค่าที่ต่างกันสองค่า v, v′ ที่เหมือนกัน ความยาวจนผู้เล่นทั้งสองคนต้องรอเป็นระยะเวลา ts มากกว่า 2/3 ของทั้งหมด ข้อความที่ถูกต้อง mr,s−1 เจ ผู้เล่นที่ฉันได้รับได้ลงนามใน v และมากกว่า 2/3 ของทั้งหมดที่ถูกต้อง ข้อความคุณ, s−1 เจ ผู้เล่นที่ฉันได้รับได้เซ็นสัญญากับ v′ การพิสูจน์. คุณสมบัติ (a) ตามมาจากสมมติฐานอุปนัยโดยตรง เนื่องจากผู้เล่นที่ฉันรู้จัก Br−1 ใน ช่วงเวลา Ir และเริ่มก้าวของเขาเองทันที คุณสมบัติ (b) ติดตามโดยตรงจาก (a): เนื่องจาก ผู้เล่น ฉันรอมาระยะหนึ่งแล้วก่อนที่จะลงมือ \(\beta\)r,s ฉัน = \(\alpha\)r,s ฉัน + ทีเอส โปรดทราบว่า \(\alpha\)r,s ฉัน = 0 สำหรับ ร = 0 ตอนนี้เราพิสูจน์คุณสมบัติ (c) ถ้า s = 2 ดังนั้นโดยคุณสมบัติ (b) สำหรับผู้ตรวจสอบทั้งหมด j \(\in\)HSV r,1 เรามี \(\beta\)r,s ฉัน = \(\alpha\)r,s ฉัน + ts \(\geq\)T r + ts = T r + แล + Λ \(\geq\) \(\beta\)r,1 เจ + Λ.เนื่องจากผู้ตรวจสอบแต่ละคน j \(\in\)HSV r,1 ส่งข้อความของเขาในเวลา \(\beta\)r,1 เจ และข้อความไปถึงความซื่อสัตย์ทั้งหมด ผู้ใช้ในเวลาสูงสุด Λ ตามเวลา \(\beta\)r, s ฉัน ผู้เล่นที่ฉันได้รับข้อความที่ส่งมาจากผู้ตรวจสอบทั้งหมด HSV r,1 ตามต้องการ ถ้า s > 2 แล้ว ts = ts−1 + 2แล ตามคุณสมบัติ (b) สำหรับทุกขั้นตอน s′ < s และผู้ตรวจสอบทั้งหมด j \(\in\)HSV r,s′, \(\beta\)r,s ฉัน = \(\alpha\)r,s ฉัน + ts \(\geq\)T r + ts = T r + ts−1 + 2แล \(\geq\)T r + ts′ + 2แล = T r + แล + ts′ + แลม \(\geq\) \(\beta\)r,s′ เจ + แล. เนื่องจากผู้ตรวจสอบแต่ละคน j \(\in\)HSV r,s′ ส่งข้อความของเขาในเวลา \(\beta\)r,s′ เจ และข้อความไปถึงความซื่อสัตย์ทั้งหมด ผู้ใช้ในเวลาสูงสุด , ตามเวลา \(\beta\)r, s ฉัน ผู้เล่น ฉันได้รับข้อความทั้งหมดที่ส่งมาจากผู้ตรวจสอบที่ซื่อสัตย์ทุกคน ใน HSV r,s′ สำหรับทุก s′ < s ดังนั้นทรัพย์สิน (c) ถืออยู่ ในที่สุด เราก็พิสูจน์คุณสมบัติ (d) โปรดทราบว่าผู้ตรวจสอบ j \(\in\)SV r,s−1 ลงชื่อไม่เกินสองสิ่ง ขั้นตอนที่ s −1 โดยใช้คีย์ลับชั่วคราว: ค่า vj ที่มีความยาวเท่ากับเอาต์พุตของ ฟังก์ชัน hash และบิต bj \(\in\){0, 1} ถ้า s −1 \(\geq\)4 นั่นคือเหตุผลในบทแทรก เราต้องการให้ v และ v′ มีความยาวเท่ากัน: ผู้ตรวจสอบหลายคนอาจลงนามทั้งค่า hash v และบิต b ดังนั้น ทั้งคู่จึงผ่านเกณฑ์ 2/3 สมมุติเพื่อประโยชน์แห่งความขัดแย้งว่ามีตัวตรวจสอบที่ต้องการ i, i′ และค่า v, v′ อยู่ โปรดทราบว่าผู้ตรวจสอบที่เป็นอันตรายบางรายใน MSV r,s−1 อาจลงนามทั้ง v และ v′ แต่แต่ละคนก็ซื่อสัตย์ ผู้ตรวจสอบใน HSV r,s−1 ได้ลงนามมากที่สุดหนึ่งฉบับ โดยทรัพย์สิน (c) ทั้งฉันและฉันได้รับ ข้อความทั้งหมดที่ส่งโดยผู้ตรวจสอบที่ซื่อสัตย์ทุกคนใน HSV r,s−1 ให้ HSV r,s−1(v) เป็นเซตของผู้ตรวจสอบที่ซื่อสัตย์ (r, s −1) ซึ่งลงนามใน v, MSV r,s−1 ฉัน ชุด ของผู้ตรวจสอบที่เป็นอันตราย (r, s −1) ซึ่งฉันได้รับข้อความที่ถูกต้องและ MSV r, s−1 ฉัน (v) ที่ เซตย่อยของ MSV r,s−1 ฉัน จากผู้ที่ฉันได้รับข้อความลงนามที่ถูกต้อง v. ตามข้อกำหนดสำหรับ ฉันและวี เรามี อัตราส่วน \(\triangleq\)|HSV r,s−1(v)| + |MSV r,s−1 ฉัน (ก)| |HSV r,s−1| + |MSV r,s−1 ฉัน |
2 3. (1) เราแสดงก่อน |MSV r,s−1 ฉัน (ก)| \(\leq\)|HSV r,s−1(v)| (2) สมมติเป็นอย่างอื่นโดยความสัมพันธ์ระหว่างพารามิเตอร์ที่มีความน่าจะเป็นอย่างท่วมท้น |HSV r,s−1| > 2|MSV r,s−1| \(\geq\)2|MSV r,s−1 ฉัน | ดังนั้น อัตราส่วน < |HSV r,s−1(v)| + |MSV r,s−1 ฉัน (ก)| 3|MSV r,s−1 ฉัน | < 2|MSV r,s−1 ฉัน (ก)| 3|MSV r,s−1 ฉัน | \(\leq\)2 3, ความไม่เท่าเทียมกันที่ขัดแย้งกัน 1. ต่อไป โดยอสมการ 1 เรามี 2|HSV r,s−1| + 2|MSV r,s−1 ฉัน | < 3|HSV r,s−1(v)| + 3|MSV r,s−1 ฉัน (ก)| \(\leq\) 3|HSV r,s−1(v)| + 2|MSV r,s−1 ฉัน | + |MSV r,s−1 ฉัน (ก)|. เมื่อรวมกับความไม่เท่าเทียมกัน 2 2|HSV r,s−1| < 3|HSV r,s−1(v)| + |MSV r,s−1 ฉัน (ก)| \(\leq\)4|HSV r,s−1(v)|, ซึ่งหมายถึง |HSV r,s−1(v)| > 1 2|HSV r,s−1|ในทำนองเดียวกัน ตามข้อกำหนดสำหรับ i′ และ v′ เรามี |HSV r,s−1(วี′)| > 1 2|HSV r,s−1| เนื่องจากผู้ตรวจสอบที่ซื่อสัตย์ j \(\in\)HSV r,s−1 ทำลายคีย์ลับชั่วคราวของเขา skr,s−1 เจ ก่อนที่จะแพร่กระจาย ข้อความของเขา ปฏิปักษ์ไม่สามารถปลอมลายเซ็นของ j สำหรับค่าที่ j ไม่ได้ลงนามหลังจากนั้น การเรียนรู้ว่า j เป็นผู้ยืนยัน ดังนั้น อสมการทั้งสองข้างต้นจึงหมายถึง |HSV r,s−1| \(\geq\)|HSV r,s−1(v)| + |HSV r,s−1(วี′)| > |HSV r,s−1| ซึ่งเป็นข้อขัดแย้ง ดังนั้นจึงไม่มีสิ่งที่ต้องการ i, i′, v, v′ และ ทรัพย์สิน (ง) ถือครอง ■ 5.7 ความสมบูรณ์เลมมา เลมมา 5.2 [ความสมบูรณ์ของเล็มมา ปรับปรุงใหม่] สมมุติว่าคุณสมบัติ 1–3 คงไว้สำหรับรอบ r−1 เมื่อ ผู้นำ ër เป็นคนซื่อสัตย์ มีความเป็นไปได้อย่างล้นหลาม • ผู้ใช้จริงทุกคนเห็นด้วยกับบล็อกเดียวกัน Br ซึ่งสร้างโดย ër และมีค่าสูงสุด ชุดจ่ายเงินที่ได้รับโดย ër ตามเวลา \(\alpha\)r, 1 ër \(\in\)Ir; และ • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ และผู้ใช้จริงทุกคนจะทราบ Br ในช่วงเวลา Ir+1 การพิสูจน์. ตามสมมติฐานอุปนัยและบทแทรก 5.5 สำหรับแต่ละขั้นตอน s และตัวตรวจสอบ i \(\in\)HSV r,s เอลอาร์ส ฉัน \(\in\)ไอร์ ด้านล่างเราจะวิเคราะห์โปรโตคอลทีละขั้นตอน ขั้นตอนที่ 1 ตามคำจำกัดความ ผู้ตรวจสอบที่ซื่อสัตย์ทุกคน i \(\in\)HSV r,1 จะเผยแพร่ข้อความที่ต้องการ mr,1 ฉัน ที่ เวลา \(\beta\)r,1 ฉัน = แอลอาร์,1 ฉัน ที่ไหน คุณ1 ฉัน = (พี่ ฉัน , esigi(H(Br ผม )), \(\sigma\)r,1 ฉัน ) Br i = (r, จ่าย r ผม , SIGI(Qr−1), H(Br−1)), และจ่าย r ฉันเป็นค่าตอบแทนสูงสุดในบรรดาการชำระเงินทั้งหมดที่ฉันเห็นตามเวลา \(\alpha\)r,1 ฉัน ขั้นตอนที่ 2 แก้ไขผู้ตรวจสอบที่ซื่อสัตย์โดยพลการ i \(\in\)HSV r,2 โดย Lemma 5.5 เมื่อผู้เล่นทำเสร็จแล้ว รอเวลา \(\beta\)r,2 ฉัน = แอลอาร์,2 ฉัน + t2 เขาได้รับข้อความทั้งหมดที่ส่งโดยผู้ตรวจสอบใน HSV r,1 รวมถึง นาย 1 lr. ตามคำจำกัดความของ ër ไม่มีผู้เล่นคนอื่นใน PKr−k ที่มีข้อมูลรับรอง hash ค่าน้อยกว่า H(\(\sigma\)r,1 ër) แน่นอนว่าปฏิปักษ์สามารถทำให้เสื่อมทราม ër ได้หลังจากเห็นว่า H(\(\sigma\)r,1 ) มีขนาดเล็กมาก แต่เมื่อถึงเวลานั้น ผู้เล่น ër ได้ทำลายกุญแจชั่วคราวของเขาและข้อความ mr,1 lr ได้รับการเผยแพร่ ดังนั้นจึงเป็นการยืนยันว่าฉันได้ตั้งผู้นำของเขาเองให้เป็นผู้เล่นแล้ว ดังนั้น ณ เวลา \(\beta\)r,2 ฉัน ผู้ตรวจสอบฉันเผยแพร่นาย 2 ฉัน = (ESIGi(วี′ ผม), \(\sigma\)r,2 ฉัน ) โดยที่ v′ ผม = H(br ër) เมื่อ r = 0 จะเกิดผลต่างเพียงอย่างเดียว นั่นคือ \(\beta\)r,2 ฉัน = t2 แทนที่จะอยู่ในช่วง สิ่งที่คล้ายกันสามารถพูดได้สำหรับขั้นตอนในอนาคตและเรา จะไม่เน้นย้ำพวกเขาอีก ขั้นตอนที่ 3 แก้ไขผู้ตรวจสอบที่ซื่อสัตย์โดยพลการ i \(\in\)HSV r,3 โดย Lemma 5.5 เมื่อผู้เล่นทำเสร็จแล้ว รอเวลา \(\beta\)r,3 ฉัน = แอลอาร์,3 ฉัน + t3 เขาได้รับข้อความทั้งหมดที่ส่งโดยผู้ตรวจสอบใน HSV r,2 โดยความสัมพันธ์ระหว่างพารามิเตอร์ต่างๆ ที่มีความน่าจะเป็นอย่างล้นหลาม |HSV r,2| > 2|MSV r,2|. ยิ่งไปกว่านั้น ไม่มีผู้ตรวจสอบที่ซื่อสัตย์คนใดจะลงนามในข้อความที่ขัดแย้งและปฏิปักษ์ ไม่สามารถปลอมลายเซ็นของผู้ตรวจสอบที่ซื่อสัตย์ได้หลังจากที่คนหลังได้ทำลายผู้ตรวจสอบที่เกี่ยวข้องแล้ว กุญแจลับชั่วคราว ดังนั้นมากกว่า 2/3 ของข้อความที่ถูกต้อง (r, 2) ทั้งหมดที่ฉันได้รับมาจาก ผู้ตรวจสอบที่ซื่อสัตย์และอยู่ในแบบฟอร์ม mr,2 เจ = (ESIGj(H(Br ër)), \(\sigma\)r,2 j ) โดยไม่มีความขัดแย้ง ดังนั้น ณ เวลา \(\beta\)r,3 ฉัน ผู้เล่นที่ฉันเผยแพร่นาย 3 ฉัน = (ESIGi(v′), \(\sigma\)r,3 i ) โดยที่ v′ = H(Br ër)ขั้นตอนที่ 4 แก้ไขผู้ตรวจสอบที่ซื่อสัตย์โดยพลการ i \(\in\)HSV r,4 โดย Lemma 5.5 ผู้เล่นที่ฉันได้รับทั้งหมด ข้อความที่ส่งโดยผู้ตรวจสอบใน HSV r,3 เมื่อเขารอเสร็จแล้วที่เวลา \(\beta\)r,4 ฉัน = \(\alpha\)อาร์,4 ฉัน +t4. คล้ายกับ ขั้นตอนที่ 3 มากกว่า 2/3 ของข้อความที่ถูกต้อง (r, 3) ทั้งหมดที่ฉันได้รับมาจากผู้ตรวจสอบที่ซื่อสัตย์และ ของแบบฟอร์มนาย3 เจ = (ESIGj(H(Br ër)), \(\sigma\)r,3 เจ) ดังนั้น ผู้เล่น i ตั้งค่า vi = H(Br ër), gi = 2 และ bi = 0 ณ เวลา \(\beta\)r,4 ฉัน = \(\alpha\)อาร์,4 ฉัน +t4 เขาแพร่กระจาย นาย4 ฉัน = (ESIGi(0), ESIGi(H(Br ër)), \(\sigma\)r,4 ฉัน) ขั้นตอนที่ 5 แก้ไขผู้ตรวจสอบที่ซื่อสัตย์โดยพลการ i \(\in\)HSV r,5 โดย Lemma 5.5 ผู้เล่นที่ผมอยากได้ ได้รับข้อความทั้งหมดที่ส่งโดยผู้ตรวจสอบใน HSV r,4 หากเขารอจนถึงเวลา \(\alpha\)r,5 ฉัน +t5. โปรดทราบว่า |HSV r,4| \(\geq\)tH.19 โปรดทราบว่าผู้ตรวจสอบทั้งหมดใน HSV r,4 ได้ลงนามใน H(Br ër) เป็น |MSV r,4| < tH ไม่มี v′ ̸= H(Br lr) ที่อาจได้รับการลงนามโดย th ผู้ตรวจสอบใน SV r,4 (ซึ่งจำเป็นต้องเป็นอันตราย) ดังนั้นผู้เล่น ฉันจะไม่หยุดก่อนที่เขาจะทำเช่นนั้น ได้รับข้อความที่ถูกต้องแล้วคุณ 4 เจ = (ESIGj(0), ESIGj(H(Br ër)), \(\sigma\)r,4 เจ) ให้ T เป็นเวลาที่ เหตุการณ์หลังเกิดขึ้น ข้อความเหล่านั้นบางส่วนอาจมาจากผู้เล่นที่เป็นอันตราย แต่เนื่องจาก |MSV r,4| < อย่างน้อยหนึ่งในนั้นมาจากผู้ตรวจสอบที่ซื่อสัตย์ใน HSV r,4 และถูกส่งตามเวลา ที อาร์ +ที4. ดังนั้น T \(\geq\)T r +t4 > T r +แล+Λ \(\geq\) \(\beta\)r,1 LRr +Λ และตามเวลาที่ผู้เล่น T ฉันก็ได้รับเช่นกัน ข้อความคุณ1 lr. โดยการสร้างโปรโตคอล ผู้เล่น ฉัน หยุดที่เวลา \(\beta\)r,5 ฉัน = T ไม่มี เผยแพร่สิ่งใด ๆ เซต Br = Br lr; และตั้งค่า CERT r ของเขาเองให้เป็นชุดของ (r, 4) - ข้อความสำหรับ 0 และ H(br lr) ที่เขาได้รับ ขั้นตอนที่ > 5 ในทำนองเดียวกัน สำหรับขั้นตอนใดๆ ที่ s > 5 และตัวตรวจสอบใดๆ i \(\in\)HSV r,s ผู้เล่น ฉันจะมี ได้รับข้อความทั้งหมดที่ส่งโดยผู้ตรวจสอบใน HSV r,4 หากเขารอจนถึงเวลา \(\alpha\)r,s ฉัน + ทีเอส โดย การวิเคราะห์เดียวกัน ผู้เล่นฉันหยุดโดยไม่เผยแพร่อะไรเลย การตั้งค่า Br = Br ër (และตั้งค่าของเขาเอง CERT r อย่างถูกต้อง) แน่นอนว่าผู้ตรวจสอบที่เป็นอันตรายไม่สามารถหยุดและอาจแพร่กระจายโดยพลการ ข้อความ แต่เนื่องจาก |MSV r,s| < tH โดยการเหนี่ยวนำไม่มี v′ อื่นใดที่สามารถลงนามโดยผู้ตรวจสอบได้ ในขั้นตอนที่ 4 \(\leq\)s′ < s ดังนั้นผู้ตรวจสอบที่ซื่อสัตย์จึงหยุดเพียงเพราะพวกเขาได้รับความถูกต้องแล้ว (r, 4) - ข้อความสำหรับ 0 และ H (Br ër) การสร้างบล็อก Round-r ใหม่ การวิเคราะห์ขั้นตอนที่ 5 นำไปใช้กับความซื่อสัตย์ทั่วไป ผู้ใช้ฉันเกือบจะไม่มีการเปลี่ยนแปลงใด ๆ อันที่จริง ผู้เล่น i เริ่มรอบของตัวเอง r ในช่วงเวลา Ir และ จะหยุดที่เวลา T เมื่อเขาได้รับข้อความที่ถูกต้อง (r, 4) สำหรับ H (Br ër) อีกครั้งเพราะ อย่างน้อยหนึ่งในข้อความเหล่านั้นมาจากผู้ตรวจสอบที่ซื่อสัตย์และถูกส่งหลังจากเวลาผ่านไป T r + t4 ผู้เล่นที่ฉันมี รับนาย1ด้วย ër ตามเวลา T ดังนั้นเขาจึงกำหนดให้ Br = Br lr ด้วย CERT r ที่เหมาะสม เหลือเพียงการแสดงให้ผู้ใช้ที่ซื่อสัตย์ทุกคนจบรอบ r ภายในระยะเวลา Ir+1 จากการวิเคราะห์ขั้นตอนที่ 5 ผู้ตรวจสอบที่ซื่อสัตย์ทุกคน i \(\in\)HSV r,5 รู้ Br บนหรือก่อน \(\alpha\)r,5 ฉัน + t5 \(\leq\) T r + แล + t5 = T r + 8แล + Λ เนื่องจาก T r+1 คือเวลาที่ผู้ใช้ที่ซื่อสัตย์คนแรก ir รู้จัก Br เราก็เลยมี T r+1 \(\leq\)T r + 8แล + Λ ตามต้องการ ยิ่งไปกว่านั้น เมื่อผู้เล่นรู้จัก Br เขาได้ช่วยเผยแพร่ข้อความไปแล้ว CERT r ของเขา โปรดทราบว่าข้อความเหล่านั้นทั้งหมดจะได้รับจากผู้ใช้ที่ซื่อสัตย์ทุกคนภายในเวลา \(\lambda\) แม้ว่าก็ตาม 19พูดอย่างเคร่งครัด สิ่งนี้เกิดขึ้นโดยมีความเป็นไปได้สูงมาก แต่ก็ไม่ได้เกินความจำเป็นเสมอไป อย่างไรก็ตามสิ่งนี้ ความน่าจะเป็นจะส่งผลต่อเวลาการทำงานของโปรโตคอลเล็กน้อย แต่ไม่ส่งผลต่อความถูกต้อง เมื่อ h = 80% แล้ว |HSV r,4| \(\geq\)tH ด้วยความน่าจะเป็น 1 −10−8 หากเหตุการณ์นี้ไม่เกิดขึ้น โปรโตคอลก็จะดำเนินต่อไปอีกเหตุการณ์หนึ่ง 3 ขั้นตอน เนื่องจากความน่าจะเป็นที่สิ่งนี้จะไม่เกิดขึ้นในสองขั้นตอนนั้นมีน้อยมาก โปรโตคอลจะสิ้นสุดที่ขั้นตอนที่ 8 ใน ความคาดหวังจำนวนขั้นตอนที่ต้องการคือเกือบ 5ผู้เล่น ir เป็นผู้เล่นคนแรกที่เผยแพร่สิ่งเหล่านี้ ยิ่งกว่านั้นตามการวิเคราะห์ข้างต้นที่เรามี T r+1 \(\geq\)T r + t4 \(\geq\) \(\beta\)r,1 LRr + Λ ดังนั้นผู้ใช้ที่ซื่อสัตย์ทุกคนจึงได้รับ mr,1 ërตามเวลา T r+1 + แล ดังนั้น ผู้ใช้ที่ซื่อสัตย์ทุกคนรู้จัก Br ในช่วงเวลา Ir+1 = [T r+1, T r+1 + แล] ในที่สุด สำหรับ r = 0 เรามี T 1 \(\leq\)t4 + แล = 6แล + Λ ผสมผสานทุกอย่างเข้าด้วยกัน แผ่นแทรก 5.2 ถือ ■ 5.8 ความสมบูรณ์ของเล็มมา เลมมา 5.3 [ความสมบูรณ์ของเล็มมา ปรับปรุงใหม่] สมมุติว่าคุณสมบัติ 1–3 คงไว้สำหรับรอบ r −1 เมื่อ ผู้นำ lr เป็นคนที่เป็นอันตราย ด้วยความน่าจะเป็นอย่างล้นหลาม ผู้ใช้ที่ซื่อสัตย์ทุกคนเห็นด้วยกับบล็อกเดียวกัน Br, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ และผู้ใช้ที่ซื่อสัตย์ทุกคนจะทราบ Br ในช่วงเวลา Ir+1 การพิสูจน์. เราพิจารณาทั้งสองส่วนของโปรโตคอล GC และ BBA⋆ แยกกัน GC. ตามสมมติฐานอุปนัยและบทแทรก 5.5 สำหรับขั้นตอนใดๆ s \(\in\){2, 3, 4} และความซื่อสัตย์ใดๆ ตรวจสอบ i \(\in\)HSV r,s เมื่อผู้เล่น i ทำหน้าที่ ณ เวลา \(\beta\)r,s ฉัน = \(\alpha\)r,s ฉัน + ts เขาได้รับข้อความที่ส่งทั้งหมดแล้ว โดยผู้ตรวจสอบที่ซื่อสัตย์ทุกคนในขั้นตอน s′ < s เราแยกความแตกต่างสองกรณีที่เป็นไปได้สำหรับขั้นตอนที่ 4 กรณีที่ 1 ไม่มีการยืนยัน i \(\in\)HSV r,4 เซ็ต gi = 2 ในกรณีนี้ ตามคำจำกัดความ bi = 1 สำหรับผู้ตรวจสอบทั้งหมด i \(\in\)HSV r,4 นั่นคือพวกเขาเริ่มต้นด้วย ข้อตกลงในวันที่ 1 ในโปรโตคอล BA ไบนารี พวกเขาอาจไม่มีข้อตกลงเกี่ยวกับ vi ของพวกเขา แต่นั่นไม่สำคัญอย่างที่เราเห็นในไบนารี่ BA กรณีที่ 2 มีตัวยืนยัน ˆi \(\in\)HSV r,4 อยู่ โดยที่ gˆi = 2 ในกรณีนี้ เราแสดงให้เห็นแล้วว่า (1) gi \(\geq\)1 สำหรับ i \(\in\)HSV r,4 ทั้งหมด (2) มีค่า v′ อยู่ โดยที่ vi = v′ สำหรับ i \(\in\)HSV r,4 ทั้งหมด และ (3) มีข้อความที่ถูกต้องคือ mr,1 ฎ จากผู้ตรวจสอบบางราย ë\(\in\)SV r,1 โดยที่ v′ = H(Br ë) เนื่องจากผู้เล่น ˆi ซื่อสัตย์และตั้งค่า gˆi = 2 มากกว่า 2/3 ของข้อความที่ถูกต้องทั้งหมด mr,3 เจ เขาได้รับเป็นค่าเดียวกัน v′ ̸= \(\bot\) และเขาได้ตั้งค่า vˆi = v′ โดยคุณสมบัติ (d) ในบทแทรก 5.5 สำหรับผู้ตรวจสอบที่ซื่อสัตย์ (r, 4) อื่น ๆ จะไม่สามารถเป็นได้มากไปกว่านี้ มากกว่า 2/3 ของข้อความที่ถูกต้องทั้งหมด mr,3 เจ ที่ฉันได้รับนั้นมีค่าเท่ากัน v′′ ̸= v′ ดังนั้น หากฉันตั้งค่า gi = 2 จะต้องเห็นว่าฉันเห็น > 2/3 ส่วนใหญ่สำหรับ v′ ด้วยเช่นกัน และตั้งค่า vi = v′ ตามต้องการ ตอนนี้ให้พิจารณาตัวยืนยันโดยพลการ i \(\in\)HSV r,4 ด้วย gi < 2 คล้ายกับการวิเคราะห์คุณสมบัติ (d) ในบทแทรก 5.5 เนื่องจากผู้เล่น ˆi ได้เห็น > 2/3 ส่วนใหญ่สำหรับ v′ มากกว่า 1 2|HSV r,3| ซื่อสัตย์ (r, 3) - ผู้ตรวจสอบได้ลงนาม v′ เพราะฉันได้รับข้อความทั้งหมดจากผู้ตรวจสอบที่ซื่อสัตย์ (r, 3) โดย เวลา \(\beta\)r,4 ฉัน = \(\alpha\)อาร์,4 ฉัน +t4 โดยเฉพาะเขาได้รับมากกว่า 1 2|HSV r,3| ข้อความจากพวกเขา สำหรับวี' เพราะ |HSV r,3| > 2|MSV r,3|, ฉันได้เห็นแล้ว > 1/3 ส่วนใหญ่สำหรับ v′ ตามนั้นครับ ผู้เล่น ฉันตั้งค่า gi = 1 และทรัพย์สิน (1) ถืออยู่ ผู้เล่นจำเป็นต้องตั้งค่า vi = v′ หรือไม่? สมมติว่ามีค่าที่แตกต่างกัน v′′ ̸= \(\bot\)เช่นนั้น ผู้เล่นที่ฉันเคยเห็น > 1/3 ส่วนใหญ่สำหรับ v′′ ข้อความเหล่านั้นบางส่วนอาจมาจากที่เป็นอันตราย ผู้ตรวจสอบ แต่อย่างน้อยหนึ่งในนั้นมาจากผู้ตรวจสอบที่ซื่อสัตย์บางคน j \(\in\)HSV r,3: แน่นอน เพราะ |HSV r,3| > 2|MSV r,3| และฉันได้รับข้อความทั้งหมดจาก HSV r,3 กลุ่มผู้ประสงค์ร้าย ผู้ตรวจสอบที่ฉันได้รับข้อความที่ถูกต้อง (r, 3) นับเป็น < 1/3 ของข้อความที่ถูกต้องทั้งหมด ข้อความที่เขาได้รับตามคำจำกัดความ ผู้เล่น j ต้องเห็น > 2/3 ส่วนใหญ่สำหรับ v′′ ในบรรดาข้อความที่ถูกต้อง (r, 2) ทั้งหมด เขาได้รับ. อย่างไรก็ตาม เรามีผู้ตรวจสอบที่ซื่อสัตย์ (r, 3) คนอื่นๆ ได้เห็นแล้ว 2/3 ส่วนใหญ่สำหรับ v′ (เพราะพวกเขาเซ็นชื่อ v′) โดยคุณสมบัติ (d) ของ Lemma 5.5 สิ่งนี้ไม่สามารถทำได้ เกิดขึ้นและไม่มีค่าดังกล่าว v′′ อยู่ ดังนั้นผู้เล่นฉันต้องตั้งค่า vi = v′ ตามต้องการ และทรัพย์สิน (2) ถือครอง ท้ายที่สุด เมื่อพิจารณาว่าผู้ตรวจสอบที่ซื่อสัตย์ (r, 3) บางคนได้เห็น > 2/3 ส่วนใหญ่สำหรับ v′ บางคน (จริงๆ แล้ว มากกว่าครึ่งหนึ่งของ) ผู้ตรวจสอบที่ซื่อสัตย์ (r, 2) ได้ลงนามใน v′ และเผยแพร่ข้อความของพวกเขา โดยการสร้างเกณฑ์วิธี ผู้ตรวจสอบที่ซื่อสัตย์ (r, 2) เหล่านั้นจะต้องได้รับใบรับรองที่ถูกต้อง ส่งข้อความถึงคุณ1 ฎ จากผู้เล่นบางคน ë\(\in\)SV r,1 โดยมี v′ = H(Br ̵) ดังนั้นทรัพย์สิน (3) ถืออยู่ บีบีเอ⋆. เราแยกสองกรณีอีกครั้ง กรณีที่ 1 ผู้ตรวจสอบทั้งหมด i \(\in\)HSV r,4 มี bi = 1 สิ่งนี้เกิดขึ้นหลังจากกรณีที่ 1 ของ GC เป็น |MSV r,4| < tH ในกรณีนี้ไม่มีผู้ยืนยันใน SV r,5 สามารถรวบรวมหรือสร้างข้อความที่ถูกต้อง (r, 4) สำหรับบิต 0 ดังนั้นจึงไม่มีผู้ตรวจสอบที่ซื่อสัตย์ใน HSV r,5 จะหยุดเพราะเขารู้จักบล็อกที่ไม่ว่างเปล่า Br. ยิ่งไปกว่านั้น แม้ว่าจะมีข้อความที่ถูกต้อง (r, 4) เป็นอย่างน้อยสำหรับบิต 1 แต่ s′ = 5 ก็ไม่เป็นไปตามนั้น s′ −2 ≡1 mod 3 ดังนั้น จึงไม่มีผู้ตรวจสอบที่ซื่อสัตย์ใน HSV r,5 จะหยุดลงเพราะเขารู้ว่า Br = Br ī. ในทางกลับกัน ผู้ตรวจสอบทุกราย i \(\in\)HSV r,5 ทำหน้าที่ ณ เวลา \(\beta\)r,5 ฉัน = \(\alpha\)อาร์,5 ฉัน +t5 โดยเมื่อเขาได้รับครบแล้ว ข้อความที่ส่งโดย HSV r,4 ตามบทแทรก 5.5 ดังนั้นผู้เล่นฉันจึงเห็น > 2/3 ส่วนใหญ่สำหรับ 1 และกำหนดให้ bi = 1 ในขั้นตอนที่ 6 ซึ่งเป็นขั้นตอน Coin-Fixed-To-1 แม้ว่า s′ = 5 จะเป็นไปตาม s′ −2 ≡0 mod 3 ก็ตาม ไม่มีข้อความที่ถูกต้อง (r, 4) สำหรับบิต 0 ดังนั้นจึงไม่มีผู้ตรวจสอบใน HSV r,6 ที่จะหยุดเพราะว่า เขารู้จักบล็อกที่ไม่ว่างเปล่า Br อย่างไรก็ตาม ด้วย s′ = 6, s′ −2 ≡1 mod 3 และมีอยู่จริง |HSV r,5| \(\geq\)tH ข้อความที่ถูกต้อง (r, 5) สำหรับบิต 1 จาก HSV r,5 สำหรับทุกผู้ตรวจสอบ i \(\in\)HSV r,6 ตามบทแทรก 5.5 ในหรือก่อนเวลา \(\alpha\)r,6 ฉัน + ผู้เล่น t6 ฉัน ได้รับข้อความทั้งหมดจาก HSV r,5 ดังนั้นฉันจึงหยุดโดยไม่เผยแพร่สิ่งใดและตั้งค่า บร = บร ī. CERT r ของเขาคือชุดของข้อความที่ถูกต้อง (r, 5) mr,5 เจ = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 เจ) เขาได้รับเมื่อเขาหยุด ถัดไป ให้ฉันเป็นผู้ตรวจสอบที่ซื่อสัตย์ในขั้นตอนที่ > 6 หรือเป็นผู้ใช้ที่ซื่อสัตย์ทั่วไป (เช่น ไม่ใช่ผู้ตรวจสอบ) คล้ายกับการพิสูจน์ Lemma 5.2 ผู้เล่น i ตั้งค่า Br = Br ǫและกำหนดของเขาเอง CERT r เป็นชุดของข้อความที่ถูกต้อง (r, 5) mr,5 เจ = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 เจ) เขามี ได้รับ. สุดท้ายก็คล้ายกับ Lemma 5.2 ที อาร์+1 \(\leq\) นาที i\(\in\)HSV r,6 \(\alpha\)r,6 ฉัน + t6 \(\leq\)T r + แล + t6 = T r + 10แล + Λ, และผู้ใช้ที่ซื่อสัตย์ทุกคนจะรู้จัก Br ในช่วงเวลา Ir+1 เพราะผู้ใช้ที่ซื่อสัตย์คนแรกคือใคร รู้ว่า Br ได้ช่วยเผยแพร่ข้อความ (r, 5) ใน CERT r ของเขา กรณีที่ 2 มีตัวยืนยัน ˆi \(\in\)HSV r,4 โดยมี bˆi = 0 สิ่งนี้เกิดขึ้นหลังจากกรณีที่ 2 ของ GC และเป็นกรณีที่มีความซับซ้อนมากขึ้น โดยการวิเคราะห์ของ GC พบว่า ในกรณีนี้มีข้อความที่ถูกต้อง mr,1 ฎ โดยที่ vi = H(Br ̵) สำหรับ i \(\in\)HSV r,4 ทั้งหมด หมายเหตุ ว่าผู้ตรวจสอบใน HSV r,4 อาจไม่มีข้อตกลงเกี่ยวกับ Bi's ของตน สำหรับขั้นตอนใดๆ s \(\in\){5, . . . , m + 3} และตัวตรวจสอบ i \(\in\)HSV r,s โดยผู้เล่น Lemma 5.5 ฉันจะมี ได้รับข้อความทั้งหมดที่ส่งโดยผู้ตรวจสอบที่ซื่อสัตย์ทุกคนใน HSV r,4 \(\cup\) \(\cdots\) \(\cup\)HSV r,s−1 หากเขารออยู่ เป็นเวลา tsตอนนี้เราพิจารณาเหตุการณ์ต่อไปนี้ E: มีขั้นตอน s∗\(\geq\)5 เช่นนั้น สำหรับขั้นตอนแรก เวลาในไบนารี BA ผู้เล่นบางคน i∗\(\in\)SV r,s∗ (ไม่ว่าจะเป็นอันตรายหรือซื่อสัตย์) ควรหยุด โดยไม่ต้องเผยแพร่อะไรเลย เราใช้คำว่า "ควรหยุด" เพื่อเน้นย้ำความจริงที่ว่า หากผู้เล่น i∗ เป็นอันตรายแล้วอาจแสร้งทำเป็นว่าไม่ควรหยุดตามระเบียบและ เผยแพร่ข้อความที่ฝ่ายตรงข้ามเลือก อีกทั้งโดยการสร้างโปรโตคอลอีกด้วย (E.a) ฉันสามารถรวบรวมหรือสร้างข้อความที่ถูกต้องได้อย่างน้อย mr,s′−1 เจ = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 เจ ) สำหรับ v และ s′ เดียวกัน โดยมี 5 \(\leq\)s′ \(\leq\)s∗ และ s′ −2 ≡0 mod 3; หรือ (E.b) ฉัน∗สามารถรวบรวมหรือสร้างข้อความที่ถูกต้องได้อย่างน้อย mr,s′−1 เจ = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 เจ ) สำหรับ s′ เดียวกัน โดยมี 6 \(\leq\)s′ \(\leq\)s∗ และ s′ −2 ≡1 mod 3 เนื่องจากข้อความที่ซื่อสัตย์ (r, s′ −1) ได้รับจากผู้ตรวจสอบที่ซื่อสัตย์ (r, s′) ทั้งหมดก่อนหน้าพวกเขา เสร็จสิ้นการรอคอยในขั้นตอน s′ และเนื่องจากปฏิปักษ์ได้รับทุกสิ่งไม่ช้ากว่านั้น ผู้ใช้ที่ซื่อสัตย์ โดยไม่สูญเสียความทั่วไป เรามี s′ = s∗และผู้เล่น i∗เป็นอันตราย โปรดทราบว่า เราไม่ต้องการให้ค่า v ใน E.a เป็น hash ของบล็อกที่ถูกต้อง เนื่องจากจะชัดเจนขึ้น ในการวิเคราะห์ v = H(Br ̵) ในกิจกรรมย่อยนี้ ด้านล่างนี้ เราจะวิเคราะห์กรณีที่ 2 ตามเหตุการณ์ E ก่อน แล้วจึงแสดงว่าค่าของ s∗ นั้นสำคัญมาก กระจายไปตาม Lr (เหตุการณ์ E เกิดขึ้นก่อนขั้นตอน m + 3 อย่างท่วมท้น) ความน่าจะเป็นที่กำหนดความสัมพันธ์สำหรับพารามิเตอร์) เริ่มต้นด้วย สำหรับขั้นตอนใดๆ ที่ 5 \(\leq\)s < s∗ ผู้ตรวจสอบที่ซื่อสัตย์ทุกคน i \(\in\)HSV r,s ได้รอเวลา ts และกำหนดให้ vi เป็นเสียงข้างมากของ ถูกต้อง (r, s−1) - ข้อความที่เขาได้รับ เนื่องจากผู้เล่นฉันได้รับข้อความที่ซื่อสัตย์ (r, s−1) ทั้งหมด ตามบทแทรก 5.5 เนื่องจากผู้ตรวจสอบที่ซื่อสัตย์ทุกคนใน HSV r,4 ได้ลงนาม H(Br ̵) ต่อไปนี้กรณี 2 ของ GC และตั้งแต่ |HSV r,s−1| > 2|MSV r,s−1| สำหรับแต่ละ s โดยการเหนี่ยวนำเรามีผู้เล่นคนนั้น i ได้ตั้งค่าแล้ว วี = H(br ë) สิ่งเดียวกันนี้ใช้ได้กับผู้ตรวจสอบที่ซื่อสัตย์ทุกคน i \(\in\)HSV r,s∗ ซึ่งไม่หยุดโดยไม่เผยแพร่ อะไรก็ได้ ตอนนี้เราพิจารณาขั้นตอน s∗ และแยกแยะกรณีย่อยสี่กรณี กรณี 2.1.ก. เหตุการณ์ E.a เกิดขึ้นและมีผู้ยืนยันอย่างตรงไปตรงมาว่า i′ \(\in\)HSV r,s∗ใครควร ก็หยุดไม่เผยแพร่อะไรทั้งนั้น ในกรณีนี้ เรามี s∗−2 ≡0 mod 3 และขั้นตอน s∗เป็นขั้นตอน Coin-Fixed-To-0 โดย คำจำกัดความ ผู้เล่นที่ i′ ได้รับข้อความที่ถูกต้อง (r, s∗−1) ของแบบฟอร์มอย่างน้อย (ESIGj(0), ESIGj(v), \(\sigma\)r,s∗−1 เจ ). เนื่องจากผู้ตรวจสอบทั้งหมดใน HSV r,s∗−1 ได้ลงนาม H(Br ̵) และ |MSV r,s∗−1| < tH เรามี v = H(Br ë) เนื่องจากอย่างน้อย tH −|MSV r,s∗−1| \(\geq\)1ของ (r, s∗−1) - ข้อความที่ได้รับโดย i′ สำหรับ 0 และ v ถูกส่งโดยผู้ตรวจสอบใน HSV r,s∗−1 หลังจากเวลา T r +ts∗−1 \(\geq\)T r +t4 \(\geq\)T r +แล+Λ \(\geq\) \(\beta\)r,1 ฎ +Λ, ผู้เล่นที่ฉันได้รับ mr,1 ฎ เมื่อถึงเวลาที่เขาได้รับข้อความ (r, s∗−1) เหล่านั้น ดังนั้นผู้เล่น ฉันหยุดโดยไม่เผยแพร่อะไรเลย เซต Br = Br ̵;; และกำหนดให้ CERT r ของเขาเองเป็น ชุดของข้อความที่ถูกต้อง (r, s∗−1) สำหรับ 0 และ v ที่เขาได้รับ ต่อไป เราจะแสดงว่า ผู้ตรวจสอบอื่นๆ i \(\in\)HSV r,s∗ หยุดโดยที่ Br = Br ̵, หรือ ได้ตั้งค่า bi = 0 และเผยแพร่ (ESIGi(0), ESIGi(H(Br ë)), \(\sigma\)r,s ฉัน) แน่นอน เพราะขั้นตอนs∗ เป็นครั้งแรกที่ผู้ตรวจสอบควรหยุดโดยไม่เผยแพร่สิ่งใดๆ เลย แต่กลับไม่เป็นเช่นนั้น มีขั้นตอน s′ < s∗กับ s′ −2 ≡1 mod 3 โดยที่ tH (r, s′ −1) -ผู้ตรวจสอบได้ลงนาม 1 ดังนั้น จึงไม่มีผู้ยืนยันใน HSV r,s∗หยุดด้วย Br = Br ī.ยิ่งไปกว่านั้น ในฐานะผู้ตรวจสอบที่ซื่อสัตย์ทุกคนในขั้นตอนที่ {4, 5, . . , s∗−1} ได้ลงนาม H(Br ̵) มีแล้ว ไม่มีขั้นตอน s′ \(\leq\)s∗กับ s′ −2 ≡0 mod 3 ซึ่งผู้ตรวจสอบ tH (r, s′ −1) ได้ลงนามแล้ว บ้าง v′′ ̸= H(Br ë) —แท้จริงแล้ว |MSV r,s′−1| < TH. ดังนั้น จึงไม่มีผู้ยืนยันใน HSV r,s∗stop ด้วย Br ̸= Br ǫ และ Br ̸= Br ฎ. นั่นคือหากผู้เล่น i \(\in\)HSV r,s∗ หยุดโดยไม่มี เผยแพร่อะไรเขาก็ต้องตั้ง Br = Br ฎ. หากผู้เล่น i \(\in\)HSV r,s∗ รอเวลา ts∗ และเผยแพร่ข้อความในตอนนั้น \(\beta\)r,s∗ ฉัน = \(\alpha\)r,s∗ ฉัน + ts∗ เขาได้รับข้อความทั้งหมดจาก HSV r,s∗−1 รวมถึงอย่างน้อย TH −|MSV r,s∗−1| ของพวกเขาสำหรับ 0 และ v หากฉันเห็น > 2/3 ส่วนใหญ่สำหรับ 1 แสดงว่าเขา ได้เห็นข้อความที่ถูกต้องมากกว่า 2(tH −|MSV r,s∗−1|) (r, s∗−1) สำหรับ 1 โดยมีมากกว่านั้น มากกว่า 2tH −3|MSV r,s∗−1| ของพวกเขาจากผู้ซื่อสัตย์ (r, s∗−1) - ผู้ตรวจสอบ อย่างไรก็ตาม นี่หมายถึง |HSV r,s∗−1| \(\geq\)tH−|MSV r,s∗−1|+2tH−3|MSV r,s∗−1| > 2n−4|MSV r,s∗−1|, ขัดแย้งกัน ความจริงที่ว่า |HSV r,s∗−1| + 4|MSV r,s∗−1| <2n, ซึ่งมาจากความสัมพันธ์ของพารามิเตอร์ ดังนั้น ฉันไม่เห็น > 2/3 ส่วนใหญ่สำหรับ 1 และเขาตั้งค่า bi = 0 เพราะขั้นตอน s∗ เป็นขั้นตอน Coin-Fixed-To-0 ตามที่เรามี เห็นแล้ว vi = H(Br ë) ดังนั้นฉันจึงเผยแพร่ (ESIGi(0), ESIGi(H(Br ë)), \(\sigma\)r,s ผม ) ตามที่เราต้องการ แสดง สำหรับขั้นตอน s∗+ 1 เนื่องจากผู้เล่น i′ ได้ช่วยเผยแพร่ข้อความใน CERT r ของเขา ในหรือก่อนเวลา \(\alpha\)r,s∗ ฉัน' + ts∗ ผู้ตรวจสอบที่ซื่อสัตย์ทุกคนใน HSV r,s∗+1 ได้รับอย่างน้อย ข้อความที่ถูกต้อง (r, s∗−1) สำหรับบิต 0 และค่า H(Br ̵) ในหรือก่อนที่จะเสร็จสิ้น กำลังรอ นอกจากนี้ ผู้ตรวจสอบใน HSV r,s∗+1 จะไม่หยุดก่อนรับ (r, s∗−1)- ข้อความ เนื่องจากไม่มีข้อความที่ถูกต้อง (r, s′ −1) อื่นใดสำหรับบิต 1 ด้วย s′ −2 ≡1 mod 3 และ 6 \(\leq\)s′ \(\leq\)s∗+ 1 โดยนิยามของขั้นตอน s∗ โดยเฉพาะขั้นตอน s∗+ 1 นั้นเป็นขั้นตอน Coin-Fixed-To-1 แต่ไม่มีผู้ตรวจสอบที่ซื่อสัตย์ใน HSV r,s∗ ได้แพร่กระจาย ข้อความสำหรับ 1 และ |MSV r,s∗| < TH. ดังนั้นผู้ตรวจสอบที่ซื่อสัตย์ทุกคนใน HSV r,s∗+1 หยุดโดยไม่เผยแพร่อะไรเลยและตั้งค่า Br = บ ̵: เหมือนเมื่อก่อนพวกเขาได้รับนาย 1 แล้ว ฎ ก่อนที่พวกเขาจะได้รับข้อความที่ต้องการ (r, s∗−1)-20 สิ่งเดียวกันนี้อาจกล่าวได้สำหรับผู้ตรวจสอบที่ซื่อสัตย์ทุกคนในขั้นตอนต่อๆ ไปและผู้ใช้ที่ซื่อสัตย์โดยทั่วไป โดยเฉพาะพวกเขาทุกคนรู้จัก Br = Br ่ภายในช่วงเวลา Ir+1 และ T r+1 \(\leq\) \(\alpha\)r,s∗ ฉัน' + ts∗\(\leq\)T r + แล + ts∗ กรณี 2.1.ข. เหตุการณ์ E.b เกิดขึ้นและมีผู้ยืนยันอย่างตรงไปตรงมาว่า i′ \(\in\)HSV r,s∗ใครควร ก็หยุดไม่เผยแพร่อะไรทั้งนั้น ในกรณีนี้เรามี s∗−2 ≡1 mod 3 และขั้นตอน s∗เป็นขั้นตอน Coin-Fixed-To-1 การวิเคราะห์ คล้ายกับกรณีที่ 2.1.a และละเว้นรายละเอียดหลายอย่าง 20หากมีเจตนาร้าย เขาอาจจะส่งนาย1ออกไป ฎ ล่าช้า หวังว่าผู้ใช้/ผู้ตรวจสอบที่ซื่อสัตย์บางคนยังไม่ได้รับ mr,1 ฎ ยัง เมื่อพวกเขาได้รับใบรับรองที่ต้องการแล้ว อย่างไรก็ตาม เนื่องจากตัวตรวจสอบ ˆi \(\in\)HSV r,4 ได้ตั้งค่า bˆi = 0 และ vˆi = H(Br ë) เช่น ก่อนที่เราจะมีผู้ตรวจสอบที่ซื่อสัตย์มากกว่าครึ่งหนึ่ง i \(\in\)HSV r,3 ได้ตั้งค่า vi = H(Br ë) นี่ยังหมายความอีกว่า กว่าครึ่งหนึ่งของผู้ตรวจสอบที่ซื่อสัตย์ i \(\in\)HSV r,2 ได้ตั้งค่า vi = H(Br ë) และผู้ตรวจสอบ (r, 2) ทั้งหมดได้รับ mr, 1 แล้ว ฎ. ในฐานะที่เป็น ฝ่ายตรงข้ามไม่สามารถแยกแยะผู้ตรวจสอบจากผู้ไม่ยืนยันได้ เขาไม่สามารถกำหนดเป้าหมายการแพร่กระจายของนาย1 ฎ ถึง (r, 2) - ผู้ตรวจสอบ โดยไม่ให้ผู้ไม่ยืนยันเห็นมัน จริงๆแล้วมีโอกาสสูงเกินครึ่ง (หรือเศษส่วนคงที่ที่ดี) ของผู้ใช้ที่ซื่อสัตย์ทุกคนได้เห็นคุณ 1 ฎ หลังจากรอ t2 มาตั้งแต่เริ่มรอบ r ของตัวเองแล้ว ทั้งนี้ ตั้งแต่บัดนี้เป็นต้นไป เวลา แล ′ ที่จำเป็นสำหรับนาย 1 ฎ การเข้าถึงผู้ใช้ที่ซื่อสัตย์ที่เหลืออยู่นั้นมีขนาดเล็กกว่า Λ มากและเพื่อความเรียบง่ายเราไม่ทำ เขียนมันออกมาในการวิเคราะห์ ถ้า 4แล \(\geq\)แลต การวิเคราะห์ดำเนินไปโดยไม่มีการเปลี่ยนแปลงใดๆ: เมื่อสิ้นสุดขั้นตอนที่ 4 ทั้งหมด ผู้ใช้ที่ซื่อสัตย์จะได้รับ mr,1 ฎ. หากขนาดของบล็อกใหญ่ขึ้นและ 4แล < แล' ดังนั้นในขั้นตอนที่ 3 และ 4 โปรโตคอลสามารถขอให้ผู้ตรวจสอบแต่ละคนรอ \(\gamma\)′/2 แทนที่จะเป็น 2แล และการวิเคราะห์ยังคงดำเนินต่อไปเหมือนเมื่อก่อน ผู้เล่น i′ ต้องได้รับข้อความที่ถูกต้อง (r, s∗−1) ของแบบฟอร์มอย่างน้อย (ESIGj(1), ESIGj(vj), \(\sigma\)r,s∗−1 เจ ). อีกครั้งตามคำจำกัดความของ s∗ ไม่มีขั้นตอนใดอยู่ 5 \(\leq\)s′ < s∗กับ s′ −2 ≡0 mod 3 โดยที่อย่างน้อย tH (r, s′ −1) -ผู้ตรวจสอบได้ลงนาม 0 และ v เดียวกัน ดังนั้นผู้เล่นจึงหยุดโดยไม่เผยแพร่อะไรเลย เซต Br = Br ǫ; และชุด CERT r ของเขาเองจะเป็นชุดของข้อความที่ถูกต้อง (r, s∗−1) สำหรับบิต 1 ที่เขาได้รับ ยิ่งไปกว่านั้น ตัวตรวจสอบอื่นๆ i \(\in\)HSV r,s∗ ได้หยุดโดยที่ Br = Br ǫ หรือตั้งไว้ว่า bi = 1 และเผยแพร่ (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ ฉัน ). เนื่องจากผู้เล่นฉันได้ช่วยเผยแพร่ ข้อความ (r, s∗−1) ใน CERT ของเขา r ตามเวลา \(\alpha\)r,s∗ ฉัน' + ts∗ ผู้ตรวจสอบที่ซื่อสัตย์ทุกคนเข้ามาอีกครั้ง HSV r,s∗+1 หยุดโดยไม่มีการแพร่กระจายใดๆ และตั้งค่า Br = Br ī. ในทำนองเดียวกันทุกคนซื่อสัตย์ ผู้ใช้รู้ว่า Br = Br ǫ ภายในระยะเวลา Ir+1 และ T r+1 \(\leq\) \(\alpha\)r,s∗ ฉัน' + ts∗\(\leq\)T r + แล + ts∗ กรณี 2.2.ก. เหตุการณ์ E.a เกิดขึ้นและไม่มีผู้ตรวจสอบที่ซื่อสัตย์ i′ \(\in\)HSV r,s∗who ควรหยุดโดยไม่เผยแพร่สิ่งใดๆ ในกรณีนี้ โปรดทราบว่าผู้เล่น i∗ อาจมี CERT r ที่ถูกต้อง ฉัน∗ประกอบด้วยสิ่งที่ต้องการ (r, s∗−1)-ข้อความที่ฝ่ายตรงข้ามสามารถรวบรวมหรือสร้างได้ อย่างไรก็ตามผู้ที่เป็นอันตราย ผู้ตรวจสอบอาจไม่ช่วยเผยแพร่ข้อความเหล่านั้น ดังนั้นเราจึงไม่สามารถสรุปได้ว่าผู้ซื่อสัตย์ ผู้ใช้จะได้รับทันเวลา แล ในความเป็นจริง |MSV r,s∗−1| ข้อความเหล่านั้นอาจมาจาก ผู้ตรวจสอบที่เป็นอันตราย (r, s∗−1) ซึ่งไม่ได้เผยแพร่ข้อความของตนเลยและเพียงส่งเท่านั้น ไปยังผู้ตรวจสอบที่เป็นอันตรายในขั้นตอนs∗ คล้ายกับกรณี 2.1.a ที่นี่เรามี s∗−2 ≡0 mod 3 ขั้นตอน s∗ เป็นขั้นตอน Coin-Fixed-To-0 และ (r, s∗−1) - ข้อความใน CERT r i∗ อยู่ที่บิต 0 และ v = H(Br ë) จริงใจทุกคนจริงๆ (r, s∗−1) - ผู้ตรวจสอบลงชื่อ v ดังนั้นฝ่ายตรงข้ามจึงไม่สามารถสร้างข้อความที่ถูกต้องได้ (r, s∗−1) สำหรับ v′ ที่แตกต่างกัน ยิ่งไปกว่านั้น ผู้ตรวจสอบที่ซื่อสัตย์ (r, s∗) ทุกคนต้องรอเวลา ts∗ และไม่เห็น > 2/3 ส่วนใหญ่ สำหรับบิต 1 อีกครั้งเพราะ |HSV r,s∗−1| + 4|MSV r,s∗−1| <2น. ดังนั้นผู้ตรวจสอบที่ซื่อสัตย์ทุกคน i \(\in\)HSV r,s∗sets bi = 0, vi = H(Br ë) ด้วยคะแนนเสียงข้างมาก และเผยแพร่ mr,s∗ ฉัน = (ESIGi(0), ESIGi(H(Br ë)), \(\sigma\)r,s∗ ฉัน ) ที่เวลา \(\alpha\)r,s∗ ฉัน + ts∗ ตอนนี้ให้พิจารณาผู้ตรวจสอบที่ซื่อสัตย์ในขั้นตอน s∗+ 1 (ซึ่งเป็นขั้นตอน Coin-Fixed-To-1) ถ้า ฝ่ายตรงข้ามส่งข้อความใน CERT r จริงๆ ฉัน∗กับบางคนและทำให้พวกเขาเป็นเช่นนั้น หยุด แล้วก็คล้ายกับกรณี 2.1.a ผู้ใช้ที่ซื่อสัตย์ทุกคนรู้ว่า Br = Br ∆ภายในช่วงเวลา IR+1 และ T r+1 \(\leq\)T r + แล + ts∗+1 มิฉะนั้น ผู้ตรวจสอบที่ซื่อสัตย์ทุกคนในขั้นตอน s∗+1 จะได้รับข้อความ (r, s∗) ทั้งหมดสำหรับ 0 และ เอช(บรา ë) จาก HSV r,s∗ หลังจากเวลาที่รอคอย ts∗+1 ซึ่งนำไปสู่ > 2/3 ส่วนใหญ่ เนื่องจาก |HSV r,s∗| > 2|MSV r,s∗|. ดังนั้นผู้ตรวจสอบทั้งหมดใน HSV r,s∗+1 จึงเผยแพร่ข้อความของตนเพื่อ 0 และ H(br ̵) ตามนั้น โปรดทราบว่าผู้ตรวจสอบใน HSV r,s∗+1 ไม่ได้หยุดด้วย Br = Br ̵, เพราะขั้นตอน s∗+ 1 ไม่ใช่ขั้นตอน Coin-Fixed-To-0 ตอนนี้ให้พิจารณาผู้ตรวจสอบที่ซื่อสัตย์ในขั้นตอน s∗+2 (ซึ่งเป็นขั้นตอนการพลิกเหรียญอย่างแท้จริง) หากฝ่ายตรงข้ามส่งข้อความใน CERT r ฉัน∗กับบางคนแล้วทำให้พวกเขาหยุด ผู้ใช้ที่ซื่อสัตย์ทุกคนจะรู้อีกครั้งว่า Br = Br ่ภายในช่วงเวลา Ir+1 และ T r+1 \(\leq\)T r + แล + ts∗+2มิฉะนั้น ผู้ตรวจสอบที่ซื่อสัตย์ทุกคนในขั้นตอน s∗+ 2 จะได้รับข้อความ (r, s∗+ 1) ทั้งหมดสำหรับ 0 และ H(br ë) จาก HSV r,s∗+1 หลังจากเวลาที่รอ ts∗+2 ซึ่งนำไปสู่ > 2/3 ส่วนใหญ่ ดังนั้นพวกเขาทั้งหมดจึงเผยแพร่ข้อความของพวกเขาสำหรับ 0 และ H(Br ̵) ตามนั้น: นั่นคือสิ่งที่พวกเขาทำ ไม่ใช่ "พลิกเหรียญ" ในกรณีนี้ ขอย้ำอีกครั้งว่าพวกมันจะไม่หยุดโดยไม่แพร่กระจาย เพราะขั้นตอน s∗+ 2 ไม่ใช่ขั้นตอน Coin-Fixed-To-0 สุดท้ายนี้ สำหรับผู้ตรวจสอบที่ซื่อสัตย์ในขั้นตอน s∗+3 (ซึ่งเป็นอีกขั้นตอน Coin-Fixed-To-0) ทั้งหมด ในจำนวนนี้จะได้รับข้อความที่ถูกต้องอย่างน้อยสำหรับ 0 และ H(Br ë) จาก HSV s∗+2, หากพวกเขารอเวลาจริงๆ ts∗+3 ดังนั้นไม่ว่าฝ่ายตรงข้ามจะส่งข้อความมาหรือไม่ก็ตาม ใน CERT r i∗ สำหรับพวกเขาคนใดคนหนึ่ง ผู้ตรวจสอบทั้งหมดใน HSV r,s∗+3 หยุดโดย Br = Br ̵, ไม่มี เผยแพร่สิ่งใดๆ ขึ้นอยู่กับว่าปฏิปักษ์กระทำอย่างไร บางส่วนอาจมี CERT r ของตนเองประกอบด้วยข้อความ (r, s∗−1) เหล่านั้นใน CERT r ฉัน∗ และคนอื่นๆ มี CERT r ของตนเองประกอบด้วยข้อความ (r, s∗+ 2) เหล่านั้น ไม่ว่าในกรณีใด ผู้ใช้บริการที่ซื่อสัตย์ทุกท่าน รู้ Br = Br ่ภายในช่วงเวลา Ir+1 และ T r+1 \(\leq\)T r + แล + ts∗+3 กรณี 2.2.ข. เหตุการณ์ E.b เกิดขึ้นและไม่มีผู้ตรวจสอบที่ซื่อสัตย์ i′ \(\in\)HSV r,s∗who ควรหยุดโดยไม่เผยแพร่สิ่งใดๆ การวิเคราะห์ในกรณีนี้จะคล้ายคลึงกับกรณีที่ 2.1.b และกรณีที่ 2.2.a จึงมีรายละเอียดมากมาย ได้รับการละเว้น โดยเฉพาะ CERT r i∗ประกอบด้วยข้อความที่ต้องการ (r, s∗−1) สำหรับบิต 1 ที่ฝ่ายตรงข้ามสามารถรวบรวมหรือสร้างได้ s∗−2 ≡1 mod 3 ขั้นตอน s∗คือ ขั้นตอน Coin-Fixed-To-1 และไม่มีผู้ตรวจสอบ (r, s∗) ที่ซื่อสัตย์คนใดที่เคยเห็น > 2/3 ส่วนใหญ่สำหรับ 0 ดังนั้น ทุกผู้ตรวจสอบ i \(\in\)HSV r,s∗ จะตั้งค่า bi = 1 และเผยแพร่ mr,s∗ ฉัน = (ESIGi(1), ESIGi(vi), ซิร,ส∗ ฉัน ) ที่เวลา \(\alpha\)r,s∗ ฉัน + ts∗ คล้ายกับกรณี 2.2.a โดยเพิ่มได้สูงสุด 3 ขั้นตอน (เช่น โปรโตคอล ถึงขั้นตอน s∗+3 ซึ่งเป็นอีกขั้นตอน Coin-Fixed-To-1) ผู้ใช้ที่ซื่อสัตย์ทุกคนจะรู้ว่า Br = Br ī ภายในระยะเวลา Ir+1 ยิ่งกว่านั้น T r+1 อาจเป็น \(\leq\)T r+แล+ts∗+1 หรือ \(\leq\)T r+แล+ts∗+2 หรือ \(\leq\)T r + แล + ts∗+3 ขึ้นอยู่กับว่าเมื่อใดคือครั้งแรกที่ผู้ตรวจสอบที่ซื่อสัตย์สามารถหยุดได้ โดยไม่ต้องแพร่กระจาย เมื่อรวมกรณีย่อยสี่กรณีเข้าด้วยกัน เราพบว่าผู้ใช้ที่ซื่อสัตย์ทุกคนทราบ Br ภายในระยะเวลา Ir+1 ด้วย T r+1 \(\leq\)T r + แล + ts∗ ในกรณี 2.1.a และ 2.1.b และ T r+1 \(\leq\)T r + แล + ts∗+3 ในกรณี 2.2.a และ 2.2.b มันยังคงอยู่ที่ขอบเขตบน s∗ และด้วยเหตุนี้ T r+1 สำหรับกรณีที่ 2 และเราทำเช่นนั้นโดยพิจารณาว่า หลายครั้งที่ขั้นตอน Coin-Genuinely-Flipped ถูกดำเนินการจริงในโปรโตคอล: นั่นคือ ผู้ตรวจสอบที่ซื่อสัตย์บางคนได้พลิกเหรียญจริง ๆ โดยเฉพาะอย่างยิ่ง แก้ไขขั้นตอนที่พลิกเหรียญอย่างแท้จริง s′ (เช่น 7 \(\leq\)s′ \(\leq\)m + 2 และ s′ −2 ≡2 mod 3) และให้ ë \(\triangleq\)arg minj\(\in\)SV r,s′−1 H(\(\sigma\)r,s′−1 เจ ). ตอนนี้ให้เราสมมติ s′ < s∗, เพราะไม่อย่างนั้นไม่มีผู้ตรวจสอบที่ซื่อสัตย์คนใดที่จะพลิกเหรียญในขั้นตอนที่ s′ ตามที่ระบุไว้ก่อนหน้านี้ การอภิปราย ตามคำจำกัดความของ SV r,s′−1 ค่า hash ของหนังสือรับรองของ ë ก็มีค่าน้อยที่สุดเช่นกัน ผู้ใช้ทั้งหมดใน PKr−k เนื่องจากฟังก์ชัน hash เป็นการสุ่ม oracle ดังนั้น ผู้เล่น ë จะซื่อสัตย์กับ ความน่าจะเป็นอย่างน้อย h ดังที่เราจะแสดงในภายหลัง แม้ว่าปฏิปักษ์จะพยายามทำนายเหตุการณ์นี้อย่างเต็มที่ก็ตาม ผลลัพธ์ของการสุ่ม oracle และเอียงความน่าจะเป็น ผู้เล่น ë ยังคงซื่อสัตย์กับความน่าจะเป็นอย่างน้อย ph = h2(1 + h −h2) ด้านล่างเราจะพิจารณากรณีที่สิ่งนั้นเกิดขึ้นจริง: นั่นคือ ë \(\in\)HSV r,s′−1 โปรดทราบว่าผู้ตรวจสอบที่ซื่อสัตย์ทุกคน i \(\in\)HSV r,s′ ได้รับข้อความทั้งหมดจาก HSV r,s′−1 โดย เวลา \(\alpha\)r,s′ ฉัน + ทีเอส' หากผู้เล่นฉันต้องหงายเหรียญ (เช่น เขาไม่ได้เห็น > 2/3 ส่วนใหญ่สำหรับ บิตเดียวกัน b \(\in\){0, 1}) จากนั้นเขาตั้งค่า bi = lsb(H(\(\sigma\)r,s′−1 l' )). หากมีความจริงอีกประการหนึ่ง ผู้ตรวจสอบ i′ \(\in\)HSV r,s′ ที่ได้เห็น > 2/3 ส่วนใหญ่สำหรับบิต b \(\in\){0, 1} แล้วโดยคุณสมบัติ (d) ของเลมมา 5.5 ไม่มีผู้ตรวจสอบที่ซื่อสัตย์ใน HSV r,s′ จะเห็น > 2/3 ส่วนใหญ่เพียงเล็กน้อย ข′ ̸= ข. เนื่องจาก lsb(H(\(\sigma\)r,s′−1 l' )) = b ด้วยความน่าจะเป็น 1/2 ผู้ตรวจสอบที่ซื่อสัตย์ทุกคนเข้าถึง HSV r,s′ ข้อตกลงบน b ด้วยความน่าจะเป็น 1/2 แน่นอน ถ้าไม่มีตัวยืนยัน i′ เช่นนั้นแล้ว ก็ทั้งหมด ผู้ตรวจสอบที่ซื่อสัตย์ใน HSV r,s′ เห็นด้วยกับบิต lsb(H(\(\sigma\)r,s′−1 l' )) ด้วยความน่าจะเป็น 1. เมื่อรวมความน่าจะเป็นของ ë \(\in\)HSV r,s′−1 เราพบว่าผู้ตรวจสอบที่ซื่อสัตย์ใน HSV r,s′ บรรลุข้อตกลงด้วยบิต b \(\in\){0, 1} โดยมีความน่าจะเป็นอย่างน้อย ph 2 = h2(1+h−h2) 2 . นอกจากนี้ โดยการชักนำให้ลงคะแนนเสียงข้างมากเหมือนเมื่อก่อน ผู้ตรวจสอบที่ซื่อสัตย์ทุกคนใน HSV r,s′ จะมีชุด vi ของพวกเขา จะเป็น H(Br ë) ดังนั้น เมื่อบรรลุข้อตกลงเกี่ยวกับ b ในขั้นตอน s′ แล้ว T r+1 ก็คือ \(\leq\)T r + แลม + ts′+1 หรือ \(\leq\)T r + แลม + ts′+2 ขึ้นอยู่กับว่า b = 0 หรือ b = 1 ตามการวิเคราะห์กรณี 2.1.a และ 2.1.b ใน โดยเฉพาะอย่างยิ่ง จะไม่มีการดำเนินการขั้นตอน Coin-Genuinely-Flipped อีกต่อไป นั่นคือ ผู้ตรวจสอบใน ขั้นตอนดังกล่าวยังคงตรวจสอบว่าพวกเขาเป็นผู้ตรวจสอบแล้วจึงรอ แต่ทั้งหมดจะหยุดโดยไม่ต้อง เผยแพร่สิ่งใดๆ ดังนั้น ก่อนขั้นตอน s∗ จำนวนครั้งที่ขั้นตอน Coin-GenuinelyFlipped ถูกดำเนินการจะถูกกระจายตามตัวแปรสุ่ม Lr ปล่อยให้ขั้นตอน s' เป็นขั้นตอนสุดท้ายที่พลิกเหรียญอย่างแท้จริงตาม Lr โดยการสร้างโปรโตคอล เรามี s' = 4 + 3Lr. เมื่อใดที่ฝ่ายตรงข้ามควรทำให้สเต็ปเกิดขึ้นหากเขาต้องการหน่วงเวลา T r+1 มากเท่ากับ เป็นไปได้เหรอ? เรายังสามารถสันนิษฐานได้ว่าฝ่ายตรงข้ามรู้ถึงการตระหนักถึง Lr ล่วงหน้า ถ้า s∗> s′ ดังนั้นมันจึงไม่มีประโยชน์ เพราะผู้ตรวจสอบที่ซื่อสัตย์ได้บรรลุข้อตกลงใน ขั้นตอน เพื่อให้มั่นใจว่า ในกรณีนี้ s∗ จะเป็น s′ +1 หรือ s′ +2 อีกครั้ง ขึ้นอยู่กับว่า b = 0 หรือ b = 1 อย่างไรก็ตาม นี่คือกรณี 2.1.a และ 2.1.b และผลลัพธ์ T r+1 ก็คือ เช่นเดียวกับในกรณีนั้น แม่นยำยิ่งขึ้น T r+1 \(\leq\)T r + แล + ts∗\(\leq\)T r + แล + ts′+2 ถ้า s∗< s′ −3 —นั่นคือ s∗ อยู่ก่อนขั้นตอน Coin-Genuinely-Flipped สุดท้ายที่สอง— แล้วโดย การวิเคราะห์กรณี 2.2.a และ 2.2.b T r+1 \(\leq\)T r + แล + ts∗+3 < T r + แล + ts′ นั่นคือฝ่ายตรงข้ามกำลังทำให้ข้อตกลงเกี่ยวกับ Br เกิดขึ้นเร็วขึ้น ถ้า s∗= s′ −2 หรือ s′ −1 —นั่นคือ ขั้นตอน Coin-Fixed-To-0 หรือขั้นตอน Coin-Fixed-To-1 ทันทีก่อนขั้นตอน s′— จากนั้นด้วยการวิเคราะห์กรณีย่อยสี่กรณี ผู้ตรวจสอบที่ซื่อสัตย์เข้ามา ขั้นตอนที่ s′ ไม่ต้องพลิกเหรียญอีกต่อไป เพราะพวกเขาหยุดโดยไม่แพร่กระจาย หรือเคยเห็น > 2/3 ส่วนใหญ่สำหรับบิต b เดียวกัน ดังนั้นเราจึงมี T r+1 \(\leq\)T r + แล + ts∗+3 \(\leq\)T r + แล + ts′+2โดยสรุป ไม่ว่า s∗ คืออะไร เราก็มี T r+1 \(\leq\)T r + แล + ts′+2 = T r + แล + t3Lr+6 = T r + แล + (2(3Lr + 6) −3)แล + Λ = T r + (6Lr + 10)แล + Λ, ตามที่เราต้องการจะแสดง กรณีที่เลวร้ายที่สุดคือเมื่อ s∗= s′ −1 และกรณีที่ 2.2.b เกิดขึ้น การรวมกรณีที่ 1 และ 2 ของโปรโตคอล BA ไบนารีเข้าด้วยกัน Lemma 5.3 ถือไว้ ■ 5.9 ความปลอดภัยของ Seed Qr และความน่าจะเป็นของผู้นำที่ซื่อสัตย์ มันยังคงต้องพิสูจน์ Lemma 5.4 จำได้ว่าผู้ตรวจสอบในรอบ r นำมาจาก PKr−k และ ถูกเลือกตามปริมาณ Qr−1 เหตุผลในการแนะนำพารามิเตอร์การมองย้อนกลับ k คือเพื่อให้แน่ใจว่า ย้อนกลับไปที่รอบ r −k เมื่อฝ่ายตรงข้ามสามารถเพิ่มผู้ใช้ที่เป็นอันตรายรายใหม่ได้ สำหรับ PKr−k เขาไม่สามารถทำนายปริมาณ Qr−1 ได้ ยกเว้นความน่าจะเป็นเล็กน้อย โปรดทราบว่า ฟังก์ชัน hash เป็นการสุ่ม oracle และ Qr−1 เป็นหนึ่งในอินพุตเมื่อเลือกตัวตรวจสอบสำหรับรอบ r ดังนั้นไม่ว่าผู้ใช้ที่เป็นอันตรายจะถูกเพิ่มเข้าไปใน PKr−k แค่ไหนก็ตาม จากมุมมองของฝ่ายตรงข้าม หนึ่งในนั้นยังคงถูกเลือกให้เป็นผู้ตรวจสอบในขั้นตอนของรอบ r ด้วยความน่าจะเป็นที่ต้องการ p (หรือ p1 สำหรับขั้นตอนที่ 1) แม่นยำยิ่งขึ้น เรามีบทแทรกต่อไปนี้ เลมมา 5.6 ด้วย k = O(log1/2 F) สำหรับแต่ละรอบ r โดยมีความน่าจะเป็นอย่างท่วมท้นที่ฝ่ายตรงข้าม ไม่ได้สอบถาม Qr−1 ไปยัง oracle แบบสุ่ม ย้อนกลับไปที่รอบ r −k การพิสูจน์. เราดำเนินการโดยการเหนี่ยวนำ สมมติว่าในแต่ละรอบ \(\gamma\) < r ฝ่ายตรงข้ามไม่ได้สอบถาม Q\(\gamma\)−1 สุ่ม oracle กลับมาที่รอบ \(\gamma\) −k.21 พิจารณาเกมทางจิตต่อไปนี้ที่เล่นโดย ฝ่ายตรงข้ามที่รอบ r −k พยายามทำนาย Qr−1 ในขั้นตอนที่ 1 ของแต่ละรอบ \(\gamma\) = r −k, . . , r −1 โดยกำหนด Q\(\gamma\)−1 ที่เฉพาะเจาะจงซึ่งไม่ได้ถูกสอบถามไปยังการสุ่ม oracle โดยการสั่งผู้เล่น i \(\in\)PK\(\gamma\)−k ตามค่า hash H(SIGi(\(\gamma\), 1, Q\(\gamma\)−1)) มากขึ้นเรื่อยๆ เราได้รับการเรียงสับเปลี่ยนแบบสุ่มบน PK\(\gamma\)−k ตามคำนิยามแล้ว ผู้นำ ë\(\gamma\) คือ ผู้ใช้รายแรกในการเรียงสับเปลี่ยนและซื่อสัตย์กับความน่าจะเป็น h ยิ่งกว่านั้นเมื่อ PK\(\gamma\)−k มีขนาดใหญ่ เพียงพอแล้ว สำหรับจำนวนเต็ม x \(\geq\)1 ใดๆ ความน่าจะเป็นที่ผู้ใช้ x แรกในการเรียงสับเปลี่ยนล้วนเป็นทั้งหมด เป็นอันตราย แต่ (x + 1)st มีความซื่อสัตย์คือ (1 −h)xh ถ้า ë\(\gamma\) ซื่อสัตย์ แล้ว Q\(\gamma\) = H(SIGLR\(\gamma\)(Q\(\gamma\)−1), \(\gamma\)) เนื่องจากฝ่ายตรงข้ามไม่สามารถปลอมลายเซ็นได้ ของ ë\(\gamma\), Q\(\gamma\) จะถูกกระจายอย่างสม่ำเสมอโดยการสุ่มจากมุมมองของฝ่ายตรงข้าม และ ยกเว้น ด้วยความน่าจะเป็นเพียงเล็กน้อยแบบเอ็กซ์โพเนนเชียล 22 ไม่ถูกสอบถามถึง H ที่รอบ r -k เนื่องจากแต่ละ คิว\(\gamma\)+1, คิว\(\gamma\)+2, . . , Qr−1 ตามลำดับคือผลลัพธ์ของ H ด้วย Q\(\gamma\), Q\(\gamma\)+1, . . , Qr−2 เป็นหนึ่งในอินพุต พวกเขาทั้งหมดดูสุ่มไปที่ปฏิปักษ์และปฏิปักษ์ไม่สามารถสอบถาม Qr−1 ถึง H ที่ รอบ r -k ดังนั้น เป็นกรณีเดียวที่ฝ่ายตรงข้ามสามารถทำนาย Qr−1 ด้วยความน่าจะเป็นที่ดีในรอบนั้น r−k คือเมื่อผู้นำทั้งหมด ër−k, . . . , ër−1 เป็นอันตราย พิจารณารอบอีกครั้ง \(\gamma\) \(\in\){r−k . . , r−1} และการเรียงสับเปลี่ยนแบบสุ่มเหนือ PK\(\gamma\) − k เกิดจากค่า hash ที่สอดคล้องกัน ถ้าสำหรับบางคน x \(\geq\)2 ผู้ใช้ x −1 คนแรกในการเรียงสับเปลี่ยนล้วนเป็นอันตรายและ x-th นั้นซื่อสัตย์ จากนั้น ฝ่ายตรงข้ามมี x ตัวเลือกที่เป็นไปได้สำหรับ Q\(\gamma\): รูปแบบใดรูปแบบหนึ่ง H(SIGi(Q\(\gamma\)−1, \(\gamma\))) โดยที่ i เป็นหนึ่งใน 21เนื่องจาก k เป็นจำนวนเต็มขนาดเล็ก โดยไม่สูญเสียลักษณะทั่วไป เราสามารถสรุปได้ว่า k รอบแรกของโปรโตคอลกำลังทำงานอยู่ ภายใต้สภาพแวดล้อมที่ปลอดภัยและมีสมมติฐานอุปนัยสำหรับรอบเหล่านั้น 22นั่นคือ เอ็กซ์โปเนนเชียลในความยาวของเอาท์พุตของ H โปรดทราบว่าความน่าจะเป็นนี้น้อยกว่า F มากผู้ใช้ที่เป็นอันตราย x−1 คนแรก โดยทำให้ผู้เล่น i เป็นผู้นำที่แท้จริงของรอบ \(\gamma\); หรือ H(Q\(\gamma\)−1, \(\gamma\)) โดย บังคับให้B\(\gamma\) = B\(\gamma\) ī. มิฉะนั้นผู้นำของรอบ \(\gamma\) จะเป็นผู้ใช้ที่ซื่อสัตย์คนแรกในการเรียงสับเปลี่ยน และ Qr−1 เป็นสิ่งที่คาดเดาไม่ได้สำหรับปฏิปักษ์ ตัวเลือก x ใดข้างต้นของQ\(\gamma\)ที่ฝ่ายตรงข้ามควรติดตาม? เพื่อช่วยเหลือศัตรู ตอบคำถามนี้ ในเกมทางจิต เราทำให้เขามีพลังมากกว่าเขาจริงๆ คือดังนี้ ประการแรก ในความเป็นจริงแล้วฝ่ายตรงข้ามไม่สามารถคำนวณ hash ของผู้ใช้ที่ซื่อสัตย์ได้ ลายเซ็นต์ จึงไม่สามารถตัดสินใจสำหรับแต่ละ Q\(\gamma\) ได้ว่าจำนวน x(Q\(\gamma\)) ของผู้ใช้ที่เป็นอันตรายในตอนเริ่มต้น ของการเรียงสับเปลี่ยนแบบสุ่มในรอบ \(\gamma\) + 1 ที่เกิดจาก Q\(\gamma\) ในเกมทางจิตเราให้เขา ตัวเลข x(Q\(\gamma\)) ฟรี ประการที่สอง ในความเป็นจริง มีผู้ใช้ x คนแรกในการเรียงสับเปลี่ยนทั้งหมด การเป็นคนใจร้ายไม่ได้หมายความว่าพวกเขาทุกคนจะถูกทำให้เป็นผู้นำได้ เพราะว่า hash ค่าของลายเซ็นต้องน้อยกว่า p1 ด้วย เราละเลยข้อจำกัดนี้ในจิตใจ เกมทำให้ฝ่ายตรงข้ามได้เปรียบมากยิ่งขึ้น มันง่ายที่จะเห็นว่าในเกมทางจิต ตัวเลือกที่ดีที่สุดสำหรับฝ่ายตรงข้าม แสดงโดย ˆQ\(\gamma\) คือสิ่งที่สร้างลำดับผู้ใช้ที่เป็นอันตรายที่ยาวที่สุดในช่วงเริ่มต้นของการสุ่ม การเรียงสับเปลี่ยนในรอบ \(\gamma\) + 1 โดยแท้จริงแล้ว เมื่อกำหนด Q\(\gamma\) ที่เฉพาะเจาะจง โปรโตคอลไม่ได้ขึ้นอยู่กับ Q\(\gamma\)−1 อีกต่อไปและฝ่ายตรงข้ามสามารถมุ่งความสนใจไปที่การเรียงสับเปลี่ยนใหม่ในรอบ \(\gamma\) + 1 ได้เพียงอย่างเดียวซึ่งมี การกระจายเดียวกันสำหรับจำนวนผู้ใช้ที่เป็นอันตรายตั้งแต่เริ่มต้น ตามนั้นในแต่ละรอบ \(\gamma\) ที่กล่าวมาข้างต้น ˆQ\(\gamma\) ทำให้เขามีทางเลือกจำนวนมากที่สุดสำหรับ Q\(\gamma\)+1 และจึงขยายให้สูงสุด ความน่าจะเป็นที่ผู้นำต่อเนื่องกันล้วนเป็นอันตราย ดังนั้น ในเกมทางจิต ฝ่ายตรงข้ามกำลังติดตาม Markov Chain จากรอบ r -k เพื่อปัดเศษ r −1 โดยมีปริภูมิสถานะเป็น {0} \(\cup\){x : x \(\geq\)2} สถานะ 0 แสดงถึงความจริงที่ว่า ผู้ใช้รายแรกในการเรียงสับเปลี่ยนแบบสุ่มในรอบปัจจุบัน \(\gamma\) เป็นคนซื่อสัตย์ ดังนั้นฝ่ายตรงข้ามจึงล้มเหลว เกมทำนาย Qr−1; และแต่ละสถานะ x \(\geq\)2 แสดงถึงความจริงที่ว่าผู้ใช้ x −1 คนแรกใน การเรียงสับเปลี่ยนเป็นอันตรายและ x-th นั้นซื่อสัตย์ ดังนั้นฝ่ายตรงข้ามจึงมีตัวเลือก x สำหรับQ\(\gamma\) ที่ ความน่าจะเป็นของการเปลี่ยนแปลง P(x, y) มีดังนี้ • P(0, 0) = 1 และ P(0, y) = 0 สำหรับ y ใดๆ \(\geq\)2 นั่นคือฝ่ายตรงข้ามล้มเหลวในเกมครั้งแรก ผู้ใช้ในการเรียงสับเปลี่ยนกลายเป็นความซื่อสัตย์ • P(x, 0) = hx สำหรับ x \(\geq\)2 ใดๆ นั่นคือ ด้วยความน่าจะเป็น hx การเรียงสับเปลี่ยนสุ่ม x ทั้งหมดมี ผู้ใช้กลุ่มแรกมีความซื่อสัตย์ ดังนั้นฝ่ายตรงข้ามจึงล้มเหลวในเกมในรอบถัดไป • สำหรับ x \(\geq\)2 และ y \(\geq\)2 ใดๆ P(x, y) คือความน่าจะเป็นที่ระหว่างการเรียงสับเปลี่ยนแบบสุ่มของ x เกิดจากตัวเลือก x ของ Q\(\gamma\) ซึ่งเป็นลำดับที่ยาวที่สุดของผู้ใช้ที่เป็นอันตรายในตอนต้น บางส่วนเป็น y −1 ดังนั้นฝ่ายตรงข้ามจึงมีตัวเลือก y สำหรับ Q\(\gamma\)+1 ในรอบถัดไป นั่นคือ ป(x, ย) = ย−1 เอ็กซ์ ผม=0 (1 −ซ)เอ่อ !x - ย−2 เอ็กซ์ ผม=0 (1 −ซ)เอ่อ !x = (1 −(1 −h)y)x −(1 −(1 −h)y−1)x โปรดทราบว่าสถานะ 0 คือสถานะการดูดซับเฉพาะในเมทริกซ์ทรานซิชัน P และสถานะอื่นๆ ทุกสถานะ x มีความน่าจะเป็นเชิงบวกที่จะเป็น 0 เราสนใจขอบเขตบนของจำนวน k ของ รอบที่จำเป็นสำหรับ Markov Chain เพื่อบรรจบกันเป็น 0 ด้วยความน่าจะเป็นอย่างท่วมท้น นั่นคือ ไม่ เรื่องที่สถานะเริ่มต้นของห่วงโซ่ ด้วยความน่าจะเป็นที่ฝ่ายตรงข้ามจะแพ้ในเกม และล้มเหลวในการทำนาย Qr−1 ที่รอบ r −k พิจารณาเมทริกซ์ทรานซิชัน P (2) \(\triangleq\)P \(\cdot\) P หลังจากผ่านไปสองรอบ จะสังเกตได้ง่ายว่า P (2)(0, 0) = 1 และ P (2)(0, x) = 0 สำหรับ x \(\geq\)2 ใดๆ สำหรับ x \(\geq\)2 และ y \(\geq\)2 ใดๆ โดยที่ P(0, y) = 0 เรามี P (2)(x, y) = P(x, 0)P(0, y) + เอ็กซ์ z\(\geq\)2 P(x, z)P(z, y) = เอ็กซ์ z\(\geq\)2 P(x, z)P(z, y)ปล่อยให้ èh \(\triangleq\)1 −h เราได้ P(x, y) = (1 −′hy)x −(1 −′hy−1)x และ ป (2)(x, y) = เอ็กซ์ z\(\geq\)2 [(1 −เลเยอร์เฮิร์ตซ์)x −(1 −เลเยอร์เฮิร์ตซ์−1)x][(1 −เลเยอร์ไฮ)z −(1 −เลเยอร์ไฮ−1)z] ด้านล่างเราคำนวณขีดจำกัดของ P (2)(x,y) ป (x,ย) เมื่อ h ไปที่ 1 —นั่นคือ ′h ไปที่ 0 โปรดทราบว่าค่าสูงสุด ลำดับของ aph ใน P(x, y) คือ aphy−1 โดยมี coefficient x ดังนั้น ลิม ชั่วโมง→1 P (2)(x, ย) ป(x, ย) = ลิม Âh \(\to\) 0 P (2)(x, ย) ป(x, ย) = ลิม Âh \(\to\) 0 P (2)(x, ย) x′hy−1 + O(′hy) = ลิม Âh \(\to\) 0 ป z\(\geq\)2[xÂhz−1 + O(Âhz)][zÂhy−1 + O(Âhy)] x′hy−1 + O(′hy) = ลิม Âh \(\to\) 0 2x′hy + O(′hy+1) x′hy−1 + O(′hy) = ลิม Âh \(\to\) 0 2xhy x′hy−1 = ลิม Âh \(\to\) 0 2Âh = 0 เมื่อ h เข้าใกล้ 1,23 มากพอ เราก็จะได้ P (2)(x, ย) ป(x, ย) \(\leq\)1 2 สำหรับ x \(\geq\)2 และ y \(\geq\)2 ใดๆ โดยการเหนี่ยวนํา สำหรับ k > 2 ใดๆ P (k) \(\triangleq\)P k เป็นเช่นนั้น • P (k)(0, 0) = 1, P (k)(0, x) = 0 สำหรับ x \(\geq\)2 ใดๆ และ • สำหรับ x \(\geq\)2 และ y \(\geq\)2 ใดๆ P (k)(x, y) = P (k−1)(x, 0)P(0, y) + เอ็กซ์ z\(\geq\)2 P (k−1)(x, z)P(z, y) = เอ็กซ์ z\(\geq\)2 P (k−1)(x, z)P(z, y) \(\leq\) เอ็กซ์ z\(\geq\)2 พี(x, ซ) 2k−2 \(\cdot\) P(z, y) = P (2)(x, y) 2k−2 \(\leq\)P(x, y) 2k−1 . เมื่อ P(x, y) \(\leq\)1 หลังจาก 1−log2 F รอบ ความน่าจะเป็นในการเปลี่ยนผ่านไปสู่สถานะใดๆ y \(\geq\)2 นั้นน้อยมาก เริ่มต้นด้วยสถานะใดๆ x \(\geq\)2 แม้ว่าจะมีสถานะดังกล่าวอยู่มากมาย แต่ก็เห็นได้ง่าย ลิม ย→+∞ ป(x, ย) ป(x, y + 1) = ลิม ย→+∞ (1 −เลเยอร์ไฮ)x −(1 −เลเยอร์ไฮ−1)x (1 −′hy+1)x −(1 −′hy)x = ลิม ย→+∞ ′hy−1 −′hy ′ไฮ −′ไฮ+1 = 1 Âh = 1 1 −ชม. ดังนั้นแต่ละแถว x ของเมทริกซ์การเปลี่ยนแปลง P จะลดลงเป็นลำดับเรขาคณิตพร้อมอัตรา 1 1−ชั่วโมง > 2 เมื่อ y มีขนาดใหญ่พอ และค่า P (k) ก็จะเท่ากัน ดังนั้น เมื่อ k มีขนาดใหญ่พอแต่ยังคงอยู่ ตามลำดับ log1/2 F, P y\(\geq\)2 P (k)(x, y) < F สำหรับ x \(\geq\)2 ใดๆ นั่นคือมีความน่าจะเป็นอย่างล้นหลาม ฝ่ายตรงข้ามแพ้ในเกมและล้มเหลวในการทำนาย Qr−1 ที่รอบ r −k สำหรับ h \(\in\)(2/3, 1] มากขึ้น การวิเคราะห์ที่ซับซ้อนแสดงให้เห็นว่ามีค่าคงที่ C มากกว่า 1/2 เล็กน้อย ดังนั้นจึงได้ผล เพื่อรับ k = O(logC F) ดังนั้น Lemma 5.6 จึงถืออยู่ ■ เลมมา 5.4 (ปรับปรุงใหม่) ให้คุณสมบัติ 1–3 สำหรับแต่ละรอบก่อน r, ph = h2(1 + h −h2) สำหรับ Lr, และผู้นำ ër มีความซื่อสัตย์กับความน่าจะเป็นอย่างน้อย ph 23ตัวอย่างเช่น h = 80% ตามที่แนะนำโดยตัวเลือกพารามิเตอร์เฉพาะ
หลักฐาน หลังจากบทแทรก 5.6 ฝ่ายตรงข้ามไม่สามารถทำนาย Qr−1 ย้อนกลับไปที่รอบ r −k ยกเว้น ความน่าจะเป็นเล็กน้อย โปรดทราบว่านี่ไม่ได้หมายความว่าความน่าจะเป็นของผู้นำที่ซื่อสัตย์จะเป็นเช่นนั้น แต่ละรอบ อันที่จริง ให้ Qr−1 ขึ้นอยู่กับจำนวนผู้ใช้ที่เป็นอันตรายในตอนเริ่มต้น การเรียงสับเปลี่ยนแบบสุ่มของ PKr−k ฝ่ายตรงข้ามอาจมีได้มากกว่าหนึ่งตัวเลือกสำหรับ Qr และ จึงสามารถเพิ่มความน่าจะเป็นของผู้นำที่เป็นอันตรายได้ในรอบ r + 1 - เราให้เขาอีกครั้ง ข้อดีบางอย่างที่ไม่สมจริงเช่นเดียวกับใน Lemma 5.6 เพื่อให้การวิเคราะห์ง่ายขึ้น อย่างไรก็ตาม สำหรับแต่ละ Qr−1 ที่ฝ่ายตรงข้ามไม่ได้สอบถามถึง H ที่รอบ r −k สำหรับ x \(\geq\)1 ใดๆ ด้วยความน่าจะเป็น (1 −h)x−1h ผู้ใช้ที่ซื่อสัตย์คนแรกเกิดขึ้นที่ตำแหน่ง x ในผลลัพธ์ การเรียงสับเปลี่ยนแบบสุ่มของ PKr−k เมื่อ x = 1 ความน่าจะเป็นของผู้นำที่ซื่อสัตย์ในรอบ r + 1 คือ แน่นอนชั่วโมง; ในขณะที่เมื่อ x = 2 ฝ่ายตรงข้ามมีสองตัวเลือกสำหรับ Qr และความน่าจะเป็นผลลัพธ์คือ h2. เมื่อพิจารณาทั้งสองกรณีนี้แล้ว เราจึงมีโอกาสเป็นผู้นำที่ซื่อสัตย์ในรอบนั้น r + 1 มีค่าอย่างน้อย h \(\cdot\) h + (1 −h)h \(\cdot\) h2 = h2(1 + h −h2) ตามต้องการ โปรดทราบว่าความน่าจะเป็นข้างต้นพิจารณาเฉพาะการสุ่มในโปรโตคอลจากรอบ r −k เพื่อปัดเศษ r เมื่อพิจารณาความสุ่มทั้งหมดจากรอบ 0 ถึงรอบ r แล้ว Qr−1 จะเป็น ฝ่ายตรงข้ามคาดเดาได้น้อยกว่าและความน่าจะเป็นของผู้นำที่ซื่อสัตย์ในรอบ r + 1 อยู่ที่ h2(1 + h −h2) น้อยที่สุด แทนที่ r + 1 ด้วย r และเลื่อนทุกอย่างกลับไปหนึ่งรอบ ซึ่งเป็นผู้นำ ër ซื่อสัตย์กับความน่าจะเป็นอย่างน้อย h2(1 + h −h2) ตามที่ต้องการ ในทำนองเดียวกัน ในแต่ละขั้นตอน Coin-Genuinely-Flipped s “ผู้นำ” ของขั้นตอนนั้น — นั่นคือผู้ตรวจสอบ ใน SV rs ซึ่งหนังสือรับรองมีค่า hash น้อยที่สุด มีความเที่ยงตรงกับความน่าจะเป็นอย่างน้อย h2(1 + ชั่วโมง −h2) ดังนั้น ph = h2(1 + h −h2) สำหรับ Lr และ Lemma 5.4 ถือเป็น ■
Algorand ′
2 ในส่วนนี้ เราสร้างเวอร์ชันของ Algorand ′ ที่ทำงานภายใต้สมมติฐานต่อไปนี้ ข้อสันนิษฐานของผู้ใช้ส่วนใหญ่ที่ซื่อสัตย์: มากกว่า 2/3 ของผู้ใช้ในแต่ละ PKr มีความซื่อสัตย์ ในส่วนที่ 8 เราจะแสดงวิธีแทนที่สมมติฐานข้างต้นด้วย Honest Majority ที่ต้องการ สมมติฐานเรื่องเงิน 6.1 สัญลักษณ์และพารามิเตอร์เพิ่มเติมสำหรับ Algorand ′ 2 สัญกรณ์ • \(\mu\) \(\in\)Z+: ขอบเขตบนเชิงปฏิบัติของจำนวนขั้นตอนที่มีความน่าจะเป็นอย่างท่วมท้น จะถ่ายจริงในรอบเดียว (ดังที่เราจะเห็น พารามิเตอร์ \(\mu\) ควบคุมจำนวนข้อมูลชั่วคราว คีย์ที่ผู้ใช้เตรียมไว้ล่วงหน้าในแต่ละรอบ) • Lr: ตัวแปรสุ่มที่แสดงถึงจำนวนการทดลองเบอร์นูลลีที่จำเป็นในการดู 1 เมื่อแต่ละครั้ง การทดลองคือ 1 ด้วยความน่าจะเป็น ph 2. Lr จะถูกใช้เพื่อขอบเขตบนของเวลาที่จำเป็นในการสร้าง บล็อกเบอร์ • th: ขอบเขตล่างสำหรับจำนวนผู้ตรวจสอบที่ซื่อสัตย์ในขั้นตอน s > 1 ของรอบ r โดยที่ ความน่าจะเป็นอย่างท่วมท้น (ให้ n และ p) มี > ผู้ตรวจสอบที่ซื่อสัตย์ใน SV r,s พารามิเตอร์ • ความสัมพันธ์ระหว่างพารามิเตอร์ต่างๆ — สำหรับแต่ละขั้นตอน s > 1 ของรอบ r, n จะถูกเลือก ดังนั้น ด้วยความน่าจะเป็นอย่างล้นหลาม
|HSV r,s| > ที และ |HSV r,s| + 2|MSV r,s| < 2tH โปรดทราบว่าอสมการทั้งสองข้างต้นรวมกันหมายถึง |HSV r,s| > 2|MSV r,s|: นั่นคือตรงนั้น เป็นเสียงข้างมากที่ซื่อสัตย์ 2/3 ของผู้ตรวจสอบที่เลือก ยิ่งค่า h ใกล้ 1 มากเท่าใด n ก็ต้องมีค่าน้อยลงเท่านั้น โดยเฉพาะเราใช้ (variants ของ) ขอบเขตเชอร์โนฟเพื่อให้แน่ใจว่าเงื่อนไขที่ต้องการมีความน่าจะเป็นอย่างล้นหลาม • ตัวอย่างตัวเลือกของพารามิเตอร์ที่สำคัญ — ฉ = 10−18. — n \(\mu\)4000, tH \(\mu\)0.69n, k = 70 6.2 การใช้คีย์ชั่วคราวใน Algorand ′ 2 จำได้ว่าผู้ตรวจสอบ i \(\in\)SV r,s ลงนามข้อความของเขาแบบดิจิทัล mr,s ฉัน ของขั้นตอน s ในรอบ r สัมพันธ์กับ กุญแจสาธารณะชั่วคราว pkr,s ฉัน ใช้คีย์ลับชั่วคราว skr,s ฉัน ที่เขาทำลายทันที หลังจากใช้งาน เมื่อจำนวนขั้นตอนที่เป็นไปได้ที่รอบอาจใช้นั้นถูกจำกัดด้วยจำนวนที่กำหนด จำนวนเต็ม \(\mu\) เราได้เห็นวิธีจัดการกับคีย์ชั่วคราวแล้ว เช่นอย่างที่เรา ได้อธิบายไว้ใน Algorand ′ 1 (โดยที่ \(\mu\) = m + 3) เพื่อจัดการคีย์ชั่วคราวที่เป็นไปได้ทั้งหมดจาก รอบ r′ ถึงรอบ r′ + 106 ฉันสร้างคู่ (PMK, SMK) โดยที่ PMK ปรมาจารย์สาธารณะ คีย์ของรูปแบบลายเซ็นตามข้อมูลประจำตัว และ SMK เป็นคีย์หลักลับที่เกี่ยวข้อง ผู้ใช้ฉัน เผยแพร่ PMK และใช้ SMK เพื่อสร้างคีย์ลับของคีย์สาธารณะชั่วคราวที่เป็นไปได้แต่ละรายการ (และทำลาย SMK หลังจากทำเช่นนั้น) ชุดกุญแจสาธารณะชั่วคราวของ i สำหรับผู้เกี่ยวข้อง รอบคือ S = {i} \(\times\) {r′, . . , r′ + 106} \(\times\) {1, . . . , \(\mu\)} (ตามที่กล่าวไว้ เมื่อรอบ r′ + 106 ใกล้เข้ามา ฉัน "รีเฟรช" คู่ของเขา (PMK, SMK)) ในทางปฏิบัติ ถ้า \(\mu\) มีขนาดใหญ่พอ รอบของ Algorand ′ 2 จะต้องไม่เกิน \(\mu\) ขั้นตอน ใน อย่างไรก็ตาม โดยหลักการแล้ว มีความเป็นไปได้ที่ระยะไกลสำหรับบางรอบคือจำนวนก้าว ที่ถ่ายจริงจะเกิน \(\mu\) เมื่อสิ่งนี้เกิดขึ้น ฉันจะไม่สามารถลงนามในข้อความของคุณนายได้ ฉัน สำหรับ ขั้นตอนใดก็ได้ s > \(\mu\) เนื่องจากเขาได้เตรียมคีย์ลับไว้ล่วงหน้าเฉพาะ \(\mu\) สำหรับรอบ r เท่านั้น นอกจากนี้เขา ไม่สามารถจัดเตรียมและเผยแพร่กุญแจชั่วคราวชุดใหม่ตามที่กล่าวไว้ก่อนหน้านี้ ในความเป็นจริงที่จะทำ ดังนั้นเขาจะต้องแทรกคีย์สาธารณะใหม่ PMK′ ลงในบล็อกใหม่ แต่ควรปัดเศษ r ทำตามขั้นตอนมากขึ้นเรื่อยๆ จะไม่มีการสร้างบล็อกใหม่ อย่างไรก็ตาม ยังมีวิธีแก้ปัญหาอยู่ ตัวอย่างเช่น ฉันอาจใช้คีย์ชั่วคราวตัวสุดท้ายของ round r, pkr,\(\mu\) ฉัน , ดังต่อไปนี้ เขาสร้างคู่คีย์อีกชุดหนึ่งสำหรับรอบ r —เช่น โดย (1) สร้างอีกคู่หนึ่ง คู่คีย์หลัก (PMK, SMK); (2) การใช้คู่นี้เพื่อสร้างอีกอัน เช่น 106 คีย์ชั่วคราว สค r,\(\mu\)+1 ฉัน , . . . , ถาม r,\(\mu\)+106 ฉัน สอดคล้องกับขั้นตอน \(\mu\)+1, ..., \(\mu\)+106 ของรอบ r; (3) การใช้ skr,\(\mu\) ฉัน สู่ดิจิทัล ลงชื่อ PMK (และข้อความ (r, \(\mu\)) ใดๆ หาก i \(\in\)SV r,\(\mu\)) สัมพันธ์กับ pkr,\(\mu\) ฉัน ; และ (4) การลบ SMK และ skr,\(\mu\) ฉัน . ฉันควรจะเป็นผู้ตรวจสอบในขั้นตอน \(\mu\) + s ด้วย s \(\in\){1, . . . , 106} จากนั้นฉันจะเซ็นชื่อแบบดิจิทัลของเขา (r, \(\mu\) + s)- ส่งข้อความถึงคุณ,\(\mu\)+s ฉัน สัมพันธ์กับ pk คีย์ใหม่ของเขา r,\(\mu\)+s ฉัน = (i, r, \(\mu\) + s) แน่นอนว่าต้องตรวจสอบลายเซ็นนี้ ของ i คนอื่นๆ ต้องแน่ใจว่าคีย์สาธารณะนี้สอดคล้องกับ PMK คีย์สาธารณะใหม่ของ i ดังนั้น นอกเหนือจากลายเซ็นนี้แล้ว ฉันยังส่งลายเซ็นดิจิทัลของ PMK ของเขาโดยสัมพันธ์กับ pkr,\(\mu\) ฉัน . แน่นอนว่าแนวทางนี้สามารถทำซ้ำได้บ่อยเท่าที่จำเป็น โดยควรปัด r ต่อไป เพื่อก้าวที่มากขึ้นเรื่อยๆ! รหัสลับชั่วคราวสุดท้ายจะใช้ในการตรวจสอบสิทธิ์สาธารณะหลักใหม่ กุญแจ และกุญแจชั่วคราวอีกอันสำหรับรอบ r และอื่นๆ6.3 พิธีสารจริง Algorand ′ 2 ระลึกอีกครั้งว่าในแต่ละขั้นตอน s ของรอบ r ผู้ตรวจสอบ i \(\in\)SV r,s ใช้ความลับสาธารณะระยะยาวของเขา คู่คีย์เพื่อสร้างหนังสือรับรองของเขา \(\sigma\)r, s ฉัน \(\triangleq\)SIGi(r, s, Qr−1) เช่นเดียวกับ SIGi คิวอาร์−1 ในกรณีที่ s = 1 ผู้ตรวจสอบฉันใช้คู่กุญแจชั่วคราวของเขา (pkr, s ฉัน , skr, s i ) เพื่อลงนามในข้อความอื่นใดที่อาจเป็น จำเป็น เพื่อความง่าย เราเขียน esigi(m) แทน sigpkr,s ฉัน (ม.) เพื่อแสดงว่าฉันเป็นเพียงชั่วคราว ลายเซ็นของ m ในขั้นตอนนี้ และเขียน ESIGi(m) แทน SIGpkr,s i (m) \(\triangleq\)(i, m, esigi(m)) ขั้นตอนที่ 1: บล็อกข้อเสนอ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มขั้นตอนที่ 1 ของตัวเองของรอบ r ทันทีที่เขามี CERT r−1 ซึ่งช่วยให้ i คำนวณ H(Br−1) และ Qr−1 ได้อย่างชัดเจน • ผู้ใช้ i ใช้ Qr−1 เพื่อตรวจสอบว่า i \(\in\)SV r,1 หรือไม่ ถ้า i /\(\in\)SV r,1 เขาไม่ทำอะไรเลยในขั้นตอนที่ 1 • ถ้าฉัน \(\in\)SV r,1 นั่นคือ ถ้าฉันเป็นผู้นำที่มีศักยภาพ เขาก็จะทำสิ่งต่อไปนี้ (ก) ถ้าฉันได้เห็น B0 แล้ว . . , Br−1 เอง (ใดๆ Bj = Bj ǫ สามารถหามาได้อย่างง่ายดายจากค่า hash ของมัน ใน CERT j และถือว่า "เห็นแล้ว") จากนั้นเขาจะรวบรวมการชำระเงินรอบที่มี ได้รับการเผยแพร่ไปยังเขาจนถึงตอนนี้และคำนวณ payset สูงสุด PAY r ฉันมาจากพวกเขา (b) ถ้าฉันไม่เห็น B0 ทั้งหมด . . , Br−1 แล้วเขาก็ตั้งค่า PAY r ฉัน = \(\emptyset\) (c) ต่อไป ฉันจะคำนวณ “candidate block” Br i = (r, จ่าย r ผม , SIGI(Qr−1), H(Br−1)) (c) สุดท้ายนี้ ฉันคำนวณข้อความ mr,1 ฉัน = (พี่ ฉัน , esigi(H(Br ผม )), \(\sigma\)r,1 i ) ทำลายช่วงเวลาชั่วคราวของเขา รหัสลับ skr,1 i แล้วเผยแพร่สองข้อความ mr,1 ฉัน และ (SIGi(Qr−1), \(\sigma\)r,1 ฉัน) แยกกันแต่พร้อมกัน ก aเมื่อฉันเป็นผู้นำ SIGi(Qr−1) ยอมให้ผู้อื่นคำนวณ Qr = H(SIGi(Qr−1), r)
การขยายพันธุ์แบบคัดเลือก เพื่อย่นระยะเวลาการดำเนินการทั่วโลกของขั้นตอนที่ 1 และรอบทั้งหมดให้สั้นลง สิ่งสำคัญคือ (r, 1)- ข้อความถูกเผยแพร่แบบเลือกสรร นั่นคือสำหรับผู้ใช้ j ทุกคนในระบบ • สำหรับข้อความแรก (r, 1) ที่เขาเคยได้รับและยืนยันได้สำเร็จ ก ว่าข้อความนั้นมี บล็อกหรือเป็นเพียงข้อมูลประจำตัวและลายเซ็นของ Qr−1 ผู้เล่น j จะเผยแพร่ตามปกติ • สำหรับข้อความอื่นๆ (r, 1) ทั้งหมดที่ผู้เล่น j ได้รับและยืนยันได้สำเร็จ เขาจะเผยแพร่ เฉพาะในกรณีที่ค่า hash ของข้อมูลรับรองที่มีอยู่นั้นน้อยที่สุดในบรรดาค่า hash ของข้อมูลรับรองที่มีอยู่ในข้อความทั้งหมด (r, 1) ที่เขาได้รับและตรวจสอบได้สำเร็จ ไกล • อย่างไรก็ตาม ถ้า j ได้รับข้อความสองข้อความที่แตกต่างกันในรูปแบบ mr,1 ฉัน จากผู้เล่นคนเดียวกัน i,b he ละทิ้งอันที่สองไม่ว่าค่า hash ของข้อมูลประจำตัวของ i จะเป็นเท่าใด โปรดทราบว่าภายใต้การคัดเลือกเผยแพร่ จะมีประโยชน์ที่ผู้ที่มีศักยภาพเป็นผู้นำแต่ละคนจะเผยแพร่ของตน หนังสือรับรอง \(\sigma\)r,1 ฉัน แยกจากนาย 1 i :c ข้อความเล็กๆ เหล่านั้นเดินทางเร็วกว่าบล็อกแน่นอน การขยายพันธุ์นาย 1 อย่างทันท่วงที ฉัน โดยที่ข้อมูลประจำตัวที่มีอยู่มีค่า hash น้อยในขณะที่ ทำให้ค่าที่มีค่า hash มากหายไปอย่างรวดเร็ว กกล่าวคือ ลายเซ็นทั้งหมดถูกต้อง และหากอยู่ในแบบ นาย 1 i ทั้งบล็อกและ hash นั้นถูกต้อง —แม้ว่า j จะไม่ตรวจสอบว่า payset ที่รวมไว้นั้นสูงสุดสำหรับ i หรือไม่ bซึ่งหมายความว่าฉันเป็นอันตราย cเราขอขอบคุณ Georgios Vlachos ที่แนะนำสิ่งนี้ขั้นตอนที่ 2: ขั้นตอนแรกของ GC ของโปรโตคอลฉันทามติแบบให้คะแนน คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มขั้นตอนที่ 2 ของตัวเองของรอบ r ทันทีที่มี ใบรับรองr−1 • ผู้ใช้ i รอเป็นระยะเวลาสูงสุด t2 \(\triangleq\)แล + Λ ระหว่างรอผมก็ทำดังนี้ครับ 1. หลังจากรอเวลา 2แล เขาพบผู้ใช้ ëเช่นนั้น H(\(\sigma\)r,1 มอร์) \(\leq\)H(\(\sigma\)r,1 เจ ) สำหรับทุกคน หนังสือรับรอง\(\sigma\)r,1 เจ ซึ่งเป็นส่วนหนึ่งของข้อความที่ได้รับการตรวจสอบ (r, 1) เรียบร้อยแล้ว จนถึงตอนนี้ 2. ถ้า เขา มี ได้รับ ก บล็อก เบอร์-1, ซึ่ง ไม้ขีด ที่ hash ค่า H(Br−1) อยู่ใน CERT r−1,b และหากเขาได้รับจาก la ข้อความที่ถูกต้อง mr,1 ฎ = (นาย มอร์, ซิกล์(H(Br ̵)), \(\sigma\)r,1 ̵) c จากนั้นฉันก็หยุดรอและตั้งค่า v′ ฉัน \(\triangleq\)(H(Br ë), ë) 3. มิฉะนั้น เมื่อหมดเวลา t2 ฉันจะตั้งค่า v′ ฉัน \(\triangleq\) \(\bot\) 4. เมื่อค่าของ v′ ฉันตั้งค่าไว้แล้ว ฉันคำนวณ Qr−1 จาก CERT r−1 และตรวจสอบว่า ฉัน \(\in\)SV r,2 หรือไม่ 5. ถ้าฉัน \(\in\)SV r,2 ฉันจะคำนวณข้อความ mr,2 ฉัน \(\triangleq\)(ESIGi(วี′ ผม), \(\sigma\)r,2 i ) d ทำลายช่วงเวลาชั่วคราวของเขา รหัสลับ skr,2 ฉัน แล้วเผยแพร่นาย 2 ฉัน ไม่อย่างนั้นฉันก็หยุดโดยไม่เผยแพร่ อะไรก็ได้ โดยพื้นฐานแล้ว ผู้ใช้ i ตัดสินใจเป็นการส่วนตัวว่าผู้นำของรอบ r คือผู้ใช้ ë bแน่นอน ถ้า CERT r−1 ระบุว่า Br−1 = Br−1 ī แล้วฉันก็ "ได้รับ" Br−1 ทันทีที่เขามี ใบรับรองr−1 cอีกครั้ง ลายเซ็นของผู้เล่น ë และ hashes ได้รับการตรวจสอบเรียบร้อยแล้ว และชำระเงิน ริน Br ëเป็นชุดการจ่ายเงินที่ถูกต้องสำหรับ รอบ r —แม้ว่าฉันจะไม่ได้ตรวจสอบว่า PAY r หรือไม่ ̵ เป็นค่าสูงสุดสำหรับ ̃ หรือไม่ ถ้า Br tellประกอบด้วยชุดการจ่ายเงินที่ว่างเปล่า จริงๆ แล้วไม่จำเป็นต้องเห็น Br−1 ก่อนที่จะตรวจสอบว่า Br ่ถูกต้องหรือไม่ งข้อความคุณนาย2 ฉัน ส่งสัญญาณว่าผู้เล่น i พิจารณาองค์ประกอบแรกของ v′ ฉันเป็น hash ของบล็อกถัดไป หรือ ถือว่าบล็อกถัดไปว่างเปล่า
ขั้นตอนที่ 3: ขั้นตอนที่สองของ GC คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้นขั้นตอนที่ 3 ของตัวเองของรอบ r ทันทีที่เขามี ใบรับรองr−1 • ผู้ใช้ i รอเป็นระยะเวลาสูงสุด t3 \(\triangleq\)t2 + 2แล = 3แล + Λ ระหว่างรอฉันก็ทำหน้าที่เป็น ดังต่อไปนี้ 1. หากมีค่า v อยู่จนเขาได้รับข้อความที่ถูกต้อง mr,2 เป็นอย่างน้อย เจ ของ แบบฟอร์ม (ESIGj(v), \(\sigma\)r,2 j ) โดยไม่มีข้อขัดแย้งใด ๆ ก แล้วเขาก็หยุดรอและออกเดินทาง วี' = โวลต์ 2. มิฉะนั้น เมื่อหมดเวลา t3 เขาจะตั้งค่า v′ = \(\bot\) 3. เมื่อตั้งค่า v′ ไว้แล้ว ฉันจะคำนวณ Qr−1 จาก CERT r−1 และตรวจสอบว่า ฉัน \(\in\)SV r,3 หรือไม่ 4. ถ้าฉัน \(\in\)SV r,3 ฉันจะคำนวณข้อความ mr,3 ฉัน \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 ผม ) ทำลายของเขา คีย์ลับชั่วคราว skr,3 ฉัน แล้วเผยแพร่นาย 3 ฉัน ไม่อย่างนั้นฉันก็หยุดโดยไม่มี เผยแพร่สิ่งใดๆ aนั่นคือ เขาไม่ได้รับข้อความที่ถูกต้องสองข้อความที่มี ESIGj(v) และ ESIGj(ˆv) ที่แตกต่างกันตามลำดับ จากผู้เล่นเจ ที่นี่และต่อจากนี้ ยกเว้นในเงื่อนไขการสิ้นสุดที่กำหนดไว้ในภายหลัง เมื่อใดก็ตามที่เป็นผู้เล่นที่ซื่อสัตย์ ต้องการข้อความในรูปแบบที่กำหนด ข้อความที่ขัดแย้งกันจะไม่นับหรือถือว่าถูกต้อง
ขั้นตอนที่ 4: ผลลัพธ์ของ GC และขั้นตอนแรกของ BBA⋆ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้นขั้นตอนที่ 4 ของตัวเองของรอบ r ทันทีที่เขา เสร็จสิ้นขั้นตอนที่ 3 ของเขาเอง • ผู้ใช้ ฉันรอเป็นเวลาสูงสุด 2แล.a ขณะรอ ฉันดำเนินการดังนี้ 1. เขาคำนวณ vi และ gi ซึ่งเป็นผลลัพธ์ของ GC ดังนี้ (ก) หากมีค่า v′ ̸= \(\bot\) แสดงว่าเขาได้รับข้อความที่ถูกต้องอย่างน้อย นาย 3 เจ = (ESIGj(v′), \(\sigma\)r,3 j ) จากนั้นเขาก็หยุดรอและตั้งค่า vi \(\triangleq\)v′ และ gi \(\triangleq\)2 (b) หากเขาได้รับข้อความที่ถูกต้องอย่างน้อย mr,3 เจ = (ESIGj(\(\bot\)), \(\sigma\)r,3 j ) จากนั้นเขาก็หยุด รอและตั้งค่า vi \(\triangleq\) \(\bot\)และ gi \(\triangleq\)0.b (ค) มิฉะนั้น เมื่อเวลา 2แล หมดลง ถ้ามีค่า v′ ̸= \(\bot\)เช่นนั้น ได้รับอย่างน้อย ⌈tH 2 ⌉ข้อความที่ถูกต้อง mr,j เจ = (ESIGj(v′), \(\sigma\)r,3 j ) จากนั้นเขาก็ตั้งค่า vi \(\triangleq\)v′ และ gi \(\triangleq\)1.c (d) มิฉะนั้น เมื่อเวลา 2แล หมดลง เขาจะกำหนดให้ vi \(\triangleq\) \(\bot\) และ gi \(\triangleq\)0 2. เมื่อตั้งค่า vi และ gi แล้ว ฉันจะคำนวณ bi ซึ่งเป็นอินพุตของ BBA⋆ ดังนี้: bi \(\triangleq\)0 ถ้า gi = 2 และ bi \(\triangleq\)1 มิฉะนั้น 3. ฉันคำนวณ Qr−1 จาก CERT r−1 และตรวจสอบว่า i \(\in\)SV r,4 หรือไม่ 4. ถ้า i \(\in\)SV r,4, เขาคำนวณข้อความ mr,4 ฉัน \(\triangleq\)(ESIGi(ไบ), ESIGi(vi), \(\sigma\)r,4 ผม ) ทำลายของเขา คีย์ลับชั่วคราว skr,4 ฉัน และเผยแพร่นาย 4 ฉัน ไม่อย่างนั้นฉันก็หยุดโดยไม่เผยแพร่ อะไรก็ได้ ดังนั้น ระยะเวลารวมสูงสุดนับตั้งแต่ฉันเริ่มขั้นตอนที่ 1 ของรอบ r อาจเป็น t4 \(\triangleq\)t3 + 2แล = 5แล + Λ bไม่ว่าขั้นตอน (b) จะอยู่ในโปรโตคอลหรือไม่ก็ตามก็ไม่ส่งผลต่อความถูกต้อง อย่างไรก็ตาม การมีอยู่ของขั้นตอน (b) อนุญาตให้ขั้นตอนที่ 4 สิ้นสุดในเวลาน้อยกว่า 2′ หากผู้ตรวจสอบขั้นตอนที่ 3 จำนวนมากเพียงพอได้ "ลงนาม \(\bot\)" สามารถพิสูจน์ได้ว่า v′ ในกรณีนี้ ถ้ามี จะต้องไม่ซ้ำกันขั้นตอนที่ s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3: ขั้นตอน Coin-Fixed-To-0 ของ BBA⋆ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้น Step s ของตัวเองของรอบ r ทันทีที่เขา เสร็จสิ้นขั้นตอน s −1 ของเขาเอง • ผู้ใช้ ฉันรอเป็นเวลาสูงสุด 2แล.a ขณะรอ ฉันดำเนินการดังนี้ – เงื่อนไขการสิ้นสุด 0: หาก ณ จุดใดมีสตริง v ̸= \(\bot\) และขั้นตอน s′ เช่นนั้น (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 —นั่นคือ ขั้นตอน s′ เป็นขั้นตอน Coin-Fixed-To-0 (b) ฉันได้รับข้อความที่ถูกต้องอย่างน้อย mr,s′−1 เจ = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 เจ )ข และ (c) ฉันได้รับข้อความที่ถูกต้อง (SIGj(Qr−1), \(\sigma\)r,1 j ) โดยที่ j เป็นอันที่สอง องค์ประกอบของวี จากนั้นฉันก็หยุดรอและสิ้นสุดการดำเนินการตามขั้นตอน s ของเขาเอง (และอันที่จริงคือรอบ r) ทันทีโดยไม่ต้องเผยแพร่สิ่งใด ๆ ในฐานะผู้ตรวจสอบ (r, s) กำหนดให้ H(Br) เป็นลำดับแรก องค์ประกอบของวี; และกำหนดให้ CERT r ของเขาเองเป็นชุดของข้อความ mr,s′−1 เจ ของขั้นตอน (b) ร่วมกับ (SIGj(Qr−1), \(\sigma\)r,1 เจ ).ค – เงื่อนไขการสิ้นสุดที่ 1: หาก ณ จุดใดมีขั้นตอนเช่นนั้น (a’) 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 —นั่นคือ Step s′ เป็นขั้นตอน Coin-Fixed-To-1 และ (b’) ฉันได้รับข้อความที่ถูกต้องอย่างน้อย mr,s′−1 เจ = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 เจ )ง จากนั้น ฉันหยุดรอและสิ้นสุดการดำเนินการขั้นตอน s ของเขาเอง (และในความเป็นจริงของรอบ r) อย่างถูกต้อง ออกไปโดยไม่เผยแพร่สิ่งใด ๆ ในฐานะผู้ตรวจสอบ (r, s) เซต Br = Br ; และกำหนดของเขาเอง CERT r เป็นชุดของข้อความ mr,s′−1 เจ ของขั้นตอนย่อย (b’) – ถ้า ที่ ใด ๆ จุด เขา มี ได้รับ ที่ น้อยที่สุด ที ถูกต้อง นายส−1 เจ ของ ของ ที่ แบบฟอร์ม (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็หยุดรอและตั้งค่า bi \(\triangleq\)1 – ถ้า ที่ ใด ๆ จุด เขา มี ได้รับ ที่ น้อยที่สุด ที ถูกต้อง นายส−1 เจ ของ ของ ที่ แบบฟอร์ม (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 เจ )แต่ตนไม่เห็นด้วยกับข้อvแล้วเขาก็หยุด รอและตั้งค่า bi \(\triangleq\)0 – มิฉะนั้น เมื่อเวลา 2แล หมดลง ฉันจะตั้งค่า bi \(\triangleq\)0 – เมื่อตั้งค่า bi แล้ว ฉันจะคำนวณ Qr−1 จาก CERT r−1 และตรวจสอบว่า ฉัน \(\in\)SV r,s – ถ้าฉัน \(\in\)SV r,s ฉันจะคำนวณข้อความ mr,s ฉัน \(\triangleq\)(ESIGi(ไบ), ESIGi(vi), \(\sigma\)r,s i ) โดยที่ vi เป็น ค่าที่เขาคำนวณได้ในขั้นตอนที่ 4 จะทำลายคีย์ลับชั่วคราวของเขา skr,s ฉัน แล้ว เผยแพร่นายส ฉัน ไม่อย่างนั้นฉันก็หยุดโดยไม่เผยแพร่อะไรเลย ดังนั้น ระยะเวลารวมสูงสุดตั้งแต่ฉันเริ่มขั้นตอนที่ 1 ของรอบ r อาจเป็น ts \(\triangleq\)ts−1 + 2แล = (2 วินาที −3)แล + Λ bข้อความดังกล่าวจากผู้เล่น j จะถูกนับแม้ว่าผู้เล่น i จะได้รับข้อความจากการลงนาม j สำหรับ 1 ก็ตาม สิ่งที่คล้ายกันสำหรับเงื่อนไขการสิ้นสุด 1 ดังที่แสดงในการวิเคราะห์ นี่คือเพื่อให้แน่ใจว่าผู้ใช้ที่ซื่อสัตย์ทุกคนทราบ CERT r ภายในเวลา lam จากกัน cUser ตอนนี้ฉันรู้จัก H(Br) และการตกแต่งรอบของเขาเองแล้ว เขาแค่ต้องรอจนกว่าบล็อก Br จริง ๆ จะมาถึง แพร่กระจายไปยังเขาซึ่งอาจต้องใช้เวลาเพิ่มเติมอีกระยะหนึ่ง เขายังคงช่วยเผยแพร่ข้อความในฐานะผู้ใช้ทั่วไป แต่ไม่ได้เริ่มต้นการแพร่กระจายใด ๆ ในฐานะผู้ตรวจสอบ (r, s) โดยเฉพาะเขาได้ช่วยเผยแพร่ข้อความทั้งหมดมาใน CERT r ของเขา ซึ่งเพียงพอสำหรับโปรโตคอลของเรา โปรดทราบว่าเขาควรตั้งค่า bi \(\triangleq\)0 สำหรับโปรโตคอล BA ไบนารีด้วย แต่ bi ไม่จำเป็นในกรณีนี้อยู่แล้ว สิ่งที่คล้ายกันสำหรับคำแนะนำทั้งหมดในอนาคต dในกรณีนี้ มันไม่สำคัญว่า vj คืออะไร 65ขั้นตอนที่ s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3: ขั้นตอนแบบ Coin-Fixed-To-1 ของ BBA⋆ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้น Step s ของตัวเองของรอบ r ทันทีที่เขา เสร็จสิ้นขั้นตอน s −1 ของเขาเอง • ผู้ใช้ฉันรอเป็นระยะเวลาสูงสุด 2 \(\gamma\) ระหว่างรอผมก็ทำดังนี้ครับ – เงื่อนไขการสิ้นสุด 0: คำแนะนำเดียวกันกับในขั้นตอน Coin-Fixed-To-0 – เงื่อนไขการสิ้นสุด 1: คำแนะนำเดียวกันกับในขั้นตอน Coin-Fixed-To-0 – ถ้า ที่ ใด ๆ จุด เขา มี ได้รับ ที่ น้อยที่สุด ที ถูกต้อง นายส−1 เจ ของ ของ ที่ แบบฟอร์ม (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็หยุดรอและตั้งค่า bi \(\triangleq\)0.a – มิฉะนั้น เมื่อเวลา 2แล หมดลง ฉันจะตั้งค่า bi \(\triangleq\)1 – เมื่อตั้งค่า bi แล้ว ฉันจะคำนวณ Qr−1 จาก CERT r−1 และตรวจสอบว่า ฉัน \(\in\)SV r,s – ถ้าฉัน \(\in\)SV r,s ฉันจะคำนวณข้อความ mr,s ฉัน \(\triangleq\)(ESIGi(ไบ), ESIGi(vi), \(\sigma\)r,s i ) โดยที่ vi เป็น ค่าที่เขาคำนวณได้ในขั้นตอนที่ 4 จะทำลายคีย์ลับชั่วคราวของเขา skr,s ฉัน แล้ว เผยแพร่นายส ฉัน ไม่อย่างนั้นฉันก็หยุดโดยไม่เผยแพร่อะไรเลย โปรดทราบว่าการรับข้อความที่ถูกต้อง (r, s −1) การลงนามสำหรับ 1 จะหมายถึงการสิ้นสุดเงื่อนไข 1 ขั้นตอนที่ s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: ขั้นตอนการพลิกเหรียญอย่างแท้จริงของ BBA⋆ คำแนะนำสำหรับผู้ใช้ทุกคน i \(\in\)PKr−k: ผู้ใช้ i เริ่มต้น Step s ของตัวเองของรอบ r ทันทีที่เขา เสร็จสิ้นขั้นตอนของเขาเอง s −1 • ผู้ใช้ฉันรอเป็นระยะเวลาสูงสุด 2 \(\gamma\) ระหว่างรอผมก็ทำดังนี้ครับ – เงื่อนไขการสิ้นสุด 0: คำแนะนำเดียวกันกับในขั้นตอน Coin-Fixed-To-0 – เงื่อนไขการสิ้นสุด 1: คำแนะนำเดียวกันกับในขั้นตอน Coin-Fixed-To-0 – ถ้า ที่ ใด ๆ จุด เขา มี ได้รับ ที่ น้อยที่สุด ที ถูกต้อง นายส−1 เจ ของ ของ ที่ แบบฟอร์ม (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็หยุดรอและตั้งค่า bi \(\triangleq\)0 – ถ้า ที่ ใด ๆ จุด เขา มี ได้รับ ที่ น้อยที่สุด ที ถูกต้อง นายส−1 เจ ของ ของ ที่ แบบฟอร์ม (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 เจ ) จากนั้นเขาก็หยุดรอและตั้งค่า bi \(\triangleq\)1 – มิฉะนั้น เมื่อเวลา 2แล หมดลง ให้ SV r,s−1 ฉัน เป็นเซตของ (r, s −1) - ผู้ตรวจสอบจาก ซึ่งเขาได้รับข้อความที่ถูกต้อง Mr,s−1 เจ ฉันตั้งค่า bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 ฉัน H(\(\sigma\)r,s−1 เจ )). – เมื่อตั้งค่า bi แล้ว ฉันจะคำนวณ Qr−1 จาก CERT r−1 และตรวจสอบว่า ฉัน \(\in\)SV r,s – ถ้าฉัน \(\in\)SV r,s ฉันจะคำนวณข้อความ mr,s ฉัน \(\triangleq\)(ESIGi(ไบ), ESIGi(vi), \(\sigma\)r,s i ) โดยที่ vi เป็น ค่าที่เขาคำนวณได้ในขั้นตอนที่ 4 จะทำลายคีย์ลับชั่วคราวของเขา skr,s ฉัน แล้ว เผยแพร่นายส ฉัน ไม่อย่างนั้นฉันก็หยุดโดยไม่เผยแพร่อะไรเลย หมายเหตุ. ตามหลักการ ตามที่พิจารณาในหัวข้อย่อย 6.2 โปรโตคอลอาจใช้หลายรายการตามอำเภอใจ ขั้นตอนในบางรอบ หากสิ่งนี้เกิดขึ้น ตามที่กล่าวไว้ ผู้ใช้ i \(\in\)SV r,s ที่มี s > \(\mu\) ได้หมดลงแล้ว
ที่เก็บคีย์ชั่วคราวที่สร้างไว้ล่วงหน้าของเขา และต้องตรวจสอบสิทธิ์ (r, s) ข้อความของเขา ฉัน โดย “น้ำตก” ของกุญแจชั่วคราว ดังนั้นข้อความของฉันจึงยาวขึ้นเล็กน้อยและส่งสัญญาณได้นานขึ้น ข้อความจะใช้เวลาอีกสักหน่อย ดังนั้น หลังจากหลายขั้นตอนของรอบที่กำหนด มูลค่าของ พารามิเตอร์ แล จะเพิ่มขึ้นเล็กน้อยโดยอัตโนมัติ (แต่มันจะกลับคืนสู่แบบเดิม lam อีกครั้งหนึ่ง บล็อกถูกสร้างขึ้นและเริ่มรอบใหม่) การสร้าง Round-r Block ขึ้นมาใหม่โดยผู้ที่ไม่ใช่ผู้ตรวจสอบ คำแนะนำสำหรับผู้ใช้ทุกคน i ในระบบ: ผู้ใช้ i เริ่มรอบ r ของตนเองทันทีที่มี ใบรับรองr−1 • ฉันปฏิบัติตามคำแนะนำของแต่ละขั้นตอนของระเบียบการ มีส่วนร่วมในการเผยแพร่ทั้งหมด ข้อความ แต่ไม่ได้เริ่มต้นการแพร่กระจายใด ๆ ในขั้นตอนหนึ่งหากเขาไม่ใช่ผู้ยืนยันในนั้น • ฉันจบรอบของตัวเองด้วยการเข้าสู่เงื่อนไขการสิ้นสุด 0 หรือเงื่อนไขการสิ้นสุด 1 ในบางข้อ ขั้นตอนด้วย CERT r ที่สอดคล้องกัน • จากนั้น เขาเริ่มรอบ r + 1 ขณะที่รอรับบล็อก Br จริง (เว้นแต่ เขาได้รับมันแล้ว) ซึ่ง hash H(Br) ถูกตรึงไว้โดย CERT r อีกครั้งหาก CERT r ระบุว่า Br = Br ǫ ฉันรู้จัก Br ทันทีที่เขามี CERT r 6.4 การวิเคราะห์ Algorand ′ 2 การวิเคราะห์ของ Algorand ′ 2 ได้มาอย่างง่ายดายจาก Algorand ′ 1. โดยพื้นฐานแล้ว ใน Algorand ′ 2 ด้วย ความน่าจะเป็นอย่างล้นหลาม (a) ผู้ใช้ที่ซื่อสัตย์ทุกคนเห็นด้วยกับบล็อกเดียวกัน Br; ผู้นำคนใหม่ บล็อกจะซื่อสัตย์กับความน่าจะเป็นอย่างน้อย ph = h2(1 + h −h2)
การจัดการผู้ใช้ Offline ที่ซื่อสัตย์
ดังที่เราได้กล่าวไปแล้ว ผู้ใช้ที่ซื่อสัตย์จะปฏิบัติตามคำแนะนำที่กำหนดไว้ทั้งหมด ซึ่งรวมถึงคำแนะนำในการออนไลน์ด้วย และเรียกใช้โปรโตคอล นี่ไม่ใช่ภาระสำคัญใน Algorand เนื่องจากการคำนวณและ แบนด์วิธที่ต้องการจากผู้ใช้ที่ซื่อสัตย์นั้นค่อนข้างเรียบง่าย แต่ให้เราชี้ให้เห็นว่า Algorand สามารถทำได้ ปรับเปลี่ยนได้ง่ายเพื่อให้ทำงานได้เป็น 2 รูปแบบ โดยที่ผู้ใช้จริงได้รับอนุญาตให้เข้าใช้งาน ตัวเลขที่ดี ก่อนที่จะพูดถึงทั้งสองรุ่นนี้ ให้เราชี้ให้เห็นว่า หากเปอร์เซ็นต์ของผู้เล่นที่ซื่อสัตย์ คือ 95%, Algorand ยังคงสามารถรันได้โดยตั้งค่าพารามิเตอร์ทั้งหมดโดยสมมติว่า h = 80% แทน ดังนั้น Algorand จะยังคงทำงานได้อย่างถูกต้องต่อไป แม้ว่าจะเป็นผู้เล่นที่ซื่อสัตย์เกือบครึ่งหนึ่งก็ตาม เลือกที่จะไป (อันที่จริงเป็นกรณีสำคัญของ "การขาดงาน") ที่จริงแล้ว ณ จุดใดเวลาหนึ่งอย่างน้อยที่สุด 80% ของผู้เล่นออนไลน์จะซื่อสัตย์ จากการมีส่วนร่วมอย่างต่อเนื่องสู่ความซื่อสัตย์ที่ขี้เกียจ อย่างที่เราเห็น Algorand ′ 1 และ Algorand ′ 2 เลือก พารามิเตอร์การมองย้อนกลับ k ตอนนี้ให้เราแสดงให้เห็นว่าการเลือก k ขนาดใหญ่อย่างถูกต้องจะทำให้สามารถลบออกได้ ข้อกำหนดการมีส่วนร่วมอย่างต่อเนื่อง ข้อกำหนดนี้ทำให้มั่นใจได้ว่ามีคุณสมบัติที่สำคัญ: กล่าวคือ ว่าโปรโตคอล BA พื้นฐาน BBA ⋆มีเสียงข้างมากที่ซื่อสัตย์อย่างเหมาะสม ให้เราอธิบายว่าขี้เกียจแค่ไหน ความซื่อสัตย์เป็นอีกทางเลือกหนึ่งและน่าดึงดูดใจในการสร้างความพึงพอใจให้กับสถานที่ให้บริการแห่งนี้
โปรดจำไว้ว่าผู้ใช้ ฉันขี้เกียจแต่ซื่อสัตย์ ถ้า (1) เขาปฏิบัติตามคำแนะนำทั้งหมดที่กำหนดไว้ เมื่อใด เขาถูกขอให้เข้าร่วมในระเบียบการ และ (2) เขาถูกขอให้เข้าร่วมในระเบียบการเท่านั้น น้อยมาก —เช่น สัปดาห์ละครั้ง— โดยต้องแจ้งให้ทราบล่วงหน้าอย่างเหมาะสม และอาจได้รับอย่างมีนัยสำคัญ รางวัลเมื่อเขาเข้าร่วม เพื่อให้ Algorand ทำงานร่วมกับผู้เล่นดังกล่าวได้ ก็เพียงพอที่จะ "เลือกผู้ตรวจสอบของ รอบปัจจุบันในหมู่ผู้ใช้ที่อยู่ในระบบในรอบก่อนหน้านี้มาก” จริงสิ จำไว้เลย ผู้ตรวจสอบสำหรับรอบ r จะถูกเลือกจากผู้ใช้ในรอบ r −k และการเลือกจะทำขึ้นตาม กับปริมาณ Qr−1 โปรดทราบว่าหนึ่งสัปดาห์ประกอบด้วยประมาณ 10,000 นาที และสมมติว่า a รอบใช้เวลาประมาณ (เช่น โดยเฉลี่ย) 5 นาที ดังนั้นในหนึ่งสัปดาห์จึงมีประมาณ 2,000 รอบ สมมติ ในบางช่วงเวลา ผู้ใช้ฉันต้องการวางแผนเวลาของเขาและรู้ว่าเขาจะเป็นอย่างไร ผู้ตรวจสอบในสัปดาห์หน้า โปรโตคอลจะเลือกผู้ตรวจสอบสำหรับรอบ r จากผู้ใช้ใน รอบ r −k −2, 000 และการเลือกจะขึ้นอยู่กับ Qr−2,001 ที่รอบ r ผู้เล่นที่ฉันรู้จักอยู่แล้ว ค่า Qr−2,000, . . , Qr−1 เนื่องจากจริงๆ แล้วพวกมันเป็นส่วนหนึ่งของ blockchain แล้วสำหรับเอ็มแต่ละคน ระหว่าง 1 ถึง 2,000 i เป็นตัวยืนยันในขั้นตอน s ของรอบ r + M ถ้าหาก .H ซิจี r + M, s, Qr+M−2,001 \(\leq\)p ดังนั้นเพื่อจะตรวจสอบว่าจะถูกเรียกมาเป็นผู้ตรวจสอบในอีก 2,000 รอบข้างหน้าหรือไม่ ผมจะต้อง คำนวณ\(\sigma\)M,s ฉัน = เอสไอจี r + M, s, Qr+M−2,001 สำหรับ M = 1 ถึง 2,000 และสำหรับแต่ละขั้นตอน s และตรวจสอบ ไม่ว่าจะเป็น .H(\(\sigma\)M,s ฉัน ) \(\leq\)p สำหรับบางส่วน หากการประมวลผลลายเซ็นดิจิทัลใช้เวลาหนึ่งมิลลิวินาที การดำเนินการทั้งหมดนี้จะใช้เวลาคำนวณประมาณ 1 นาที ถ้าเขาไม่เลือกเป็นผู้ตรวจสอบ ในรอบใดรอบหนึ่งเขาก็สามารถไปแบบออฟไลน์ด้วย "มโนธรรมที่ซื่อสัตย์" มีเขาอย่างต่อเนื่อง เข้าร่วม เขาจะต้องเดิน 0 ก้าวใน 2,000 รอบถัดไปอยู่แล้ว! ถ้าแทน เขาได้รับเลือกให้เป็นผู้ตรวจสอบในรอบใดรอบหนึ่ง จากนั้นเขาก็เตรียมตัวเองให้พร้อม (เช่น โดยการได้รับทั้งหมด ข้อมูลที่จำเป็น) เพื่อทำหน้าที่เป็นผู้ตรวจสอบที่ซื่อสัตย์ในรอบที่เหมาะสม ด้วยการกระทำเช่นนั้น ผู้ตรวจสอบศักยภาพที่เกียจคร้านแต่ซื่อสัตย์ ฉันแค่พลาดการมีส่วนร่วมในการเผยแพร่เท่านั้น ของข้อความ แต่โดยทั่วไปแล้วการเผยแพร่ข้อความจะมีประสิทธิภาพ อีกทั้งผู้ชำระเงินและผู้รับเงินของ การชำระเงินที่เผยแพร่เมื่อเร็วๆ นี้คาดว่าจะออนไลน์เพื่อดูว่าเกิดอะไรขึ้นกับการชำระเงินของพวกเขา และพวกเขาจะมีส่วนร่วมในการเผยแพร่ข้อความหากพวกเขาซื่อสัตย์
พิธีสาร Algorand ′ ด้วยเงินส่วนใหญ่ที่ซื่อสัตย์
ในที่สุดเราก็แสดงวิธีแทนที่สมมติฐานผู้ใช้ส่วนใหญ่ที่ซื่อสัตย์ด้วยข้อสันนิษฐานอื่นๆ อีกมากมาย สมมติฐานเงินส่วนใหญ่ที่ซื่อสัตย์ที่มีความหมาย แนวคิดพื้นฐานคือ (ใน proof-of-stake รสชาติ) “เพื่อเลือกผู้ใช้ i \(\in\)PKr−k ให้เป็นของ SV r,s โดยมีน้ำหนัก (เช่น อำนาจการตัดสินใจ) เป็นสัดส่วนกับ จำนวนเงินที่ i เป็นเจ้าของ”24 ตามสมมติฐาน HMM ของเรา เราสามารถเลือกได้ว่าจำนวนนั้นควรเป็นเจ้าของที่รอบ r −k หรือไม่ หรือที่ (จุดเริ่มต้นของ) รอบ r สมมติว่าเราไม่รังเกียจที่จะมีส่วนร่วมอย่างต่อเนื่อง เราก็เลือก ทางเลือกหลัง (หากต้องการยกเลิกการเข้าร่วมอย่างต่อเนื่อง เราจะเลือกใช้ตัวเลือกเดิม พูดได้ดีกว่าสำหรับจำนวนเงินที่มีอยู่ในรอบ r −k −2, 000) มีหลายวิธีในการนำแนวคิดนี้ไปใช้ วิธีที่ง่ายที่สุดคือการกดปุ่มแต่ละปุ่มค้างไว้ มากที่สุด 1 หน่วยของเงิน แล้วเลือกสุ่ม n ผู้ใช้ i จาก PKr−k โดยที่ a(r) ฉัน = 1. 24เราควรพูดว่า PKr−k−2,000 เพื่อที่จะทดแทนการมีส่วนร่วมอย่างต่อเนื่อง เพื่อความเรียบง่ายเนื่องจากใครๆ ก็อาจจะต้องการ การมีส่วนร่วมอย่างต่อเนื่อง เราใช้ PKr−k เหมือนเมื่อก่อน เพื่อให้มีพารามิเตอร์น้อยลงหนึ่งตัว
การใช้งานที่ง่ายที่สุดครั้งต่อไป การใช้งานที่ง่ายที่สุดถัดไปอาจเป็นการเรียกร้องให้แต่ละคีย์สาธารณะเป็นเจ้าของจำนวนเงินสูงสุด ของเงิน M สำหรับ M คงที่บางส่วน ค่า M นั้นน้อยพอเมื่อเทียบกับจำนวนทั้งหมด เงินในระบบ โดยความน่าจะเป็นที่คีย์จะเป็นของชุดผู้ตรวจสอบมากกว่าหนึ่งชุด ก้าวเข้ามา —พูด— k รอบนั้นน้อยมาก จากนั้น กุญแจ i \(\in\)PKr−k ซึ่งมีเงินอยู่จำนวนหนึ่ง a(r) ฉัน ในรอบ r ถูกเลือกให้เป็นของ SV r,s if .H ซิจี r, s, Qr−1 \(\leq\)p \(\cdot\) ก(r) ฉัน ม . และทุกอย่างดำเนินไปดังเดิม การใช้งานที่ซับซ้อนมากขึ้น การใช้งานครั้งล่าสุด "บังคับให้ผู้เข้าร่วมที่มีฐานะร่ำรวยในระบบต้องเป็นเจ้าของคีย์จำนวนมาก" การนำไปปฏิบัติทางเลือกที่อธิบายไว้ด้านล่างนี้เป็นการสรุปแนวคิดเกี่ยวกับสถานะและพิจารณา ผู้ใช้แต่ละคน i จะประกอบด้วยสำเนา K + 1 ชุด (i, v) ซึ่งแต่ละชุดจะถูกเลือกอย่างอิสระให้เป็นผู้ตรวจสอบ และจะเป็นเจ้าของกุญแจชั่วคราวของเขาเอง (pkr,s ฉัน,v,skr,s i,v) ในขั้น s ของรอบ r ค่า K ขึ้นอยู่กับ กับจำนวนเงิน a(r) ฉัน ฉันเป็นเจ้าของในรอบ r ตอนนี้เรามาดูกันว่าระบบดังกล่าวทำงานอย่างไรในรายละเอียดมากขึ้น จำนวนสำเนา ให้ n เป็นจำนวนเชิงการนับที่คาดไว้ที่เป็นเป้าหมายของชุดตัวตรวจสอบแต่ละชุด และให้ a(r) ฉัน เป็นจำนวนเงินที่ผู้ใช้ i เป็นเจ้าของในรอบ r ให้ Ar เป็นจำนวนเงินทั้งหมดที่มี โดยผู้ใช้ใน PKr−k ที่รอบ r นั่นคือ อาร์= เอ็กซ์ ฉัน\(\in\)P Kr−k ก(ร) ฉัน หากฉันเป็นผู้ใช้ใน PKr−k สำเนาของฉันคือ (i, 1) . . , (i, K + 1) โดยที่ เค = $ n \(\cdot\) ก(r) ฉัน อาร์ % . ตัวอย่าง. ให้ n = 1, 000, Ar = 109 และ a(r) ฉัน = 3.7 ล้าน. จากนั้น เค = 103 \(\cdot\) (3.7 \(\cdot\) 106) 109 = ⌊3.7⌋= 3 . ผู้ตรวจสอบและข้อมูลรับรอง ให้ฉันเป็นผู้ใช้ใน PKr−k ด้วยสำเนา K + 1 สำหรับแต่ละ v = 1, . . , K, copy (i, v) เป็นของ SV r,s โดยอัตโนมัติ นั่นคือข้อมูลประจำตัวของฉันคือ \(\sigma\)r,s i,v \(\triangleq\)SIGi((i, v), r, s, Qr−1) แต่เงื่อนไขที่สอดคล้องกันกลายเป็น .H(\(\sigma\)r,s i,v) \(\leq\)1 ซึ่งก็คือ จริงเสมอ สำหรับการคัดลอก (i, K + 1) สำหรับแต่ละขั้นตอนของรอบ r ฉันจะตรวจสอบว่า .H ซิจี (i, K + 1), r, s, Qr−1 \(\leq\)a(r) ฉัน n อาร์-เค
ถ้าเป็นเช่นนั้น สำเนา (i, K + 1) เป็นของ SV r,s เพื่อพิสูจน์ ฉันจึงเผยแพร่หนังสือรับรอง ซิร,1 ผม,K+1 = SIGI (i, K + 1), r, s, Qr−1 . ตัวอย่าง. ดังตัวอย่างที่แล้ว ให้ n = 1K, a(r) ฉัน = 3.7M, Ar = 1B และฉันมี 4 สำเนา: (i, 1), . . . , (ฉัน, 4) จากนั้น 3 สำเนาแรกจะเป็นของ SV r,s โดยอัตโนมัติ สำหรับอันที่ 4 นั้น ตามแนวคิด Algorand ′ หมุนเหรียญเอนเอียงอย่างอิสระ ซึ่งความน่าจะเป็นของหัวคือ 0.7 คัดลอก (i, 4) จะถูกเลือกก็ต่อเมื่อการโยนเหรียญเป็นแบบหัวเท่านั้น (แน่นอนว่าการพลิกเหรียญแบบเอนเอียงนี้ถูกนำไปใช้โดย hashing ลงนาม และเปรียบเทียบ — ในขณะที่เรา ได้กระทำมาโดยตลอดในบทความนี้ เพื่อให้ข้าพเจ้าสามารถพิสูจน์ผลของเขาได้) ดำเนินธุรกิจตามปกติ ต้องอธิบายว่าผู้ตรวจสอบได้รับการคัดเลือกอย่างไรและหนังสือรับรองของพวกเขาเป็นอย่างไร เมื่อคำนวณในแต่ละขั้นตอนของรอบ r การดำเนินการของรอบจะคล้ายกับที่อธิบายไว้แล้ว
การจัดการ Fork
เมื่อลดความน่าจะเป็นของส้อมลงเหลือ 10−12 หรือ 10−18 ก็ไม่จำเป็นต้องจัดการในทางปฏิบัติ ในโอกาสอันห่างไกลที่จะเกิดขึ้น อย่างไรก็ตาม Algorand สามารถใช้ fork ได้หลากหลาย ขั้นตอนการแก้ปัญหาโดยมีหรือไม่มีหลักฐานการทำงาน วิธีหนึ่งที่เป็นไปได้ในการแนะนำให้ผู้ใช้แก้ไขส้อมมีดังนี้: • เดินตามสายโซ่ที่ยาวที่สุดหากผู้ใช้เห็นสายโซ่หลายเส้น • หากมีโซ่ที่ยาวที่สุดมากกว่าหนึ่งเส้น ให้ต่อสายโซ่ที่มีบล็อกไม่ว่างที่ส่วนท้าย ถ้า ทั้งหมดมีบล็อกว่างในตอนท้าย ลองพิจารณาบล็อกที่สองสุดท้าย • หากมีโซ่ที่ยาวที่สุดมากกว่าหนึ่งเส้นและมีบล็อกที่ไม่ว่างที่ส่วนท้าย แสดงว่าโซ่นั้นยาวที่สุด ที่มีความยาว r ให้ทำตามอันที่ผู้นำของบล็อก r มีหนังสือรับรองน้อยที่สุด หากมีความผูกพัน ติดตามอันที่บล็อก r มีค่า hash น้อยที่สุด หากยังมีความผูกพันติดตาม. บล็อก r ถูกเรียงลำดับตามพจนานุกรมคำแรก
การจัดการพาร์ติชันเครือข่าย
ดังที่กล่าวไว้ เราถือว่าเวลาการแพร่กระจายของข้อความระหว่างผู้ใช้ทั้งหมดในเครือข่ายนั้นมีขอบเขตบนด้วย แลมบ์ดา และ Λ นี่ไม่ใช่สมมติฐานที่ชัดเจน เนื่องจากอินเทอร์เน็ตในปัจจุบันมีความรวดเร็วและแข็งแกร่ง และ ค่าที่แท้จริงของพารามิเตอร์เหล่านี้ค่อนข้างสมเหตุสมผล ที่นี่ให้เราชี้ให้เห็นว่า Algorand ′ 2 ยังคงทำงานต่อไปแม้ว่าอินเทอร์เน็ตจะถูกแบ่งพาร์ติชันออกเป็นสองส่วนเป็นครั้งคราวก็ตาม กรณีเมื่อ อินเทอร์เน็ตจะถูกแบ่งพาร์ติชันมากกว่าสองส่วนคล้ายคลึงกัน 10.1 พาร์ติชันทางกายภาพ ประการแรก พาร์ติชันอาจเกิดจากสาเหตุทางกายภาพ เช่น แผ่นดินไหวใหญ่อาจเกิดขึ้น ท้ายที่สุดก็ทำลายความสัมพันธ์ระหว่างยุโรปและอเมริกาโดยสิ้นเชิง ในกรณีนี้ ผู้ใช้ที่เป็นอันตรายจะถูกแบ่งพาร์ติชันด้วย และไม่มีการสื่อสารระหว่างทั้งสองส่วน ดังนั้น
จะมีศัตรูอยู่สองคน คนหนึ่งสำหรับส่วนที่ 1 และอีกคนหนึ่งสำหรับส่วนที่ 2 ฝ่ายตรงข้ามแต่ละคนยังคงพยายาม ทำลายโปรโตคอลในส่วนของตัวเอง สมมติว่าพาร์ติชันเกิดขึ้นในช่วงกลางของรอบ r จากนั้นผู้ใช้แต่ละคนยังคงถูกเลือกเป็น ผู้ตรวจสอบขึ้นอยู่กับ PKr−k โดยมีความน่าจะเป็นเท่าเดิม ให้ HSV r,s ฉัน และ MSV r, s ฉัน ตามลำดับ เป็นกลุ่มของผู้ตรวจสอบที่ซื่อสัตย์และประสงค์ร้ายในขั้นตอนในส่วนที่ i \(\in\){1, 2} เรามี |HSV r,s 1 | + |MSV r,s 1 | + |HSV r,s 2 | + |MSV r,s 2 | = |HSV r,s| + |MSV r,s|. โปรดทราบว่า |HSV r,s| + |MSV r,s| < |HSV r,s| + 2|MSV r,s| < 2tH ด้วยความน่าจะเป็นอย่างล้นหลาม หากบางส่วนฉันมี |HSV r,s ฉัน | + |MSV r,s ฉัน | \(\geq\)tH ที่มีความน่าจะเป็นที่ไม่มีนัยสำคัญ เช่น 1% จากนั้น ความน่าจะเป็นที่ |HSV r,s 3−ฉัน| + |MSV r,s 3−ฉัน| \(\geq\)tH ต่ำมาก เช่น 10−16 เมื่อ F = 10−18 ในกรณีนี้ เราอาจถือว่าส่วนที่เล็กกว่านั้นหายไปเช่นกัน เพราะจะไม่มีผู้ตรวจสอบเพียงพอใน ส่วนนี้จะสร้างลายเซ็นเพื่อรับรองบล็อก ให้เราพิจารณาส่วนที่ใหญ่กว่า เช่น ตอนที่ 1 โดยไม่สูญเสียความทั่วไป แม้ว่า |HSV r,s| < มีความน่าจะเป็นเล็กน้อยในแต่ละขั้นตอน เมื่อเครือข่ายถูกแบ่งพาร์ติชัน |HSV r,s 1 | อาจจะ น้อยกว่าด้วยความน่าจะเป็นที่ไม่สามารถละเลยได้ ในกรณีนี้ปฏิปักษ์อาจทำได้บ้าง ความน่าจะเป็นอื่นๆ ที่ไม่สามารถละเลยได้ บังคับให้โปรโตคอลไบนารี่ BA เข้าสู่ทางแยกในรอบ r โดยมีบล็อกที่ไม่มีช่องว่าง Br และบล็อกว่าง Br ǫ ทั้งสองมีลายเซ็นที่ถูกต้อง25 เช่น ใน ขั้นตอน Coin-Fixed-To-0 s ผู้ตรวจสอบทั้งหมดใน HSV r, s 1 ลงนามในบิต 0 และ H(Br) และเผยแพร่พวกมัน ข้อความ ผู้ตรวจสอบทั้งหมดใน MSV r,s 1 ลงนาม 0 และ H(Br) ด้วย แต่ระงับข้อความของพวกเขา เพราะว่า |HSV r,s 1 | + |MSV r,s 1 | \(\geq\)tHระบบมีลายเซ็นเพียงพอที่จะรับรอง Br. อย่างไรก็ตาม เนื่องจาก ผู้ตรวจสอบที่เป็นอันตรายระงับลายเซ็น ผู้ใช้เข้าสู่ขั้นตอน s + 1 ซึ่งเป็นขั้นตอน Coin-Fixed-To1 เพราะ |HSV r,s 1 | < เนื่องจากพาร์ติชัน ตัวตรวจสอบใน HSV r,s+1 1 ไม่เห็นท่าน ลายเซ็นสำหรับบิต 0 และทั้งหมดลงนามในบิต 1 ผู้ตรวจสอบทั้งหมดใน MSV r,s+1 1 ทำเช่นเดียวกัน เพราะว่า |HSV r,s+1 1 | + |MSV r,s+1 1 | \(\geq\)tHระบบมีลายเซ็นเพียงพอที่จะรับรอง Br ī. ศัตรู จากนั้นสร้างทางแยกโดยปล่อยลายเซ็นของ MSV r,s 1 สำหรับ 0 และ H(Br) ดังนั้น จะมี Qr สองตัว ซึ่งกำหนดโดยบล็อกที่สอดคล้องกันของรอบ r อย่างไรก็ตาม ทางแยกจะไม่ดำเนินต่อไปและมีเพียงหนึ่งในสองกิ่งเท่านั้นที่สามารถเติบโตได้ในรอบ r + 1 คำแนะนำเพิ่มเติมสำหรับ Algorand ′ 2. เมื่อเห็นบล็อกที่ไม่ว่าง Br และบล็อกว่าง บล็อกเบอร์ ǫ ทำตามอันที่ไม่ว่างเปล่า (และ Qr กำหนดโดยมัน) โดยแนะนำให้ผู้ใช้ใช้บล็อกที่ไม่ว่างเปล่าในโปรโตคอล หากมีขนาดใหญ่ จำนวนผู้ใช้ที่ซื่อสัตย์ใน PKr+1−k ตระหนักว่ามีทางแยกที่จุดเริ่มต้นของรอบ r +1 จากนั้น บล็อกว่างจะมีผู้ติดตามไม่เพียงพอและจะไม่เติบโต สมมติว่าฝ่ายตรงข้ามจัดการได้ แบ่งพาร์ติชันผู้ใช้ที่ซื่อสัตย์เพื่อให้ผู้ใช้ที่ซื่อสัตย์บางคนเห็น Br (และบางทีอาจ Br ǫ) และบางคนก็มองเห็นเท่านั้น บ ī. เพราะปฏิปักษ์ไม่สามารถบอกได้ว่าคนใดในพวกเขาจะเป็นผู้ยืนยันที่ติดตาม Br และคนไหน จะเป็นผู้ตรวจสอบติดตาม Br ǫ ผู้ใช้ที่ซื่อสัตย์จะถูกแบ่งพาร์ติชันแบบสุ่มและแต่ละคนยังคงอยู่ กลายเป็นผู้ยืนยัน (ไม่ว่าจะเกี่ยวกับ Br หรือเกี่ยวกับ Br ǫ) ในขั้นที่ s > 1 ด้วยความน่าจะเป็น พี สำหรับผู้ใช้ที่เป็นอันตราย แต่ละคนอาจมีโอกาสสองครั้งในการเป็นผู้ยืนยัน Br และอีกอันกับ Br ǫ แต่ละอันมีความน่าจะเป็น p เป็นอิสระต่อกัน ให้ HSV r+1,s 1;บรา เป็นกลุ่มผู้ตรวจสอบที่ซื่อสัตย์ในขั้นตอนที่ s ของรอบ r+1 ตาม Br. สัญกรณ์อื่น ๆ เช่น HSV r+1,s 1;Brū , MSV r+1,s 1;บรา และ MSV r+1,s 1;บริ้ มีการกำหนดไว้เช่นเดียวกัน โดย Chernoffbound มันเป็นเรื่องง่าย 25การมีทางแยกที่มีสองบล็อกที่ไม่ว่างนั้นเป็นไปไม่ได้โดยมีหรือไม่มีพาร์ติชั่น ยกเว้นที่มีเล็กน้อย ความน่าจะเป็นเพื่อดูว่ามีความเป็นไปได้อย่างล้นหลาม |HSV r+1,s 1;br | + |HSV r+1,s 1;บรา | + |MSV r+1,s 1;br | + |MSV r+1,s 1;บรา | < 2tH ดังนั้นทั้งสองสาขาจึงไม่สามารถมีลายเซ็นที่ถูกต้องรับรองบล็อกสำหรับรอบได้ r + 1 ในขั้นตอนเดียวกัน s ยิ่งไปกว่านั้น เนื่องจากความน่าจะเป็นในการเลือกสำหรับสองขั้นตอน s และ s′ คือ เหมือนกันและการเลือกมีความเป็นอิสระ อีกทั้งยังมีความน่าจะเป็นอย่างล้นหลามอีกด้วย |HSV r+1,s 1;br | + |MSV r+1,s 1;br | + |HSV r+1,s′ 1;บริ้ | + |MSV r+1,s′ 1;บริ้ | <2thH, สำหรับสองขั้นตอนใดๆ s และ s′ เมื่อ F = 10−18 โดยผูกมัด ตราบเท่าที่ปฏิปักษ์ทำไม่ได้ แบ่งพาร์ติชั่นผู้ใช้ที่ซื่อสัตย์เป็นเวลานาน (เช่น 104 ขั้นตอนซึ่งมากกว่า 55 ชั่วโมงโดยที่ แล = 10 วินาทีที่ 26) ซึ่งมีความเป็นไปได้สูง (เช่น 1−10−10) มากที่สุดหนึ่งสาขาจะมีลายเซ็นที่ถูกต้อง เพื่อรับรองบล็อกในรอบ r + 1 ท้ายที่สุด หากฟิสิคัลพาร์ติชันสร้างสองส่วนที่มีขนาดเท่ากันโดยประมาณ แล้ว ความน่าจะเป็นที่ |HSV r,s ฉัน | + |MSV r,s ฉัน | \(\geq\)tH มีขนาดเล็กสำหรับแต่ละส่วน i หลังจากการวิเคราะห์ที่คล้ายกัน แม้ว่าฝ่ายตรงข้ามจะสามารถสร้างทางแยกที่มีความน่าจะเป็นที่ไม่สามารถละเลยได้ในแต่ละส่วนก็ตาม สำหรับรอบ r กิ่งก้านสูงสุด 1 ใน 4 ต้นอาจเติบโตได้ในรอบ r + 1 10.2 พาร์ทิชันฝ่ายตรงข้าม ประการที่สอง พาร์ติชันอาจเกิดจากฝ่ายตรงข้าม ดังนั้นข้อความจึงแพร่กระจาย โดยผู้ใช้ที่ซื่อสัตย์ส่วนหนึ่งจะไม่เข้าถึงผู้ใช้ที่ซื่อสัตย์ในอีกส่วนหนึ่งโดยตรงแต่ ฝ่ายตรงข้ามสามารถส่งต่อข้อความระหว่างทั้งสองส่วนได้ ถึงกระนั้นก็มีข้อความจากคนหนึ่ง ส่วนหนึ่งจะเข้าถึงผู้ใช้ที่ซื่อสัตย์ ส่วนอีกส่วนหนึ่งก็จะเผยแพร่ในส่วนหลังตามปกติ ถ้า ฝ่ายตรงข้ามยินดีจ่ายเงินเป็นจำนวนมาก เป็นไปได้ว่าเขาอาจจะสามารถแฮ็กข้อมูลได้ อินเตอร์เน็ตแล้วแบ่งพาร์ติชั่นแบบนี้สักพัก การวิเคราะห์จะคล้ายคลึงกับการวิเคราะห์ส่วนที่ใหญ่กว่าในฟิสิคัลพาร์ติชันด้านบน (การวิเคราะห์ที่เล็กกว่า ส่วนหนึ่งถือได้ว่ามีประชากร 0): ฝ่ายตรงข้ามอาจสร้างทางแยกและได้ ผู้ใช้ที่ซื่อสัตย์แต่ละคนจะเห็นเพียงสาขาเดียว แต่อาจมีสาขาเดียวที่สามารถเติบโตได้ 10.3 พาร์ติชันเครือข่ายในผลรวม แม้ว่าพาร์ติชั่นเครือข่ายสามารถเกิดขึ้นได้และทางแยกในรอบเดียวอาจเกิดขึ้นภายใต้พาร์ติชั่นที่นั่น ไม่มีความกำกวมที่ยืดเยื้อ: ทางแยกมีอายุสั้นมากและในความเป็นจริงจะอยู่ได้ไม่เกินรอบเดียว ใน ทุกส่วนของพาร์ติชั่นยกเว้นส่วนใหญ่ ผู้ใช้ไม่สามารถสร้างบล็อกใหม่ได้ ดังนั้น (a) ตระหนักว่ามีพาร์ติชันในเครือข่ายและ (b) ไม่เคยพึ่งพาบล็อกที่จะ "หายไป" รับทราบ ก่อนอื่นเราขอขอบคุณ Sergey Gorbunov ผู้ร่วมเขียนระบบ Democoin ที่อ้างถึง ขอขอบคุณอย่างจริงใจที่สุดต่อ Maurice Herlihy สำหรับการอภิปรายที่ให้ความรู้มากมายสำหรับการชี้แนะ การวางท่อจะปรับปรุงประสิทธิภาพการรับส่งข้อมูลของ Algorand และสำหรับการปรับปรุงอย่างมาก 26โปรดทราบว่าผู้ใช้เสร็จสิ้นขั้นตอนหนึ่งโดยไม่ต้องรอเป็นเวลา2\(\gamma\)เฉพาะในกรณีที่เขาเห็นลายเซ็นของ ข้อความเดียวกัน เมื่อมีลายเซ็นไม่เพียงพอ แต่ละขั้นตอนจะคงอยู่เป็นเวลา 2แล
การนำเสนอบทความฉบับก่อนหน้านี้ ขอบคุณมากสำหรับ Sergio Rajsbaum สำหรับความคิดเห็นของเขาเกี่ยวกับ เอกสารฉบับก่อนหน้านี้ ขอขอบคุณ Vinod Vaikuntanathan สำหรับการพูดคุยอย่างลึกซึ้งหลายครั้ง และข้อมูลเชิงลึก ขอขอบคุณ Yossi Gilad, Rotem Hamo, Georgios Vlachos และ Nickolai Zeldovich สำหรับการเริ่มต้นทดสอบแนวคิดเหล่านี้ และสำหรับความคิดเห็นและการอภิปรายที่เป็นประโยชน์มากมาย Silvio Micali ขอขอบคุณ Ron Rivest เป็นการส่วนตัวสำหรับการสนทนาและคำแนะนำมากมาย ในการวิจัยด้านการเข้ารหัสมานานกว่า 3 ทศวรรษ สำหรับการเขียนร่วมระบบการชำระเงินแบบไมโครที่อ้างถึง ที่เป็นแรงบันดาลใจให้เกิดกลไกการคัดเลือกผู้ตรวจสอบของ Algorand เราหวังว่าจะนำเทคโนโลยีนี้ไปสู่อีกระดับหนึ่ง ขณะเดียวกันการเดินทางและมิตรภาพ สนุกมากซึ่งเรารู้สึกขอบคุณมาก
คำถามที่พบบ่อย
- whitepaper ของ Algorand คืออะไร?
- whitepaper ของ Algorand ที่มีชื่อว่า 'Algorand: Scaling Byzantine Agreements for Cryptocurrencies' เผยแพร่โดย Jing Chen และ Silvio Micali ในปี 2017 นำเสนอโปรโตคอล pure proof-of-stake ที่บรรลุ instant finality โดยไม่มีการ fork
- ใครเป็นผู้เขียน whitepaper ของ Algorand และเมื่อใด?
- whitepaper ของ Algorand เขียนร่วมกันโดย Silvio Micali นักเข้ารหัสลับที่ได้รับรางวัล Turing Award จาก MIT และ Jing Chen เผยแพร่ครั้งแรกในรูปแบบเอกสารวิจัยในปี 2017
- นวัตกรรมทางเทคนิคหลักของ Algorand คืออะไร?
- นวัตกรรมหลักของ Algorand คือการใช้ Verifiable Random Functions (VRF) สำหรับการเลือก committee แบบลับและสุ่ม แต่ละบล็อกได้รับการเสนอและลงคะแนนเสียงโดย committee ที่เลือกผ่าน cryptographic sortition ทำให้ไม่สามารถกำหนดเป้าหมายสมาชิก committee ล่วงหน้าได้
- กลไกฉันทามติของ Algorand ทำงานอย่างไร?
- Algorand ใช้ Pure Proof of Stake (PPoS) พร้อม cryptographic sortition สำหรับแต่ละบล็อก ผู้เสนอและ committee ลงคะแนนจะถูกเลือกอย่างลับผ่าน VRF ตามน้ำหนัก stake สมาชิก committee ยืนยันสิ่งนี้ในระดับท้องถิ่น ป้องกันการโจมตีแบบกำหนดเป้าหมาย finality เกิดขึ้นใน ~3.3 วินาที
- Algorand แตกต่างจากเชน PoS อื่น ๆ อย่างไร?
- Algorand บรรลุ finality ทันที — บล็อกไม่สามารถ fork ได้ ต่างจาก Ethereum PoS (ซึ่งมี epoch และสามารถ reorganize ได้) ฉันทามติของ Algorand รับประกันว่าเมื่อบล็อกได้รับการยืนยันแล้วจะเป็น final การเข้าร่วมไม่ต้องการ stake ขั้นต่ำ
- รูปแบบ supply ของ Algorand เป็นอย่างไร?
- Algorand มี supply คงที่ที่ 10,000 ล้าน ALGO ทั้งหมดสร้างขึ้นเมื่อ genesis การกระจายเป็นไปตามตารางเวสติ้งแบบเร่งเร็ว รางวัลการมีส่วนร่วมและรางวัล governance จูงใจผู้ถือ ALGO ให้รักษาความปลอดภัยเครือข่ายและมีส่วนร่วมใน governance
- กรณีการใช้งานหลักของ Algorand คืออะไร?
- Algorand ใช้สำหรับการออก digital asset, DeFi, การ tokenize สินทรัพย์โลกจริง, CBDC (เช่น SOV ของหมู่เกาะมาร์แชลล์) ตลาดคาร์บอนเครดิต และแอปพลิเคชันระดับองค์กรที่ต้องการ instant finality และการปฏิบัติตามกฎระเบียบ
- Algorand แก้ปัญหาอะไร?
- Algorand แก้ blockchain trilemma โดยบรรลุความปลอดภัย ความสามารถในการ scale และการกระจายอำนาจพร้อมกัน การเลือก committee แบบ VRF รับประกันการกระจายอำนาจ instant finality มอบความปลอดภัย และการประมวลผลแบบ parallel ช่วยให้ scale ได้
- โมเดลความปลอดภัยของ Algorand ทำงานอย่างไร?
- ความปลอดภัยของ Algorand อิงจากสมมติฐานที่ว่าสองในสามของ stake ถือครองโดยผู้เข้าร่วมที่ซื่อสัตย์ การเลือก committee แบบ VRF เป็นความลับจนกว่าจะส่งคะแนน ทำให้การโจมตีแบบกำหนดเป้าหมายเป็นไปไม่ได้ในทางคำนวณ
- สถานะปัจจุบันของระบบนิเวศ Algorand เป็นอย่างไร?
- ระบบนิเวศของ Algorand รวมถึงโปรโตคอล DeFi (Folks Finance, Tinyman) แพลตฟอร์ม NFT และความร่วมมือระดับองค์กร AVM (Algorand Virtual Machine) รองรับ smart contracts และฟีเจอร์ State Proofs ช่วยให้การสื่อสารข้ามเครือข่ายแบบ trustless