Algorand : faire évoluer les accords byzantins pour les crypto-monnaies
Tóm tắt
Sổ cái công khai là một chuỗi dữ liệu chống giả mạo mà mọi người đều có thể đọc và bổ sung. Sổ cái công khai có vô số công dụng hấp dẫn và vô số. Họ có thể bảo đảm, một cách dễ dàng, tất cả các loại của các giao dịch—chẳng hạn như quyền sở hữu, bán hàng và thanh toán—theo đúng thứ tự chúng diễn ra. Sổ cái công khai không chỉ hạn chế tham nhũng mà còn cho phép các ứng dụng rất phức tạp - chẳng hạn như tiền điện tử và smart contracts. Họ đứng lên cách mạng hóa cách thức một xã hội dân chủ hoạt động. Tuy nhiên, như hiện đang được triển khai, chúng có quy mô kém và không thể đạt được tiềm năng của mình. Algorand là một cách thực sự dân chủ và hiệu quả để triển khai sổ cái công khai. Không giống như trước việc triển khai dựa trên bằng chứng công việc, nó đòi hỏi lượng tính toán không đáng kể và tạo ra một lịch sử giao dịch sẽ không “phân nhánh” với xác suất cực kỳ cao. Algorand dựa trên thỏa thuận Byzantine truyền tin nhắn (mới và siêu nhanh). Để cụ thể hơn, chúng tôi sẽ chỉ mô tả Algorand dưới dạng nền tảng tiền tệ.
Résumé
Un grand livre public est une séquence de données infalsifiables qui peuvent être lues et complétées par tout le monde. Les grands livres publics ont des utilisations innombrables et convaincantes. Ils peuvent sécuriser, à la vue de tous, toutes sortes des transactions — telles que les titres, les ventes et les paiements — dans l'ordre exact dans lequel elles se produisent. Les registres publics non seulement freinent la corruption, mais permettent également des applications très sophistiquées, telles que crypto-monnaies et smart contracts. Ils sont en passe de révolutionner la façon dont une société démocratique fonctionne. Toutefois, tels qu’ils sont actuellement mis en œuvre, ils évoluent mal et ne peuvent pas réaliser leur potentiel. Algorand est un moyen véritablement démocratique et efficace de mettre en œuvre un grand livre public. Contrairement aux précédents implémentations basées sur une preuve de travail, cela nécessite une quantité négligeable de calculs, et génère un historique de transactions qui ne « bifurquera » pas avec une probabilité extrêmement élevée. Algorand est basé sur un accord byzantin (un nouveau et ultra rapide) de transmission de messages. Par souci de concrétisation, nous décrirons Algorand uniquement comme une plateforme monétaire.
Giới thiệu
Tiền ngày càng trở nên ảo. Người ta ước tính rằng khoảng 80% dân số Hoa Kỳ đô la ngày nay chỉ tồn tại dưới dạng các mục sổ cái [5]. Các công cụ tài chính khác cũng theo sau. Trong một thế giới lý tưởng, trong đó chúng ta có thể tin tưởng vào một thực thể trung tâm được toàn thể tin cậy, miễn nhiễm. trước tất cả các cuộc tấn công mạng có thể xảy ra, tiền và các giao dịch tài chính khác có thể chỉ là điện tử. Thật không may, chúng ta không sống trong một thế giới như vậy. Theo đó, tiền điện tử phi tập trung, chẳng hạn như như Bitcoin [29] và các hệ thống “smart contract”, chẳng hạn như Ethereum, đã được đề xuất [4]. Tại trung tâm của các hệ thống này là một sổ cái chung ghi lại chuỗi giao dịch một cách đáng tin cậy, ∗Đây là phiên bản chính thức hơn (và không đồng bộ) của bài báo ArXiv của tác giả thứ hai [24], một bài báo dựa trên Gorbunov và Micali [18]. Công nghệ của Algorand là mục tiêu sau đây đơn xin cấp bằng sáng chế: 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đa dạng như các khoản thanh toán và hợp đồng, theo cách chống giả mạo. Công nghệ được lựa chọn để đảm bảo khả năng chống giả mạo như vậy là blockchain. Blockchains đằng sau các ứng dụng như tiền điện tử [29], ứng dụng tài chính [4] và Internet vạn vật [3]. Một số kỹ thuật để quản lý sổ cái dựa trên blockchain đã được đề xuất: bằng chứng công việc [29], bằng chứng cổ phần [2], khả năng chịu lỗi Byzantine thực tế [8] hoặc một số kết hợp. Tuy nhiên, hiện nay việc quản lý sổ cái có thể không hiệu quả. Ví dụ: proof-of-work của Bitcoin (dựa trên khái niệm ban đầu của [14]) đòi hỏi lượng tính toán khổng lồ, gây lãng phí và tỷ lệ kém [1]. Ngoài ra, trên thực tế, nó tập trung quyền lực vào rất ít tay. Do đó, chúng tôi mong muốn đưa ra một phương pháp mới để triển khai sổ cái công khai cung cấp sự thuận tiện và hiệu quả của một hệ thống tập trung được điều hành bởi một cơ quan đáng tin cậy và bất khả xâm phạm, không có sự thiếu hiệu quả và điểm yếu của việc triển khai phi tập trung hiện nay. Chúng tôi gọi cách tiếp cận của chúng tôi Algorand, vì chúng tôi sử dụng thuật toán ngẫu nhiên để chọn, dựa trên sổ cái được xây dựng cho đến nay, một tập hợp những người xác minh chịu trách nhiệm xây dựng khối giao dịch hợp lệ tiếp theo. Đương nhiên, chúng tôi đảm bảo rằng những lựa chọn như vậy chắc chắn không bị thao túng và không thể đoán trước được cho đến khi phút cuối cùng, nhưng cuối cùng thì chúng cũng rõ ràng trên toàn cầu. Cách tiếp cận của Algorand khá dân chủ, theo nghĩa là cả về nguyên tắc lẫn thực tế đều không tạo ra các lớp người dùng khác nhau (với tư cách là “thợ mỏ” và “người dùng thông thường” trong Bitcoin). Trong Algorand “tất cả quyền lực thuộc về tập hợp tất cả người dùng”. Một đặc tính đáng chú ý của Algorand là lịch sử giao dịch của nó chỉ có thể phân nhánh với rất ít xác suất (ví dụ: một phần nghìn tỷ, tức là hoặc thậm chí 10−18). Algorand cũng có thể giải quyết một số vấn đề pháp lý và những mối quan tâm chính trị. Cách tiếp cận Algorand áp dụng cho blockchains và tổng quát hơn cho bất kỳ phương pháp tạo nào một chuỗi các khối chống giả mạo. Chúng tôi thực sự đã đưa ra một phương pháp mới - thay thế và hiệu quả hơn blockchains— điều đó có thể được quan tâm độc lập. 1.1 Giả định của Bitcoin và các vấn đề kỹ thuật Bitcoin là một hệ thống rất khéo léo và đã truyền cảm hứng cho rất nhiều nghiên cứu tiếp theo. Tuy nhiên, nó cũng có vấn đề. Chúng ta hãy tóm tắt giả định cơ bản và các vấn đề kỹ thuật của nó - mà về cơ bản được chia sẻ bởi tất cả các loại tiền điện tử, như Bitcoin, đều dựa trên proof-of-work. Đối với bản tóm tắt này, cần nhớ lại rằng, trong Bitcoin, người dùng có thể sở hữu nhiều khóa chung của sơ đồ chữ ký số, số tiền đó được liên kết với khóa công khai và khoản thanh toán là một chữ ký số chuyển một số tiền từ khóa công khai này sang khóa công khai khác. Về cơ bản, Bitcoin sắp xếp tất cả các khoản thanh toán được xử lý theo chuỗi khối, B1, B2, . . ., mỗi cái bao gồm nhiều các khoản thanh toán, chẳng hạn như tất cả các khoản thanh toán B1, được thực hiện theo bất kỳ thứ tự nào, tiếp theo là các khoản thanh toán B2, theo bất kỳ thứ tự nào, v.v., tạo thành một chuỗi các khoản thanh toán hợp lệ. Trung bình mỗi khối được tạo ra cứ sau 10 phút. Chuỗi khối này là một chuỗi vì nó được cấu trúc để đảm bảo rằng bất kỳ thay đổi nào, thậm chí trong một khối duy nhất, thấm vào tất cả các khối tiếp theo, giúp dễ dàng phát hiện bất kỳ thay đổi nào của lịch sử thanh toán. (Như chúng ta sẽ thấy, điều này đạt được bằng cách đưa vào mỗi khối một mật mã hash của cái trước.) Cấu trúc khối như vậy được gọi là blockchain. Giả định: Phần lớn sức mạnh tính toán trung thực Bitcoin cho rằng không có độc hại thực thể (cũng không phải liên minh các thực thể độc hại phối hợp) kiểm soát phần lớn hoạt động tính toán sức mạnh dành cho việc tạo khối. Trên thực tế, một thực thể như vậy sẽ có thể sửa đổi blockchain,và do đó viết lại lịch sử thanh toán nếu muốn. Đặc biệt, nó có thể thực hiện thanh toán \(\wp\), nhận được những lợi ích được trả và sau đó “xóa” mọi dấu vết của \(\wp\). Vấn đề kỹ thuật 1: Chất thải tính toán Cách tiếp cận chặn proof-of-work của Bitcoin thế hệ đòi hỏi một lượng tính toán phi thường. Hiện nay chỉ với vài trăm Hàng nghìn khóa công khai trong hệ thống, top 500 siêu máy tính mạnh nhất chỉ có thể tập hợp được chỉ chiếm 12,8% tổng công suất tính toán được yêu cầu từ người chơi Bitcoin. Cái này lượng tính toán sẽ tăng lên đáng kể nếu có nhiều người dùng tham gia hệ thống hơn. Bài toán kỹ thuật 2: Tập trung quyền lực Ngày nay, do số lượng quá lớn cần tính toán, người dùng đang cố gắng tạo một khối mới bằng cách sử dụng máy tính để bàn thông thường (chưa nói đến một điện thoại di động), dự kiến sẽ mất tiền. Thật vậy, để tính toán một khối mới bằng một máy tính thông thường, chi phí dự kiến của lượng điện cần thiết để cung cấp năng lượng cho quá trình tính toán vượt quá phần thưởng dự kiến. Chỉ sử dụng nhóm máy tính được chế tạo đặc biệt (không làm gì khác ngoài việc “khai thác các khối mới”), một có thể mong đợi kiếm được lợi nhuận bằng cách tạo ra các khối mới. Theo đó, ngày nay trên thực tế có hai các lớp người dùng riêng biệt: người dùng thông thường, những người chỉ thực hiện thanh toán và các nhóm khai thác chuyên dụng, chỉ tìm kiếm các khối mới. Do đó, không có gì ngạc nhiên khi tính đến thời điểm hiện tại, tổng sức mạnh tính toán của khối thế hệ chỉ nằm trong năm nhóm. Trong những điều kiện như vậy, giả định rằng phần lớn sức mạnh tính toán trung thực sẽ trở nên kém tin cậy hơn. Vấn đề kỹ thuật 3: Sự mơ hồ Trong Bitcoin, blockchain không nhất thiết phải là duy nhất. Quả thực phần mới nhất của nó thường phân nhánh: blockchain có thể là —say— B1, . . . , Bk, B′ k+1, B′ k+2, theo một người dùng và B1, . . . , Bk, B′′ k+1, B′′ k+2, B′′ k+3 theo người dùng khác. Chỉ sau vài khối có được thêm vào chuỗi, liệu người ta có thể chắc chắn một cách hợp lý rằng k + 3 khối đầu tiên sẽ giống nhau không? cho tất cả người dùng. Vì vậy, người ta không thể dựa ngay vào các khoản thanh toán có trong khối cuối cùng của chuỗi. Sẽ khôn ngoan hơn nếu chờ xem liệu khối này có đủ sâu trong blockchain và do đó đủ ổn định. Riêng biệt, các mối lo ngại về thực thi pháp luật và chính sách tiền tệ cũng đã được nêu ra về Bitcoin.1 1.2 Algorand, Tóm tắt lại Cài đặt Algorand hoạt động trong môi trường rất khắc nghiệt. Tóm lại, (a) Môi trường không được phép và được phép. Algorand hoạt động hiệu quả và an toàn ngay cả trong một môi trường hoàn toàn không được phép, nơi nhiều người dùng được phép tham gia một cách tùy ý hệ thống bất kỳ lúc nào mà không cần kiểm tra hay cho phép dưới bất kỳ hình thức nào. Tất nhiên, Algorand hoạt động thậm chí còn tốt hơn trong môi trường được phép. 1Tính ẩn danh (giả) được cung cấp bởi các khoản thanh toán Bitcoin có thể bị lạm dụng để rửa tiền và/hoặc tài trợ của các cá nhân tội phạm hoặc các tổ chức khủng bố. Tiền giấy hoặc vàng miếng truyền thống, về nguyên tắc mang lại sự hoàn hảo tính ẩn danh, sẽ đặt ra thách thức tương tự, nhưng tính chất vật lý của các loại tiền tệ này làm chậm tiền một cách đáng kể. chuyển giao, để cho phép các cơ quan thực thi pháp luật giám sát ở một mức độ nào đó. Khả năng “in tiền” là một trong những quyền lực cơ bản của một quốc gia. Do đó, về nguyên tắc, khối lượng lớn việc áp dụng một đồng tiền thả nổi độc lập có thể hạn chế quyền lực này. Tuy nhiên, hiện tại, Bitcoin còn lâu mới trở thành hiện thực. một mối đe dọa đối với các chính sách tiền tệ của chính phủ, và do các vấn đề về khả năng mở rộng của nó, có thể không bao giờ có.(b) Môi trường rất bất lợi. Algorand chống lại một Kẻ thù rất mạnh, kẻ có thể (1) ngay lập tức làm hư hỏng bất kỳ người dùng nào anh ta muốn, vào bất kỳ lúc nào anh ta muốn, với điều kiện là, trong một môi trường không được phép, 2/3 số tiền trong hệ thống thuộc về người dùng trung thực. (Trong một môi trường được phép, bất kể tiền bạc, chỉ cần 2/3 số người dùng trung thực là đủ.) (2) hoàn toàn kiểm soát và phối hợp hoàn hảo tất cả những người dùng tham nhũng; và (3) lên lịch gửi tất cả tin nhắn, với điều kiện mỗi tin nhắn được gửi bởi người dùng trung thực tiếp cận 95% người dùng trung thực trong thời gian \(\lambda\)m, điều này chỉ phụ thuộc vào kích thước của m. Thuộc tính chính Bất chấp sự hiện diện của kẻ thù hùng mạnh của chúng ta, trong Algorand • Khối lượng tính toán cần thiết là tối thiểu. Về cơ bản, bất kể có bao nhiêu người dùng có trong hệ thống, mỗi người trong số 1500 người dùng phải thực hiện tối đa vài giây tính toán. • Khối mới được tạo trong vòng chưa đầy 10 phút và trên thực tế sẽ không bao giờ rời khỏi blockchain. Ví dụ, theo kỳ vọng, thời gian để tạo khối theo phương án đầu tiên sẽ ít hơn hơn Λ + 12,4\(\lambda\), trong đó Λ là thời gian cần thiết để truyền một khối, trong tin đồn ngang hàng thời trang, bất kể kích thước khối nào người ta có thể chọn và \(\lambda\) là thời gian để truyền 1.500 thông điệp 200Blong. (Vì trong một hệ thống phi tập trung thực sự, Λ về cơ bản là độ trễ nội tại, trong Algorand yếu tố hạn chế trong việc tạo khối là tốc độ mạng.) Phương án thứ hai có thực sự đã được thử nghiệm bằng thực nghiệm ( bởi ?), cho thấy rằng một khối được tạo ra trong vòng chưa đầy 40 giây. Ngoài ra, blockchain của Algorand chỉ có thể phân nhánh với xác suất không đáng kể (tức là ít hơn một trong một nghìn tỷ), và do đó người dùng có thể chuyển tiếp các khoản thanh toán có trong một khối mới ngay khi khối xuất hiện. • Mọi quyền lực đều thuộc về chính người sử dụng. Algorand là hệ thống truy cập phân tán. Đặc biệt, không có thực thể ngoại sinh nào (như “thợ mỏ” trong Bitcoin), có thể kiểm soát giao dịch nào được công nhận. Kỹ thuật của Algorand. 1. Nghị định thư Thỏa thuận Byzantine mới và nhanh chóng. Algorand tạo khối mới thông qua một giao thức thỏa thuận Byzantine (BA) nhị phân, truyền tin nhắn, mật mã mới, BA⋆. Giao thức BA⋆không chỉ đáp ứng một số tính chất bổ sung (mà chúng ta sẽ sớm thảo luận) mà còn rất nhanh. Nói một cách đại khái, phiên bản đầu vào nhị phân của nó bao gồm một vòng lặp 3 bước, trong đó người chơi sẽ gửi một nhắn tin cho tất cả người chơi khác. Được thực hiện trong một mạng hoàn chỉnh và đồng bộ, với nhiều hơn 2/3 số người chơi trung thực, với xác suất > 1/3, sau mỗi vòng lặp, giao thức kết thúc bằng thỏa thuận. (Chúng tôi nhấn mạnh rằng giao thức BA⋆thỏa mãn định nghĩa ban đầu của thỏa thuận Byzantine của Pease, Shostak và Lamport [31] mà không có bất kỳ sự suy yếu nào.) Algorand tận dụng giao thức BA nhị phân này để đạt được thỏa thuận trong các giao tiếp khác nhau của chúng ta mô hình, trên mỗi khối mới. Khối đã thỏa thuận sau đó được chứng nhận, thông qua một số lượng quy định chữ ký số của người xác minh thích hợp và được truyền bá qua mạng. 2. Sắp xếp bằng mật mã. Mặc dù rất nhanh nhưng giao thức BA⋆ sẽ được hưởng lợi nhiều hơn tốc độ khi được chơi bởi hàng triệu người dùng. Theo đó, Algorand chọn người chơi của BA⋆ làmmột tập hợp con nhỏ hơn nhiều của tập hợp tất cả người dùng. Để tránh một hình thức tập trung quyền lực khác vấn đề, mỗi khối Br mới sẽ được xây dựng và thống nhất, thông qua việc thực thi BA⋆ mới, bởi một bộ xác minh được chọn riêng biệt, SV r. Về nguyên tắc, việc chọn một bộ như vậy có thể khó như chọn Br trực tiếp. Chúng tôi giải quyết vấn đề tiềm ẩn này bằng cách tiếp cận mà chúng tôi gọi là, bao gồm gợi ý sâu sắc của Maurice Herlihy, phân loại bằng mật mã. Sắp xếp là việc thực hành lựa chọn các quan chức một cách ngẫu nhiên từ một nhóm lớn các cá nhân đủ điều kiện [6]. (Đã thực hành phân loại qua nhiều thế kỷ: ví dụ, bởi các nước cộng hòa Athens, Florence và Venice. Trong tư pháp hiện đại hệ thống, lựa chọn ngẫu nhiên thường được sử dụng để chọn bồi thẩm đoàn. Lấy mẫu ngẫu nhiên cũng đã được thực hiện gần đây được ủng hộ cho các cuộc bầu cử bởi David Chaum [9].) Tất nhiên, trong một hệ thống phi tập trung, việc chọn các đồng tiền ngẫu nhiên cần thiết để chọn ngẫu nhiên các thành viên của mỗi bộ xác minh SV r là vấn đề. Do đó, chúng tôi sử dụng mật mã để chọn từng bộ xác minh, từ tập hợp tất cả người dùng, theo cách được đảm bảo là tự động (tức là không yêu cầu trao đổi tin nhắn) và ngẫu nhiên. Về bản chất, chúng tôi sử dụng chức năng mật mã để tự động xác định, từ khối trước đó Br−1, người dùng, người lãnh đạo, chịu trách nhiệm đề xuất khối Br mới và bộ xác minh SV r, trong phí để thống nhất khối do người đứng đầu đề xuất. Vì người dùng độc hại có thể ảnh hưởng thành phần của Br−1 (ví dụ: bằng cách chọn một số khoản thanh toán của nó), chúng tôi đặc biệt xây dựng và sử dụng đầu vào bổ sung để chứng minh rằng khối dẫn đầu cho khối thứ r và bộ xác minh SV r thực sự là được chọn ngẫu nhiên. 3. Số lượng (Hạt giống) Qr. Chúng tôi sử dụng khối Br−1 cuối cùng trong blockchain để tự động xác định bộ xác minh tiếp theo và người lãnh đạo phụ trách xây dựng khối mới Anh. Thách thức với cách tiếp cận này là chỉ cần chọn một khoản thanh toán hơi khác một chút trong vòng trước, Đối thủ hùng mạnh của chúng ta giành được quyền kiểm soát to lớn đối với kẻ dẫn đầu tiếp theo. Kể cả nếu anh ấy chỉ kiểm soát 1/1000 người chơi/tiền trong hệ thống, anh ta có thể đảm bảo rằng tất cả các nhà lãnh đạo đều độc hại. (Xem Phần Trực giác 4.1.) Thử thách này là trọng tâm của tất cả các cách tiếp cận proof-of-stake, và theo hiểu biết tốt nhất của chúng tôi, cho đến nay, vấn đề này vẫn chưa được giải quyết thỏa đáng. Để đáp ứng thách thức này, chúng tôi cố tình xây dựng và liên tục cập nhật một hệ thống riêng biệt và cẩn thận. đại lượng xác định, Qr, được chứng minh là không những không thể đoán trước mà còn không bị ảnh hưởng bởi chúng ta Đối thủ mạnh mẽ. Chúng ta có thể coi Qr là hạt giống thứ r, vì chính từ Qr mà Algorand chọn, thông qua phân loại mật mã bí mật, tất cả người dùng sẽ đóng một vai trò đặc biệt trong việc tạo ra khối thứ r. 4. Phân loại mật mã bí mật và thông tin xác thực bí mật. Sử dụng ngẫu nhiên và rõ ràng khối cuối cùng hiện tại, Br-1, để chọn bộ xác minh và người lãnh đạo phụ trách việc xây dựng khối mới, Br, là chưa đủ. Vì Br−1 phải được biết trước khi tạo Br, đại lượng không ảnh hưởng cuối cùng Qr−1 chứa trong Br−1 cũng phải được biết. Theo đó, vì vậy là người xác minh và là người đứng đầu phụ trách tính toán khối Br. Vì vậy, Kẻ thù hùng mạnh của chúng ta có thể ngay lập tức làm hỏng tất cả chúng, trước khi họ tham gia vào bất kỳ cuộc thảo luận nào về Br, để có được toàn quyền kiểm soát khối mà họ chứng nhận. Để ngăn chặn vấn đề này, các nhà lãnh đạo (và thực tế là cả những người kiểm tra) bí mật tìm hiểu về vai trò của họ, nhưng có thể tính toán thông tin xác thực phù hợp, có khả năng chứng minh cho mọi người thấy rằng thực sự có vai trò đó. Khi nào một người dùng nhận ra một cách riêng tư rằng anh ta là người lãnh đạo khối tiếp theo, đầu tiên anh ta bí mật tập hợp khối mới được đề xuất của riêng mình, và sau đó phổ biến nó (để có thể được chứng nhận) cùng với khối của riêng mình thông tin xác thực. Bằng cách này, mặc dù Kẻ thù sẽ ngay lập tức nhận ra ai là người lãnh đạo tiếp theo chặn, và mặc dù anh ta có thể làm hỏng anh ta ngay lập tức, nhưng sẽ quá muộn để Kẻ thù có thể ảnh hưởng đến việc lựa chọn khối mới. Quả thực, anh không thể “gọi lại” lời nhắn của lãnh đạo nữahơn mức mà một chính phủ hùng mạnh có thể nhét lại vào trong chai một thông điệp được WikiLeaks lan truyền rộng rãi. Như chúng ta sẽ thấy, chúng ta không thể đảm bảo tính duy nhất của người lãnh đạo cũng như việc mọi người đều chắc chắn ai là người lãnh đạo. là, kể cả chính người lãnh đạo! Tuy nhiên, trong Algorand, tiến trình rõ ràng sẽ được đảm bảo. 5. Khả năng thay thế người chơi. Sau khi đề xuất một khối mới, người lãnh đạo cũng có thể “chết” (hoặc bị bị Kẻ thù làm hỏng), bởi vì công việc của anh ta đã hoàn thành. Tuy nhiên, đối với những người xác minh trong SV r, mọi thứ lại ít hơn đơn giản. Thật vậy, chịu trách nhiệm chứng nhận khối Br mới có đủ chữ ký, trước tiên họ phải thực hiện thỏa thuận Byzantine về khối do người lãnh đạo đề xuất. Vấn đề là ở chỗ, dù có hiệu quả đến đâu thì BA⋆ cũng yêu cầu nhiều bước và sự trung thực của > 2/3 số người chơi. Đây là một vấn đề, bởi vì, vì lý do hiệu quả, tập người chơi của BA⋆ chứa tập nhỏ SV r được chọn ngẫu nhiên trong tập hợp tất cả người dùng. Vì vậy, Kẻ thù hùng mạnh của chúng ta, mặc dù không thể làm hỏng 1/3 số người dùng, chắc chắn có thể làm hỏng tất cả thành viên của SV r! May mắn thay, chúng tôi sẽ chứng minh rằng giao thức BA⋆, được thực thi bằng cách truyền các thông báo theo kiểu ngang hàng, có thể thay thế được người chơi. Yêu cầu mới này có nghĩa là giao thức chính xác và đạt được sự đồng thuận một cách hiệu quả ngay cả khi mỗi bước của nó được thực hiện bởi một quy trình hoàn toàn mới và ngẫu nhiên và một tập hợp người chơi được lựa chọn độc lập. Do đó, với hàng triệu người dùng, mỗi nhóm nhỏ người chơi được liên kết với một bước của BA⋆có thể có phần giao trống với tập tiếp theo. Ngoài ra, các nhóm người chơi ở các bước BA⋆ khác nhau có thể sẽ có những cách chơi hoàn toàn khác nhau. hồng y. Hơn nữa, các thành viên của mỗi nhóm không biết nhóm người chơi tiếp theo sẽ là ai. được, và không bí mật vượt qua bất kỳ trạng thái nội bộ nào. Thuộc tính người chơi có thể thay thế thực sự rất quan trọng để đánh bại kẻ năng động và rất mạnh mẽ. Đối thủ mà chúng tôi dự tính. Chúng tôi tin rằng các giao thức trình phát có thể thay thế sẽ tỏ ra quan trọng trong nhiều bối cảnh và ứng dụng. Đặc biệt, chúng sẽ rất quan trọng để thực thi các giao thức con nhỏ một cách an toàn được nhúng trong một vũ trụ rộng lớn hơn gồm những người chơi với một kẻ thù năng động, kẻ có thể làm hỏng ngay cả một phần nhỏ trong tổng số người chơi, không khó khăn gì trong việc làm hư hỏng tất cả những người chơi trong những người chơi nhỏ hơn giao thức phụ. Một thuộc tính/kỹ thuật bổ sung: Sự trung thực lười biếng Một người dùng trung thực làm theo quy định của mình hướng dẫn, bao gồm cả việc trực tuyến và chạy giao thức. Vì Algorand chỉ có mức khiêm tốn yêu cầu tính toán và truyền thông, trực tuyến và chạy giao thức “trong nền” không phải là một sự hy sinh lớn lao. Tất nhiên, có một vài “sự vắng mặt” trong số những người chơi trung thực, như những do mất kết nối đột ngột hoặc cần khởi động lại, sẽ tự động được chấp nhận (vì chúng tôi luôn có thể coi số ít người chơi như vậy là có ác ý tạm thời). Tuy nhiên, chúng ta hãy chỉ ra Algorand đó có thể được điều chỉnh một cách đơn giản để hoạt động trong một mô hình mới, trong đó những người dùng trung thực sẽ trở thành hầu hết thời gian ngoại tuyến. Mô hình mới của chúng tôi có thể được giới thiệu một cách không chính thức như sau. Sự trung thực lười biếng. Nói một cách đại khái, một người dùng i lười biếng nhưng trung thực nếu (1) anh ta tuân theo mọi quy định của mình hướng dẫn, khi anh ta được yêu cầu tham gia vào giao thức, và (2) anh ta được yêu cầu tham gia hiếm khi tham gia vào giao thức và có thông báo trước phù hợp. Với quan niệm thoải mái như vậy về tính trung thực, chúng ta có thể càng tin tưởng hơn rằng những người trung thực sẽ sẵn sàng khi chúng tôi cần và Algorand đảm bảo rằng, trong trường hợp này, Hệ thống hoạt động an toàn ngay cả khi tại một thời điểm nhất định, phần lớn những người chơi tham gia đều có ác ý.1.3 Công việc liên quan chặt chẽ Các phương pháp tiếp cận bằng chứng công việc (như [29] và [4] được trích dẫn) khá trực quan với phương pháp của chúng tôi. Các các phương pháp tiếp cận dựa trên thỏa thuận Byzantine truyền thông điệp hoặc khả năng chịu lỗi Byzantine thực tế (như [8] được trích dẫn). Thật vậy, các giao thức này không thể chạy giữa một tập hợp tất cả người dùng và không thể, trong mô hình của chúng tôi, được giới hạn ở một nhóm người dùng nhỏ phù hợp. Trên thực tế, kẻ thù hùng mạnh của chúng ta ngay lập tức làm hỏng tất cả người dùng có liên quan đến một nhóm nhỏ bị buộc tội thực sự chạy giao thức BA. Cách tiếp cận của chúng tôi có thể được coi là có liên quan đến bằng chứng cổ phần [2], theo nghĩa là “quyền lực” của người dùng trong việc xây dựng khối tỷ lệ thuận với số tiền họ sở hữu trong hệ thống (ngược lại với —say— với số tiền họ đã bỏ vào “ký quỹ”). Bài báo gần nhất với chúng tôi là Mô hình đồng thuận buồn ngủ của Pass và Shi [30]. Để tránh yêu cầu tính toán nặng nề trong cách tiếp cận proof-of-work, bài viết của họ dựa vào (và vui lòng phần ghi công) Phân loại mật mã bí mật của Algorand. Với điểm chung quan trọng này, một số sự khác biệt đáng kể tồn tại giữa các bài báo của chúng tôi. Đặc biệt, (1) Cài đặt của họ chỉ được cho phép. Ngược lại, Algorand cũng là một hệ thống không được phép. (2) Họ sử dụng giao thức kiểu Nakamoto và do đó thường xuyên phân tách blockchain của họ. Mặc dù phân phối proof-of-work, trong giao thức của họ, một nhà lãnh đạo được lựa chọn bí mật sẽ được yêu cầu kéo dài thời gian hợp lệ lâu nhất (theo nghĩa phong phú hơn) blockchain. Vì vậy, việc fork là điều không thể tránh khỏi và người ta phải chờ đợi điều đó. khối này đủ “sâu” trong chuỗi. Quả thực, để đạt được mục tiêu của mình trước một đối thủ có khả năng sửa đổi thích ứng, chúng yêu cầu một khối có độ sâu poly(N), trong đó N đại diện cho tổng số người dùng trong hệ thống. Lưu ý rằng, ngay cả khi giả sử rằng một khối có thể được tạo ra trong một phút, nếu có N = 1 triệu người dùng thì người ta sẽ phải đợi khoảng 2 triệu năm để một khối có độ sâu N là 2 và trong khoảng 2 năm để một khối có độ sâu N. Ngược lại, Algorand của blockchain chỉ phân nhánh với xác suất không đáng kể, ngay cả khi Đối thủ tham nhũng người dùng ngay lập tức và thích ứng, đồng thời có thể tin cậy ngay vào các khối mới của nó. (3) Họ không xử lý các thỏa thuận Byzantine riêng lẻ. Theo một nghĩa nào đó, họ chỉ đảm bảo “sự đồng thuận cuối cùng về một chuỗi giá trị ngày càng tăng”. Của họ là một giao thức sao chép trạng thái, đúng hơn là hơn BA và không thể được sử dụng để đạt được thỏa thuận Byzantine về giá trị lợi ích riêng lẻ. Ngược lại, Algorand cũng chỉ có thể được sử dụng một lần, nếu muốn, để cho phép hàng triệu người dùng nhanh chóng đạt được thỏa thuận Byzantine về một giá trị quan tâm cụ thể. (4) Chúng yêu cầu đồng hồ được đồng bộ hóa yếu. Tức là đồng hồ của tất cả người dùng đều bị lệch một khoảng thời gian nhỏ δ. Ngược lại, trong Algorand, đồng hồ chỉ cần có (về cơ bản) cùng một “tốc độ”. (5) Giao thức của họ hoạt động với những người dùng lười biếng nhưng trung thực hoặc với phần lớn người dùng trực tuyến trung thực. Họ vui lòng ghi nhận Algorand vì đã nêu lên vấn đề người dùng trung thực ngoại tuyến hàng loạt và vì đưa ra mô hình trung thực lười biếng để đáp lại. Giao thức của họ không chỉ hoạt động ở chế độ lười biếng mô hình trung thực mà còn trong mô hình buồn ngủ đối nghịch của họ, nơi đối thủ chọn người dùng nào trực tuyến và ngoại tuyến, miễn là phần lớn người dùng trực tuyến luôn trung thực.2 2 Phiên bản gốc của bài báo của họ thực ra chỉ coi tính bảo mật trong mô hình đối lập buồn ngủ của họ. các phiên bản gốc của Algorand, trước phiên bản của họ, cũng được dự tính rõ ràng với giả định rằng phần lớn nhất định của Người chơi trực tuyến luôn trung thực, nhưng rõ ràng đã loại trừ nó khỏi việc xem xét, ủng hộ mô hình trung thực lười biếng. (Ví dụ: nếu tại một thời điểm nào đó, một nửa số người dùng trung thực chọn chuyển sang chế độ ngoại tuyến thì phần lớn người dùng sẽ trực tuyến rất có thể độc hại. Vì vậy, để ngăn chặn điều này xảy ra, Kẻ thù phải ép buộc phần lớn lực lượng của mình những người chơi bị mua chuộc cũng chuyển sang ngoại tuyến, điều này rõ ràng là đi ngược lại lợi ích của chính anh ta.) Lưu ý rằng một giao thức có đa số của những người chơi lười biếng nhưng trung thực chỉ hoạt động tốt nếu phần lớn người dùng trực tuyến luôn có ác ý. Điều này là như vậy, bởi vì một số lượng vừa đủ những người chơi trung thực, biết rằng họ sẽ đóng vai trò quan trọng vào một thời điểm hiếm hoi nào đó, sẽ bầu không được ngoại tuyến trong những thời điểm đó và họ cũng không thể bị Kẻ thù buộc phải ngoại tuyến, vì hắn không biết ai là người những người chơi trung thực quan trọng có thể là.(6) Họ yêu cầu đa số trung thực đơn giản. Ngược lại, phiên bản hiện tại của Algorand yêu cầu đa số trung thực là 2/3. Một bài báo khác gần gũi với chúng tôi là Ouroboros: Giao thức chuỗi khối bằng chứng cổ phần được chứng minh là an toàn, của Kiayias, Russell, David và Oliynykov [20]. Hệ thống của họ cũng xuất hiện sau hệ thống của chúng tôi. Nó cũng sử dụng phương pháp phân loại bằng phương pháp mật mã để loại bỏ bằng chứng công việc theo cách có thể chứng minh được. Tuy nhiên, họ một lần nữa, hệ thống là một giao thức kiểu Nakamoto, trong đó việc phân nhánh là không thể tránh khỏi và thường xuyên. (Tuy nhiên, trong mô hình của họ, các khối không cần sâu như mô hình đồng thuận buồn ngủ.) Hơn nữa, hệ thống của họ dựa trên các giả định sau: theo lời của chính các tác giả, “(1) mạng có tính đồng bộ cao, (2) phần lớn các bên liên quan được lựa chọn luôn sẵn sàng khi cần thiết để tham gia vào từng kỷ nguyên, (3) các bên liên quan không ngoại tuyến trong thời gian dài, (4) khả năng thích ứng của tham nhũng phải chịu một độ trễ nhỏ được đo bằng vòng tuyến tính theo tham số bảo mật.” Ngược lại, Algorand, với xác suất áp đảo, không phân nhánh và không dựa vào bất kỳ giả định nào trong số 4 giả định này. Đặc biệt, trong Algorand, Kẻ thù có thể ngay lập tức làm hỏng những người dùng mà anh ta muốn kiểm soát.
Introduction
L'argent devient de plus en plus virtuel. On estime qu'environ 80 % de la population américaine les dollars n’existent aujourd’hui que sous forme d’écritures comptables [5]. D’autres instruments financiers emboîtent le pas. Dans un monde idéal, dans lequel nous pourrions compter sur une entité centrale universellement fiable, immunisée Face à toutes les cyberattaques possibles, l’argent et les autres transactions financières pourraient être uniquement électroniques. Malheureusement, nous ne vivons pas dans un tel monde. En conséquence, les crypto-monnaies décentralisées, telles que comme Bitcoin [29], et des systèmes « smart contract », tels que Ethereum, ont été proposés [4]. À le cœur de ces systèmes est un registre partagé qui enregistre de manière fiable une séquence de transactions, ∗Il s'agit de la version la plus formelle (et asynchrone) de l'article ArXiv du deuxième auteur [24], un article lui-même basé sur celui de Gorbounov et Micali [18]. Les technologies de Algorand font l’objet des éléments suivants demandes de brevet : 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 931aussi variés que les paiements et les contrats, de manière inviolable. La technologie de choix pour garantir cette inviolabilité est le blockchain. Les blockchains sont à l'origine d'applications telles que les crypto-monnaies [29], les applications financières [4] et l'Internet des objets [3]. Plusieurs techniques pour gérer les grands livres basés sur blockchain ont été proposés : preuve de travail [29], preuve de mise [2], tolérance aux pannes byzantine pratique [8], ou une combinaison. Cependant, à l’heure actuelle, la gestion des grands livres peut s’avérer inefficace. Par exemple, proof-of-work de Bitcoin L'approche (basée sur le concept original de [14]) nécessite une grande quantité de calculs et est un gaspillage et évolue mal [1]. De plus, il concentre de facto le pouvoir entre très peu de mains. Nous souhaitons donc proposer une nouvelle méthode pour mettre en place un grand livre public offrant la la commodité et l’efficacité d’un système centralisé géré par une autorité de confiance et inviolable, sans les inefficacités et les faiblesses des mises en œuvre décentralisées actuelles. Nous appelons notre approche Algorand, car nous utilisons le hasard algorithmique pour sélectionner, sur la base du grand livre construit jusqu'à présent, un ensemble de vérificateurs chargés de construire le prochain bloc de transactions valides. Naturellement, nous veillons à ce que ces sélections soient prouvées à l'abri de toute manipulation et imprévisibles jusqu'à ce que la dernière minute, mais aussi qu'ils sont finalement universellement clairs. L’approche de Algorand est assez démocratique, dans le sens où ni en principe ni de facto elle crée différentes classes d'utilisateurs (comme « mineurs » et « utilisateurs ordinaires » dans Bitcoin). Dans Algorand « tout le pouvoir appartient à l’ensemble de tous les utilisateurs ». Une propriété notable de Algorand est que son historique de transactions ne peut bifurquer qu'avec de très petites probabilité (par exemple, un sur un billion, c'est-à-dire, ou même 10−18). Algorand peut également répondre à certaines questions juridiques et les préoccupations politiques. L'approche Algorand s'applique aux blockchain et, plus généralement, à toute méthode de génération une séquence de blocs inviolables. Nous avons en fait proposé une nouvelle méthode, alternative et plus efficace que les blockchains — qui peuvent présenter un intérêt indépendant. 1.1 Hypothèse de Bitcoin et problèmes techniques Bitcoin est un système très ingénieux et a inspiré de nombreuses recherches ultérieures. Pourtant, il est également problématique. Résumons son hypothèse sous-jacente et ses problèmes techniques - qui sont en fait partagés par pratiquement toutes les crypto-monnaies qui, comme Bitcoin, sont basées sur proof-of-work. Pour ce résumé, il suffit de rappeler que, dans Bitcoin, un utilisateur peut posséder plusieurs clés publiques d'un système de signature numérique, que l'argent est associé à des clés publiques et qu'un paiement est un signature numérique qui transfère une certaine somme d'argent d'une clé publique à une autre. Essentiellement, Bitcoin organise tous les paiements traités dans une chaîne de blocs, B1, B2, . . ., chacun étant composé de plusieurs paiements, tels que tous les paiements de B1, pris dans n'importe quel ordre, suivis de ceux de B2, dans n'importe quel ordre, etc., constituent une séquence de paiements valides. Chaque bloc est généré en moyenne toutes les 10 minutes. Cette séquence de blocs est une chaîne, car elle est structurée de manière à garantir que tout changement, même dans un seul bloc, s'infiltre dans tous les blocs suivants, ce qui facilite la détection de toute altération de l'historique des paiements. (Comme nous le verrons, ceci est réalisé en incluant dans chaque bloc un code cryptographique. hash de la précédente.) Une telle structure de bloc est appelée blockchain. Hypothèse : majorité honnête de la puissance de calcul Bitcoin suppose qu'aucun malware entité (ni une coalition d'entités malveillantes coordonnées) contrôle la majorité des ressources informatiques. puissance consacrée à la génération de blocs. Une telle entité serait en effet en mesure de modifier le blockchain,et ainsi réécrire l'historique des paiements, à sa guise. Il pourrait notamment effectuer un paiement \(\wp\), obtenir les prestations versées, puis « effacer » toute trace de \(\wp\). Problème technique 1 : Déchets informatiques L'approche proof-of-work de Bitcoin pour bloquer la génération nécessite une quantité extraordinaire de calculs. Actuellement, avec seulement quelques centaines des milliers de clés publiques dans le système, les 500 superordinateurs les plus puissants ne peuvent que rassembler seulement 12,8 % de la puissance de calcul totale requise des joueurs Bitcoin. Ceci la quantité de calcul augmenterait considérablement si davantage d’utilisateurs rejoignaient le système. Problème technique 2 : Concentration du pouvoir Aujourd'hui, en raison de la quantité exorbitante de calcul requis, un utilisateur essayant de générer un nouveau bloc en utilisant un bureau ordinaire (sans parler d'un téléphone portable), s'attend à perdre de l'argent. En effet, pour calculer un nouveau bloc avec un ordinateur ordinaire, le coût attendu de l’électricité nécessaire pour alimenter le calcul dépasse la récompense attendue. En utilisant uniquement des pools d'ordinateurs spécialement construits (qui ne font rien d'autre que « extraire de nouveaux blocs »), un pourrait espérer réaliser un profit en générant de nouveaux blocs. Ainsi, il existe aujourd’hui de facto deux classes d'utilisateurs disjointes : utilisateurs ordinaires, qui effectuent uniquement des paiements, et pools miniers spécialisés, qui recherche uniquement de nouveaux blocs. Il ne faut donc pas s'étonner que, depuis peu, la puissance de calcul totale des blocs La génération se situe dans seulement cinq pools. Dans de telles conditions, l’hypothèse selon laquelle une majorité des la puissance de calcul est honnête et devient moins crédible. Problème technique 3 : Ambiguïté Dans Bitcoin, le blockchain n'est pas nécessairement unique. En effet sa dernière partie se divise souvent : le blockchain peut être —disons— B1, . . . , Bk, B′ k+1, B′ k+2, selon un utilisateur, et B1, . . . , Bk, B' k+1,B' k+2, B'' k+3 selon un autre utilisateur. Ce n'est qu'après plusieurs blocs été ajouté à la chaîne, peut-on être raisonnablement sûr que les k + 3 premiers blocs seront les mêmes pour tous les utilisateurs. Ainsi, on ne peut pas compter d'emblée sur les paiements contenus dans le dernier bloc de la chaîne. Il est plus prudent d'attendre et de voir si le bloc s'enfonce suffisamment profondément dans le blockchain et donc suffisamment stable. Par ailleurs, des préoccupations en matière d’application de la loi et de politique monétaire ont également été soulevées à propos de Bitcoin.1 1.2 Algorand, en bref Paramètre Algorand travaille dans un environnement très difficile. En bref, (a) Environnements sans autorisation et autorisés. Algorand fonctionne efficacement et en toute sécurité, même dans un environnement totalement sans autorisation, où de nombreux utilisateurs arbitrairement sont autorisés à rejoindre le système à tout moment, sans aucun contrôle ni autorisation d’aucune sorte. Bien sûr, Algorand fonctionne encore mieux dans un environnement autorisé. 1Le (pseudo) anonymat offert par les paiements Bitcoin peut être utilisé à mauvais escient à des fins de blanchiment d'argent et/ou de financement. d’individus criminels ou d’organisations terroristes. Les billets de banque traditionnels ou les lingots d'or, qui offrent en principe une parfaite l'anonymat, devrait poser le même défi, mais le caractère physique de ces monnaies ralentit considérablement l'argent transferts, afin de permettre un certain degré de surveillance par les organismes chargés de l'application de la loi. La capacité « d’imprimer de l’argent » est l’un des pouvoirs fondamentaux d’un État-nation. En principe donc, le massif l’adoption d’une monnaie flottante de manière indépendante pourrait restreindre ce pouvoir. Cependant, à l'heure actuelle, Bitcoin est loin d'être une menace pour les politiques monétaires gouvernementales et, en raison de ses problèmes d’évolutivité, elle ne le sera peut-être jamais.(b) Environnements très conflictuels. Algorand résiste à un Adversaire très puissant, qui peut (1) corrompre instantanément tout utilisateur de son choix, à tout moment, à condition que, de manière environnement sans autorisation, les 2/3 de l’argent du système appartiennent à un utilisateur honnête. (Dans un environnement autorisé, quel que soit l'argent, il suffit que les 2/3 des utilisateurs soient honnêtes.) (2) contrôler totalement et coordonner parfaitement tous les utilisateurs corrompus ; et (3) planifier la livraison de tous les messages, à condition que chaque message soit envoyé par un utilisateur honnête atteint 95% des utilisateurs honnêtes dans un temps \(\lambda\)m, qui dépend uniquement de la taille de m. Propriétés principales Malgré la présence de notre puissant adversaire, en Algorand • La quantité de calcul requise est minime. Essentiellement, quel que soit le nombre d'utilisateurs présent dans le système, chacun des mille cinq cents utilisateurs doit effectuer au maximum quelques secondes de calcul. • Un nouveau bloc est généré en moins de 10 minutes, et ne quittera de facto jamais le blockchain. Par exemple, en prévision, le temps nécessaire pour générer un bloc dans le premier mode de réalisation est inférieur que Λ + 12,4\(\lambda\), où Λ est le temps nécessaire à la propagation d'un bloc, dans un potin peer-to-peer mode, quelle que soit la taille de bloc que l'on choisit, et \(\lambda\) est le temps nécessaire pour propager 1 500 messages de 200 Blongs. (Puisque dans un système véritablement décentralisé, Λ est essentiellement une latence intrinsèque, Algorand le facteur limitant dans la génération de blocs est la vitesse du réseau.) Le deuxième mode de réalisation a en fait été testé expérimentalement (par ?), indiquant qu'un bloc est généré en moins de 40 secondes. De plus, le blockchain de Algorand ne peut se diviser qu'avec une probabilité négligeable (c'est-à-dire moins d'un en billions), et ainsi les utilisateurs peuvent s'appuyer sur les paiements contenus dans un nouveau bloc dès que le Le bloc apparaît. • Tout le pouvoir appartient aux utilisateurs eux-mêmes. Algorand est un véritable système distribué. En particulier, il n'y a pas d'entités exogènes (comme les « mineurs » dans Bitcoin), qui peuvent contrôler quelles transactions sont reconnus. Techniques de Algorand. 1. Un nouveau et rapide protocole d’accord byzantin. Algorand génère un nouveau bloc via un nouveau protocole d'accord byzantin (BA) binaire cryptographique, de transmission de messages, BA⋆. Protocole BA⋆ non seulement satisfait quelques propriétés supplémentaires (dont nous parlerons bientôt), mais est également très rapide. En gros, sa version à entrée binaire consiste en une boucle en 3 étapes, dans laquelle un joueur envoie un seul message mi à tous les autres joueurs. Exécuté dans un réseau complet et synchrone, avec plus que 2/3 des joueurs sont honnêtes, avec une probabilité > 1/3, après chaque boucle le protocole se termine par accord. (Nous soulignons que le protocole BA⋆ satisfait à la définition originale de l'accord byzantin de Pease, Shostak et Lamport [31], sans aucun affaiblissement.) Algorand exploite ce protocole BA binaire pour parvenir à un accord, dans nos différentes communications modèle, sur chaque nouveau bloc. Le bloc convenu est ensuite certifié, via un nombre prescrit de signature numérique des vérificateurs appropriés et propagée à travers le réseau. 2. Tri cryptographique. Bien que très rapide, le protocole BA⋆ gagnerait à être développé davantage. vitesse lorsqu'il est joué par des millions d'utilisateurs. En conséquence, Algorand choisit les joueurs de BA⋆pour êtreun sous-ensemble beaucoup plus petit de l’ensemble de tous les utilisateurs. Pour éviter un autre type de concentration du pouvoir problème, chaque nouveau bloc Br sera construit et convenu, via une nouvelle exécution de BA⋆, par un ensemble distinct de vérificateurs sélectionnés, SV r. En principe, sélectionner un tel ensemble pourrait être aussi difficile que en sélectionnant Br directement. Nous résolvons ce problème potentiel par une approche que nous appelons, englobant la suggestion perspicace de Maurice Herlihy, le tri cryptographique. Le tri est la pratique de sélectionner des responsables au hasard parmi un large ensemble de personnes éligibles [6]. (Le tri était pratiqué à travers les siècles : par exemple par les républiques d’Athènes, de Florence et de Venise. Dans la justice moderne systèmes, la sélection aléatoire est souvent utilisée pour choisir les jurys. Un échantillonnage aléatoire a également été récemment préconisé pour les élections par David Chaum [9].) Dans un système décentralisé, bien sûr, choisir le les pièces aléatoires nécessaires pour sélectionner aléatoirement les membres de chaque ensemble de vérificateurs SV r sont problématiques. Nous recourons donc à la cryptographie afin de sélectionner chaque ensemble de vérificateurs, parmi la population de tous les utilisateurs, d'une manière garantie automatique (c'est-à-dire ne nécessitant aucun échange de message) et aléatoire. Essentiellement, nous utilisons une fonction cryptographique pour déterminer automatiquement, à partir du bloc précédent Br−1, un utilisateur, le leader, chargé de proposer le nouveau bloc Br, et l'ensemble vérificateur SV r, dans chargé de parvenir à un accord sur le bloc proposé par le leader. Étant donné que des utilisateurs malveillants peuvent affecter la composition de Br−1 (par exemple, en choisissant certains de ses paiements), nous construisons et utilisons spécialement entrées supplémentaires afin de prouver que le leader du rème bloc et l'ensemble de vérificateurs SV r sont bien choisi au hasard. 3. La quantité (graines) Qr. On utilise le dernier bloc Br−1 du blockchain afin de déterminer automatiquement le prochain ensemble de vérificateurs et le leader en charge de la construction du nouveau bloc Frère. Le défi de cette approche est que, en choisissant simplement un paiement légèrement différent dans le Au tour précédent, notre puissant adversaire acquiert un énorme contrôle sur le prochain leader. Même s'il ne contrôlant que 1/1000 des joueurs/argent dans le système, il pouvait s'assurer que tous les dirigeants sont malveillant. (Voir la section 4.1 sur l'intuition.) Ce défi est au cœur de toutes les approches proof-of-stake, et, à notre connaissance, ce problème n’a pas encore été résolu de manière satisfaisante. Pour relever ce défi, nous construisons délibérément et mettons continuellement à jour un système distinct et soigneusement quantité définie, Qr, qui est prouvablement, non seulement imprévisible, mais aussi non influentable, par notre puissant Adversaire. Nous pouvons faire référence à Qr comme à la rème graine, car c'est à partir de Qr que Algorand sélectionne, via un tri cryptographique secret, tous les utilisateurs qui joueront un rôle particulier dans la génération du rème bloc. 4. Tri cryptographique secret et informations d'identification secrètes. Utiliser de manière aléatoire et sans ambiguïté le dernier bloc actuel, Br−1, afin de choisir l'ensemble des vérificateurs et le leader en charge la construction du nouveau bloc Br ne suffit pas. Puisque Br−1 doit être connu avant de générer Br, la dernière quantité non influençable Qr−1 contenue dans Br−1 doit également être connue. En conséquence, donc sont les vérificateurs et le leader en charge du calcul du bloc Br. Ainsi, notre puissant Adversaire pourrait immédiatement tous les corrompre, avant qu'ils s'engagent dans une discussion sur Br, afin d'obtenir contrôle total sur le bloc qu'ils certifient. Pour éviter ce problème, les dirigeants (et en fait les vérificateurs aussi) apprennent secrètement leur rôle, mais peuvent calculer un titre approprié, capable de prouver à tous ceux qui jouent effectivement ce rôle. Quand un utilisateur se rend compte en privé qu'il est le leader du bloc suivant, il assemble d'abord secrètement son propre nouveau bloc proposé, puis le diffuse (afin qu'il puisse être certifié) avec son propre bloc accréditation. De cette façon, même si l’Adversaire comprendra immédiatement qui est le chef du prochain le bloc est, et bien qu'il puisse le corrompre immédiatement, il sera trop tard pour que l'Adversaire puisse le corrompre. influencer le choix d’un nouveau bloc. En effet, il ne peut plus « rappeler » le message du leaderqu’un gouvernement puissant ne peut remettre dans la bouteille un message diffusé de manière virale par WikiLeaks. Comme nous le verrons, nous ne pouvons pas garantir l'unicité du leader, ni que chacun sache avec certitude qui est le leader. c'est, y compris le leader lui-même ! Mais, en Algorand, des progrès sans ambiguïté seront garantis. 5. Remplaçabilité du joueur. Après avoir proposé un nouveau bloc, le leader pourrait tout aussi bien « mourir » (ou être corrompu par l'Adversaire), car son travail est accompli. Mais, pour les vérificateurs de SV r, les choses sont moins simple. En effet, étant en charge de certifier le nouveau bloc Br avec suffisamment de signatures, ils doivent d'abord obtenir un accord byzantin sur le bloc proposé par le leader. Le problème est que, Quelle que soit son efficacité, BA⋆ nécessite plusieurs étapes et l'honnêteté de > 2/3 de ses joueurs. C’est un problème car, pour des raisons d’efficacité, l’ensemble des joueurs de BA⋆est constitué du petit ensemble SV r sélectionné au hasard parmi l’ensemble de tous les utilisateurs. Ainsi, notre puissant Adversaire, bien qu'incapable corrompre 1/3 de tous les utilisateurs, peut certainement corrompre tous les membres de SV r ! Heureusement, nous prouverons que le protocole BA⋆, exécuté en propageant des messages de manière peer-to-peer, est remplaçable par le joueur. Cette nouvelle exigence signifie que le protocole correctement et parvient efficacement à un consensus même si chacune de ses étapes est exécutée par une personne totalement nouvelle et aléatoire. et un ensemble de joueurs sélectionnés indépendamment. Ainsi, avec des millions d'utilisateurs, chaque petit groupe d'acteurs associé à une étape de BA⋆ a très probablement une intersection vide avec l’ensemble suivant. De plus, les ensembles d’acteurs des différents niveaux de BA⋆auront probablement des valeurs totalement différentes. cardinalités. De plus, les membres de chaque groupe ne savent pas qui sera le prochain groupe de joueurs. être, et ne passer secrètement aucun état interne. La propriété du joueur remplaçable est en fait cruciale pour vaincre le dynamique et très puissant Adversaire que nous envisageons. Nous pensons que les protocoles de joueurs remplaçables s'avéreront cruciaux dans de nombreux contextes et applications. En particulier, ils seront cruciaux pour exécuter de manière sécurisée de petits sous-protocoles intégré dans un univers plus vaste de joueurs avec un adversaire dynamique, qui, étant capable de corrompre même une petite fraction du total des joueurs, n'a aucune difficulté à corrompre tous les joueurs du plus petit sous-protocole. Une propriété/technique supplémentaire : l’honnêteté paresseuse Un utilisateur honnête suit ses prescriptions instructions, qui incluent être en ligne et exécuter le protocole. Depuis, Algorand n’a que modestement exigence de calcul et de communication, être en ligne et exécuter le protocole « dans le contexte » n’est pas un sacrifice majeur. Bien sûr, quelques « absences » parmi les joueurs honnêtes, comme ceux en raison d'une perte soudaine de connectivité ou de la nécessité d'un redémarrage, sont automatiquement tolérés (car nous pouvons toujours considérer que si peu de joueurs sont temporairement malveillants). Signalons cependant que Algorand peut être simplement adapté pour fonctionner dans un nouveau modèle, dans lequel des utilisateurs honnêtes doivent être hors ligne la plupart du temps. Notre nouveau modèle peut être présenté de manière informelle comme suit. Honnêteté paresseuse. En gros, un utilisateur i est paresseux mais honnête si (1) il suit toutes les instructions prescrites instructions, lorsqu'il lui est demandé de participer au protocole, et (2) il lui est demandé de participer au protocole que rarement et avec un préavis approprié. Avec une notion d’honnêteté aussi détendue, nous pouvons être encore plus confiants dans le fait que les gens honnêtes seront à portée de main lorsque nous en avons besoin, et Algorand garantissent que, lorsque tel est le cas, Le système fonctionne en toute sécurité même si, à un moment donné, la majorité des joueurs participants sont malveillants.1.3 Travail étroitement lié Les approches de preuve de travail (comme les [29] et [4] cités) sont assez orthogonales aux nôtres. Ainsi sont les approches basées sur un accord byzantin de transmission de messages ou sur une tolérance aux pannes byzantine pratique (comme le [8] cité). En effet, ces protocoles ne peuvent pas être exécutés parmi l'ensemble des utilisateurs et ne peuvent pas, dans notre modèle, être limité à un nombre suffisamment restreint d’utilisateurs. En fait, notre puissant adversaire, mon corrompt immédiatement tous les utilisateurs impliqués dans un petit ensemble chargé d’exécuter réellement un protocole BA. Notre approche pourrait être considérée comme liée à la preuve d’enjeu [2], dans le sens où le « pouvoir » des utilisateurs dans la construction de blocs est proportionnel à l’argent qu’ils possèdent dans le système (par opposition à – disons – à l’argent qu’ils ont mis en « séquestre »). L'article le plus proche du nôtre est le Sleepy Consensus Model de Pass et Shi [30]. Pour éviter le calculs lourds requis dans l'approche proof-of-work, leur article s'appuie sur (et aimablement crédits) Le tri cryptographique secret de Algorand. Avec cet aspect crucial en commun, plusieurs des différences significatives existent entre nos articles. En particulier, (1) Leur paramétrage est uniquement autorisé. En revanche, Algorand est également un système sans autorisation. (2) Ils utilisent un protocole de style Nakamoto, et donc leurs forks blockchain fréquemment. Bien que en se dispensant de proof-of-work, dans leur protocole, il est demandé à un leader secrètement sélectionné d'allonger le valide le plus longtemps (dans un sens plus riche) blockchain. Ainsi, les fourchettes sont inévitables et il faut attendre que le bloc est suffisamment « profond » dans la chaîne. En effet, pour atteindre ses objectifs face à un adversaire capables de corruptions adaptatives, ils nécessitent qu'un bloc soit profond en poly(N), où N représente le nombre total d'utilisateurs dans le système. Notez que, même en supposant qu'un bloc puisse être produit en une minute, s'il y avait N = 1 million d'utilisateurs, il faudrait alors attendre environ 2 millions d'années pour un bloc pour devenir N 2 de profondeur, et pendant environ 2 ans pour qu'un bloc devienne N de profondeur. En revanche, Les fourches blockchain de Algorand n'ont qu'une probabilité négligeable, même si l'Adversaire corrompt utilisateurs immédiatement et de manière adaptative, et ses nouveaux blocs peuvent être immédiatement fiables. (3) Ils ne traitent pas les accords byzantins individuels. En un sens, ils garantissent seulement « un éventuel consensus sur une séquence croissante de valeurs ». Il s'agit plutôt d'un protocole de réplication d'état. qu'un BA, et ne peut pas être utilisé pour parvenir à un accord byzantin sur une valeur individuelle d'intérêt. En revanche, Algorand peut également être utilisé une seule fois, si vous le souhaitez, pour permettre à des millions d'utilisateurs de rapidement parvenir à un accord byzantin sur une valeur d’intérêt spécifique. (4) Ils nécessitent des horloges faiblement synchronisées. Autrement dit, les horloges de tous les utilisateurs sont légèrement décalées. δ. En revanche, dans Algorand, les horloges doivent seulement avoir (essentiellement) la même « vitesse ». (5) Leur protocole fonctionne avec des utilisateurs paresseux mais honnêtes ou avec une majorité honnête d'utilisateurs en ligne. Ils remercient gentiment Algorand d'avoir soulevé la question des utilisateurs honnêtes qui se déconnectent en masse, et d'avoir soulevé la question de la déconnexion massive des utilisateurs honnêtes. en mettant en avant le modèle de l’honnêteté paresseuse en réponse. Leur protocole ne fonctionne pas seulement chez les paresseux modèle d'honnêteté, mais aussi dans leur modèle contradictoire endormi, où un adversaire choisit quels utilisateurs sont en ligne et qui sont hors ligne, à condition que, à tout moment, la majorité des utilisateurs en ligne soient honnêtes.2 2La version originale de leur article ne considérait en fait que la sécurité dans leur modèle endormi et contradictoire. Le version originale de Algorand, qui précède la leur, envisageait également explicitement de supposer qu'une majorité donnée des les joueurs en ligne sont toujours honnêtes, mais l’ont explicitement exclu de toute considération, en faveur du modèle d’honnêteté paresseuse. (Par exemple, si à un moment donné la moitié des utilisateurs honnêtes choisissent de se déconnecter, alors la majorité des utilisateurs en ligne peut très bien être malveillant. Ainsi, pour éviter que cela ne se produise, l'Adversaire devrait forcer la plupart de ses joueurs corrompus se déconnectent également, ce qui est clairement contraire à son propre intérêt.) Notez qu'un protocole avec une majorité La méthode des joueurs paresseux mais honnêtes fonctionne très bien si la majorité des utilisateurs en ligne sont toujours malveillants. Il en est ainsi, parce que un nombre suffisant d’acteurs honnêtes, sachant qu’ils vont jouer un rôle crucial à un moment donné, éliront ils ne peuvent pas se déconnecter dans ces moments-là, et ils ne peuvent pas non plus être forcés hors ligne par l'Adversaire, puisqu'il ne sait pas qui est le des joueurs honnêtes cruciaux pourraient l’être.(6) Ils nécessitent une majorité simple et honnête. En revanche, la version actuelle de Algorand nécessite une majorité honnête des 2/3. Un autre article proche de nous est Ouroboros : A Provably Secure Proof-of-Stake Blockchain Protocol, par Kiayias, Russell, David et Oliynykov [20]. Leur système est également apparu après le nôtre. C'est aussi utilise le tri cryptographique pour se passer de preuve de travail de manière prouvable. Cependant, leur Le système est, encore une fois, un protocole de style Nakamoto, dans lequel les forks sont à la fois inévitables et fréquents. (Cependant, dans leur modèle, les blocages n’ont pas besoin d’être aussi profonds que dans le modèle du consensus endormi.) De plus, leur système repose sur les hypothèses suivantes : selon les mots des auteurs eux-mêmes, « (1) le le réseau est hautement synchrone, (2) la majorité des parties prenantes sélectionnées sont disponibles selon les besoins pour participer à chaque époque, (3) les parties prenantes ne restent pas hors ligne pendant de longues périodes, (4) l'adaptabilité des corruptions est soumise à un petit retard qui se mesure en tours linéaires en le paramètre de sécurité. En revanche, Algorand est, avec une écrasante probabilité, sans fourchette, et ne repose sur aucune de ces 4 hypothèses. En particulier, dans Algorand, l'Adversaire est capable de corrompt instantanément les utilisateurs qu'il veut contrôler.
Kiến thức cơ bản
2.1 Mật mã nguyên thủy Băm lý tưởng. Chúng ta sẽ dựa vào hàm mật mã hash có thể tính toán hiệu quả, H, mà ánh xạ các chuỗi dài tùy ý thành chuỗi nhị phân có độ dài cố định. Theo truyền thống lâu đời, chúng tôi làm mẫu H dưới dạng ngẫu nhiên oracle, về cơ bản là một hàm ánh xạ từng chuỗi có thể thành một chuỗi ngẫu nhiên và chuỗi nhị phân được chọn độc lập (và sau đó cố định), H(s), có độ dài đã chọn. Trong bài báo này, H có đầu ra dài 256 bit. Thật vậy, độ dài như vậy đủ ngắn để làm cho hệ thống hiệu quả và đủ lâu để đảm bảo hệ thống an toàn. Chẳng hạn, chúng ta muốn H có khả năng chống va chạm. Nghĩa là, khó có thể tìm được hai chuỗi x và y khác nhau sao cho H(x) = H(y). Khi H là oracle ngẫu nhiên với đầu ra dài 256 bit, việc tìm thấy bất kỳ cặp chuỗi nào như vậy thực sự là khó khăn. (Thử ngẫu nhiên và dựa vào nghịch lý ngày sinh, sẽ cần 2256/2 = 2128 thử nghiệm.) Ký kỹ thuật số. Chữ ký số cho phép người dùng xác thực thông tin với nhau mà không chia sẻ bất kỳ khóa bí mật nào. Một sơ đồ chữ ký số bao gồm ba bước nhanh các thuật toán: bộ tạo khóa xác suất G, thuật toán ký S và thuật toán xác minh V . Cho tham số bảo mật k, một số nguyên đủ cao, người dùng i sử dụng G để tạo ra một cặp Các khóa k-bit (tức là các chuỗi): một pki khóa “công khai” và một khóa ký kết “bí mật” phù hợp. Điều quan trọng là một khóa công khai không “phản bội” khóa bí mật tương ứng của nó. Nghĩa là, ngay cả khi có kiến thức về pki, không một người khác ngoài tôi có thể tính toán trượt tuyết trong thời gian ngắn hơn thiên văn. Người dùng tôi sử dụng ski để ký điện tử các tin nhắn. Đối với mỗi thông báo có thể (chuỗi nhị phân) m, trước tiên tôi hashes m rồi chạy thuật toán S trên đầu vào H(m) và trượt để tạo ra chuỗi k-bit sigpki(m) \(\triangleq\)S(H(m), trượt tuyết) .3 3Vì H có khả năng chống va chạm nên thực tế không thể xảy ra trường hợp, bằng việc ký tên cho m một người “vô tình ký” một ký hiệu khác nhắn tin cho m′.Chuỗi nhị phân sigpki(m) được gọi là chữ ký số i của m (liên quan đến pki) và có thể là được biểu thị đơn giản hơn bằng sigi(m), khi pki khóa công khai rõ ràng trong ngữ cảnh. Mọi người biết pki đều có thể sử dụng nó để xác minh chữ ký số do i. Cụ thể, trên nhập (a) khóa công khai pki của người chơi i, (b) tin nhắn m, và (c) chuỗi s, tức là tôi được cho là chữ ký số của thông báo m, thuật toán xác minh V đưa ra CÓ hoặc KHÔNG. Các thuộc tính chúng tôi yêu cầu từ sơ đồ chữ ký số là: 1. Chữ ký hợp pháp luôn được xác minh: Nếu s = sigi(m), thì V (pki, m, s) = Y ES; và 2. Chữ ký số rất khó giả mạo: Nếu không có kiến thức về trượt tuyết thì sẽ rất khó tìm được một chuỗi như vậy. rằng V (pki, m, s) = Y ES, đối với một thông điệp m chưa bao giờ được ký bởi i, rất dài về mặt thiên văn. (Tuân theo yêu cầu bảo mật mạnh mẽ của Goldwasser, Micali và Rivest [17], điều này đúng ngay cả khi người ta có thể lấy được chữ ký của bất kỳ tin nhắn nào khác.) Theo đó, để ngăn chặn người khác ký tin nhắn thay mặt mình, người chơi phải giữ ký khóa bí mật trượt tuyết (do đó có thuật ngữ "khóa bí mật") và cho phép bất kỳ ai xác minh tin nhắn anh ấy đã ký, tôi quan tâm đến việc công khai pki khóa của anh ấy (do đó có thuật ngữ “khóa công khai”). Nói chung, một thông điệp m không thể truy xuất được từ chữ ký sigi(m) của nó. Để giải quyết hầu như với chữ ký số thỏa mãn thuộc tính “khả năng truy xuất” thuận tiện về mặt khái niệm (nghĩa là để đảm bảo rằng người ký và thông điệp có thể dễ dàng tính toán được từ chữ ký, chúng ta định nghĩa SIGpki(m) = (i, m, sigpki(m)) và SIGi(m) = (i, m, sigi(m)), nếu pki rõ ràng. Chữ ký kỹ thuật số độc đáo. Chúng tôi cũng xem xét các lược đồ chữ ký số (G, S, V ) thỏa mãn tài sản bổ sung sau. 3. Tính độc đáo. Thật khó để tìm các chuỗi pk’, m, s và s’ sao cho s ̸= s′ và V(pk′, m, s) = V(pk′, m, s′) = 1. (Lưu ý rằng thuộc tính duy nhất cũng đúng đối với các chuỗi pk′ không được tạo hợp pháp khóa công khai. Tuy nhiên, đặc biệt, tính chất duy nhất ngụ ý rằng, nếu người ta sử dụng trình tạo khóa được chỉ định G để tính toán khóa công khai pk cùng với khóa bí mật phù hợp sk, và do đó biết sk, về cơ bản anh ta không thể tìm thấy hai kỹ thuật số khác nhau chữ ký của cùng một tin nhắn liên quan đến pk.) Bình luận • Từ chữ ký duy nhất đến các hàm ngẫu nhiên có thể kiểm chứng. Liên quan đến kỹ thuật số lược đồ chữ ký với tính chất duy nhất, ánh xạ m \(\to\) H(sigi(m)) liên kết với mỗi chuỗi có thể m, một chuỗi 256 bit duy nhất, được chọn ngẫu nhiên và tính chính xác của chuỗi này ánh xạ có thể được chứng minh bằng chữ ký sigi(m). Nghĩa là, lược đồ chữ ký số và chữ ký số hash lý tưởng về cơ bản thỏa mãn tính chất duy nhất cung cấp cách triển khai cơ bản của hàm ngẫu nhiên có thể kiểm chứng được, như được giới thiệu và bởi Micali, Rabin và Vadhan [27]. (Việc triển khai ban đầu của họ nhất thiết phải phức tạp hơn, vì họ không dựa vào hashing lý tưởng.)• Ba nhu cầu khác nhau về chữ ký số. Trong Algorand, người dùng tôi tin tưởng vào kỹ thuật số chữ ký cho (1) Xác thực các khoản thanh toán của chính tôi. Trong ứng dụng này, các khóa có thể là “dài hạn” (nghĩa là được sử dụng để ký nhiều tin nhắn trong một khoảng thời gian dài) và đến từ sơ đồ chữ ký thông thường. (2) Tạo thông tin xác thực chứng minh rằng tôi có quyền hành động ở một số bước của vòng r. Ở đây, khóa có thể dài hạn nhưng phải đến từ sơ đồ thỏa mãn tính chất duy nhất. (3) Xác thực tin nhắn tôi gửi trong từng bước anh ấy hành động. Ở đây, chìa khóa phải được phù du (tức là bị phá hủy sau lần sử dụng đầu tiên), nhưng có thể đến từ sơ đồ chữ ký thông thường. • Đơn giản hóa chi phí nhỏ. Để đơn giản, chúng tôi hình dung mỗi người dùng có một khóa dài hạn duy nhất. Theo đó, khóa như vậy phải đến từ sơ đồ chữ ký có tính duy nhất tài sản. Sự đơn giản như vậy có chi phí tính toán nhỏ. Thông thường, trên thực tế, kỹ thuật số độc đáo chữ ký đắt hơn một chút để sản xuất và xác minh so với chữ ký thông thường. 2.2 Sổ cái công cộng lý tưởng hóa Algorand cố gắng bắt chước hệ thống thanh toán sau, dựa trên sổ cái công khai được lý tưởng hóa. 1. Trạng thái ban đầu. Tiền được liên kết với các khóa công khai riêng lẻ (được tạo riêng và thuộc quyền sở hữu của người dùng). Để pk1, . . . , pkj là khóa công khai ban đầu và a1, . . . , aj tương ứng của họ số lượng đơn vị tiền ban đầu thì trạng thái ban đầu là S0 = (pk1, a1), . . . , (pkj, aj) , được coi là kiến thức phổ biến trong hệ thống. 2. Thanh toán. Giả sử pk là khóa công khai hiện có \(\geq\)0 đơn vị tiền, pk′ công khai khác khóa và a′ là một số không âm không lớn hơn a. Sau đó, khoản thanh toán (hợp lệ) \(\wp\)là khoản thanh toán kỹ thuật số chữ ký, liên quan đến pk, xác định việc chuyển các đơn vị tiền tệ a' từ pk sang pk', cùng nhau với một số thông tin bổ sung. Trong các ký hiệu, \(\wp\)= SIGpk(pk, pk′, a′, I, H(I)), trong đó tôi đại diện cho bất kỳ thông tin bổ sung nào được coi là hữu ích nhưng không nhạy cảm (ví dụ: thời gian thông tin và số nhận dạng thanh toán) và bất kỳ thông tin bổ sung nào được coi là nhạy cảm (ví dụ: lý do thanh toán, có thể là danh tính của chủ sở hữu pk và pk′, v.v.). Chúng ta gọi pk (hoặc chủ sở hữu của nó) là người trả tiền, gọi mỗi pk' (hoặc chủ sở hữu của nó) là người nhận thanh toán và a' là số tiền thanh toán \(\wp\). Tham gia miễn phí qua thanh toán. Lưu ý người dùng có thể tham gia hệ thống bất cứ khi nào họ muốn bằng cách tạo ra các cặp khóa công khai/bí mật của riêng mình. Theo đó, khóa công khai pk′ xuất hiện trong khoản thanh toán \(\wp\)ở trên có thể là khóa công khai mới được tạo và chưa bao giờ “sở hữu” bất kỳ khoản tiền nào trước đây. 3. Sổ cái kỳ diệu. Trong Hệ thống lý tưởng hóa, tất cả các khoản thanh toán đều hợp lệ và xuất hiện dưới dạng chống giả mạo. danh sách L các bộ thanh toán “đăng lên trời” cho mọi người xem: L = TRẢ 1, TRẢ 2, . . . ,Mỗi khối PAY r+1 bao gồm tập hợp tất cả các khoản thanh toán được thực hiện kể từ khi khối xuất hiện TRẢ TIỀN r. Trong hệ thống lý tưởng, một khối mới xuất hiện sau một khoảng thời gian cố định (hoặc hữu hạn). Cuộc thảo luận. • Thêm các khoản thanh toán chung và đầu ra giao dịch chưa chi tiêu. Tổng quát hơn, nếu một khóa công khai pk sở hữu số tiền a, thì khoản thanh toán hợp lệ \(\wp\)của pk có thể chuyển số tiền a′ 1, a′ 2, . . ., tương ứng với các phím pk′ 1, pk′ 2, . . ., miễn là P j a′ j \(\leq\)a. Trong Bitcoin và các hệ thống tương tự, số tiền thuộc sở hữu của pk khóa công khai được tách thành các phần riêng biệt số tiền và khoản thanh toán \(\wp\)được thực hiện bởi pk phải chuyển toàn bộ số tiền riêng biệt đó a. Nếu pk chỉ muốn chuyển một phần a′ < a của a sang khóa khác thì nó cũng phải chuyển cả phần số dư, đầu ra giao dịch chưa chi tiêu, tới một khóa khác, có thể là chính pk. Algorand cũng hoạt động với các khóa có số lượng tách biệt. Tuy nhiên, để tập trung vào khía cạnh mới lạ của Algorand, về mặt khái niệm, việc tuân thủ các hình thức thanh toán đơn giản hơn của chúng tôi sẽ đơn giản hơn và các khóa có một số lượng duy nhất được liên kết với chúng. • Hiện trạng. Lược đồ lý tưởng hóa không trực tiếp cung cấp thông tin về hiện tại trạng thái của hệ thống (tức là mỗi khóa công khai có bao nhiêu đơn vị tiền). Thông tin này được khấu trừ từ Sổ cái ma thuật. Trong hệ thống lý tưởng, người dùng đang hoạt động liên tục lưu trữ và cập nhật thông tin trạng thái mới nhất, hoặc nếu không thì anh ta sẽ phải xây dựng lại nó, từ đầu, hoặc từ lần cuối cùng anh ta đã tính toán nó. (Trong phiên bản tiếp theo của bài viết này, chúng tôi sẽ tăng cường Algorand để kích hoạt nó người dùng để xây dựng lại trạng thái hiện tại một cách hiệu quả.) • Bảo mật và “Quyền riêng tư”. Chữ ký số đảm bảo rằng không ai có thể giả mạo thanh toán bằng một người dùng khác. Trong thanh toán \(\wp\), khóa công khai và số tiền không bị ẩn, nhưng thông tin nhạy cảm thông tin tôi có. Thật vậy, chỉ có H(I) xuất hiện trong \(\wp\) và vì H là hàm hash lý tưởng nên H(I) là một giá trị 256-bit ngẫu nhiên, và do đó không có cách nào để tìm ra điều gì tôi giỏi hơn chỉ đơn giản là đoán nó. Tuy nhiên, để chứng minh tôi là ai (ví dụ: để chứng minh lý do thanh toán), người trả tiền có thể chỉ tiết lộ I. Tính chính xác của I được tiết lộ có thể được xác minh bằng cách tính H(I) và so sánh giá trị kết quả với mục cuối cùng của \(\wp\). Trên thực tế, vì H có khả năng đàn hồi va chạm nên thật khó để tìm được giá trị thứ hai I′ sao cho H(I) = H(I′). 2.3 Các khái niệm và ký hiệu cơ bản Khóa, Người dùng và Chủ sở hữu Trừ khi có quy định khác, mỗi khóa công khai (gọi tắt là “khóa”) là dài hạn và liên quan đến sơ đồ chữ ký số có thuộc tính duy nhất. Khóa công khai tôi tham gia hệ thống khi một khóa công khai j khác đã có trong hệ thống thực hiện thanh toán cho i. Đối với màu sắc, chúng tôi nhân cách hóa các phím. Chúng ta gọi chìa khóa i là “anh ấy”, nói rằng tôi trung thực, rằng tôi gửi và nhận tin nhắn, v.v. Người dùng là từ đồng nghĩa với khóa. Khi chúng ta muốn phân biệt một khóa với người sở hữu nó, chúng tôi lần lượt sử dụng thuật ngữ “khóa kỹ thuật số” và “chủ sở hữu”. Hệ thống không được phép và được phép. Một hệ thống không được phép nếu khóa kỹ thuật số miễn phí tham gia bất kỳ lúc nào và chủ sở hữu có thể sở hữu nhiều khóa kỹ thuật số; và nó được cho phép, nếu không.Đại diện duy nhất Mỗi đối tượng trong Algorand có một cách thể hiện duy nhất. Đặc biệt, mỗi bộ {(x, y, z, . . . .) : x \(\in\)X, y \(\in\)Y, z \(\in\)Z, . . .} được sắp xếp theo cách được chỉ định trước: ví dụ: đầu tiên theo từ điển theo x, sau đó theo y, v.v. Đồng hồ cùng tốc độ Không có đồng hồ toàn cầu: đúng hơn là mỗi người dùng có đồng hồ riêng của mình. Đồng hồ người dùng không cần phải được đồng bộ hóa dưới bất kỳ hình thức nào. Tuy nhiên, chúng tôi giả định rằng tất cả chúng đều có cùng tốc độ. Ví dụ: khi theo đồng hồ của người dùng i là 12 giờ trưa thì có thể là 2 giờ 30 chiều theo đồng hồ của người dùng i. đồng hồ của người dùng khác j, nhưng khi nó là 12:01 theo đồng hồ của tôi thì nó sẽ là 2:31 theo đến đồng hồ của j. Nghĩa là, “một phút là như nhau (đầy đủ, về cơ bản là giống nhau) đối với mọi người dùng”. Vòng đấu Algorand được tổ chức theo đơn vị logic, r = 0, 1, . . ., gọi là vòng. Chúng tôi luôn sử dụng ký tự trên để biểu thị các vòng. Để chỉ ra rằng đại lượng không phải số Q (ví dụ: một chuỗi, khóa chung, tập hợp, chữ ký số, v.v.) đề cập đến vòng r, chúng ta chỉ cần viết Qr. Chỉ khi Q là số thực (ngược lại với chuỗi nhị phân có thể hiểu được dưới dạng số), hãy thực hiện chúng ta viết Q(r), do đó ký hiệu r không thể được hiểu là số mũ của Q. Tại (bắt đầu a) vòng r > 0, tập hợp tất cả các khóa công khai là PKr và trạng thái hệ thống là Sr = n tôi, một(r) tôi , . . . : tôi \(\in\)PKro , ở đâu một (r) tôi là số tiền có sẵn cho khóa công khai i. Lưu ý rằng PKr được khấu trừ từ Sr và Sr đó cũng có thể chỉ định các thành phần khác cho mỗi khóa chung i. Đối với vòng 0, PK0 là tập hợp khóa công khai ban đầu và S0 là trạng thái ban đầu. Cả PK0 và S0 được coi là kiến thức phổ biến trong hệ thống. Để đơn giản, khi bắt đầu vòng r, vì vậy là PK1, . . . , PKr và S1, . . . , Sr. Trong vòng r, trạng thái hệ thống chuyển từ Sr sang Sr+1: một cách tượng trưng, Vòng r: Sr −→Sr+1. Thanh toán Trong Algorand, người dùng liên tục thực hiện thanh toán (và phổ biến chúng theo cách được mô tả trong tiểu mục 2.7). Khoản thanh toán \(\wp\)của người dùng i \(\in\)PKr có cùng định dạng và ngữ nghĩa như trong Hệ thống lý tưởng. Cụ thể là, \(\wp\)= SIGi(i, i′, a, I, H(I)) . Thanh toán \(\wp\)có giá trị riêng ở vòng r (gọi tắt là thanh toán vòng r) nếu (1) số tiền của nó a nhỏ hơn hoặc bằng a(r) i , và (2) nó không xuất hiện trong bất kỳ tập hợp thanh toán chính thức nào PAY r′ cho r′ < r. (Như được giải thích bên dưới, điều kiện thứ hai có nghĩa là \(\wp\)chưa có hiệu lực. Một tập hợp các khoản thanh toán theo vòng r của i có giá trị chung nếu tổng số tiền của chúng tối đa là a(r) tôi . Bộ tiền thanh toán Tập hợp thanh toán vòng r P là tập hợp các khoản thanh toán vòng r sao cho đối với mỗi người dùng i, các khoản thanh toán của i trong P (có thể không có) đều có giá trị tập thể. Tập hợp tất cả các khoản thanh toán theo vòng r là PAY(r). Một vòng r tập trả lương P là tối đa nếu không có tập siêu nào của P là tập trả lương làm tròn r. Trên thực tế, chúng tôi đề xuất rằng khoản thanh toán \(\wp\)cũng chỉ định một vòng \(\rho\), \(\wp\)= SIGi(\(\rho\), i, i′, a, I, H(I)) , và không thể hợp lệ ở bất kỳ vòng nào ngoài [\(\rho\), \(\rho\) + k], đối với một số nguyên không âm cố định k.4 4Điều này giúp đơn giản hóa việc kiểm tra xem \(\wp\)có trở nên “hiệu quả” hay không (tức là, nó đơn giản hóa việc xác định liệu một số tập hợp thanh toán có TRẢ TIỀN r chứa \(\wp\). Khi k = 0, nếu \(\wp\)= SIGi(r, i, i′, a, I, H(I)) và \(\wp\)/\(\in\)PAY r thì tôi phải gửi lại \(\wp\).Bộ thanh toán chính thức Đối với mỗi vòng r, Algorand chọn công khai (theo cách được mô tả sau) một bộ thanh toán duy nhất (có thể trống), PAY r, bộ thanh toán chính thức của vòng. (Về cơ bản, PAY r đại diện cho các khoản thanh toán vòng r đã “thực sự” xảy ra.) Như trong Hệ thống lý tưởng (và Bitcoin), (1) cách duy nhất để người dùng mới j vào hệ thống là người nhận khoản thanh toán thuộc nhóm thanh toán chính thức TRẢ TIỀN r của vòng r nhất định; và (2) TRẢ TIỀN r xác định trạng thái của vòng tiếp theo, Sr+1, từ trạng thái của vòng hiện tại, Sr. Một cách tượng trưng, TRẢ r : Sr −→Sr+1. Cụ thể, 1. Tập khóa chung của vòng r + 1, PKr+1, bao gồm hợp của PKr và tập hợp tất cả khóa của người nhận thanh toán xuất hiện lần đầu tiên trong các khoản thanh toán PAY r; và 2. số tiền a(r+1) tôi mà người dùng tôi sở hữu ở vòng r + 1 là tổng của ai(r) —tức là, số tiền tôi sở hữu ở vòng trước (0 nếu tôi ̸\(\in\)PKr)— và tổng số tiền trả cho tôi theo các khoản thanh toán PAY r. Tóm lại, như trong Hệ thống lý tưởng, mỗi trạng thái Sr+1 có thể được khấu trừ khỏi lịch sử thanh toán trước đó: TRẢ 0, . . . , TRẢ r. 2.4 Khối và khối đã được chứng minh Trong Algorand0, khối Br tương ứng với vòng r chỉ định: chính r; tập hợp các khoản thanh toán của vòng r, TRẢ r; đại lượng Qr cần được giải thích và hash của khối trước đó, H(Br−1). Do đó, bắt đầu từ khối B0 cố định nào đó, chúng ta có blockchain truyền thống: B1 = (1, TRẢ 1, Q0, H(B0)), B2 = (2, TRẢ 2, Q1, H(B1)), B3 = (3, TRẢ 3, Q2, H(B2)), . . . Trong Algorand, tính xác thực của một khối thực sự được chứng minh bằng một phần thông tin riêng biệt, một “chứng chỉ khối” CERT r, biến Br thành một khối đã được chứng minh, Br. Sổ cái ma thuật, do đó, được thực hiện theo trình tự các khối đã được chứng minh, B1, B2, . . . Thảo luận Như chúng ta sẽ thấy, CERT r bao gồm một tập hợp các chữ ký số cho H(Br), chữ ký của một đa số thành viên của SV r, cùng với bằng chứng cho thấy mỗi thành viên đó thực sự thuộc về đến SV r. Tất nhiên, chúng ta có thể đưa các chứng chỉ CERT r vào chính các khối đó, nhưng hãy tìm nó về mặt khái niệm sạch hơn để giữ nó tách biệt.) Trong Bitcoin mỗi khối phải đáp ứng một thuộc tính đặc biệt, nghĩa là phải “chứa giải pháp của một câu đố về tiền điện tử”, điều này làm cho việc tạo khối đòi hỏi tính toán chuyên sâu và phân nhánh là điều không thể tránh khỏi và không hiếm. Ngược lại, Algorand của blockchain có hai ưu điểm chính: nó được tạo bằng tính toán tối thiểu và nó sẽ không phân nhánh với xác suất quá cao. Mỗi khối Bi là cuối cùng một cách an toàn ngay khi nó đi vào blockchain.2,5 Xác suất thất bại chấp nhận được Để phân tích tính bảo mật của Algorand, chúng tôi chỉ định xác suất F mà chúng tôi sẵn sàng thực hiện chấp nhận rằng có điều gì đó không ổn (ví dụ: tập xác minh SV r không có đa số trung thực). Như trong trường hợp độ dài đầu ra của hàm mật mã hash H, F cũng là một tham số. Tuy nhiên, như trong trường hợp đó, chúng ta thấy hữu ích khi đặt F thành một giá trị cụ thể để có được một cách nhìn trực quan hơn. nắm bắt được thực tế rằng thực sự có thể, trong Algorand, được hưởng mức độ bảo mật đầy đủ đồng thời và đủ hiệu quả. Để nhấn mạnh rằng F là tham số có thể được đặt theo ý muốn, trước tiên và phương án thứ hai mà chúng tôi lần lượt đặt F = 10−12 và F = 10−18 . Thảo luận Lưu ý rằng 10−12 thực sự nhỏ hơn một phần nghìn tỷ và chúng tôi tin rằng một con số như vậy sự lựa chọn của F là đủ trong ứng dụng của chúng tôi. Chúng ta hãy nhấn mạnh rằng 10−12 không phải là xác suất mà Đối thủ có thể giả mạo các khoản thanh toán của một người dùng trung thực. Tất cả các khoản thanh toán đều được kỹ thuật số đã ký và do đó, nếu sử dụng chữ ký số thích hợp thì xác suất giả mạo thanh toán là thấp hơn nhiều so với 10−12, và trên thực tế, về cơ bản là bằng 0. Sự kiện tồi tệ mà chúng ta sẵn sàng chịu đựng với xác suất F là các nhánh blockchain của Algorand. Lưu ý rằng, với việc thiết lập F và các vòng dài một phút, dự kiến sẽ xảy ra phân nhánh ở Algorand blockchain của blockchain với tần suất ít hơn (khoảng) một lần trong 1,9 triệu năm. Ngược lại, trong Bitcoin, việc phân nhánh xảy ra khá thường xuyên. Một người khắt khe hơn có thể đặt F ở giá trị thấp hơn. Vì mục đích này, trong phương án thứ hai của chúng tôi chúng tôi xem xét việc đặt F thành 10−18. Lưu ý rằng, giả sử rằng một khối được tạo ra mỗi giây, 1018 là số giây ước tính mà Vũ trụ đã mất cho đến nay: từ Vụ nổ lớn đến hiện tại thời gian. Do đó, với F = 10−18, nếu một khối được tạo ra trong một giây, người ta sẽ mong đợi tuổi của Vũ trụ để nhìn thấy một ngã ba. 2.6 Mô hình đối nghịch Algorand được thiết kế để bảo mật theo mô hình rất đối nghịch. Hãy để chúng tôi giải thích. Người dùng trung thực và độc hại Người dùng trung thực nếu anh ta tuân theo tất cả các hướng dẫn giao thức của mình và hoàn toàn có khả năng gửi và nhận tin nhắn. Một người dùng có ý đồ độc hại (tức là Byzantine, trong cách nói của điện toán phân tán) nếu anh ta có thể tùy ý đi chệch khỏi hướng dẫn đã quy định của mình. kẻ thù Kẻ thù là một thuật toán hiệu quả (về mặt kỹ thuật thời gian đa thức), được nhân cách hóa bằng màu sắc, kẻ có thể ngay lập tức gây ác ý cho bất kỳ người dùng nào hắn muốn, bất cứ lúc nào hắn muốn (chủ đề chỉ ở mức giới hạn trên của số lượng người dùng mà anh ta có thể tham nhũng). Đối thủ hoàn toàn kiểm soát và điều phối hoàn hảo tất cả những người dùng có ý đồ xấu. Anh ấy thực hiện mọi hành động thay mặt họ, bao gồm cả việc nhận và gửi tất cả tin nhắn của họ, đồng thời có thể khiến họ đi chệch khỏi hướng dẫn quy định của họ theo những cách tùy ý. Hoặc anh ta có thể đơn giản cô lập một người dùng bị lỗi đang gửi và nhận tin nhắn. Hãy để chúng tôi làm rõ rằng không ai khác tự động biết rằng người dùng i là độc hại, mặc dù sự ác ý của tôi có thể bộc lộ qua những hành động mà Kẻ thù bắt anh ta thực hiện. Tuy nhiên, đối thủ mạnh mẽ này • Không có sức mạnh tính toán vô hạn và không thể giả mạo thành công kỹ thuật số chữ ký của người dùng trung thực, ngoại trừ khả năng không đáng kể; Và• Không được can thiệp dưới bất kỳ hình thức nào vào việc trao đổi tin nhắn giữa những người dùng trung thực. Hơn nữa, khả năng tấn công người dùng trung thực của anh ta bị giới hạn bởi một trong những giả định sau. Sự trung thực Phần lớn tiền bạc Chúng tôi xem xét tính liên tục của Đa số tiền trung thực (HMM) giả định: cụ thể là, với mỗi số nguyên không âm k và số thực h > 1/2, HHMk > h: những người dùng trung thực ở mỗi vòng r sở hữu một phần lớn hơn h tổng số tiền trong hệ thống tại vòng r −k. Cuộc thảo luận. Giả sử rằng tất cả người dùng độc hại phối hợp hoàn hảo hành động của họ (như thể được kiểm soát bởi một thực thể duy nhất, Kẻ thù) là một giả thuyết khá bi quan. Sự phối hợp hoàn hảo giữa quá nhiều cá nhân khó đạt được. Có lẽ sự phối hợp chỉ xảy ra trong các nhóm riêng biệt của những người chơi độc hại. Tuy nhiên, vì người ta không thể chắc chắn về mức độ phối hợp của những kẻ dùng độc hại có thể tận hưởng, chúng ta thà an toàn còn hơn là tiếc nuối. Giả sử rằng Kẻ thù có thể làm hỏng người dùng một cách bí mật, linh hoạt và ngay lập tức. bi quan. Xét cho cùng, trên thực tế, việc kiểm soát hoàn toàn hoạt động của người dùng sẽ mất một thời gian. Ví dụ, giả định HMMk > h ngụ ý rằng nếu một vòng (trung bình) được thực hiện thì trong một phút, phần lớn số tiền ở một vòng nhất định sẽ nằm trong tay người trung thực ít nhất hai giờ nếu k = 120 và ít nhất một tuần nếu k = 10.000. Lưu ý rằng các giả định của HMM và Phần lớn sức mạnh tính toán trung thực trước đây các giả định có liên quan theo nghĩa là, vì sức mạnh tính toán có thể mua được bằng tiền, nếu người dùng độc hại sở hữu phần lớn số tiền thì họ có thể có được phần lớn sức mạnh tính toán. 2.7 Mô hình truyền thông Chúng tôi dự tính việc truyền bá thông điệp—tức là “tin đồn ngang hàng”5— là phương tiện duy nhất để giao tiếp. Giả định tạm thời: Gửi tin nhắn kịp thời trong toàn bộ mạng. cho Trong phần lớn bài viết này, chúng tôi giả định rằng mọi thông điệp được truyền bá đều đến được với hầu hết những người dùng trung thực. một cách kịp thời. Chúng ta sẽ loại bỏ giả định này trong Phần 10, nơi chúng ta giải quyết vấn đề mạng sự chia cắt xảy ra một cách tự nhiên hoặc do đối nghịch gây ra. (Như chúng ta sẽ thấy, chúng ta chỉ giả sử gửi tin nhắn kịp thời trong mỗi thành phần được kết nối của mạng.) Một cách cụ thể để nắm bắt kịp thời việc phân phối các tin nhắn được truyền bá (trong toàn bộ mạng) là sau đây: Đối với tất cả khả năng tiếp cận \(\rho\) > 95% và kích thước tin nhắn \(\mu\) \(\in\)Z+, tồn tại \(\lambda\) \(\rho\),\(\mu\) sao cho, nếu một người dùng trung thực truyền tin nhắn \(\mu\)-byte m tại thời điểm t, thì m đạt tới, theo thời gian t + \(\lambda\) \(\rho\),\(\mu\), ít nhất một phần \(\rho\) trong số những người dùng trung thực. 5Về cơ bản, như trong Bitcoin, khi người dùng truyền bá tin nhắn m, mọi người dùng đang hoạt động tôi sẽ nhận được m lần đầu tiên, chọn ngẫu nhiên và độc lập một số lượng nhỏ người dùng đang hoạt động phù hợp, “hàng xóm” của anh ấy, người mà anh ấy chuyển tiếp cho tôi, có thể cho đến khi anh ta nhận được sự thừa nhận từ họ. Việc truyền bá m kết thúc khi không có người dùng nào nhận được m lần đầu tiên.Tuy nhiên, thuộc tính trên không thể hỗ trợ giao thức Algorand của chúng tôi mà không hình dung rõ ràng và riêng biệt cơ chế để có được blockchain mới nhất —bởi một người dùng/kho lưu trữ/v.v. khác. Trên thực tế, để xây dựng một khối Br mới không chỉ cần có một bộ xác minh phù hợp kịp thời nhận được vòng r. tin nhắn, mà còn cả tin nhắn của các vòng trước, để biết Br−1 và tất cả các tin nhắn trước đó khối cần thiết để xác định xem các khoản thanh toán bằng Br có hợp lệ hay không. Sau đây thay vào đó giả định là đủ. Giả định về truyền tin nhắn (MP): Với mọi \(\rho\) > 95% và \(\mu\) \(\in\)Z+, tồn tại \(\lambda\) \(\rho\),\(\mu\) sao cho, với mọi thời điểm t và tất cả các tin nhắn \(\mu\)-byte m được truyền bởi một người dùng trung thực trước t −\(\lambda\) \(\rho\),\(\mu\), m được nhận, vào thời điểm t, bởi ít nhất một phần \(\rho\) người dùng trung thực. Giao thức Algorand ′ thực sự hướng dẫn từng người trong số ít người dùng (tức là người xác minh một bước nhất định của một vòng trong Algorand ′, để truyền bá một thông báo riêng biệt có kích thước quy định (nhỏ), và chúng ta cần giới hạn thời gian cần thiết để thực hiện các hướng dẫn này. Chúng tôi làm như vậy bằng cách làm phong phú thêm nghị sĩ giả định như sau. Với mọi n, \(\rho\) > 95% và \(\mu\) \(\in\)Z+, tồn tại \(\lambda\)n,\(\rho\),\(\mu\) sao cho với mọi thời điểm t và mọi \(\mu\)-byte tin nhắn m1, . . . , mn, mỗi cái được truyền bá bởi một người dùng trung thực trước t −\(\lambda\)n,\(\rho\),\(\mu\), m1, . . . , mn được nhận, vào thời điểm t, ít nhất là một phần \(\rho\) của những người dùng trung thực. Lưu ý • Giả định trên tuy đơn giản nhưng cũng mạnh mẽ hơn mức cần thiết trong bài viết của chúng tôi.6 • Để đơn giản, chúng tôi giả sử \(\rho\) = 1, và do đó không đề cập đến \(\rho\). • Chúng tôi bi quan cho rằng, miễn là anh ta không vi phạm giả định của MP, Đối thủ hoàn toàn kiểm soát việc gửi tất cả các tin nhắn. Đặc biệt, không bị người trung thực để ý người dùng, Đối thủ, anh ta có thể tùy ý quyết định người chơi trung thực nào sẽ nhận được tin nhắn nào khi, và tùy tiện đẩy nhanh việc gửi bất kỳ thông điệp nào anh ta muốn.7
Préliminaires
2.1 Primitives cryptographiques Hachage idéal. Nous nous appuierons sur une fonction cryptographique hash efficacement calculable, H, qui mappe des chaînes arbitrairement longues en chaînes binaires de longueur fixe. Suivant une longue tradition, nous modélisons H comme un oracle aléatoire, essentiellement une fonction mappant chaque chaîne possible s à un oracle aléatoire et chaîne binaire sélectionnée indépendamment (puis fixée), H(s), de la longueur choisie. Dans cet article, H a des sorties de 256 bits. En effet, cette longueur est suffisamment courte pour que le système efficace et suffisamment long pour sécuriser le système. Par exemple, nous voulons que H soit résistant aux collisions. Autrement dit, il devrait être difficile de trouver deux chaînes différentes x et y telles que H(x) = H(y). Lorsque H est un oracle aléatoire avec des sorties de 256 bits, trouver une telle paire de chaînes est en effet difficile. (Essayer au hasard et s'appuyer sur le paradoxe de l'anniversaire nécessiterait 2256/2 = 2128 essais.) Signature numérique. Les signatures numériques permettent aux utilisateurs d'authentifier les informations les uns auprès des autres sans partager aucun partage de clés secrètes. Un schéma de signature numérique se compose de trois étapes rapides algorithmes : un générateur de clé probabiliste G, un algorithme de signature S et un algorithme de vérification V . Étant donné un paramètre de sécurité k, un entier suffisamment élevé, un utilisateur i utilise G pour produire une paire de Clés de k bits (c'est-à-dire chaînes) : une clé pki "publique" et une clé de signature "secrète" correspondante ski. Surtout, un la clé publique ne « trahit » pas la clé secrète correspondante. Autrement dit, même avec la connaissance de pki, non un autre que moi est capable de calculer le ski en moins d'un temps astronomique. L'utilisateur i utilise ski pour signer numériquement les messages. Pour chaque message possible (chaîne binaire) m, je commence par hashes m puis exécute l'algorithme S sur les entrées H(m) et skie de manière à produire la chaîne de k bits sigpki(m) \(\triangleq\)S(H(m), ski) .3 3Puisque H est résistant aux collisions, il est pratiquement impossible qu’en signant m, quelqu’un « signe accidentellement » un autre message m'.La chaîne binaire sigpki(m) est appelée la signature numérique de m de i (par rapport à pki) et peut être plus simplement désigné par sigi(m), lorsque la clé publique pki ressort clairement du contexte. Toute personne connaissant pki peut l'utiliser pour vérifier les signatures numériques produites par i. Plus précisément, sur entre (a) la clé publique pki d'un joueur i, (b) un message m et (c) une chaîne s, c'est-à-dire que i est allégué signature numérique du message m, l'algorithme de vérification V renvoie soit OUI, soit NON. Les propriétés que nous exigeons d'un système de signature numérique sont : 1. Les signatures légitimes sont toujours vérifiées : Si s = sigi(m), alors V (pki, m, s) = Y ES ; et 2. Les signatures numériques sont difficiles à falsifier : sans connaissance du ski, il est temps de trouver une telle chaîne. que V (pki, m, s) = Y ES, pour un message m jamais signé par i, est astronomiquement long. (Suite aux fortes exigences de sécurité de Goldwasser, Micali et Rivest [17], c'est vrai même si l'on peut obtenir la signature de tout autre message.) En conséquence, pour empêcher quiconque de signer des messages en son nom, un joueur doit conserver son signer la clé ski secrète (d'où le terme « clé secrète »), et permettre à quiconque de vérifier les messages s'il signe, j'ai intérêt à faire connaître sa clé pki (d'où le terme « clé publique »). En général, un message m n'est pas récupérable à partir de sa signature sigi(m). Afin de traiter virtuellement avec des signatures numériques qui satisfont à la propriété de « récupérabilité » conceptuellement pratique (c'est-à-dire, pour garantir que le signataire et le message sont facilement calculables à partir d'une signature, nous définissons SIGpki(m) = (je, m, sigpki(m)) et SIGi(m) = (i, m, sigi(m)), si pki est clair. Signature numérique unique. Nous considérons également des schémas de signature numérique (G, S, V ) satisfaisant les propriété supplémentaire suivante. 3. Unicité. Il est difficile de trouver des chaînes pk′, m, s et s′ telles que s ̸= s′ et V (pk′, m, s) = V (pk′, m, s′) = 1. (Notez que la propriété d'unicité s'applique également aux chaînes pk′ qui ne sont pas légitimement générées. clés publiques. Mais en particulier, la propriété d'unicité implique que, si l'on utilisait la générateur de clé spécifié G pour calculer une clé publique pk avec une clé secrète correspondante sk, et connaissant donc sk, il lui serait également essentiellement impossible de trouver deux éléments numériques différents. signatures d'un même message relatif à pk.) Remarques • Des signatures uniques aux fonctions aléatoires vérifiables. Par rapport à un numérique schéma de signature avec la propriété d'unicité, l'application m \(\to\) H (sigi (m)) associe à chaque chaîne possible m, une chaîne unique de 256 bits sélectionnée au hasard, et l'exactitude de cette information la cartographie peut être prouvée étant donné la signature sigi(m). Autrement dit, un schéma idéal de hashing et de signature numérique satisfaisant essentiellement la propriété d'unicité fournir une implémentation élémentaire d'une fonction aléatoire vérifiable, telle qu'introduit et par Micali, Rabin et Vadhan [27]. (Leur mise en œuvre initiale était forcément plus complexe, puisqu'ils ne s'appuyaient pas sur un hashing idéal.)• Trois besoins différents en matière de signatures numériques. Dans Algorand, un utilisateur s'appuie sur le numérique signatures pour (1) Authentifier mes propres paiements. Dans cette application, les clés peuvent être « à long terme » (c'est-à-dire utilisées pour signer de nombreux messages sur une longue période) et proviennent d'un schéma de signature ordinaire. (2) Générer des informations d'identification prouvant que j'ai le droit d'agir à certaines étapes d'un tour r. Ici, les clés peuvent être à long terme, mais doivent provenir d'un schéma satisfaisant la propriété d'unicité. (3) Authentifier le message que j'envoie à chaque étape dans laquelle il agit. Ici, les clés doivent être éphémères (c'est-à-dire détruits après leur première utilisation), mais peuvent provenir d'un schéma de signature ordinaire. • Une simplification à faible coût. Pour plus de simplicité, nous envisageons que chaque utilisateur dispose d'une seule clé à long terme. En conséquence, une telle clé doit provenir d’un schéma de signature ayant l’unicité propriété. Une telle simplicité a un faible coût de calcul. Généralement, en fait, des données numériques uniques les signatures sont légèrement plus coûteuses à produire et à vérifier que les signatures ordinaires. 2.2 Le grand livre public idéalisé Algorand tente d'imiter le système de paiement suivant, basé sur un grand livre public idéalisé. 1. Le statut initial. L'argent est associé à des clés publiques individuelles (générées de manière privée et appartenant aux utilisateurs). Laisser pk1, . . . , pkj les clés publiques initiales et a1, . . . , aj leurs respectifs montants initiaux d'unités monétaires, alors le statut initial est S0 = (pk1, a1), . . . , (pkj, aj) , qui est supposé être de notoriété publique dans le système. 2. Paiements. Soit pk une clé publique ayant actuellement une unité monétaire \(\geq\)0, pk′ une autre clé publique clé, et a′ un nombre non négatif pas supérieur à a. Ensuite, un paiement (valide) \(\wp\)est un paiement numérique signature, relative à pk, spécifiant le transfert d'unités monétaires a′ de pk à pk′, ensemble avec quelques informations complémentaires. En symboles, \(\wp\)= SIGpk(pk, pk′, une′, I, H(I)), où I représente toute information supplémentaire jugée utile mais non sensible (par exemple, l'heure informations et un identifiant de paiement), ainsi que toute information supplémentaire jugée sensible (par exemple, le motif du paiement, éventuellement l'identité des propriétaires du pk et du pk′, etc.). On appelle pk (ou son propriétaire) le payeur, chaque pk′ (ou son propriétaire) le bénéficiaire et a′ le le montant du paiement \(\wp\). Adhésion gratuite via les paiements. Notez que les utilisateurs peuvent rejoindre le système quand ils le souhaitent en générer leurs propres paires de clés publiques/secrètes. En conséquence, la clé publique pk′ qui apparaît dans le paiement \(\wp\)ci-dessus peut être une clé publique nouvellement générée qui n'a jamais « possédé » d'argent avant. 3. Le grand livre magique. Dans le système idéalisé, tous les paiements sont valides et apparaissent dans un format infalsifiable. liste L de séries de paiements « affichées dans le ciel » à la vue de tous : L = PAYER 1, PAYER 2, . . . ,Chaque bloc PAY r+1 est constitué de l'ensemble de tous les paiements effectués depuis l'apparition du bloc PAYER r. Dans le système idéal, un nouveau bloc apparaît après un laps de temps fixe (ou fini). Discussion. • Paiements plus généraux et résultats de transactions non dépensés. Plus généralement, si une clé publique pk possède un montant a, alors un paiement valide \(\wp\)de pk peut transférer les montants a′ 1, un' 2, . . ., respectivement aux touches pk′ 1, pk' 2, . . ., tant que P j'ai j \(\leq\)a. Dans Bitcoin et les systèmes similaires, l'argent détenu par une clé publique pk est séparé en montants, et un paiement \(\wp\)effectué par pk doit transférer un tel montant séparé a dans son intégralité. Si pk souhaite transférer seulement une fraction a′ < a de a vers une autre clé, alors il doit également transférer la solde, le résultat de la transaction non dépensé, vers une autre clé, éventuellement pk lui-même. Algorand fonctionne également avec des clés ayant des montants séparés. Cependant, afin de se concentrer sur nouveaux aspects de Algorand, il est conceptuellement plus simple de s'en tenir à nos formes de paiement les plus simples et des clés auxquelles est associé un montant unique. • Statut actuel. Le schéma idéalisé ne fournit pas directement d’informations sur la situation actuelle. statut du système (c’est-à-dire le nombre d’unités monétaires de chaque clé publique). Ces informations est déductible du Magic Ledger. Dans le système idéal, un utilisateur actif stocke et met à jour en permanence les dernières informations d'état, sinon il devrait le reconstruire, soit à partir de zéro, soit à partir de la dernière fois qu'il l'a fait. l'a calculé. (Dans la prochaine version de cet article, nous augmenterons Algorand afin de permettre son utilisateurs de reconstruire l'état actuel de manière efficace.) • Sécurité et « Confidentialité ». Les signatures numériques garantissent que personne ne peut falsifier un paiement en un autre utilisateur. Dans un paiement \(\wp\), les clés publiques et le montant ne sont pas cachés, mais les clés sensibles informations que je suis. En effet, seul H(I) apparaît dans \(\wp\), et comme H est une fonction hash idéale, H(I) est une valeur aléatoire de 256 bits, et il n'y a donc aucun moyen de savoir ce que j'étais meilleur qu'en simplement le deviner. Pourtant, pour prouver ce que j'étais (par exemple, pour prouver la raison du paiement), le le payeur peut simplement révéler I. L'exactitude du I révélé peut être vérifiée en calculant H(I) et comparer la valeur résultante avec le dernier élément de \(\wp\). En fait, puisque H est résilient aux collisions, il est difficile de trouver une deuxième valeur I′ telle que H(I) = H(I′). 2.3 Notions et notations de base Clés, utilisateurs et propriétaires Sauf indication contraire, chaque clé publique (« clé » en abrégé) est à long terme et relative à un schéma de signature numérique avec la propriété d'unicité. Une clé publique que je rejoint le système lorsqu'une autre clé publique j déjà présente dans le système effectue un paiement à i. Pour la couleur, nous personnifions les clés. Nous appelons une clé i un «il», disons que je suis honnête, que j'envoie et reçoit des messages, etc. L'utilisateur est un synonyme de clé. Quand on veut distinguer une clé de la personne à qui elle appartient, nous utilisons respectivement les termes « clé numérique » et « propriétaire ». Systèmes sans autorisation et avec autorisation. Un système est sans autorisation, si une clé numérique est gratuite pour adhérer à tout moment et un propriétaire peut posséder plusieurs clés numériques ; et c'est autorisé, sinon.Représentation unique Chaque objet dans Algorand a une représentation unique. En particulier, chaque ensemble {(x, y, z, . . .) : x \(\in\)X, y \(\in\)Y, z \(\in\)Z, . . .} est ordonné d'une manière prédéfinie : par exemple, en premier lexicographiquement en x, puis en y, etc. Horloges à même vitesse Il n’y a pas d’horloge globale : chaque utilisateur a sa propre horloge. Horloges utilisateur Il n’est en aucun cas nécessaire de les synchroniser. Nous supposons cependant qu’ils ont tous la même vitesse. Par exemple, lorsqu'il est 12h selon l'horloge d'un utilisateur i, il peut être 14h30 selon l'horloge d'un autre utilisateur j, mais quand il sera 12h01 selon l'horloge de i, il sera 2h31 selon à l'horloge de j. Autrement dit, « une minute est la même (suffisamment, essentiellement la même) pour chaque utilisateur ». Tours Algorand est organisé en unités logiques, r = 0, 1, . . ., appelés rondes. Nous utilisons systématiquement des exposants pour indiquer les tours. Pour indiquer qu'une quantité non numérique Q (par exemple, une chaîne, une clé publique, un ensemble, une signature numérique, etc.) fait référence à un tour r, on écrit simplement Qr. Ce n'est que lorsque Q est un véritable nombre (par opposition à une chaîne binaire interprétable comme un nombre) que on écrit Q(r), de sorte que le symbole r ne puisse pas être interprété comme l'exposant de Q. Au (début d'un) tour r > 0, l'ensemble de toutes les clés publiques est PKr et l'état du système est Sr = n je, un(r) je , . . . : je \(\in\)PKro , où un(r) je est le montant d’argent disponible pour la clé publique i. Notez que PKr est déductible de Sr, et que Sr peut également spécifier d'autres composants pour chaque clé publique i. Pour le tour 0, PK0 est l'ensemble des clés publiques initiales et S0 est l'état initial. PK0 et S0 sont supposés être de notoriété publique dans le système. Pour simplifier, au début du tour r, donc sont PK1, . . . , PKr et S1, . . . , Sr. Dans un tour r, l'état du système passe de Sr à Sr+1 : symboliquement, Tour r : Sr −→Sr+1. Paiements Dans Algorand, les utilisateurs effectuent continuellement des paiements (et les diffusent de la manière décrit à la sous-section 2.7). Un paiement \(\wp\)d'un utilisateur i \(\in\)PKr a le même format et la même sémantique comme dans le Système Idéal. A savoir, \(\wp\)= SIGi(je, je′, une, je, H(I)) . Le paiement \(\wp\)est individuellement valable à un tour r (est un paiement rond-r, en abrégé) si (1) son montant a est inférieur ou égal à a(r) i , et (2) il n’apparaît dans aucun ensemble de paie officiel PAY r′ pour r′ < r. (Comme expliqué ci-dessous, la deuxième condition signifie que \(\wp\)n’est pas encore entré en vigueur. Un ensemble de paiements ronds de i est collectivement valable si la somme de leurs montants est au plus a(r) je. Ensembles de paie Un ensemble de paiements rond-r P est un ensemble de paiements ronds-r tel que, pour chaque utilisateur i, les paiements de je dans P (peut-être aucun) sont collectivement valides. L’ensemble de tous les ensembles de paiements du tour r est PAY(r). Un rond-r le ensemble de pays P est maximal si aucun sur-ensemble de P n'est un ensemble de pays rond-r. Nous suggérons en effet qu'un paiement \(\wp\) spécifie également un tour \(\rho\), \(\wp\)= SIGi(\(\rho\), i, i′, a, I, H(I)) , et ne peut être valide à aucun tour en dehors de [\(\rho\), \(\rho\) + k], pour un entier fixe non négatif k.4 4Cela simplifie la vérification si \(\wp\)est devenu « efficace » (c’est-à-dire que cela simplifie la détermination si certains éléments de rémunération PAY r contient \(\wp\). Lorsque k = 0, si \(\wp\)= SIGi(r, i, i′, a, I, H(I)) et \(\wp\)/\(\in\)PAY r, alors je dois soumettre à nouveau \(\wp\).Ensembles de pays officiels Pour chaque tour r, Algorand sélectionne publiquement (de la manière décrite plus loin) un seul ensemble de paiements (éventuellement vide), PAY r, l'ensemble de paiements officiel du tour. (Essentiellement, PAY r représente les paiements ronds qui ont « réellement » eu lieu.) Comme dans le système idéal (et Bitcoin), (1) le seul moyen pour un nouvel utilisateur j d'entrer dans le système doit être destinataire d'un paiement appartenant au système de paie officiel PAY r d'un tour r donné ; et (2) PAY r détermine le statut du tour suivant, Sr+1, à partir de celui du tour en cours, Sr. Symboliquement, PAYER r : Sr −→Sr+1. Plus précisément, 1. l'ensemble des clés publiques du tour r + 1, PKr+1, est constitué de l'union de PKr et de l'ensemble de tous les clés du bénéficiaire qui apparaissent, pour la première fois, dans les paiements de PAY r ; et 2. la somme d'argent a(r+1) je qu'un utilisateur que je possède au tour r + 1 est la somme de ai(r) — c'est-à-dire le montant d'argent que je possédais lors du tour précédent (0 si i ̸\(\in\)PKr) - et la somme des montants payé à moi selon les paiements de PAY r. En somme, comme dans le Système Idéal, chaque statut Sr+1 est déductible de l'historique de paiement précédent : PAYER 0, . . . , PAYER r. 2.4 Blocs et blocs éprouvés Dans Algorand0, le bloc Br correspondant à un tour r précise : r lui-même ; l'ensemble des paiements de tour r, PAYER r; une quantité Qr, à expliquer, et le hash du bloc précédent, H(Br−1). Ainsi, à partir d'un bloc fixe B0, nous avons un blockchain traditionnel : B1 = (1, PAYER 1, Q0, H(B0)), B2 = (2, PAYER 2, Q1, H(B1)), B3 = (3, PAYER 3, Q2, H(B2)), . . . Dans Algorand, l'authenticité d'un bloc est en fait garantie par une information distincte, un « certificat de bloc » CERT r, qui transforme Br en un bloc éprouvé, Br. Le Magic Ledger, donc, est mis en œuvre par la séquence des blocs éprouvés, B1, B2, . . . Discussion Comme nous le verrons, CERT r est constitué d'un ensemble de signatures numériques pour H(Br), celles d'un majorité des membres de SV r, accompagnée d'une preuve que chacun de ces membres appartient effectivement à SV r. Nous pourrions bien sûr inclure les certificats CERT r dans les blocs eux-mêmes, mais nous conceptuellement plus propre pour le garder séparé.) Dans Bitcoin, chaque bloc doit satisfaire une propriété spéciale, c'est-à-dire doit « contenir une solution d'un crypto puzzle », ce qui rend la génération de blocs gourmande en calcul et les deux fourches sont inévitables et pas rare. En revanche, le blockchain de Algorand présente deux avantages principaux : il est généré avec calcul minimal, et il ne se produira pas avec une probabilité extrêmement élevée. Chaque bloc Bi est final en toute sécurité dès qu'il entre dans le blockchain.2.5 Probabilité de défaillance acceptable Pour analyser la sécurité de Algorand, nous spécifions la probabilité, F, avec laquelle nous sommes prêts à accepter que quelque chose ne va pas (par exemple, qu’un ensemble de vérificateurs SV r n’a pas de majorité honnête). Comme dans le cas de la longueur de sortie de la fonction cryptographique hash H, F est également un paramètre. Mais, comme dans ce cas, nous trouvons utile de fixer F à une valeur concrète, afin d’obtenir une approche plus intuitive. comprendre qu'il est effectivement possible, en Algorand, de jouir simultanément d'une sécurité suffisante et une efficacité suffisante. Pour souligner que F est un paramètre qui peut être réglé à volonté, dans le premier et des deuxièmes modes de réalisation que nous définissons respectivement F = 10−12 et F = 10−18 . Discussion Notez que 10−12 est en réalité inférieur à un sur mille milliards, et nous pensons qu'un tel le choix de F est adéquat dans notre application. Soulignons que 10−12 n'est pas la probabilité avec lequel l'Adversaire peut falsifier les paiements d'un utilisateur honnête. Tous les paiements sont numériques signé, et donc, si les signatures numériques appropriées sont utilisées, la probabilité de falsifier un paiement est bien inférieur à 10−12, et est, en fait, essentiellement égal à 0. Le mauvais événement que nous sommes prêts à tolérer avec probabilité F est que les fourches blockchain de Algorand. Notez que, avec notre réglage de F et d'une minute, un fork devrait se produire dans le blockchain de Algorand aussi rarement que (environ) une fois tous les 1,9 millions d’années. En revanche, dans Bitcoin, une fourchette se produit assez souvent. Une personne plus exigeante pourra régler F à une valeur inférieure. A cette fin, dans notre deuxième mode de réalisation nous envisageons de régler F à 10−18. Notez que, en supposant qu'un bloc soit généré chaque seconde, 1018 est le nombre estimé de secondes nécessaires à l'Univers jusqu'à présent : du Big Bang à aujourd'hui le temps. Ainsi, avec F = 10−18, si un bloc est généré en une seconde, il faut s'attendre pour l'âge de l'Univers pour voir une fourchette. 2.6 Le modèle contradictoire Algorand est conçu pour être sécurisé dans un modèle très conflictuel. Expliquons-nous. Utilisateurs honnêtes et malveillants Un utilisateur est honnête s'il suit toutes les instructions de son protocole, et est parfaitement capable d’envoyer et de recevoir des messages. Un utilisateur est malveillant (c'est-à-dire byzantin, dans le sens langage de l'informatique distribuée) s'il peut s'écarter arbitrairement des instructions qui lui sont prescrites. L'adversaire L'Adversaire est un algorithme efficace (techniquement en temps polynomial), personnifié par la couleur, qui peut immédiatement rendre malveillant n'importe quel utilisateur de son choix, à tout moment (sous réserve de uniquement jusqu'à une limite supérieure au nombre d'utilisateurs qu'il peut corrompre). L’Adversaire contrôle totalement et coordonne parfaitement tous les utilisateurs malveillants. Il prend toutes les mesures en leur nom, y compris la réception et l'envoi de tous leurs messages, et peut les laisser s'écarter de leurs instructions prescrites de manière arbitraire. Ou il peut simplement isoler un utilisateur corrompu envoyant et recevoir des messages. Précisons que personne d'autre n'apprend automatiquement qu'un utilisateur i est malveillant, bien que ma méchanceté puisse transparaître dans les actions que l’Adversaire lui fait entreprendre. Cependant, ce puissant adversaire, • Ne dispose pas d'une puissance de calcul illimitée et ne peut pas réussir à forger le numérique signature d'un utilisateur honnête, sauf avec une probabilité négligeable ; et• Ne peut en aucun cas interférer avec les échanges de messages entre utilisateurs honnêtes. De plus, sa capacité à attaquer des utilisateurs honnêtes est limitée par l’une des hypothèses suivantes. Honnêteté, majorité de l'argent Nous considérons un continuum de majorité honnête de l'argent (HMM) hypothèses : à savoir, pour chaque entier non négatif k et réel h > 1/2, HHMk > h : les utilisateurs honnêtes à chaque tour r possédaient une fraction supérieure à h de tout l'argent du jeu le système au tour r −k. Discussion. En supposant que tous les utilisateurs malveillants coordonnent parfaitement leurs actions (comme s'ils étaient contrôlés par une seule entité, l'Adversaire) est une hypothèse plutôt pessimiste. Coordination parfaite entre eux aussi de nombreux individus est difficile à réaliser. Peut-être que la coordination n'a lieu qu'au sein de groupes distincts de joueurs malveillants. Mais comme on ne peut pas être sûr du niveau de coordination des utilisateurs malveillants peut en profiter, mieux vaut prévenir que guérir. Supposer que l’Adversaire puisse corrompre secrètement, dynamiquement et immédiatement les utilisateurs est également pessimiste. Après tout, en réalité, prendre le contrôle total des opérations d’un utilisateur devrait prendre un certain temps. L'hypothèse HMMk > h implique, par exemple, que si un cycle (en moyenne) est mis en œuvre en une minute, la majorité de l'argent d'un tour donné restera entre des mains honnêtes pendant au moins deux heures, si k = 120, et au moins une semaine, si k = 10 000. Notez que les hypothèses HMM et la précédente majorité honnête de la puissance de calcul les hypothèses sont liées dans le sens où, puisque la puissance de calcul peut être achetée avec de l'argent, si les utilisateurs malveillants possèdent la plus grande partie de l’argent, ils peuvent alors obtenir l’essentiel de la puissance de calcul. 2.7 Le modèle de communication Nous envisageons la propagation des messages – c’est-à-dire les « potins entre pairs »5 – comme le seul moyen de communications. Hypothèse temporaire : livraison en temps opportun des messages sur l'ensemble du réseau. Pour Dans la majeure partie de cet article, nous supposons que chaque message propagé atteint presque tous les utilisateurs honnêtes. en temps opportun. Nous supprimerons cette hypothèse dans la section 10, où nous traiterons des réseaux cloisons, qu’elles soient naturelles ou provoquées par des adversaires. (Comme nous le verrons, nous supposons seulement livraison en temps opportun des messages au sein de chaque composant connecté du réseau.) Un moyen concret de capturer la livraison en temps opportun des messages propagés (dans l'ensemble du réseau) est ce qui suit : Pour toute accessibilité \(\rho\) > 95% et taille de message \(\mu\) \(\in\)Z+, il existe \(\lambda\) \(\rho\),\(\mu\) tel que, si un utilisateur honnête propage un message m de \(\mu\)-octets au temps t, alors m atteint, au temps t + \(\lambda\) \(\rho\),\(\mu\), au moins une fraction \(\rho\) des utilisateurs honnêtes. 5Essentiellement, comme dans Bitcoin, lorsqu'un utilisateur propage un message m, chaque utilisateur actif i reçoit m pour la première fois, sélectionne de manière aléatoire et indépendante un nombre suffisamment restreint d'utilisateurs actifs, ses «voisins», auxquels il transmet m, peut-être jusqu'à ce qu'il reçoive un accusé de réception de leur part. La propagation de m se termine lorsqu'aucun utilisateur ne reçoit m pour la première fois.La propriété ci-dessus ne peut cependant pas prendre en charge notre protocole Algorand, sans envisager explicitement et séparément un mécanisme permettant d'obtenir le dernier blockchain — par un autre utilisateur/dépôt/etc. En fait, pour construire un nouveau bloc Br, non seulement un ensemble approprié de vérificateurs doit recevoir en temps opportun le round-r. messages, mais aussi les messages des tours précédents, afin de connaître Br−1 et tous les autres blocs, ce qui est nécessaire pour déterminer si les paiements en Br sont valides. Ce qui suit l’hypothèse suffit. Hypothèse de propagation des messages (MP) : Pour tout \(\rho\) > 95% et \(\mu\) \(\in\)Z+, il existe \(\lambda\) \(\rho\),\(\mu\) tel que, pour tout instant t et tous les messages de \(\mu\)-octets m propagés par un utilisateur honnête avant t −\(\lambda\) \(\rho\),\(\mu\), m est reçu, à l’instant t, par au moins une fraction \(\rho\) des utilisateurs honnêtes. Le protocole Algorand ′ demande en fait à chacun d'un petit nombre d'utilisateurs (c'est-à-dire les vérificateurs d'un étape donnée d'un tour dans Algorand ′, pour propager un message distinct d'une (petite) taille prescrite, et nous devons limiter le temps requis pour accomplir ces instructions. Nous le faisons en enrichissant le député hypothèse comme suit. Pour tout n, \(\rho\) > 95%, et \(\mu\) \(\in\)Z+, il existe \(\lambda\)n,\(\rho\),\(\mu\) tel que, pour tout instant t et tout \(\mu\)-octet messages m1, . . . , mn, chacun propagé par un utilisateur honnête avant t −\(\lambda\)n,\(\rho\),\(\mu\), m1, . . . , mn sont reçus, au temps t, par au moins une fraction \(\rho\) des utilisateurs honnêtes. Remarque • L'hypothèse ci-dessus est délibérément simple, mais également plus solide que ce qui est nécessaire dans notre article.6 • Par souci de simplicité, nous supposons \(\rho\) = 1, et nous ne mentionnons donc pas \(\rho\). • Nous supposons avec pessimisme que, à condition qu'il ne viole pas l'hypothèse MP, l'Adversaire contrôle totalement la livraison de tous les messages. Surtout, sans se faire remarquer des honnêtes gens utilisateurs, l'Adversaire peut décider arbitrairement quel joueur honnête reçoit quel message quand, et accélérer arbitrairement la livraison de n’importe quel message qu’il souhaite.7
Giao thức BA BA⋆trong bối cảnh truyền thống
Như đã nhấn mạnh, thỏa thuận Byzantine là thành phần chính của Algorand. Quả thực là thông qua việc sử dụng giao thức BA sao cho Algorand không bị ảnh hưởng bởi các nhánh. Tuy nhiên, để an toàn chống lại chúng ta Đối thủ mạnh mẽ, Algorand phải dựa vào giao thức BA đáp ứng khả năng thay thế người chơi mới hạn chế. Ngoài ra, để Algorand hoạt động hiệu quả, giao thức BA như vậy phải rất hiệu quả. Các giao thức BA lần đầu tiên được xác định cho một mô hình truyền thông lý tưởng, hoàn chỉnh đồng bộ mạng (mạng SC). Mô hình như vậy cho phép thiết kế và phân tích các giao thức BA đơn giản hơn. 6Với tỷ lệ phần trăm trung thực h và xác suất thất bại chấp nhận được F, Algorand tính toán giới hạn trên, N, đến số lượng thành viên tối đa của người xác minh trong một bước. Vì vậy, giả định MP chỉ cần giữ với n \(\leq\)N. Ngoài ra, như đã nêu, giả định MP vẫn đúng cho dù có bao nhiêu tin nhắn khác có thể được truyền đi cùng với của mj. Tuy nhiên, như chúng ta sẽ thấy, trong Algorand tin nhắn được truyền đi trong thời gian cơ bản không chồng chéo các khoảng thời gian trong đó một khối đơn được truyền đi hoặc nhiều nhất là N trình xác minh truyền một khối nhỏ (ví dụ: 200B) tin nhắn. Vì vậy, chúng ta có thể trình bày lại giả định MP theo cách yếu hơn nhưng cũng phức tạp hơn. 7Ví dụ, anh ta có thể ngay lập tức biết được tin nhắn được gửi bởi những người chơi trung thực. Vì vậy, một người dùng độc hại i′, là ai được yêu cầu truyền bá một tin nhắn đồng thời với một người dùng trung thực i, luôn có thể chọn tin nhắn của riêng mình m′ dựa trên thông điệp m thực sự được truyền bá bởi i. Khả năng này liên quan đến việc gấp rút, theo cách nói của tính toán phân tán. văn học.Theo đó, trong phần này, chúng tôi giới thiệu giao thức BA mới, BA⋆, cho mạng SC và bỏ qua vấn đề về khả năng thay thế cầu thủ hoàn toàn. Giao thức BA⋆ là sự đóng góp có giá trị riêng biệt. Thật vậy, nó là giao thức BA mật mã hiệu quả nhất cho các mạng SC được biết đến cho đến nay. Để sử dụng nó trong giao thức Algorand của chúng tôi, chúng tôi sửa đổi BA⋆ một chút để phù hợp với sự khác biệt của chúng tôi mô hình và bối cảnh giao tiếp, nhưng hãy đảm bảo, trong phần X, làm nổi bật cách sử dụng BA⋆ trong giao thức thực tế của chúng tôi Algorand ′. Chúng tôi bắt đầu bằng cách nhớ lại mô hình mà BA⋆ vận hành và khái niệm về thỏa thuận Byzantine. 3.1 Mạng hoàn chỉnh đồng bộ và đối thủ phù hợp Trong mạng SC có một đồng hồ chung, tích tắc ở mỗi thời điểm tích phân r = 1, 2, . . . Tại mỗi thời điểm chẵn bấm vào r, mỗi người chơi i sẽ gửi ngay lập tức và đồng thời một nhắn tin cho ông i,j (có thể là tin nhắn trống) tới mỗi người chơi j, bao gồm cả chính anh ta. Mỗi ông tôi,j được nhận tại thời điểm người chơi j bấm vào r + 1, kèm theo danh tính của người gửi i. Một lần nữa, trong giao thức giao tiếp, người chơi sẽ trung thực nếu anh ta tuân theo mọi quy định của mình. hướng dẫn, và độc hại khác. Tất cả những người chơi độc hại đều được kiểm soát hoàn toàn và hoàn hảo được phối hợp bởi Đối thủ, đặc biệt, kẻ này sẽ ngay lập tức nhận được tất cả các tin nhắn gửi tới những người chơi độc hại và chọn tin nhắn họ gửi. Kẻ thù có thể ngay lập tức gây hại cho bất kỳ người dùng trung thực nào mà hắn muốn vào bất kỳ lần nhấp chuột nào. anh ta muốn, chỉ tuân theo giới hạn có thể đạt được của số lượng người chơi độc hại. Đó là, Đối thủ “không thể can thiệp vào các tin nhắn đã được gửi bởi người dùng trung thực i”, điều này sẽ được giao như thường lệ. Đối thủ cũng có thêm khả năng để nhìn thấy ngay lập tức, ở mỗi hiệp chẵn, tin nhắn mà những người chơi trung thực hiện tại gửi và ngay lập tức sử dụng thông tin này để chọn các tin nhắn mà người chơi độc hại gửi cùng lúc đánh dấu. Bình luận • Quyền lực của đối thủ. Các thiết lập ở trên là rất bất lợi. Thật vậy, trong thỏa thuận Byzantine văn học, nhiều bối cảnh ít đối nghịch hơn. Tuy nhiên, một số cài đặt đối nghịch hơn có cũng được xem xét, trong đó Kẻ thù, sau khi nhìn thấy tin nhắn được gửi bởi một người chơi trung thực, tôi tại một thời điểm nhất định, nhấp vào r, có khả năng xóa tất cả các tin nhắn này khỏi mạng ngay lập tức tôi bị hỏng, chọn tin nhắn mà tôi hiện đang gửi độc hại, nhấp vào r và nhận chúng được giao như thường lệ. Sức mạnh dự kiến của Kẻ thù phù hợp với hắn trong bối cảnh của chúng ta. • Trừu tượng vật lý. Mô hình truyền thông dự kiến trừu tượng hóa một mô hình vật lý hơn, trong đó mỗi cặp người chơi (i, j) được liên kết bằng một đường dây liên lạc riêng và riêng li,j. Nghĩa là, không ai khác có thể tiêm nhiễm, can thiệp hoặc lấy thông tin về các tin nhắn được gửi qua lý, j. Cách duy nhất để Kẻ thù có quyền truy cập vào li,j là làm hỏng i hoặc j. • Quyền riêng tư và xác thực. Trong mạng SC, quyền riêng tư và xác thực tin nhắn được đảm bảo bằng giả định. Ngược lại, trong mạng truyền thông của chúng ta, nơi các thông điệp được truyền đi từ ngang hàng đến ngang hàng, xác thực được đảm bảo bằng chữ ký số và quyền riêng tư là không tồn tại. Do đó, để áp dụng giao thức BA⋆ vào cài đặt của chúng tôi, mỗi tin nhắn được trao đổi phải được ký điện tử (xác định thêm trạng thái mà nó được gửi). May mắn thay, các giao thức BA mà chúng tôi hãy cân nhắc việc sử dụng trong Algorand không yêu cầu quyền riêng tư về tin nhắn.3.2 Khái niệm về Hiệp định Byzantine Khái niệm về thỏa thuận Byzantine được Pease Shostak và Lamport [31] đưa ra cho trường hợp nhị phân, nghĩa là khi mỗi giá trị ban đầu bao gồm một bit. Tuy nhiên, nó đã nhanh chóng được mở rộng thành các giá trị ban đầu tùy ý. (Xem khảo sát của Fischer [16] và Chor và Dwork [10].) Bởi BA giao thức, chúng tôi muốn nói đến một giao thức có giá trị tùy ý. Định nghĩa 3.1. Trong mạng đồng bộ, giả sử P là giao thức n-player, có tập hợp trình phát chung kiến thức của người chơi, t là số nguyên dương sao cho n \(\geq\)2t + 1. Ta nói P là một giá trị tùy ý (tương ứng, nhị phân) (n, t)-Giao thức thỏa thuận Byzantine có tính đúng đắn \(\sigma\) \(\in\)(0, 1) nếu, với mọi tập hợp giá trị V không chứa ký hiệu đặc biệt \(\bot\) (tương ứng với V = {0, 1}), trong một việc thực thi trong đó tối đa t người chơi là độc hại và trong đó mọi người chơi tôi đều bắt đầu bằng một giá trị ban đầu vi \(\in\)V , mọi người chơi trung thực j dừng lại với xác suất 1, xuất ra giá trị outi \(\in\)V \(\cup\){\(\bot\)} sao cho thỏa mãn, với xác suất ít nhất là \(\sigma\), hai điều kiện sau: 1. Thỏa thuận: Tồn tại out \(\in\)V \(\cup\){\(\bot\)} sao cho outi = out đối với tất cả những người chơi trung thực i. 2. Tính nhất quán: nếu, với một giá trị v \(\in\)V nào đó, vi = v đối với tất cả những người chơi trung thực, thì out = v. Chúng ta gọi out là đầu ra của P và mỗi outi là đầu ra của người chơi i. 3.3 Ký hiệu BA # Trong giao thức BA của chúng tôi, người chơi được yêu cầu đếm số lượng người chơi đã gửi cho mình một tin nhắn nhất định trong một bước nhất định. Theo đó, với mỗi giá trị v có thể được gửi,
s
tôi (v) (hoặc chỉ #i(v) khi s rõ ràng) là số người chơi j mà tôi đã nhận được v ở bước s. Hãy nhớ rằng người chơi i nhận được chính xác một tin nhắn từ mỗi người chơi j, nếu số lượng khi đó người chơi là n với mọi i và s, P v #s tôi(v) = n. 3,4 Giao thức BA nhị phân BBA⋆ Trong phần này chúng tôi trình bày một giao thức BA nhị phân mới, BBA⋆, dựa trên tính trung thực của nhiều hơn 2/3 số người chơi và diễn ra rất nhanh: bất kể những người chơi độc hại có thể làm gì, mỗi lần thực hiện vòng lặp chính của nó sẽ khiến người chơi đồng ý với xác suất 1/3. Mỗi người chơi có khóa chung của sơ đồ chữ ký số đáp ứng chữ ký duy nhất tài sản. Vì giao thức này được thiết kế để chạy trên mạng hoàn chỉnh đồng bộ nên không có cần một người chơi ký tên vào từng tin nhắn của anh ta. Chữ ký số được sử dụng để tạo ra bit ngẫu nhiên đủ phổ biến ở Bước 3. (Trong Algorand, chữ ký số cũng được sử dụng để xác thực tất cả các tin nhắn khác.) Giao thức yêu cầu thiết lập tối thiểu: một chuỗi ngẫu nhiên chung r, độc lập với chuỗi của người chơi. phím. (Trong Algorand, r thực tế được thay thế bằng đại lượng Qr.) Giao thức BBA⋆ là một vòng lặp gồm 3 bước, trong đó người chơi liên tục trao đổi các giá trị Boolean và những người chơi khác nhau có thể thoát khỏi vòng lặp này vào những thời điểm khác nhau. Người chơi i thoát khỏi vòng lặp này bằng cách truyền bá, ở một bước nào đó, có giá trị đặc biệt 0∗ hoặc giá trị đặc biệt 1∗, từ đó hướng dẫn tất cả người chơi “giả vờ” họ lần lượt nhận được 0 và 1 từ i trong tất cả các bước trong tương lai. (Nói cách khác: giả sửrằng tin nhắn cuối cùng mà người chơi j nhận được từ người chơi khác i là hơi b. Sau đó, ở bất kỳ bước nào trong đó anh ta không nhận được tin nhắn nào từ tôi, j làm như tôi đã gửi cho anh ta một bit b.) Giao thức sử dụng bộ đếm \(\gamma\), biểu thị số lần vòng lặp 3 bước của nó được thực thi. Khi bắt đầu BBA⋆, \(\gamma\) = 0. (Người ta có thể coi \(\gamma\) là bộ đếm toàn cục, nhưng thực tế nó được tăng lên bởi mỗi người chơi mỗi khi vòng lặp được thực thi.) Có n \(\geq\)3t + 1, trong đó t là số lượng người chơi độc hại tối đa có thể. Một hệ nhị phân chuỗi x được xác định bằng số nguyên có biểu diễn nhị phân (có thể có số 0 ở đầu) là x; và lsb(x) biểu thị bit có ý nghĩa nhỏ nhất của x. Giao thức BBA⋆ (Giao tiếp) Bước 1. [Bước Coin-Fixed-To-0] Mỗi người chơi tôi gửi bi. 1.1 Nếu #1 i(0) \(\geq\)2t+1 thì i đặt bi = 0, gửi 0∗, xuất ra outi = 0, và HALTS. 1.2 Nếu #1 i(1) \(\geq\)2t+1 thì i đặt bi = 1. 1.3 Ngược lại tôi đặt bi = 0. (Giao tiếp) Bước 2. [Bước cố định bằng tiền xu thành 1] Mỗi người chơi tôi gửi bi. 2.1 Nếu #2 i(1) \(\geq\)2t+1 thì i đặt bi = 1, gửi 1∗, đầu ra outi = 1, và HALTS. 2.2 Nếu #2 i(0) \(\geq\)2t+1 thì tôi đặt bi = 0. 2.3 Ngược lại tôi đặt bi = 1. (Giao tiếp) Bước 3. [Bước lật xu thật] Mỗi người chơi tôi gửi bi và SIGi(r, \(\gamma\)). 3.1 Nếu #3 i(0) \(\geq\)2t+1 thì i đặt bi = 0. 3.2 Nếu #3 i(1) \(\geq\)2t+1 thì i đặt bi = 1. 3.3 Ngược lại, giả sử Si = {j \(\in\)N người đã gửi cho tôi một tin nhắn thích hợp ở bước 3 này }, tôi đặt bi = c \(\triangleq\)lsb(minj\(\in\)Si H(SIGi(r, \(\gamma\)))); tăng \(\gamma\)i lên 1; và quay lại Bước 1. Định lý 3.1. Bất cứ khi nào n \(\geq\)3t + 1, BBA⋆ là giao thức nhị phân (n, t)-BA có độ chính xác 1. Chứng minh Định lý 3.1 được đưa ra trong [26]. Sự thích ứng của nó với bối cảnh của chúng tôi và khả năng thay thế người chơi của nó tài sản là mới lạ. Nhận xét lịch sử Các giao thức BA nhị phân xác suất được Ben-Or đề xuất lần đầu tiên vào năm cài đặt không đồng bộ [7]. Giao thức BBA⋆ là một phiên bản chuyển thể mới, phù hợp với bối cảnh khóa công khai của chúng tôi, của giao thức giao thức BA nhị phân của Feldman và Micali [15]. Giao thức của họ là giao thức đầu tiên hoạt động theo cách được mong đợi số bước không đổi. Nó hoạt động bằng cách để người chơi tự triển khai một loại tiền chung, một ý tưởng được đề xuất bởi Rabin, người đã triển khai nó thông qua một bên đáng tin cậy bên ngoài [32].3,5 Đồng thuận được phân loại và Nghị định thư GC Chúng ta hãy nhớ lại, đối với các giá trị tùy ý, khái niệm về sự đồng thuận yếu hơn nhiều so với thỏa thuận Byzantine. Định nghĩa 3.2. Cho P là một giao thức trong đó tập hợp tất cả người chơi là kiến thức chung và mỗi người chơi tôi biết riêng một giá trị ban đầu tùy ý v′ tôi. Chúng ta nói rằng P là một giao thức đồng thuận được xếp loại (n, t) nếu, trong mỗi lần thực hiện với n người chơi, tại hầu hết trong số đó là độc hại, mọi người chơi trung thực đều dừng xuất ra một cặp cấp giá trị (vi, gi), trong đó gi \(\in\){0, 1, 2}, sao cho thỏa mãn ba điều kiện sau: 1. Đối với tất cả người chơi trung thực i và j, |gi −gj| 1.1. 2. Với mọi người chơi trung thực i và j, gi, gj > 0 ⇒vi = vj. 3. Nếu v′ 1 = \(\cdots\) = v' n = v với một số giá trị v, thì vi = v và gi = 2 đối với tất cả những người chơi trung thực i. Ghi chú lịch sử Khái niệm về sự đồng thuận được xếp loại chỉ đơn giản bắt nguồn từ sự đồng thuận được xếp loại phát sóng, được đưa ra bởi Feldman và Micali trong [15], bằng cách củng cố quan niệm về một người thập tự chinh thỏa thuận, do Dolev giới thiệu [12] và được cải tiến bởi Turpin và Coan [33].8 Trong [15], các tác giả cũng đã cung cấp giao thức phát sóng phân loại 3 bước (n, t), phân loại, cho n \(\geq\)3t+1. Một giao thức phát sóng theo cấp độ (n, t) phức tạp hơn cho n > 2t+1 sau đó đã được tìm thấy của Katz và Koo [19]. Giao thức GC hai bước sau đây bao gồm hai bước cuối cùng của việc phân loại, được thể hiện trong ký hiệu. Để nhấn mạnh thực tế này và để phù hợp với các bước của giao thức Algorand ′ của phần 4.1, chúng tôi lần lượt gọi tên 2 và 3 các bước của GC. Giao thức GC Bước 2. Mỗi người chơi tôi gửi v′ tôi gửi tới tất cả người chơi. Bước 3. Mỗi người chơi tôi gửi cho tất cả người chơi chuỗi x khi và chỉ khi #2 i(x) \(\geq\)2t+1. Xác định đầu ra. Mỗi người chơi i xuất ra cặp (vi, gi) được tính như sau: • Nếu, với một số x, #3 i(x) \(\geq\)2t+1 thì vi = x và gi = 2. • Nếu, với một số x, #3 i(x) \(\geq\)t + 1 thì vi = x và gi = 1. • Ngược lại, vi = \(\bot\) và gi = 0. Định lý 3.2. Nếu n \(\geq\)3t + 1 thì GC là giao thức quảng bá được phân loại (n, t). Bằng chứng ngay lập tức được nối tiếp từ bản phân loại giao thức trong [15] và do đó bị bỏ qua.9 8Về bản chất, trong giao thức phát sóng được phân loại, (a) đầu vào của mỗi người chơi là danh tính của một người được phân biệt người chơi, người gửi, người có giá trị v tùy ý làm đầu vào riêng tư bổ sung và (b) đầu ra phải đáp ứng cùng tính chất 1 và 2 của sự đồng thuận được xếp loại, cộng với tính chất 3′ sau: nếu người gửi trung thực thì vi = v và gi = 2 cho tất cả người chơi trung thực i. 9Thật vậy, trong giao thức của họ, ở bước 1, người gửi gửi giá trị riêng v của mình cho tất cả người chơi và mỗi người chơi tôi cho phép v′ tôi bao gồm giá trị mà anh ấy thực sự đã nhận được từ người gửi ở bước 1.3.6 Giao thức BA⋆ Bây giờ chúng ta mô tả giao thức BA có giá trị tùy ý BA⋆thông qua giao thức BA nhị phân BBA⋆ và giao thức đồng thuận xếp loại GC. Dưới đây, giá trị ban đầu của mỗi người chơi i là v′ tôi. Giao thức BA⋆ Bước 1 và 2. Mỗi người chơi i thực thi GC, với đầu vào v′ i, để tính một cặp (vi, gi). Bước 3, . . . Mỗi người chơi tôi thực hiện BBA⋆—với đầu vào ban đầu là 0, nếu gi = 2, và 1 nếu ngược lại— vậy để tính toán bit outi. Xác định đầu ra. Mỗi người chơi i xuất ra vi, nếu outi = 0, và \(\bot\) ngược lại. Định lý 3.3. Bất cứ khi nào n \(\geq\)3t + 1, BA⋆ là một giao thức (n, t)-BA có độ đúng 1. Bằng chứng. Đầu tiên chúng ta chứng minh tính nhất quán và sau đó là sự đồng ý. Bằng chứng về sự nhất quán. Giả sử rằng, với một số giá trị v \(\in\)V , v′ i = v. Khi đó, theo tính chất 3 của sự đồng thuận được phân loại, sau khi thực hiện GC, tất cả những người chơi trung thực đều xuất ra (v, 2). Theo đó, 0 là phần đầu tiên của tất cả những người chơi trung thực khi kết thúc quá trình thực hiện BBA⋆. Vì vậy, theo Hiệp định thuộc tính của thỏa thuận Byzantine nhị phân, khi kết thúc việc thực hiện BA⋆, outi = 0 cho tất cả các giá trị trung thực người chơi. Điều này ngụ ý rằng đầu ra của mỗi người chơi trung thực i trong BA⋆is vi = v. ✷ Bằng chứng về sự đồng ý. Vì BBA⋆ là giao thức BA nhị phân nên (A) outi = 1 đối với tất cả người chơi i trung thực, hoặc (B) outi = 0 đối với tất cả người chơi i trung thực. Trong trường hợp A, tất cả những người chơi trung thực đều xuất ra \(\bot\)in BA⋆ và do đó Thỏa thuận được giữ nguyên. Bây giờ hãy xem xét trường hợp B. Trong trong trường hợp này, khi thực thi BBA⋆, bit đầu tiên của ít nhất một người chơi trung thực i là 0. (Thật vậy, nếu bit ban đầu của tất cả những người chơi trung thực là 1, sau đó, theo thuộc tính Nhất quán của BBA⋆, chúng ta sẽ có outj = 1 cho tất cả j trung thực.) Theo đó, sau khi thực hiện GC, tôi xuất ra cặp (v, 2) cho một số giá trị v. Do đó, theo tính chất 1 của sự đồng thuận đã xếp loại, gj > 0 cho tất cả người chơi trung thực j. Theo đó, bởi tính chất 2 của sự đồng thuận được xếp loại, vj = v cho tất cả những người chơi trung thực j. Điều này hàm ý rằng, vào cuối BA⋆, mọi người chơi trung thực j sẽ đưa ra v. Do đó, Thỏa thuận cũng đúng trong trường hợp B. ✷ Vì cả Tính nhất quán và Thỏa thuận đều giữ nguyên nên BA⋆ là giao thức BA có giá trị tùy ý. Ghi chú lịch sử Turpin và Coan là những người đầu tiên chứng minh rằng, với n \(\geq\)3t+1, mọi hệ nhị phân (n, t)-BA giao thức có thể được chuyển đổi thành giao thức có giá trị tùy ý (n, t)-BA. Việc giảm giá trị tùy ý Thỏa thuận Byzantine với thỏa thuận Byzantine nhị phân thông qua đồng thuận được phân loại mang tính mô đun hơn và sạch hơn và đơn giản hóa việc phân tích giao thức Algorand Algorand của chúng tôi. Tổng quát hóa BA⋆để sử dụng trong Algorand Algorand hoạt động ngay cả khi tất cả giao tiếp đều thông qua buôn chuyện. Tuy nhiên, mặc dù được trình bày trong một mạng truyền thông truyền thống và quen thuộc, để cho phép so sánh tốt hơn với tình trạng kỹ thuật đã biết và dễ hiểu hơn, giao thức BA⋆ hoạt động cũng trong các mạng buôn chuyện. Trên thực tế, trong các phương án chi tiết của Algorand, chúng tôi sẽ trình bày nó trực tiếp cho các mạng buôn chuyện. Chúng ta cũng sẽ chỉ ra rằng nó thỏa mãn khả năng thay thế cầu thủ thuộc tính quan trọng để Algorand được an toàn trong mô hình rất đối nghịch được dự kiến.
Bất kỳ giao thức nào có thể thay thế được trình phát BA đang hoạt động trong mạng truyền thông tin đồn đều có thể được sử dụng một cách an toàn trong hệ thống Algorand sáng tạo. Đặc biệt, Micali và Vaikunthanatan đã mở rộng BA⋆để hoạt động rất hiệu quả với phần lớn những người chơi trung thực. Đó giao thức cũng có thể được sử dụng trong Algorand.
Le protocole BA BA⋆dans un cadre traditionnel
Comme nous l'avons déjà souligné, l'accord byzantin est un ingrédient clé de Algorand. En effet, c'est par l'utilisation d'un protocole BA tel que Algorand n'est pas affecté par les forks. Cependant, pour être en sécurité contre notre Adversaire puissant, Algorand doit s'appuyer sur un protocole BA qui satisfait à la remplaçabilité du nouveau joueur contrainte. De plus, pour que Algorand soit efficace, un tel protocole BA doit être très efficace. Les protocoles BA ont d'abord été définis pour un modèle de communication idéalisé, synchrone complet réseaux (réseaux SC). Un tel modèle permet une conception et une analyse plus simples des protocoles BA. 6Étant donné le pourcentage honnête h et la probabilité de défaillance acceptable F, Algorand calcule une limite supérieure, N, au nombre maximum de membres de vérificateurs dans une étape. Ainsi, l’hypothèse MP ne doit être valable que pour n \(\leq\)N. De plus, comme indiqué, l'hypothèse MP est valable quel que soit le nombre d'autres messages pouvant être propagés parallèlement à les MJ. Cependant, comme nous le verrons, dans Algorand, les messages à sont propagés dans un temps essentiellement sans chevauchement. intervalles, pendant lesquels soit un seul bloc est propagé, soit au plus N vérificateurs propagent un petit (par exemple, 200B) message. Ainsi, nous pourrions reformuler l’hypothèse MP d’une manière plus faible, mais aussi plus complexe. 7Par exemple, il peut immédiatement apprendre les messages envoyés par des joueurs honnêtes. Ainsi, un utilisateur malveillant i′, qui est invité à propager un message simultanément avec un utilisateur honnête i, peut toujours choisir son propre message m′ en fonction de le message m réellement propagé par i. Cette capacité est liée à la précipitation, dans le langage du calcul distribué. littérature.En conséquence, dans cette section, nous introduisons un nouveau protocole BA, BA⋆, pour les réseaux SC et en ignorant la question de la remplaçabilité des joueurs. Le protocole BA⋆est une contribution de valeur distincte. En effet, il s’agit du protocole BA cryptographique le plus efficace pour les réseaux SC connu à ce jour. Pour l'utiliser au sein de notre protocole Algorand, nous modifions un peu BA⋆, afi n de tenir compte de nos différents modèle et contexte de communication, mais assurez-vous, dans la section X, de souligner comment BA⋆est utilisé dans le cadre de notre protocole actuel Algorand ′. Nous commençons par rappeler le modèle dans lequel opère BA⋆ et la notion d’accord byzantin. 3.1 Réseaux complets synchrones et adversaires correspondants Dans un réseau SC, il existe une horloge commune, tournant à chaque instant intégral r = 1, 2, . . . A chaque clic pair sur r, chaque joueur i envoie instantanément et simultanément un seul message monsieur i,j (éventuellement le message vide) à chaque joueur j, y compris lui-même. Chaque monsieur i,j est reçu au moment cliquez sur r + 1 par le joueur j, ainsi que l'identité de l'expéditeur i. Encore une fois, dans un protocole de communication, un joueur est honnête s'il suit toutes les instructions qui lui sont prescrites. instructions, et malveillant autrement. Tous les joueurs malveillants sont totalement contrôlés et parfaitement coordonné par l'Adversaire, qui reçoit notamment immédiatement tous les messages adressés à joueurs malveillants, et choisit les messages qu'ils envoient. L'Adversaire peut immédiatement rendre malveillant tout utilisateur honnête qu'il souhaite cliquer à tout moment il le souhaite, sous réserve uniquement d'une éventuelle limite supérieure au nombre de joueurs malveillants. C'est-à-dire l’Adversaire « ne peut pas interférer avec les messages déjà envoyés par un utilisateur honnête i », ce qui sera livré comme d'habitude. L'Adversaire a également la capacité supplémentaire de voir instantanément, à chaque round pair, le messages que les joueurs actuellement honnêtes envoient et utilisent instantanément ces informations pour choisir les messages que les joueurs malveillants envoient en même temps cochent. Remarques • Puissance adverse. Le cadre ci-dessus est très conflictuel. En effet, dans l'accord byzantin Dans la littérature, de nombreux contextes sont moins conflictuels. Cependant, certains contextes plus conflictuels ont a également été envisagé, où l'Adversaire, après avoir vu les messages envoyés par un joueur honnête, je à un instant donné cliquez sur r, a la possibilité d'effacer tous ces messages du réseau, immédiatement je suis corrompu, choisissez le message que le i désormais malveillant envoie au moment où vous cliquez sur r, et demandez-lui livré comme d'habitude. La puissance envisagée des matchs Adversaires qu’il a dans notre cadre. • Abstraction physique. Le modèle de communication envisagé fait abstraction d'un modèle plus physique, dans lequel chaque paire de joueurs (i, j) est reliée par une ligne de communication distincte et privée li,j. Autrement dit, personne d'autre ne peut injecter, interférer ou obtenir des informations sur les messages envoyés. li,j. La seule façon pour l’Adversaire d’avoir accès à li,j est de corrompre i ou j. • Confidentialité et authentification. Dans les réseaux SC, la confidentialité et l'authentification des messages sont garanties par hypothèse. En revanche, dans notre réseau de communication, où les messages se propagent de pair à pair, l'authentification est garantie par des signatures numériques et la confidentialité est inexistante. Ainsi, pour adopter le protocole BA⋆dans notre contexte, chaque message échangé doit être signé numériquement (identifiant en outre l'État dans lequel il a été envoyé). Heureusement, les protocoles BA que nous envisagez d'utiliser dans Algorand ne nécessite pas de confidentialité des messages.3.2 La notion d'accord byzantin La notion d'accord byzantin a été introduite par Pease Shostak et Lamport [31] pour la cas binaire, c'est-à-dire lorsque chaque valeur initiale est constituée d'un bit. Cependant, il a été rapidement prolongé à des valeurs initiales arbitraires. (Voir les enquêtes de Fischer [16] et Chor et Dwork [10].) Par un BA protocole, nous entendons un protocole à valeur arbitraire. Définition 3.1. Dans un réseau synchrone, soit P un protocole à n joueurs, dont l'ensemble de joueurs est commun connaissance entre les joueurs, t un entier positif tel que n \(\geq\)2t + 1. On dit que P est un valeur arbitraire (respectivement binaire) (n, t) -protocole d'accord byzantin avec solidité \(\sigma\) \(\in\)(0, 1) si, pour tout ensemble de valeurs V ne contenant pas le symbole spécial \(\bot\) (respectivement pour V = {0, 1}), dans un exécution dans laquelle au plus t joueurs sont malveillants et dans laquelle chaque joueur i commence avec un valeur initiale vi \(\in\)V , tout joueur honnête j s'arrête avec une probabilité 1, produisant une valeur outi \(\in\)V \(\cup\){\(\bot\)} de manière à satisfaire, avec probabilité au moins \(\sigma\), les deux conditions suivantes : 1. Accord : Il existe out \(\in\)V \(\cup\){\(\bot\)} tel que outi = out pour tous les joueurs honnêtes i. 2. Cohérence : si, pour une valeur v \(\in\)V , vi = v pour tous les joueurs honnêtes, alors out = v. Nous appelons out la sortie de P et chaque outi la sortie du joueur i. 3.3 La notation BA # Dans nos protocoles BA, un joueur doit compter combien de joueurs lui ont envoyé un message donné dans une étape donnée. En conséquence, pour chaque valeur possible v qui pourrait être envoyée,
s
je(v) (ou simplement #i(v) lorsque s est clair) est le nombre de joueurs j dont j'ai reçu v à l'étape s. Rappelons qu'un joueur i reçoit exactement un message de chaque joueur j, si le nombre de joueurs est n, alors, pour tout i et s, P v#s je(v) = n. 3.4 Le protocole binaire BA BBA⋆ Dans cette section, nous présentons un nouveau protocole BA binaire, BBA⋆, qui repose sur l'honnêteté de plus plus des deux tiers des joueurs et est très rapide : peu importe ce que font les joueurs malveillants, chaque exécution de sa boucle principale met les joueurs en accord avec une probabilité 1/3. Chaque joueur possède sa propre clé publique d'un schéma de signature numérique satisfaisant la signature unique propriété. Puisque ce protocole est destiné à être exécuté sur un réseau complet synchrone, il n'y a pas de besoin d'un joueur pour signer chacun de ses messages. Les signatures numériques sont utilisées pour générer un bit aléatoire suffisamment commun à l'étape 3. (Dans Algorand, les signatures numériques sont également utilisées pour authentifier tous les autres messages.) Le protocole nécessite une configuration minimale : une chaîne aléatoire commune r, indépendante des préférences des joueurs. clés. (Dans Algorand, r est en fait remplacé par la quantité Qr.) Le protocole BBA⋆est une boucle en 3 étapes, dans laquelle les joueurs échangent à plusieurs reprises des valeurs booléennes, et différents joueurs peuvent quitter cette boucle à des moments différents. Un joueur qui sort de cette boucle en se propageant, à un moment donné, soit une valeur spéciale 0∗, soit une valeur spéciale 1∗, demandant ainsi à tous les joueurs de «faire semblant» qu'ils reçoivent respectivement 0 et 1 de i dans toutes les étapes futures. (Autrement dit : supposezque le dernier message reçu par un joueur j d'un autre joueur i était un bit b. Puis, à n'importe quelle étape dans lequel il ne reçoit aucun message de i, j fait comme si je lui envoyais le bit b.) Le protocole utilise un compteur \(\gamma\), représentant le nombre de fois que sa boucle en 3 étapes a été exécutée. Au début de BBA⋆, \(\gamma\) = 0. (On peut considérer \(\gamma\) comme un compteur global, mais il est en réalité augmenté par chaque joueur individuel à chaque fois que la boucle est exécutée.) Il y a n \(\geq\)3t + 1, où t est le nombre maximum possible de joueurs malveillants. Un binaire la chaîne x est identifiée avec l'entier dont la représentation binaire (avec des 0 possibles en tête) est x ; et lsb(x) désigne le bit le moins significatif de x. Protocole BBA⋆ (Communication) Étape 1. [Étape Coin-Fixed-To-0] Chaque joueur envoie bi. 1.1 Si #1 i (0) \(\geq\)2t + 1, alors i définit bi = 0, envoie 0∗, sort outi = 0, et ARRÊTS. 1.2 Si #1 i (1) \(\geq\)2t + 1, alors, alors i définit bi = 1. 1.3 Sinon, je définit bi = 0. (Communication) Étape 2. [Étape Coin-Fixed-To-1] Chaque joueur envoie bi. 2.1 Si #2 je (1) \(\geq\)2t + 1, alors je fixe bi = 1, envoie 1∗, sorties outi = 1, et ARRÊTS. 2.2 Si #2 je (0) \(\geq\)2t + 1, alors je mets bi = 0. 2.3 Sinon, je définit bi = 1. (Communication) Étape 3. [Étape Coin-Genuinely-Flipped] Chaque joueur i envoie bi et SIGi(r, \(\gamma\)). 3.1 Si #3 i (0) \(\geq\)2t + 1, alors i définit bi = 0. 3.2 Si #3 i (1) \(\geq\)2t + 1, alors i définit bi = 1. 3.3 Sinon, soit Si = {j \(\in\)N qui a envoyé i un message propre à cette étape 3 }, je définit bi = c \(\triangleq\)lsb(minj\(\in\)Si H(SIGi(r, \(\gamma\)))); augmente \(\gamma\)i de 1 ; et revient à l'étape 1. Théorème 3.1. Chaque fois que n \(\geq\)3t + 1, BBA⋆est un protocole binaire (n, t)-BA de solidité 1. Une preuve du théorème 3.1 est donnée dans [26]. Son adaptation à notre contexte et sa remplaçabilité des joueurs la propriété est nouvelle. Remarque historique Les protocoles BA binaires probabilistes ont été proposés pour la première fois par Ben-Or dans paramètres asynchrones [7]. Le protocole BBA⋆est une nouvelle adaptation, à notre environnement à clé publique, du protocole BA binaire de Feldman et Micali [15]. Leur protocole a été le premier à fonctionner de la manière attendue. nombre constant de pas. Cela a fonctionné en demandant aux joueurs eux-mêmes de mettre en œuvre une pièce commune, une notion proposée par Rabin, qui l'a mise en œuvre via une partie de confiance externe [32].3.5 Consensus gradué et protocole GC Rappelons, pour les valeurs arbitraires, une notion de consensus bien plus faible que l'accord byzantin. Définition 3.2. Soit P un protocole dans lequel l’ensemble de tous les acteurs est de notoriété publique, et chacun joueur, je connais en privé une valeur initiale arbitraire v′ je. Nous disons que P est un protocole de consensus gradué (n, t) si, dans toute exécution avec n joueurs, à dont la plupart sont malveillants, chaque joueur honnête i arrête de produire une paire valeur-grade (vi, gi), où gi \(\in\){0, 1, 2}, de manière à satisfaire les trois conditions suivantes : 1. Pour tous les joueurs honnêtes i et j, |gi −gj| \(\leq\)1. 2. Pour tous les joueurs honnêtes i et j, gi, gj > 0 ⇒vi = vj. 3. Si v′ 1 = \(\cdots\) = v′ n = v pour une valeur v, alors vi = v et gi = 2 pour tous les joueurs honnêtes i. Note historique La notion de consensus gradué dérive simplement de celle de consensus gradué. diffusée, mise en avant par Feldman et Micali dans [15], en renforçant la notion de croisé accord, tel qu’introduit par Dolev [12], et affiné par Turpin et Coan [33].8 Dans [15], les auteurs ont également fourni un protocole de diffusion gradué en 3 étapes (n, t), gradecast, pour n \(\geq\)3t+1. Un protocole de diffusion plus complexe (n, t) pour n > 2t+1 a été découvert plus tard. par Katz et Koo [19]. Le protocole GC en deux étapes suivant comprend les deux dernières étapes du gradecast, exprimées dans notre notation. Pour souligner ce fait, et pour correspondre aux étapes du protocole Algorand ′ de la section 4.1, nous nommer respectivement 2 et 3 les étapes de GC. Protocole GC Étape 2. Chaque joueur envoie v′ je à tous les joueurs. Étape 3. Chaque joueur i envoie à tous les joueurs la chaîne x si et seulement si #2 je (x) \(\geq\)2t + 1. Détermination du résultat. Chaque joueur i produit la paire (vi, gi) calculée comme suit : • Si, pour certains x, #3 je (x) \(\geq\)2t + 1, alors vi = x et gi = 2. • Si, pour certains x, #3 je (x) \(\geq\)t + 1, alors vi = x et gi = 1. • Sinon, vi = \(\bot\)et gi = 0. Théorème 3.2. Si n \(\geq\)3t + 1, alors GC est un protocole de diffusion gradué (n, t). La preuve découle immédiatement de celle du protocole gradecast dans [15], et est donc omise.9 8Essentiellement, dans un protocole de diffusion graduée, (a) l’entrée de chaque acteur est l’identité d’un personnage distingué. joueur, l'expéditeur, qui a une valeur arbitraire v comme entrée privée supplémentaire, et (b) les sorties doivent satisfaire la mêmes propriétés 1 et 2 du consensus gradué, plus la propriété suivante 3′ : si l'expéditeur est honnête, alors vi = v et gi = 2 pour tout joueur honnête i. 9En effet, dans leur protocole, à l’étape 1, l’expéditeur envoie sa propre valeur privée v à tous les joueurs, et chaque joueur i laisse v′ je comprends la valeur qu'il a réellement reçue de l'expéditeur à l'étape 1.3.6 Le Protocole BA⋆ Nous décrivons maintenant le protocole BA à valeurs arbitraires BA⋆via le protocole BA binaire BBA⋆et le protocole de consensus gradué GC. Ci-dessous, la valeur initiale de chaque joueur i est v′ je. Protocole BA⋆ Étapes 1 et 2. Chaque joueur i exécute GC, sur l'entrée v′ i, de manière à calculer un couple (vi, gi). Étape 3, . . . Chaque joueur i exécute BBA⋆ — avec l'entrée initiale 0, si gi = 2, et 1 sinon — donc quant à calculer le bit outi. Détermination du résultat. Chaque joueur i produit vi, si outi = 0, et \(\bot\)sinon. Théorème 3.3. Chaque fois que n \(\geq\)3t + 1, BA⋆est un protocole (n, t)-BA de solidité 1. Preuve. Nous prouvons d’abord la cohérence, puis l’accord. Preuve de cohérence. Supposons que, pour une valeur v \(\in\)V , v′ i = v. Alors, par la propriété 3 de consensus noté, après l'exécution de GC, tous les joueurs honnêtes sortent (v, 2). En conséquence, 0 est le premier élément de tous les joueurs honnêtes à la fin de l'exécution de BBA⋆. Ainsi, par l'accord propriété de l'accord byzantin binaire, à la fin de l'exécution de BA⋆, outi = 0 pour tout honnête joueurs. Cela implique que la sortie de chaque joueur honnête i dans BA⋆est vi = v. ✷ Preuve d'accord. Puisque BBA⋆est un protocole BA binaire, soit (A) outi = 1 pour tout joueur honnête i, ou (B) outi = 0 pour tout joueur honnête i. Dans le cas A, tous les joueurs honnêtes produisent \(\bot\)dans BA⋆, et donc l'accord est valable. Considérons maintenant le cas B. Dans dans ce cas, dans l’exécution de BBA⋆, le bit initial d’au moins un joueur honnête i est 0. (En effet, si Le bit initial de tous les joueurs honnêtes était 1, alors, par la propriété de cohérence de BBA⋆, nous aurions outj = 1 pour tout j honnête.) En conséquence, après l'exécution de GC, i génère la paire (v, 2) pour certains valeur v. Ainsi, par propriété 1 de consensus gradué, gj > 0 pour tous les joueurs honnêtes j. En conséquence, par propriété 2 du consensus gradué, vj = v pour tous les joueurs honnêtes j. Cela implique qu'à la fin de BA⋆, tout joueur honnête j produit v. Ainsi, l'accord est également valable dans le cas B. ✷ Puisque la cohérence et l'accord sont valables, BA⋆est un protocole BA à valeur arbitraire. Note historique Turpin et Coan ont été les premiers à montrer que, pour n \(\geq\)3t+1, tout binaire (n, t)-BA Le protocole peut être converti en un protocole (n, t)-BA à valeur arbitraire. La réduction à valeur arbitraire L’accord byzantin à l’accord binaire byzantin via un consensus gradué est plus modulaire et plus propre, et simplifie l’analyse de notre protocole Algorand Algorand ′. Généralisation de BA⋆à utiliser dans Algorand Algorand fonctionne même lorsque toutes les communications se font via bavarder. Cependant, bien que présenté dans un réseau de communication traditionnel et familier, pour permettre une meilleure comparaison avec l'art antérieur et une compréhension plus aisée, le protocole BA⋆fonctionne également dans les réseaux de commérages. En fait, dans nos modes de réalisation détaillés de Algorand, nous le présenterons directement pour les réseaux de potins. Nous soulignerons également qu'elle satisfait le joueur en termes de remplaçabilité. propriété qui est cruciale pour que Algorand soit sécurisée dans le modèle très contradictoire envisagé.
Tout protocole remplaçable par un lecteur BA fonctionnant dans un réseau de communication bavarde peut être utilisé en toute sécurité dans le système inventif Algorand. En particulier, Micali et Vaikunthanatan ont étendu BA⋆pour travailler très efficacement également avec une simple majorité de joueurs honnêtes. Cela Le protocole pourrait également être utilisé dans Algorand.
Hai phương án của Algorand
Như đã thảo luận, ở cấp độ rất cao, vòng Algorand lý tưởng nhất là tiến hành như sau. Đầu tiên, một cách ngẫu nhiên
người dùng được chọn, người lãnh đạo, đề xuất và lưu hành một khối mới.
(Quá trình này bao gồm bước đầu
lựa chọn một vài nhà lãnh đạo tiềm năng và sau đó đảm bảo rằng, ít nhất là trong một khoảng thời gian nhất định, một
người lãnh đạo chung duy nhất xuất hiện.) Thứ hai, một ủy ban người dùng được chọn ngẫu nhiên sẽ được chọn và
đạt được thỏa thuận Byzantine về khối do người lãnh đạo đề xuất. (Quá trình này bao gồm
mỗi bước của giao thức BA được điều hành bởi một ủy ban được lựa chọn riêng.) Khối đã thống nhất
sau đó được ký điện tử bởi một ngưỡng (TH) nhất định của các thành viên ủy ban. Những chữ ký số này
được lưu hành để mọi người yên tâm đâu là block mới. (Điều này bao gồm việc lưu hành các
thông tin xác thực của người ký và chỉ xác thực hash của khối mới, đảm bảo rằng mọi người
được đảm bảo tìm hiểu khối, khi hash của nó được làm rõ.)
Trong hai phần tiếp theo, chúng tôi trình bày hai phương án của Algorand, Algorand ′
1 và Algorand ′
2,
hoạt động theo giả định của đa số người dùng trung thực. Trong Phần 8, chúng tôi trình bày cách áp dụng những
các phương án để hoạt động theo giả định về phần lớn số tiền trung thực.
Algorand ′
1 chỉ dự kiến rằng > 2/3 số thành viên ủy ban là trung thực. Ngoài ra, trong
Algorand ′
1, số bước để đạt được thỏa thuận Byzantine bị giới hạn ở mức cao phù hợp
số lượng, do đó thỏa thuận đó được đảm bảo đạt được với xác suất áp đảo trong vòng một
số bước cố định (nhưng có thể yêu cầu thời gian dài hơn các bước của Algorand ′
2). trong
trường hợp xa mà chưa đạt được thỏa thuận ở bước cuối cùng, ủy ban sẽ đồng ý về
khối trống, luôn hợp lệ.
Algorand ′
2 dự tính rằng số lượng thành viên trung thực trong một ủy ban luôn lớn hơn
hoặc bằng một ngưỡng cố định tH (đảm bảo rằng, với xác suất áp đảo, ít nhất
2/3 số thành viên trong ủy ban là trung thực). Ngoài ra, Algorand ′
2 cho phép thỏa thuận Byzantine
có thể đạt được theo số bước tùy ý (nhưng có thể trong thời gian ngắn hơn Algorand ′
1).
Thật dễ dàng để rút ra nhiều biến thể của các phương án cơ bản này. Đặc biệt, nó rất dễ dàng, được đưa ra
Algorand ′
2, để sửa đổi Algorand ′
1 để có thể đạt được thỏa thuận Byzantine một cách tùy tiện
số bước.
Cả hai phương án đều có chung cốt lõi, ký hiệu, khái niệm và tham số sau đây.
4.1
Cốt lõi chung
Mục tiêu
Lý tưởng nhất là với mỗi vòng r, Algorand sẽ đáp ứng các thuộc tính sau:
1. Độ chính xác hoàn hảo. Tất cả người dùng trung thực đều đồng ý về cùng một khối Br.
2. Tính đầy đủ 1. Với xác suất 1, tập hợp thanh toán của Br, PAY r, là tối đa.10
10Bởi vì các khoản thanh toán được xác định để chứa các khoản thanh toán hợp lệ và người dùng trung thực chỉ thực hiện các khoản thanh toán hợp lệ, mức tối đa
TRẢ TIỀN r chứa các khoản thanh toán “hiện chưa thanh toán” của tất cả người dùng trung thực.Tất nhiên, việc đảm bảo tính đúng đắn hoàn hảo chỉ là chuyện nhỏ: mọi người luôn chọn phương án chính thức.
tập hợp lương PAY r để trống. Nhưng trong trường hợp này, hệ thống sẽ có độ đầy đủ bằng 0. Thật không may,
đảm bảo cả tính đúng đắn và đầy đủ hoàn hảo 1 là không dễ dàng khi có sự hiện diện của phần mềm độc hại
người dùng. Algorand do đó áp dụng mục tiêu thực tế hơn. Một cách không chính thức, gọi h là tỷ lệ phần trăm
số người dùng trung thực, h > 2/3, mục tiêu của Algorand là
Đảm bảo, với xác suất áp đảo, tính đúng đắn và đầy đủ hoàn hảo gần với h.
Ưu tiên tính chính xác hơn là tính đầy đủ có vẻ là một lựa chọn hợp lý: các khoản thanh toán không được xử lý trong
một vòng có thể được xử lý ở vòng tiếp theo, nhưng người ta nên tránh dùng nĩa, nếu có thể.
Thỏa thuận Byzantine dẫn đầu
Độ chính xác hoàn hảo có thể được đảm bảo như sau. Lúc bắt đầu
của vòng r, mỗi người dùng i xây dựng khối ứng viên Br của riêng mình
i , sau đó tất cả người dùng sẽ tiếp cận Byzantine
thỏa thuận về một khối ứng cử viên. Theo phần giới thiệu của chúng tôi, giao thức BA được sử dụng yêu cầu
đa số trung thực là 2/3 và người chơi có thể thay thế được. Mỗi bước của nó có thể được thực hiện bởi một khối nhỏ và
tập hợp những người xác minh được chọn ngẫu nhiên, những người không chia sẻ bất kỳ biến bên trong nào.
Thật không may, cách tiếp cận này không có sự đảm bảo đầy đủ. Sở dĩ như vậy là vì ứng viên
khối người dùng trung thực rất có thể hoàn toàn khác nhau. Như vậy, cuối cùng
khối được thỏa thuận có thể luôn là khối có tập hợp thanh toán không tối đa. Trên thực tế, nó có thể luôn luôn là
khối trống, B\(\varepsilon\), nghĩa là khối có tập thanh toán trống. cũng là mặc định, trống rỗng.
Algorand ′ tránh vấn đề về tính đầy đủ này như sau. Đầu tiên, người dẫn đầu cho vòng r, \(\ell\)r, được chọn.
Sau đó, \(\ell\)r truyền bá khối ứng cử viên của chính mình, Br
\(\ell\)r. Cuối cùng, người dùng đạt được thỏa thuận về khối
họ thực sự nhận được từ \(\ell\)r. Bởi vì, bất cứ khi nào \(\ell\)r trung thực, Tính đúng đắn và hoàn chỉnh hoàn hảo
1 đều giữ nguyên, Algorand ′ đảm bảo rằng \(\ell\)r trung thực với xác suất gần h. (Khi người lãnh đạo
độc hại, chúng tôi không quan tâm liệu khối đã thỏa thuận có phải là khối có tập hợp thanh toán trống hay không. Rốt cuộc, một
nhà lãnh đạo độc hại \(\ell\)r luôn có thể chọn Br một cách ác ý
\(\ell\)r là khối trống, và thành thật mà nói
truyền bá nó, do đó buộc những người dùng trung thực phải đồng ý với khối trống.)
Lựa chọn lãnh đạo
Trong Algorand's, khối thứ r có dạng Br = (r, PAY r, Qr, H(Br−1).
Như đã đề cập trong phần giới thiệu, đại lượng Qr−1 được xây dựng cẩn thận sao cho
về cơ bản là không thể bị Kẻ thù rất mạnh của chúng ta thao túng. (Phần sau của phần này chúng ta sẽ
cung cấp một số trực giác về lý do tại sao lại như vậy.) Khi bắt đầu vòng r, tất cả người dùng đều biết
blockchain cho đến nay, B0, . . . , Br−1, từ đó họ suy ra tập người dùng của mỗi vòng trước: đó
là PK1, . . . , PKr−1. Người dẫn đầu tiềm năng của vòng r là người dùng i sao cho
.H
SIGi
r, 1, Qr−1
\(\leq\)p .
Hãy để chúng tôi giải thích.
Lưu ý rằng, vì đại lượng Qr−1 là một phần của khối Br−1 và đại lượng cơ bản
lược đồ chữ ký thỏa mãn tính chất duy nhất, SIGi
r, 1, Qr−1
là một chuỗi nhị phân duy nhất
liên kết với i và r. Do đó, vì H là oracle ngẫu nhiên nên H
SIGi
r, 1, Qr−1
là 256-bit ngẫu nhiên
chuỗi dài liên kết duy nhất với i và r. Ký hiệu “.” trước H.
SIGi
r, 1, Qr−1
là
điểm thập phân (trong trường hợp của chúng ta là nhị phân), sao cho ri \(\triangleq\).H
SIGi
r, 1, Qr−1
là khai triển nhị phân của a
số 256 bit ngẫu nhiên trong khoảng từ 0 đến 1 được liên kết duy nhất với i và r. Như vậy xác suất mà
ri nhỏ hơn hoặc bằng p thực chất là p. (Cơ chế lựa chọn lãnh đạo tiềm năng của chúng tôi đã được
lấy cảm hứng từ chương trình thanh toán vi mô của Micali và Rivest [28].)
Xác suất p được chọn sao cho với xác suất áp đảo (tức là 1 −F), ít nhất một
người xác minh tiềm năng là trung thực. (Nếu thực tế, p được chọn là xác suất nhỏ nhất như vậy.)Lưu ý rằng, vì tôi là người duy nhất có khả năng tính toán chữ ký của chính anh ấy nên chỉ có anh ấy mới có thể
xác định xem anh ta có phải là người xác minh tiềm năng của vòng 1 hay không. Tuy nhiên, bằng cách tiết lộ thông tin xác thực của chính mình,
\(\sigma\)r
tôi \(\triangleq\)SIGi
r, 1, Qr−1
, tôi có thể chứng minh cho bất kỳ ai thấy mình là người có thể xác minh được vòng r.
Người lãnh đạo \(\ell\)r được xác định là người lãnh đạo tiềm năng có chứng chỉ hashed nhỏ hơn
hashed thông tin xác thực của tất cả người lãnh đạo tiềm năng khác j: nghĩa là H(\(\sigma\)r,s
\(\ell\)r ) \(\leq\)H(\(\sigma\)r,s
j ).
Lưu ý rằng, vì \(\ell\)r độc hại có thể không tiết lộ thông tin xác thực của mình nên người đứng đầu đúng của vòng r có thể
không bao giờ được biết đến, và điều đó, ngoại trừ những mối quan hệ không thể xảy ra, \(\ell\)r thực sự là người dẫn đầu duy nhất của vòng r.
Cuối cùng chúng ta hãy đưa ra một chi tiết cuối cùng nhưng quan trọng: một người dùng tôi có thể trở thành một nhà lãnh đạo tiềm năng (và do đó
người dẫn đầu) của vòng r chỉ khi anh ta thuộc về hệ thống trong ít nhất k vòng. Điều này đảm bảo
tính không thể điều khiển được của Qr và tất cả các đại lượng Q trong tương lai. Trên thực tế, một trong những nhà lãnh đạo tiềm năng
thực sự sẽ xác định Qr.
Lựa chọn người xác minh
Mỗi bước s > 1 của vòng r được thực hiện bởi một tập hợp nhỏ các trình xác minh, SV r,s.
Một lần nữa, mỗi người xác minh i \(\in\)SV r,s được chọn ngẫu nhiên trong số những người dùng đã có trong hệ thống k vòng
trước r và một lần nữa thông qua đại lượng đặc biệt Qr−1. Cụ thể, i \(\in\)PKr−k là một bộ kiểm định trong SV r,s, nếu
.H
SIGi
r, s, Qr−1
\(\leq\)p′ .
Một lần nữa, chỉ có tôi biết anh ấy có thuộc SV r,s,nhưng nếu đúng như vậy, anh ấy có thể chứng minh điều đó bằng cách
trưng bày chứng chỉ \(\sigma\)r,s của mình
tôi
\(\triangleq\)H(SIGi
r, s, Qr−1
). Người xác minh i \(\in\)SV r,s gửi tin nhắn, mr,s
tôi, ở
bước s của vòng r và thông báo này bao gồm thông tin xác thực \(\sigma\)r,s của anh ấy
i , để cho phép người xác minh
tổ bước để nhận ra rằng ông,s
tôi
là một thông điệp bước hợp pháp.
Xác suất p′ được chọn sao cho đảm bảo rằng, trong SV r,s, lấy #good là số
người dùng trung thực và #xấu số lượng người dùng độc hại, với xác suất áp đảo như sau
hai điều kiện giữ.
Đối với phương án Algorand ′
1:
(1) #tốt > 2 \(\cdot\) #xấu và
(2) #good + 4 \(\cdot\) #bad < 2n, trong đó n là số lượng bản số dự kiến của SV r,s.
Đối với phương án Algorand ′
2:
(1) #good > tH và
(2) #good + 2#bad < 2tH, trong đó tH là ngưỡng được chỉ định.
Những điều kiện này ngụ ý rằng, với xác suất đủ cao, (a) ở bước cuối cùng của BA
giao thức, sẽ có ít nhất số lượng người chơi trung thực nhất định để ký điện tử vào khối Br mới,
(b) chỉ một khối mỗi vòng có thể có đủ số chữ ký cần thiết và (c) BA được sử dụng
giao thức có (ở mỗi bước) 2/3 đa số trung thực cần thiết.
Làm rõ việc tạo khối
Nếu người dẫn đầu vòng r \(\ell\)r trung thực thì khối tương ứng
có dạng
Br =
r, TRẢ r, SIG\(\ell\)r Qr−1
, H
Br−1
,
trong đó tập hợp thanh toán PAY r là tối đa. (hãy nhớ rằng tất cả các khoản thanh toán, theo định nghĩa, đều có giá trị chung.)
Ngược lại (tức là nếu \(\ell\)r độc hại), Br có một trong hai dạng có thể xảy ra sau đây:
Br =
r, TRẢ r, SIGi
Qr−1
, H
Br−1
và
Br = Br
\(\varepsilon\) \(\triangleq\)
r, \(\emptyset\), Qr−1, H
Br−1
.Ở dạng đầu tiên, PAY r là một tập hợp thanh toán (không nhất thiết phải tối đa) và nó có thể là PAY r = \(\emptyset\); và tôi là
một nhà lãnh đạo tiềm năng của vòng r. (Tuy nhiên, tôi có thể không phải là người lãnh đạo. Điều này thực sự có thể xảy ra nếu
\(\ell\)r giữ bí mật thông tin xác thực của mình và không tiết lộ bản thân.)
Hình thức thứ hai phát sinh khi, trong quá trình thực thi vòng r của giao thức BA, tất cả những người chơi trung thực
xuất giá trị mặc định là khối trống Br
\(\varepsilon\) trong ứng dụng của chúng tôi. (Theo định nghĩa, khả năng
đầu ra của giao thức BA bao gồm giá trị mặc định, thường được ký hiệu là \(\bot\). Xem phần 3.2.)
Lưu ý rằng, mặc dù các khoản thanh toán đều trống trong cả hai trường hợp, Br =
r, \(\emptyset\), SIGi
Qr−1
, H
Br−1
và anh trai
\(\varepsilon\) là các khối khác nhau về mặt cú pháp và phát sinh trong hai tình huống khác nhau: tương ứng, “tất cả
quá trình thực thi giao thức BA diễn ra suôn sẻ” và “đã xảy ra lỗi trong
Giao thức BA và giá trị mặc định là đầu ra”.
Bây giờ chúng ta hãy mô tả trực quan cách tạo khối Br diễn ra trong vòng r của Algorand ′.
Trong bước đầu tiên, mỗi người chơi đủ điều kiện, tức là mỗi người chơi i \(\in\)PKr−k, kiểm tra xem anh ta có phải là người chơi tiềm năng hay không.
lãnh đạo. Nếu đúng như vậy thì tôi sẽ được yêu cầu sử dụng tất cả các khoản thanh toán mà anh ấy đã thấy cho đến nay và
hiện tại blockchain, B0, . . . , Br−1, để bí mật chuẩn bị một bộ thanh toán tối đa, PAY r
tôi và bí mật
tập hợp khối ứng cử viên của mình, Br =
r, TRẢ TIỀN r
tôi, SIGi
Qr−1
, H
Br−1
. Nghĩa là, anh ta không chỉ
bao gồm trong Br
i , là thành phần thứ hai của tập thanh toán vừa được chuẩn bị, nhưng cũng là thành phần thứ ba của nó,
chữ ký của chính ông là Qr−1, thành phần thứ ba của khối cuối cùng, Br−1. Cuối cùng, ông tuyên truyền
tin nhắn vòng-r-bước-1, ông,1
i , bao gồm (a) khối ứng cử viên của anh ấy Br
i , (b) chữ ký riêng của anh ấy
khối ứng cử viên của anh ấy (tức là chữ ký của anh ấy trong hash của Br
i , và (c) chứng chỉ của chính anh ấy \(\sigma\)r,1
tôi, chứng minh
rằng anh ta thực sự là người có thể xác minh được vòng r.
(Lưu ý rằng, cho đến khi tôi trung thực đưa ra tin nhắn của mình, ông1
tôi, Kẻ thù không biết rằng tôi là một
người xác minh tiềm năng Nếu anh ta muốn làm hư hỏng các nhà lãnh đạo tiềm năng trung thực, Kẻ thù cũng có thể
tham nhũng ngẫu nhiên người chơi trung thực. Tuy nhiên, khi nhìn thấy ông,1
i , vì nó chứa thông tin xác thực của tôi, nên
Đối phương biết và có thể làm hư tôi, nhưng không ngăn cản được ông,1
i , được lan truyền rộng rãi, từ
tiếp cận tất cả người dùng trong hệ thống.)
Trong bước thứ hai, mỗi người xác minh được chọn j \(\in\)SV r,2 sẽ cố gắng xác định người dẫn đầu vòng đấu.
Cụ thể, j lấy thông tin xác thực bước 1, \(\sigma\)r,1
i1, . . . , \(\sigma\)r,1
trong , có trong tin nhắn bước 1 thích hợp mr,1
tôi
anh ấy đã nhận được; hashes tất cả chúng, tức là tính H
\(\sigma\)r,1
i1
, . . . , H
\(\sigma\)r,1
trong
; tìm thấy thông tin xác thực,
\(\sigma\)r,1
\(\ell\)j , có hash là mức tối thiểu về mặt từ điển; và xem xét \(\ell\)r
j là người dẫn đầu vòng r.
Hãy nhớ lại rằng mỗi thông tin xác thực được coi là chữ ký số của Qr−1, SIGi đó
r, 1, Qr−1
là
được xác định duy nhất bởi i và Qr−1, H là ngẫu nhiên oracle, và do đó mỗi H(SIGi
r, 1, Qr−1
là một chuỗi dài 256 bit ngẫu nhiên duy nhất cho mỗi người dẫn đầu tiềm năng i của vòng r.
Từ đó chúng ta có thể kết luận rằng, nếu chuỗi 256-bit Qr−1 là ngẫu nhiên và độc lập
được chọn, thông tin đăng nhập hashed của tất cả các nhà lãnh đạo tiềm năng của vòng r sẽ như vậy. Trên thực tế, tất cả
các nhà lãnh đạo tiềm năng đều được xác định rõ ràng và bằng cấp của họ cũng vậy (dù được tính toán thực tế hay
không). Hơn nữa, tập hợp những người dẫn đầu tiềm năng của vòng r là một tập hợp con ngẫu nhiên của những người sử dụng vòng
r −k, và là một nhà lãnh đạo tiềm năng trung thực, tôi luôn xây dựng và truyền bá đúng đắn thông điệp của mình, ông
tôi,
trong đó có thông tin xác thực của tôi. Do đó, vì tỷ lệ người dùng trung thực là h nên bất kể điều gì xảy ra.
các nhà lãnh đạo tiềm năng độc hại có thể làm (ví dụ: tiết lộ hoặc che giấu thông tin xác thực của chính họ), mức tối thiểu
hashed Chứng chỉ lãnh đạo tiềm năng thuộc về người dùng trung thực, người này nhất thiết phải được mọi người nhận dạng
trở thành người dẫn đầu \(\ell\)r của vòng r. Theo đó, nếu chuỗi 256-bit Qr−1 là ngẫu nhiên và
được chọn độc lập, với xác suất chính xác là h (a) người lãnh đạo \(\ell\)r là người trung thực và (b) \(\ell\)j = \(\ell\)r cho tất cả
người xác minh bước 2 trung thực j.
Trên thực tế, thông tin xác thực hashed được chọn ngẫu nhiên, nhưng phụ thuộc vào Qr−1, tức làkhông được lựa chọn ngẫu nhiên và độc lập. Tuy nhiên, chúng ta sẽ chứng minh trong phân tích của mình rằng Qr−1 là
đủ không thể bị thao túng để đảm bảo rằng người dẫn đầu vòng chơi trung thực với xác suất
h′ đủ gần với h: cụ thể là h′ > h2(1 + h −h2). Ví dụ: nếu h = 80% thì h′ > 0,7424.
Sau khi xác định được người dẫn đầu vòng đấu (điều mà họ làm đúng khi người dẫn đầu \(\ell\)r trung thực),
Nhiệm vụ của người xác minh ở bước 2 là bắt đầu thực thi BA bằng cách sử dụng những giá trị ban đầu mà họ tin tưởng.
trở thành khối của người lãnh đạo. Trên thực tế, để giảm thiểu lượng thông tin cần thiết,
người xác minh j \(\in\)SV r,2 không sử dụng làm giá trị đầu vào v′
j sang giao thức Byzantine, khối Bj đó
anh ấy thực sự đã nhận được từ \(\ell\)j (người dùng j tin là người dẫn đầu), nhưng người dẫn đầu, nhưng
hash của khối đó, tức là v′
j = H(Bi). Do đó, khi kết thúc giao thức BA, người xác minh
của bước cuối cùng không tính toán Br khối vòng r mong muốn mà tính toán (xác thực và
lan truyền) H(Br). Theo đó, vì H(Br) được ký điện tử bởi đủ nhiều người xác minh
bước cuối cùng của giao thức BA, người dùng trong hệ thống sẽ nhận ra rằng H(Br) là hash của giao thức mới
khối. Tuy nhiên, họ cũng phải truy xuất (hoặc chờ đợi vì quá trình thực thi khá không đồng bộ)
chặn chính Br mà giao thức đảm bảo rằng thực sự có sẵn, bất kể Đối thủ có thế nào
có thể làm được.
Không đồng bộ và thời gian
Algorand ′
1 và Algorand ′
2 có mức độ không đồng bộ đáng kể.
Điều này là như vậy bởi vì Kẻ thù có quyền tự do lớn trong việc lên lịch gửi các tin nhắn đang được
được truyền bá. Ngoài ra, dù tổng số bước trong một vòng có bị giới hạn hay không thì vẫn có
sự khác biệt đóng góp bởi số bước thực sự được thực hiện.
Ngay khi học được chứng chỉ B0, . . . , Br−1, người dùng i tính Qr−1 và bắt đầu làm việc
ở vòng r, kiểm tra xem anh ta có phải là người lãnh đạo tiềm năng hay người xác minh trong một số bước của vòng r.
Giả sử rằng tôi phải hành động ở bước s, do có sự không đồng bộ đã thảo luận, tôi dựa vào nhiều
chiến lược để đảm bảo rằng anh ta có đủ thông tin trước khi hành động.
Ví dụ, anh ta có thể đợi để nhận được ít nhất một số tin nhắn nhất định từ người xác minh
bước trước đó hoặc đợi một khoảng thời gian đủ để đảm bảo rằng anh ta nhận được tin nhắn đầy đủ
nhiều người xác minh bước trước đó.
Seed Qr và Tham số Nhìn lại k
Hãy nhớ lại rằng, lý tưởng nhất, đại lượng Qr nên
ngẫu nhiên và độc lập, mặc dù điều đó đủ để chúng không thể bị thao túng bởi
Kẻ thù.
Thoạt nhìn, chúng ta có thể chọn Qr−1 trùng với H
TRẢ r−1
, và do đó tránh được
xác định rõ ràng Qr−1 trong Br−1. Tuy nhiên, một phân tích cơ bản cho thấy rằng những người dùng có ý đồ xấu có thể
tận dụng cơ chế lựa chọn này.11 Một số nỗ lực bổ sung cho thấy vô số cơ chế lựa chọn khác
11Chúng ta đang bắt đầu vòng r −1. Do đó, Qr−2 = PAY r−2 được công khai và Đối thủ được biết một cách riêng tư.
biết ai là nhà lãnh đạo tiềm năng mà ông ta kiểm soát.
Giả sử rằng Đối thủ kiểm soát 10% người dùng và
rằng, với xác suất rất cao, người dùng độc hại w là người dẫn đầu tiềm năng của vòng r −1. Nghĩa là, giả sử rằng
H
SIGw
r −2, 1, Qr−2
nhỏ đến mức khó có khả năng một nhà lãnh đạo tiềm năng trung thực sẽ thực sự là người
người đứng đầu vòng r −1. (Hãy nhớ lại rằng, vì chúng tôi chọn những nhà lãnh đạo tiềm năng thông qua cơ chế phân loại mật mã bí mật,
Kẻ thù không biết ai là nhà lãnh đạo tiềm năng trung thực.) Vì vậy, Kẻ thù là một kẻ đáng ghen tị.
vị trí chọn tập hợp lương PAY ′ anh ta muốn và biến nó trở thành tập hợp lương chính thức của vòng r −1. Tuy nhiên,
anh ấy có thể làm nhiều hơn nữa. Anh ta cũng có thể đảm bảo rằng, với khả năng cao, () một trong những người dùng ác ý của anh ta sẽ là người dẫn đầu
cũng thuộc vòng r, để anh ta có thể tự do lựa chọn PAY r sẽ là bao nhiêu. (V.v. Ít nhất là trong một thời gian dài, tức là,
miễn là những sự kiện có xác suất cao này thực sự xảy ra.) Để đảm bảo (), Đối thủ hành động như sau. Hãy TRẢ TIỀN ′
là mức trả thưởng mà Đối thủ thích cho vòng r −1. Sau đó, anh ta tính H(PAY ′) và kiểm tra xem, đối với một số
trình phát độc hại z, SIGz(r, 1, H(PAY ′)) đặc biệt nhỏ, nghĩa là đủ nhỏ để có giá trị rất cao
xác suất z sẽ dẫn đầu vòng r. Nếu đúng như vậy thì anh ta sẽ hướng dẫn w chọn khối ứng cử viên của mình làmCác lựa chọn thay thế dựa trên số lượng khối truyền thống có thể bị đối thủ dễ dàng khai thác để đảm bảo
rằng các nhà lãnh đạo độc hại là rất thường xuyên. Thay vào đó, chúng tôi xác định thương hiệu của mình một cách cụ thể và mang tính quy nạp
lượng Qr mới để có thể chứng minh rằng đối thủ không thể thao túng nó. Cụ thể là,
Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), nếu Br không phải là khối trống và Qr \(\triangleq\)H(Qr−1, r) nếu ngược lại.
Trực giác về lý do tại sao cách xây dựng Qr này hoạt động như sau. Giả sử trong giây lát rằng
Qr−1 thực sự được chọn ngẫu nhiên và độc lập. Vậy thì Qr cũng sẽ như vậy phải không? Khi \(\ell\)r trung thực
câu trả lời là (đại khái) là có. Điều này là như vậy bởi vì
H(SIG\(\ell\)r( \(\cdot\) ), r) : {0, 1}256 −→{0, 1}256
là một hàm ngẫu nhiên. Tuy nhiên, khi \(\ell\)r độc hại, Qr không còn được xác định rõ ràng từ Qr−1 nữa
và \(\ell\)r. Có ít nhất hai giá trị riêng biệt cho Qr. Một tiếp tục là Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r),
và cái còn lại là H(Qr−1, r). Đầu tiên chúng ta hãy tranh luận rằng, mặc dù lựa chọn thứ hai có phần tùy tiện,
lựa chọn thứ hai là hoàn toàn bắt buộc. Lý do cho điều này là \(\ell\)r độc hại luôn có thể gây ra
những khối ứng viên hoàn toàn khác nhau sẽ được những người xác minh trung thực của bước thứ hai nhận được.12 Một lần
Trong trường hợp này, thật dễ dàng để đảm bảo rằng khối cuối cùng đã được thống nhất thông qua giao thức BA của
vòng r sẽ là vòng mặc định và do đó sẽ không chứa chữ ký số Qr−1 của bất kỳ ai. Nhưng
hệ thống phải tiếp tục và để làm được điều này, nó cần một người dẫn đầu cho vòng r. Nếu người lãnh đạo này tự động
và được lựa chọn một cách công khai, thì Kẻ thù sẽ làm hư hỏng anh ta một cách tầm thường. Nếu nó được chọn trước đó
Qr−1 thông qua quy trình tương tự, \(\ell\)r sẽ lại dẫn đầu ở vòng r+1. Chúng tôi đặc biệt đề xuất
sử dụng cùng một cơ chế phân loại mật mã bí mật, nhưng được áp dụng cho số lượng Q mới: cụ thể là,
H(Qr−1, r). Bằng cách lấy đại lượng này làm đầu ra của H đảm bảo rằng đầu ra là ngẫu nhiên,
và bằng cách bao gồm r làm đầu vào thứ hai của H, trong khi tất cả các cách sử dụng khác của H đều có một hoặc 3 đầu vào trở lên,
“đảm bảo” rằng Qr như vậy được lựa chọn độc lập. Một lần nữa, sự lựa chọn cụ thể của chúng ta về Qr thay thế
không thành vấn đề, điều quan trọng là \(\ell\)r có hai lựa chọn cho Qr, và do đó anh ta có thể nhân đôi cơ hội của mình
để có một người dùng độc hại khác làm người lãnh đạo tiếp theo.
Các tùy chọn cho Qr thậm chí có thể có nhiều hơn đối với Kẻ thù kiểm soát \(\ell\)r độc hại.
Ví dụ: giả sử x, y và z là ba nhà lãnh đạo tiềm năng độc hại của vòng r sao cho
H
\(\sigma\)r,1
x
<H
\(\sigma\)r,1
y
có một nhà lãnh đạo độc hại hoặc đa số độc hại trong SV r,s cho một số bước theo mong muốn của anh ấy. — Đối với Bước 1 của mỗi vòng r, n1 được chọn sao cho có xác suất áp đảo SV r,1 ̸= \(\emptyset\). • Ví dụ lựa chọn các thông số quan trọng. - Đầu ra của H dài 256-bit. — h = 80%, n1 = 35. — Λ = 1 phút và \(\lambda\) = 10 giây. • Khởi tạo giao thức. Giao thức bắt đầu tại thời điểm 0 với r = 0. Vì không tồn tại “B−1” hoặc “CERT −1”, về mặt cú pháp B−1 là một tham số công khai với thành phần thứ ba chỉ định Q−1 và tất cả người dùng biết B−1 tại thời điểm 0.
Deux modes de réalisation de Algorand
Comme indiqué, à un niveau très élevé, un cycle de Algorand se déroule idéalement comme suit. D'abord, au hasard
l'utilisateur sélectionné, le leader, propose et fait circuler un nouveau bloc.
(Ce processus comprend initialement
sélectionner quelques dirigeants potentiels, puis veiller à ce que, au moins une bonne partie du temps, un
un seul leader commun émerge.) Deuxièmement, un comité d'utilisateurs sélectionné au hasard est sélectionné, et
parvient à un accord byzantin sur le bloc proposé par le leader. (Ce processus inclut cela
chaque étape du protocole BA est gérée par un comité sélectionné séparément.) Le bloc convenu
est ensuite signé numériquement par un seuil (TH) donné de membres du comité. Ces signatures numériques
sont diffusés afin que chacun sache quel est le nouveau bloc. (Cela inclut la diffusion du
informations d'identification des signataires et authentifiant uniquement le hash du nouveau bloc, garantissant que tout le monde
est assuré d'apprendre le bloc, une fois que son hash est clarifié.)
Dans les deux sections suivantes, nous présentons deux modes de réalisation de Algorand, Algorand ′
1 et Algorand′
2,
qui fonctionnent selon l’hypothèse d’une majorité d’utilisateurs honnêtes. Dans la section 8, nous montrons comment adopter ces
les modes de réalisation fonctionnent dans le cadre d’une hypothèse de majorité honnête en termes d’argent.
Algorand ′
1 envisage seulement que > 2/3 des membres du comité soient honnêtes. De plus, dans
Algorand'
1, le nombre d'étapes pour parvenir à un accord byzantin est plafonné à un niveau suffisamment élevé
nombre, de sorte qu'un accord est garanti avec une probabilité écrasante d'être atteint dans un délai raisonnable.
nombre d'étapes fixe (mais nécessitant potentiellement un temps plus long que les étapes de Algorand ′
2). Dans le
Dans le cas rare où un accord n'est pas encore atteint à la dernière étape, la commission se met d'accord sur la
bloc vide, qui est toujours valide.
Algorand'
2 prévoit que le nombre de membres honnêtes dans un comité est toujours supérieur à
ou égal à un seuil fixe tH (qui garantit que, avec une écrasante probabilité, au moins
2/3 des membres du comité sont honnêtes). De plus, Algorand ′
2 permet à l'accord byzantin de
être atteint en un nombre arbitraire d'étapes (mais potentiellement en un temps plus court que Algorand ′
1).
Il est facile de dériver de nombreuses variantes de ces modes de réalisation de base. En particulier, c'est facile, étant donné
Algorand'
2, pour modifier Algorand′
1 afin de permettre de parvenir à un accord byzantin de manière arbitraire
nombre d'étapes.
Les deux modes de réalisation partagent le noyau commun, les notations, les notions et les paramètres suivants.
4.1
Un tronc commun
Objectifs
Idéalement, pour chaque tour r, Algorand satisferait les propriétés suivantes :
1. Exactitude parfaite. Tous les utilisateurs honnêtes sont d'accord sur le même bloc Br.
2. Complétude 1. Avec une probabilité de 1, l’ensemble de rémunération de Br, PAY r, est maximal.10
10Parce que les ensembles de paiements sont définis pour contenir des paiements valides et que les utilisateurs honnêtes n’effectuent que des paiements valides, une limite maximale
PAY r contient les paiements « actuellement impayés » de tous les utilisateurs honnêtes.Bien entendu, garantir à lui seul une exactitude parfaite est trivial : chacun choisit toujours le modèle officiel.
payet PAY r doit être vide. Mais dans ce cas, le système aurait la complétude 0. Malheureusement,
garantir à la fois l'exactitude et l'exhaustivité parfaites 1 n'est pas chose aisée en présence d'informations malveillantes
utilisateurs. Algorand adopte ainsi un objectif plus réaliste. De manière informelle, en laissant h désigner le pourcentage
des utilisateurs honnêtes, h > 2/3, l'objectif de Algorand est
Garantissant, avec une probabilité écrasante, une parfaite exactitude et une exhaustivité proche de h.
Privilégier l'exactitude à l'exhaustivité semble un choix raisonnable : les paiements non traités
un tour peut être traité le suivant, mais il faut éviter les fourchettes, si possible.
Accord byzantin dirigé
L'exactitude parfaite pourrait être garantie comme suit. Au début
du tour r, chaque utilisateur i construit son propre bloc candidat Br
i , puis tous les utilisateurs atteignent Byzantine
accord sur un bloc candidat. Conformément à notre introduction, le protocole BA utilisé nécessite
une majorité honnête des 2/3 et est remplaçable par le joueur. Chacune de ses étapes peut être exécutée par un petit et
ensemble de vérificateurs sélectionnés au hasard, qui ne partagent aucune variable interne.
Malheureusement, cette approche n'a aucune garantie d'exhaustivité. Il en est ainsi parce que le candidat
les blocs d’utilisateurs honnêtes sont très probablement totalement différents les uns des autres. Ainsi, en fin de compte
le bloc convenu peut toujours être un bloc avec un ensemble de paiements non maximal. En fait, il se peut toujours que ce soit le
bloc vide, B\(\varepsilon\), c'est-à-dire le bloc dont le payet est vide. eh bien, ce sera celui par défaut, vide.
Algorand ′ évite ce problème d'exhaustivité comme suit. Tout d’abord, un leader pour le tour r, \(\ell\)r, est sélectionné.
Ensuite, \(\ell\)r propage son propre bloc candidat, Br
\(\ell\)r. Finalement, les utilisateurs parviennent à un accord sur le blocage
ils reçoivent en fait de \(\ell\)r. Parce que, chaque fois que \(\ell\)r est honnête, l'exactitude et l'exhaustivité sont parfaites.
1 sont tous deux valables, Algorand ′ garantit que \(\ell\)r est honnête avec une probabilité proche de h. (Quand le leader est
malveillant, nous ne nous soucions pas de savoir si le bloc convenu est un bloc avec un ensemble de paiements vide. Après tout, un
un leader malveillant \(\ell\)r pourrait toujours choisir par malveillance Br
\(\ell\)r être le bloc vide, et puis honnêtement
le propager, obligeant ainsi les utilisateurs honnêtes à se mettre d'accord sur le bloc vide.)
Sélection des dirigeants
Dans Algorand, le rème bloc est de la forme Br = (r, PAY r, Qr, H(Br−1).
Comme déjà mentionné en introduction, la quantité Qr−1 est soigneusement construite de manière à être
essentiellement non manipulable par notre très puissant adversaire. (Plus loin dans cette section, nous verrons
donnent une idée de la raison pour laquelle c'est le cas.) Au début d'un tour r, tous les utilisateurs connaissent le
blockchain jusqu'à présent, B0, . . . , Br−1, dont ils déduisent l’ensemble des utilisateurs de chaque tour précédent : que
est, PK1, . . . , PKr−1. Un leader potentiel du tour r est un utilisateur i tel que
.H
SIGI
r, 1, Qr−1
\(\leq\)p.
Expliquons-nous.
Notez que, puisque la quantité Qr−1 fait partie du bloc Br−1, et que la quantité sous-jacente
le schéma de signature satisfait à la propriété d'unicité, SIGi
r, 1, Qr−1
est une chaîne binaire uniquement
associé à i et r. Ainsi, puisque H est un oracle aléatoire, H
SIGI
r, 1, Qr−1
est un 256 bits aléatoire
longue chaîne associée de manière unique à i et r. Le symbole « ». devant H
SIGI
r, 1, Qr−1
est le
point décimal (dans notre cas, binaire), de sorte que ri \(\triangleq\).H
SIGI
r, 1, Qr−1
est le développement binaire d'un
nombre aléatoire de 256 bits compris entre 0 et 1 associé de manière unique à i et r. Ainsi la probabilité que
ri est inférieur ou égal à p est essentiellement p. (Notre mécanisme de sélection des leaders potentiels a été
inspiré du système de micro-paiement de Micali et Rivest [28].)
La probabilité p est choisie de telle sorte que, avec une probabilité écrasante (c'est-à-dire 1 − F), au moins un
le vérificateur potentiel est honnête. (Si tel est le cas, p est choisi comme étant la plus petite probabilité de ce type.)Notons que, puisque i est le seul capable de calculer ses propres signatures, lui seul peut
déterminer s'il est un vérificateur potentiel du premier tour. Cependant, en révélant son propre titre,
\(\sigma\)r
je \(\triangleq\)SIGi
r, 1, Qr−1
, je peux prouver à n’importe qui que je suis un vérificateur potentiel du tour r.
Le leader \(\ell\)r est défini comme étant le leader potentiel dont le titre hashed est plus petit que le leader potentiel.
hashed accréditation de tous les autres leaders potentiels j : c'est-à-dire H(\(\sigma\)r,s
\(\ell\)r ) \(\leq\)H(\(\sigma\)r,s
j).
Notez que, puisqu'un \(\ell\)r malveillant ne peut pas révéler ses informations d'identification, le bon leader du tour r peut
ne sera jamais connu, et que, sauf liens improbables, \(\ell\)r est bien le seul leader du tour r.
Abordons enfin un dernier détail important : un utilisateur i peut être un leader potentiel (et donc
le leader) d'un tour r seulement s'il a appartenu au système pendant au moins k tours. Cela garantit
la non-manipulabilité de Qr et de toutes les futures quantités Q. En fait, l'un des dirigeants potentiels
déterminera en fait Qr.
Sélection du vérificateur
Chaque étape s > 1 du tour r est exécutée par un petit ensemble de vérificateurs, SV r,s.
Encore une fois, chaque vérificateur i \(\in\)SV r,s est sélectionné aléatoirement parmi les utilisateurs déjà présents dans le système k tours
avant r, et encore via la quantité spéciale Qr−1. Plus précisément, i \(\in\)PKr−k est un vérificateur dans SV r,s, si
.H
SIGI
r, s, Qr−1
\(\leq\)p′.
Encore une fois, moi seul sais s'il appartient au SV r,s, mais, si tel est le cas, il pourrait le prouver en
exhibant son titre \(\sigma\)r,s
je
\(\triangleq\)H(SIGi
r, s, Qr−1
). Un vérificateur i \(\in\)SV r,s envoie un message, mr,s
moi, dans
étape s du tour r, et ce message inclut son identifiant \(\sigma\)r,s
i , afin de permettre aux vérificateurs du
étape de nidification pour reconnaître que mr,s
je
est un message d'étape légitime.
La probabilité p′ est choisie de manière à assurer que, dans SV r,s, soit #good le nombre de
utilisateurs honnêtes et #bad le nombre d'utilisateurs malveillants, avec une probabilité écrasante ce qui suit
deux conditions sont remplies.
Pour le mode de réalisation Algorand ′
1 :
(1) #bon > 2 \(\cdot\) #mauvais et
(2) #bon + 4 \(\cdot\) #mauvais < 2n, où n est la cardinalité attendue de SV r,s.
Pour le mode de réalisation Algorand ′
2 :
(1) #bon > th et
(2) #bon + 2#mauvais < 2tH, où tH est un seuil spécifié.
Ces conditions impliquent que, avec une probabilité suffisamment élevée, (a) dans la dernière étape du BA
protocole, il y aura au moins un nombre donné de joueurs honnêtes pour signer numériquement le nouveau bloc Br,
(b) un seul bloc par tour peut avoir le nombre de signatures nécessaire, et (c) le BA utilisé
le protocole a (à chaque étape) la majorité honnête requise des 2/3.
Clarification de la génération de blocs
Si le leader du tour \(\ell\)r est honnête, alors le bloc correspondant
est de la forme
Br =
r, PAYer r, SIG\(\ell\)r Qr−1
, H
Br−1
,
où le payset PAY r est maximal. (rappelons que tous les ensembles de paie sont, par définition, collectivement valables.)
Sinon (c'est-à-dire si \(\ell\)r est malveillant), Br a l'une des deux formes possibles suivantes :
Br =
r, PAYER r, SIGi
Qr−1
, H
Br−1
et
Br = Br
\(\varepsilon\) \(\triangleq\)
r, \(\emptyset\), Qr−1, H
Br−1
.Dans la première forme, PAY r est un ensemble de salaires (non nécessairement maximal) et il peut s'agir de PAY r = \(\emptyset\) ; et je suis
un leader potentiel du tour r. (Cependant, je ne suis peut-être pas le leader \(\ell\)r. Cela peut effectivement arriver si si
\(\ell\)r garde secret ses informations d'identification et ne se révèle pas.)
La deuxième forme apparaît lorsque, lors de l'exécution du protocole BA, tous les joueurs honnêtes
afficher la valeur par défaut, qui est le bloc vide Br
\(\varepsilon\) dans notre application. (Par définition, le possible
les sorties d'un protocole BA incluent une valeur par défaut, notée génériquement par \(\bot\). Voir la section 3.2.)
Notez que, bien que les ensembles de payes soient vides dans les deux cas, Br =
r, \(\emptyset\), SIGi
Qr−1
, H
Br−1
et Br
\(\varepsilon\) sont des blocs syntaxiquement différents et apparaissent dans deux situations différentes : respectivement, « tous
s’est déroulé sans problème dans l’exécution du protocole BA », et « quelque chose s’est mal passé dans l’exécution du protocole BA ».
Protocole BA, et la valeur par défaut a été sortie ».
Décrivons maintenant intuitivement comment se déroule la génération du bloc Br au tour r de Algorand ′.
Dans un premier temps, chaque joueur éligible, c’est-à-dire chaque joueur i \(\in\)PKr−k, vérifie s’il est un potentiel
chef. Si tel est le cas, on me demande alors, en utilisant tous les paiements qu'il a vus jusqu'à présent, et le
actuel blockchain, B0, . . . , Br−1, pour préparer secrètement un ensemble de paiements maximal, PAY r
moi, et secrètement
assemble son bloc candidat, Br =
r, PAYER r
je, SIGi
Qr−1
, H
Br−1
. Autrement dit, non seulement il
inclure dans Br
i , comme deuxième composant le payset qui vient d'être préparé, mais aussi, comme troisième composant,
sa propre signature de Qr−1, la troisième composante du dernier bloc, Br−1. Finalement, il propage son
message round-r-step-1, mr,1
i , qui comprend (a) son bloc candidat Br
i , (b) sa signature officielle
de son bloc candidat (c'est-à-dire sa signature du hash du Br
i , et (c) son propre titre \(\sigma\)r,1
je, prouvant
qu'il est bien un vérificateur potentiel du tour r.
(Notez que, jusqu'à ce qu'un honnête je produise son message mr,1
moi, l'Adversaire n'a aucune idée que je suis un
vérificateur potentiel. S’il souhaite corrompre des dirigeants potentiels honnêtes, l’Adversaire pourrait tout aussi bien
joueurs honnêtes aléatoires corrompus. Cependant, une fois qu'il voit M.,1
i , puisqu'il contient les informations d'identification de i, le
L'adversaire sait et pourrait corrompre moi, mais ne peut pas empêcher mr,1
i , qui se propage viralement, à partir de
atteignant tous les utilisateurs du système.)
Dans un deuxième temps, chaque vérificateur sélectionné j \(\in\)SV r,2 tente d'identifier le leader du tour.
Plus précisément, j prend les informations d'identification de l'étape 1, \(\sigma\)r,1
je1 , . . . , \(\sigma\)r,1
dans , contenu dans le message approprié de l'étape 1 mr,1
je
il a reçu; hashes tous, c'est-à-dire calcule H
\(\sigma\)r,1
i1
, . . . , H
\(\sigma\)r,1
dans
; trouve l'identifiant,
\(\sigma\)r,1
\(\ell\)j , dont hash est lexicographiquement minimum ; et considère \(\ell\)r
j être le leader du tour r.
Rappelons que chaque identifiant considéré est une signature numérique de Qr−1, que SIGi
r, 1, Qr−1
est
déterminé de manière unique par i et Qr−1, que H est aléatoire oracle, et donc que chaque H(SIGi
r, 1, Qr−1
est une chaîne aléatoire de 256 bits unique à chaque leader potentiel i du tour r.
De là, nous pouvons conclure que, si la chaîne de 256 bits Qr−1 était elle-même aléatoire et indépendante
sélectionnés, alors ce seraient les informations d'identification hashed de tous les dirigeants potentiels du tour r. En fait, tout
les dirigeants potentiels sont bien définis, tout comme leurs références (qu’elles soient réellement calculées ou
non). De plus, l’ensemble des leaders potentiels du tour r est un sous-ensemble aléatoire des utilisateurs du tour
r −k, et un leader potentiel honnête, je construit et propage toujours correctement son message mr
je,
qui contient mes informations d'identification. Ainsi, puisque le pourcentage d'utilisateurs honnêtes est h, quel que soit le
que des dirigeants potentiels malveillants pourraient faire (par exemple, révéler ou dissimuler leurs propres informations d'identification), le minimum
Le titre de leader potentiel hashed appartient à un utilisateur honnête, nécessairement identifié par tous
être le leader \(\ell\)r du tour r. En conséquence, si la chaîne de 256 bits Qr−1 était elle-même aléatoire et
sélectionné indépendamment, avec probabilité exactement h (a) le leader \(\ell\)r est honnête et (b) \(\ell\)j = \(\ell\)r pour tous
vérificateurs honnêtes de l'étape 2 j.
En réalité, les identifiants hashed sont, oui, sélectionnés au hasard, mais dépendent de Qr−1, qui estpas choisis au hasard et indépendamment. Nous prouverons cependant dans notre analyse que Qr−1 est
suffisamment non manipulable pour garantir que le leader d'un tour est honnête avec probabilité
h′ suffisamment proche de h : à savoir h′ > h2(1 + h −h2). Par exemple, si h = 80 %, alors h′ > 0,7424.
Après avoir identifié le leader du tour (ce qu'ils font correctement lorsque le leader \(\ell\)r est honnête),
la tâche des vérificateurs de l'étape 2 est de commencer à exécuter le BA en utilisant comme valeurs initiales ce qu'ils croient
être le bloc du leader. En fait, afin de minimiser la quantité de communication requise,
un vérificateur j \(\in\)SV r,2 n’utilise pas comme valeur d’entrée v′
j au protocole byzantin, le bloc Bj qui
il a effectivement reçu de \(\ell\)j (l'utilisateur j croit être le leader), mais le leader, mais le
hash de ce bloc, c'est-à-dire v′
j = H(Bi). Ainsi, à la fin du protocole BA, les vérificateurs
de la dernière étape ne calcule pas le bloc round-r souhaité Br, mais calcule (authentifier et
se propager) H(Br). En conséquence, puisque H(Br) est signé numériquement par suffisamment de vérificateurs du
dernière étape du protocole BA, les utilisateurs du système se rendront compte que H(Br) est le hash du nouveau
bloquer. Cependant, ils doivent également récupérer (ou attendre, puisque l'exécution est assez asynchrone) le
bloquer Br lui-même, dont le protocole garantit qu'il est effectivement disponible, quel que soit l'adversaire
pourrait faire.
Asynchronie et timing
Algorand ′
1 et Algorand′
2 ont un degré d’asynchronie important.
Il en est ainsi parce que l'Adversaire dispose d'une grande latitude pour planifier la livraison des messages en cours de transmission.
propagé. De plus, que le nombre total d'étapes d'un tour soit plafonné ou non, il y a
la variance contribue au nombre de pas réellement effectués.
Dès qu'il prend connaissance des certificats de B0, . . . , Br−1, un utilisateur i calcule Qr−1 et commence à travailler
au tour r, vérifier s'il est un leader potentiel, ou un vérificateur à certaines étapes du tour r.
En supposant que je doive agir à l'étape s, à la lumière de l'asynchronie discutée, je m'appuie sur diverses
des stratégies pour s’assurer qu’il dispose d’informations suffisantes avant d’agir.
Par exemple, il pourrait attendre de recevoir au moins un nombre donné de messages des vérificateurs de
l'étape précédente, ou attendre un temps suffisant pour être sûr qu'il reçoive les messages de suffisamment
de nombreux vérificateurs de l’étape précédente.
Le Seed Qr et le paramètre Look-Back k
Rappelons que, idéalement, les quantités Qr devraient
aléatoires et indépendants, même s’il suffira qu’ils soient suffisamment non manipulables par
l'Adversaire.
À première vue, on pourrait choisir Qr−1 pour coïncider avec H
PAYER r−1
, et ainsi éviter de
spécifier explicitement Qr−1 dans Br−1. Une analyse élémentaire révèle cependant que des utilisateurs malveillants peuvent
tirer parti de ce mécanisme de sélection.11 Des efforts supplémentaires montrent que des myriades d’autres
11Nous sommes au début du tour r −1. Ainsi, Qr−2 = PAY r−2 est publiquement connu, et l'Adversaire en privé
sait qui sont les dirigeants potentiels qu’il contrôle.
Supposons que l'Adversaire contrôle 10 % des utilisateurs, et
que, avec une très forte probabilité, un utilisateur malveillant w est le leader potentiel du tour r −1. Autrement dit, supposons que
H
SIGw
r −2, 1, Qr−2
est si petit qu'il est hautement improbable qu'un leader potentiel honnête soit réellement le
leader du tour r −1. (Rappelons que, puisque nous choisissons les dirigeants potentiels via un mécanisme de tri cryptographique secret,
l’Adversaire ne sait pas qui sont les dirigeants potentiels honnêtes.) L’Adversaire se trouve donc dans une situation enviable.
position de choisir le ensemble de paie PAY ′ qu'il souhaite, et qu'il devienne l'ensemble de paie officiel du tour r −1. Cependant,
il peut faire plus. Il peut également s'assurer que, avec une forte probabilité, () l'un de ses utilisateurs malveillants sera le leader
également du tour r, afin qu'il puisse choisir librement quel sera PAY r. (Et ainsi de suite. Au moins pendant longtemps, c'est-à-dire
tant que ces événements à forte probabilité se produisent réellement.) Pour garantir (), l'Adversaire agit comme suit. Laissez PAYER '
être le ensemble de paiements que l'Adversaire préfère pour le tour r −1. Ensuite, il calcule H(PAY ′) et vérifie si, pour certains
joueur déjà malveillant z, SIGz(r, 1, H(PAY ′)) est particulièrement petit, c'est-à-dire suffisamment petit pour qu'avec des valeurs très élevées
la probabilité z sera le leader du tour r. Si tel est le cas, alors il demande à w de choisir son bloc candidat àles alternatives, basées sur les quantités de blocs traditionnelles, sont facilement exploitables par l'Adversaire pour garantir
que les dirigeants malveillants sont très fréquents. Nous définissons plutôt notre marque de manière spécifique et inductive.
nouvelle quantité Qr afin de pouvoir prouver qu'elle est non manipulable par l'Adversaire. A savoir,
Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r), si Br n'est pas le bloc vide, et Qr \(\triangleq\)H(Qr−1, r) sinon.
L’intuition de la raison pour laquelle cette construction de Qr fonctionne est la suivante. Supposons un instant que
Qr−1 est véritablement sélectionné de manière aléatoire et indépendante. Alors, Qr en sera-t-il aussi ? Quand \(\ell\)r est honnête, le
la réponse est (en gros) oui. Il en est ainsi parce que
H(SIG\(\ell\)r( \(\cdot\) ), r) : {0, 1}256 −→{0, 1}256
est une fonction aléatoire. Cependant, lorsque \(\ell\)r est malveillant, Qr n’est plus défini de manière univoque à partir de Qr−1
et \(\ell\)r. Il existe au moins deux valeurs distinctes pour Qr. On continue d'être Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r),
et l'autre est H(Qr−1, r). Disons d’abord que, même si le deuxième choix est quelque peu arbitraire,
un deuxième choix est absolument obligatoire. La raison en est qu'un \(\ell\)r malveillant peut toujours provoquer
des blocs candidats totalement différents doivent être reçus par les vérificateurs honnêtes de la deuxième étape.12 Une fois
Dans ce cas, il est facile de s'assurer que le blocage finalement convenu via le protocole BA de
round r sera celui par défaut et ne contiendra donc la signature numérique de personne de Qr−1. Mais
le système doit continuer, et pour cela, il a besoin d'un leader pour le tour r. Si ce leader est automatiquement
et ouvertement sélectionné, alors l'Adversaire le corrompra trivialement. S'il est sélectionné par le précédent
Qr−1 via le même processus, alors \(\ell\)r sera à nouveau leader au tour r+1. Nous proposons spécifiquement de
utiliser le même mécanisme de tri cryptographique secret, mais appliqué à une nouvelle quantité Q : à savoir,
H(Qr−1, r). En faisant de cette quantité la sortie de H garantit que la sortie est aléatoire,
et en incluant r comme deuxième entrée de H, alors que toutes les autres utilisations de H ont une ou 3+ entrées,
« garantit » qu’un tel Qr est sélectionné indépendamment. Encore une fois, notre choix spécifique d’alternative Qr
n'a pas d'importance, ce qui compte c'est que \(\ell\)r ait deux choix pour Qr, et ainsi il peut doubler ses chances
avoir un autre utilisateur malveillant comme prochain leader.
Les options pour Qr pourraient même être plus nombreuses pour l’Adversaire qui contrôle un \(\ell\)r malveillant.
Par exemple, soit x, y et z trois leaders potentiels malveillants du tour r tels que
H
\(\sigma\)r,1
x
<H
\(\sigma\)r,1
oui
avoir un leader malveillant ou une majorité malveillante dans SV r,s pour certaines étapes souhaitées par lui. — Pour l'étape 1 de chaque tour r, n1 est choisi de telle sorte que, avec une très forte probabilité, SV r,1 ̸= \(\emptyset\). • Exemples de choix de paramètres importants. — Les sorties de H ont une longueur de 256 bits. — h = 80 %, n1 = 35. — Λ = 1 minute et \(\lambda\) = 10 secondes. • Initialisation du protocole. Le protocole démarre au temps 0 avec r = 0. Puisqu'il n'existe pas de « B−1 » ou de « CERT −1 », syntaxiquement, B−1 est un paramètre public avec son troisième composant spécifiant Q−1, et tous les utilisateurs connaître B−1 au temps 0.
Algorand ′
1 Trong phần này, chúng tôi xây dựng một phiên bản Algorand ′ hoạt động theo giả định sau. Giả định của đa số người dùng trung thực: Hơn 2/3 số người dùng trong mỗi PKr là trung thực. Trong Phần 8, chúng tôi trình bày cách thay thế giả định trên bằng Đa số trung thực mong muốn của Giả định về tiền. 5.1 Ký hiệu và thông số bổ sung Ký hiệu • m \(\in\)Z+: số bước tối đa trong giao thức BA nhị phân, bội số của 3. • Lr \(\leq\)m/3: một biến ngẫu nhiên đại diện cho số phép thử Bernoulli cần để thấy số 1, khi mỗi lần thử là 1 với xác suất ph 2 và có nhiều nhất m/3 phép thử. Nếu tất cả các thử nghiệm đều thất bại thì Lr \(\triangleq\)m/3. Lr sẽ được sử dụng để giới hạn trên thời gian cần thiết để tạo khối Br. • tH = 2n 3+1: số lượng chữ ký cần thiết trong điều kiện kết thúc của giao thức. • CERT r: chứng chỉ dành cho Br. Đó là một tập hợp các chữ ký tH của H(Br) từ những người xác minh thích hợp trong vòng r. Thông số • Mối quan hệ giữa các thông số khác nhau. — Với mỗi bước s > 1 của vòng r, n được chọn sao cho với xác suất áp đảo, |HSV r,s| > 2|MSV r,s| và |HSV r,s| + 4|MSV r,s| < 2n. Giá trị của h càng gần 1 thì n càng nhỏ. Đặc biệt, chúng tôi sử dụng (các biến thể of) Giới hạn Chernoff để đảm bảo các điều kiện mong muốn được giữ vững với xác suất áp đảo. — m được chọn sao cho Lr < m/3 với xác suất áp đảo. • Ví dụ lựa chọn các thông số quan trọng. — F = 10−12. — n \(\approx\)1500, k = 40 và m = 180.5.2 Triển khai Khóa tạm thời trong Algorand ′ 1 Như đã đề cập, chúng tôi mong muốn rằng người xác minh i \(\in\)SV r,s ký điện tử vào tin nhắn của mình mr,s tôi bước s trong vòng r, liên quan đến khóa công khai phù du pkr,s i , sử dụng khóa tiết ra tạm thời skr,s tôi đó anh ta kịp thời phá hủy sau khi sử dụng. Do đó chúng ta cần một phương pháp hiệu quả để đảm bảo rằng mọi người dùng đều có thể xác minh rằng pkr,s tôi thực sự là chìa khóa để sử dụng để xác minh chữ ký của ông tôi . Chúng tôi làm như vậy bằng cách (theo cách tốt nhất theo kiến thức của chúng tôi) việc sử dụng mới các sơ đồ chữ ký dựa trên danh tính. Ở mức độ cao, trong sơ đồ như vậy, cơ quan trung ương A tạo ra khóa chính công khai, PMK, và một khóa chính bí mật tương ứng, SMK. Cho danh tính U của người chơi U, A tính toán, thông qua SMK, khóa chữ ký bí mật skU liên quan đến khóa chung U và cung cấp skU riêng cho U. (Thật vậy, trong sơ đồ chữ ký số dựa trên danh tính, khóa chung của người dùng U chính là U!) Bằng cách này, nếu A hủy SMK sau khi tính toán khóa bí mật của người dùng mà anh ta muốn kích hoạt để tạo ra chữ ký số và không giữ bất kỳ khóa bí mật nào được tính toán thì U là người duy nhất có thể ký điện tử các tin nhắn liên quan đến khóa chung U. Do đó, bất kỳ ai biết “tên U”, tự động biết khóa công khai của U và do đó có thể xác minh chữ ký của U (có thể sử dụng cả khóa chính công khai PMK). Trong ứng dụng của chúng ta, người có thẩm quyền A là người dùng i và tập hợp tất cả những người dùng có thể có U trùng với cặp bước tròn (r, s) trong —say— S = {i}\(\times\){r′, . . . , r′ +106}\(\times\){1, . . . , m+3}, trong đó r′ là một giá trị cho trước vòng và m + 3 giới hạn trên của số bước có thể xảy ra trong một vòng. Cái này cách, pkr,s tôi \(\triangleq\)(i, r, s), để mọi người nhìn thấy chữ ký SIGr,s của tôi pkr,s tôi (ông, s i ) có thể, với áp đảo xác suất, hãy xác minh ngay lập tức nó cho triệu vòng đầu tiên sau r′. Nói cách khác, trước tiên tôi tạo PMK và SMK. Sau đó, anh ta công khai rằng PMK là chủ nhân của tôi khóa chung cho bất kỳ vòng r \(\in\)[r′, r′ + 106] nào và sử dụng SMK để tạo và lưu trữ bí mật một cách riêng tư khóa skr,s tôi với mỗi bộ ba (i, r, s) \(\in\)S. Việc này hoàn thành, anh ta tiêu diệt SMK. Nếu anh ta xác định rằng anh ta không một phần của SV r,s, sau đó tôi có thể rời khỏi skr,s tôi một mình (vì giao thức không yêu cầu anh ta xác thực bất kỳ thông báo nào trong Bước s của vòng r). Mặt khác, lần đầu tiên tôi sử dụng skr,s tôi ký điện tử vào tin nhắn của anh ấy, thưa ông tôi và sau đó phá hủy skr,s tôi . Lưu ý rằng tôi có thể công khai khóa chính công khai đầu tiên của anh ấy khi anh ấy đăng nhập vào hệ thống lần đầu tiên. Đó là, cùng một khoản thanh toán \(\wp\) đưa tôi vào hệ thống (ở vòng r′ hoặc ở vòng gần r′), cũng có thể chỉ định, theo yêu cầu của tôi, rằng khóa chính công khai của tôi cho bất kỳ vòng nào r \(\in\)[r′, r′ + 106] là PMK —ví dụ: bởi trong đó có một cặp dạng (PMK, [r′, r′ + 106]). Cũng lưu ý rằng, vì m + 3 là số bước tối đa trong một vòng, giả sử rằng một vòng mất một phút, kho khóa phù du được sản xuất như vậy sẽ tồn tại trong gần hai năm. Đồng thời Theo thời gian, những chìa khóa bí mật phù du này sẽ không mất quá nhiều thời gian để tôi tạo ra. Sử dụng đường cong elip dựa trên hệ thống có khóa 32B, mỗi khóa bí mật được tính toán trong vài micro giây. Do đó, nếu m + 3 = 180, sau đó tất cả 180 triệu khóa bí mật có thể được tính toán trong vòng chưa đầy một giờ. Khi vòng hiện tại tiến gần đến r′ + 106, để xử lý một triệu vòng tiếp theo, tôi tạo ra một cặp (PMK′, SMK′) mới và thông báo kho khóa tạm thời tiếp theo của anh ấy là gì bằng cách —ví dụ— có SIGi(PMK′, [r′ + 106 + 1, r′ + 2 \(\cdot\) 106 + 1]) nhập một khối mới, dưới dạng “giao dịch” riêng biệt hoặc như một số thông tin bổ sung là một phần của khoản thanh toán. Bằng cách làm như vậy, tôi thông báo với mọi người rằng anh ấy/cô ấy nên sử dụng PMK′ để xác minh chữ ký phù du của tôi trong lần tiếp theo triệu vòng. Và vân vân. (Lưu ý rằng, theo cách tiếp cận cơ bản này, các cách khác để triển khai các khóa tạm thời mà không cần chắc chắn có thể sử dụng chữ ký dựa trên danh tính. Ví dụ: qua Merkle trees.16) 16Trong phương pháp này, tôi tạo một cặp khóa bí mật công khai (pkr,s tôi, skr,s tôi ) cho mỗi cặp bước tròn (r, s) trong —say—Chắc chắn có thể thực hiện được các cách khác để triển khai khóa tạm thời —ví dụ: thông qua Merkle trees. 5.3 Khớp các bước của Algorand ′ 1 cùng với BA⋆ Như chúng tôi đã nói, một vòng trong Algorand ′ 1 có nhiều nhất m+3 bước. Bước 1. Ở bước này, mỗi nhà lãnh đạo tiềm năng i sẽ tính toán và truyền bá khối ứng cử viên Br của mình tôi, cùng với thông tin xác thực của chính mình, \(\sigma\)r,1 tôi . Hãy nhớ rằng thông tin xác thực này xác định rõ ràng i. Điều này là như vậy, bởi vì \(\sigma\)r,1 tôi \(\triangleq\)SIGi(r, 1, Qr−1). Người xác minh tiềm năng tôi cũng tuyên truyền, như một phần trong thông điệp của mình, chữ ký số thích hợp của anh ấy là H(Br tôi ). Không giải quyết vấn đề thanh toán hoặc thông tin xác thực, chữ ký này của tôi có liên quan đến công chúng phù du của anh ấy chìa khóa pkr,1 i : tức là anh ta tuyên truyền sigpkr,1 tôi (H(Br tôi )). Dựa trên những quy ước của chúng tôi, thay vì truyền bá Br tôi và sigpkr,1 tôi (H(Br i )), anh ấy có thể có tuyên truyền SIGpkr,1 tôi (H(Br tôi )). Tuy nhiên, trong phân tích của chúng tôi, chúng tôi cần có quyền truy cập rõ ràng vào sigpkr,1 tôi (H(Br tôi )). Bước 2. Trong bước này, mỗi trình xác minh tôi đặt \(\ell\)r tôi sẽ trở thành người lãnh đạo tiềm năng có chứng chỉ hashed là nhỏ nhất và Br tôi là khối được đề xuất bởi \(\ell\)r tôi . Bởi vì, để đạt được hiệu quả, chúng ta muốn đồng ý về H(Br), thay vì trực tiếp về Br, tôi truyền bá thông điệp mà anh ấy sẽ có được truyền ở bước đầu tiên của BA⋆ với giá trị ban đầu v′ tôi = H(Br tôi ). Tức là anh ta tuyên truyền v′ tôi, tất nhiên là sau khi tạm thời ký nó. (Cụ thể là, sau khi ký tên liên quan đến phù du bên phải khóa công khai, trong trường hợp này là pkr,2 i.) Tất nhiên cũng vậy, tôi cũng truyền bằng cấp của chính mình. Vì bước đầu tiên của BA⋆bao gồm bước đầu tiên của giao thức đồng thuận được phân loại GC, nên Bước 2 của Algorand ′ tương ứng với bước đầu tiên của GC. Bước 3. Trong bước này, mỗi trình xác minh i \(\in\)SV r,2 thực hiện bước thứ hai của BA⋆. Tức là anh ta gửi cùng một thông điệp mà anh ấy đã gửi ở bước thứ hai của GC. Một lần nữa, tin nhắn của tôi chỉ là phù du được ký và kèm theo thông tin xác thực của tôi. (Từ bây giờ trở đi, chúng ta sẽ bỏ qua việc nói rằng người xác minh ký tạm thời tin nhắn của anh ấy và cũng tuyên truyền thông tin xác thực của anh ấy.) Bước 4. Trong bước này, mọi trình xác minh i \(\in\)SV r,4 tính toán đầu ra của GC, (vi, gi) và tạm thời ký và gửi cùng một tin nhắn mà lẽ ra anh ta đã gửi ở bước thứ ba của BA⋆, tức là trong Bước đầu tiên của BBA⋆, với bit ban đầu là 0 nếu gi = 2 và 1 nếu ngược lại. Bước s = 5, . . . , m + 2. Bước như vậy, nếu đạt được, sẽ tương ứng với bước s −1 của BA⋆, và do đó với bước s −3 của BBA⋆. Vì mô hình truyền bá của chúng ta đủ không đồng bộ nên chúng ta phải tính đến khả năng rằng, ở giữa bước s như vậy, người xác minh i \(\in\)SV r,s đạt được nhờ thông tin chứng minh anh ta khối Br đó đã được chọn. Trong trường hợp này, tôi dừng việc thực hiện vòng r của chính anh ấy Algorand ′ và bắt đầu thực hiện các lệnh vòng-(r + 1) của mình. {r′, . . . , r′ + 106} \(\times\) {1, . . . , m + 3}. Sau đó, anh ta sắp xếp các khóa công khai này theo cách chuẩn tắc, lưu trữ khóa công khai thứ j khóa vào lá thứ j của Merkle tree và tính giá trị gốc Ri mà anh ta công khai. Khi anh ấy muốn ký một thông báo liên quan đến khóa pkr,s tôi , tôi không chỉ cung cấp chữ ký thực mà còn cung cấp đường dẫn xác thực cho pkr,s tôi tương đối với Ri. Lưu ý rằng đường dẫn xác thực này cũng chứng minh rằng pkr,s tôi được lưu trữ trong lá thứ j. Phần còn lại của chi tiết có thể được điền dễ dàng.Theo đó, các lệnh của người xác minh i \(\in\)SV r,s, ngoài các lệnh tương ứng đến Bước s −3 của BBA⋆, bao gồm việc kiểm tra xem việc thực thi BBA⋆ có bị dừng ở lần trước hay không Bước s′. Vì BBA⋆ chỉ có thể tạm dừng ở Bước Cố định bằng xu thành 0 hoặc ở bước Cố định bằng xu thành 1, nên hướng dẫn phân biệt xem A (Điều kiện kết thúc 0): s′ −2 ≡0 mod 3, hoặc B (Điều kiện kết thúc 1): s′ −2 ≡1 mod 3. Trong thực tế, trong trường hợp A, khối Br không trống và do đó cần có các lệnh bổ sung để đảm bảo rằng tôi xây dựng lại Br đúng cách, cùng với chứng chỉ CERT r phù hợp của nó. Trong trường hợp B, khối Br trống và do đó tôi được hướng dẫn đặt Br = Br \(\varepsilon\) = (r, \(\emptyset\), H(Qr−1, r), H(Br−1)), và tính CERT r. Nếu trong quá trình thực hiện bước s, tôi không thấy bất kỳ bằng chứng nào cho thấy khối Br đã có được tạo thì anh ta sẽ gửi cùng một tin nhắn mà lẽ ra anh ta đã gửi ở bước s −3 của BBA⋆. Bước m + 3. Nếu trong bước m + 3, i \(\in\)SV r,m+3 thấy rằng khối Br đã được tạo trong bước trước s' thì anh ta sẽ tiến hành như đã giải thích ở trên. Ngược lại, thay vì gửi cùng một tin nhắn mà anh ấy đã gửi ở bước m của BBA⋆, tôi là được hướng dẫn, dựa trên thông tin anh ta có, để tính Br và giá trị tương ứng của nó chứng nhận CERT r. Trên thực tế, hãy nhớ lại rằng chúng ta tăng tổng số bước của một vòng lên trên m + 3. 5,4 Giao thức thực tế Hãy nhớ lại rằng, trong mỗi bước s của vòng r, người xác minh i \(\in\)SV r,s sử dụng cặp khóa bí mật công khai dài hạn của mình để tạo ra thông tin xác thực của anh ấy, \(\sigma\)r,s tôi \(\triangleq\)SIGi(r, s, Qr−1), cũng như SIGi Qr−1 trong trường hợp s = 1. Trình xác minh i sử dụng khóa bí mật phù du skr,s của mình tôi ký vào tin nhắn (r, s) của anh ấy mr,s tôi . Để đơn giản, khi r và s là rõ ràng, chúng ta viết esigi(x) thay vì sigpkr,s i (x) để biểu thị chữ ký phù hợp của i của một giá trị x ở bước s của vòng r và viết ESIGi(x) thay vì SIGpkr,s i (x) để biểu thị (i, x, esigi(x)). Bước 1: Chặn đề xuất Hướng dẫn cho mọi người dùng i \(\in\)PKr−k: Người dùng i bắt đầu Bước 1 của vòng r ngay khi anh ta biết Br−1. • Người dùng i tính Qr−1 từ thành phần thứ ba của Br−1 và kiểm tra xem i \(\in\)SV r,1 hay không. • Nếu i /\(\in\)SV r,1 thì i dừng việc thực hiện Bước 1 của chính anh ta ngay lập tức. • Nếu i \(\in\)SV r,1, tức là nếu tôi là người lãnh đạo tiềm năng thì anh ta sẽ thu các khoản thanh toán theo vòng r có đã được truyền tới anh ta cho đến nay và tính toán mức lương tối đa PAY r tôi từ họ. Tiếp theo, anh ấy tính toán “khối ứng cử viên” của mình Br i = (r, TRẢ r i , SIGi(Qr−1), H(Br−1)). Cuối cùng anh tính toán tin nhắn thưa ông, 1 tôi = (Anh i , esigi(H(Br i )), \(\sigma\)r,1 i ), phá hủy khóa bí mật phù du skr của anh ấy,1 tôi, và sau đó tuyên truyền ông, 1 tôi .Nhận xét. Trong thực tế, để rút ngắn thời gian thực hiện chung của Bước 1, điều quan trọng là (r, 1)- thông điệp được truyền bá có chọn lọc. Tức là, với mỗi người dùng i trong hệ thống, đối với (r, 1)- tin nhắn mà anh ấy từng nhận được và xác minh thành công,17 người chơi tôi sẽ truyền bá nó như thường lệ. Đối với tất cả các các tin nhắn (r, 1) khác mà người chơi tôi nhận được và xác minh thành công, anh ta chỉ truyền nó nếu hash giá trị của thông tin xác thực chứa trong đó là giá trị nhỏ nhất trong số các giá trị hash của thông tin xác thực chứa trong đó trong tất cả các tin nhắn (r, 1) mà anh ấy đã nhận được và xác minh thành công cho đến nay. Hơn nữa, theo đề xuất của Georgios Vlachos, điều hữu ích là mỗi nhà lãnh đạo tiềm năng tôi cũng tuyên truyền chứng chỉ \(\sigma\)r,1 của mình tôi riêng biệt: những tin nhắn nhỏ đó di chuyển nhanh hơn các khối, đảm bảo việc truyền bá kịp thời của mr,1 j's trong đó thông tin xác thực được chứa có giá trị hash nhỏ, trong khi tạo những giá trị có giá trị hash lớn biến mất nhanh chóng. Bước 2: Bước đầu tiên của Giao thức đồng thuận được phân loại GC Hướng dẫn cho mọi người dùng i \(\in\)PKr−k: Người dùng i bắt đầu Bước 2 của vòng r ngay khi anh ta biết Br−1. • Người dùng i tính Qr−1 từ thành phần thứ ba của Br−1 và kiểm tra xem i \(\in\)SV r,2 hay không. • Nếu i /\(\in\)SV r,2 thì tôi dừng việc thực hiện Bước 2 của chính anh ta ngay lập tức. • Nếu i \(\in\)SV r,2 thì sau khi đợi một khoảng thời gian t2 \(\triangleq\) \(\lambda\) + Λ, i sẽ hành động như sau. 1. Anh ta tìm người dùng \(\ell\)sao cho H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) cho tất cả thông tin xác thực \(\sigma\)r,1 j đó là một phần của các tin nhắn (r, 1) được xác minh thành công mà anh ấy đã nhận được cho đến nay.a 2. Nếu anh ấy đã nhận được từ \(\ell\)một tin nhắn hợp lệ, ông1 \(\ell\) = (Anh \(\ell\), esig\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),b thì tôi đặt v′ tôi \(\triangleq\)H(Br \(\ell\)); ngược lại tôi đặt v′ tôi \(\triangleq\) \(\bot\). 3. tôi tính tin nhắn ông,2 tôi \(\triangleq\)(ESIGi(v′ i), \(\sigma\)r,2 i ),c phá hủy khóa bí mật phù du của mình skr,2 i , và sau đó truyền bá mr,2 tôi . aVề cơ bản, người dùng i quyết định riêng rằng người dẫn đầu vòng r là người dùng \(\ell\). bMột lần nữa, chữ ký của người chơi \(\ell\) và hash đều được xác minh thành công và TRẢ TIỀN r \(\ell\)ở Br \(\ell\)là một khoản thanh toán hợp lệ cho làm tròn r —mặc dù tôi không kiểm tra xem TRẢ TIỀN r \(\ell\)là tối đa cho \(\ell\)hoặc không. cTin nhắn của anh,2 tôi tín hiệu mà người chơi tôi coi là v′ tôi là hash của khối tiếp theo hoặc xem xét khối tiếp theo khối để trống. 17Nghĩa là, tất cả chữ ký đều đúng và cả khối và hash của nó đều hợp lệ —mặc dù tôi không kiểm tra liệu tập hợp thanh toán đi kèm có phải là tối đa cho người đề xuất hay không.
Bước 3: Bước thứ hai của GC Hướng dẫn cho mọi người dùng i \(\in\)PKr−k: Người dùng i bắt đầu Bước 3 của vòng r ngay khi anh ta biết Br−1. • Người dùng i tính Qr−1 từ thành phần thứ ba của Br−1 và kiểm tra xem i \(\in\)SV r,3 hay không. • Nếu i /\(\in\)SV r,3 thì tôi dừng việc thực hiện Bước 3 của chính anh ta ngay lập tức. • Nếu i \(\in\)SV r,3 thì sau khi đợi một khoảng thời gian t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ, tôi thực hiện như sau. 1. Nếu tồn tại một giá trị v′ ̸= \(\bot\) sao cho trong số tất cả các tin nhắn hợp lệ mr,2 j anh ấy đã nhận được, hơn 2/3 trong số chúng có dạng (ESIGj(v′), \(\sigma\)r,2 j ), không có bất kỳ mâu thuẫn nào, a sau đó anh ấy tính tin nhắn ạ,3 tôi \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 tôi ). Ngược lại, anh ta tính mr,3 tôi \(\triangleq\) (ESIGi(\(\bot\)), \(\sigma\)r,3 tôi ). 2. tôi phá hủy skr khóa bí mật phù du của anh ấy,3 i , rồi tuyên truyền mr,3 tôi . a Tức là anh ta chưa nhận được hai tin nhắn hợp lệ lần lượt chứa ESIGj(v′) và ESIGj(v′′) khác nhau, từ một người chơi j. Từ đây trở đi, ngoại trừ các Điều kiện kết thúc được xác định sau, bất cứ khi nào một người chơi trung thực muốn các tin nhắn có hình thức nhất định, các tin nhắn mâu thuẫn với nhau không bao giờ được tính hoặc coi là hợp lệ.Bước 4: Đầu ra của GC và Bước đầu tiên của BBA⋆ Hướng dẫn cho mọi người dùng i \(\in\)PKr−k: Người dùng i bắt đầu Bước 4 của vòng r ngay khi anh ta biết Br−1. • Người dùng i tính Qr−1 từ thành phần thứ ba của Br−1 và kiểm tra xem i \(\in\)SV r,4 hay không. • Nếu i /\(\in\)SV r,4 thì i của anh ấy sẽ dừng việc thực hiện Bước 4 của chính mình ngay lập tức. • Nếu i \(\in\)SV r,4 thì sau khi đợi một khoảng thời gian t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ, i thực hiện như sau. 1. Anh ta tính vi và gi, đầu ra của GC, như sau. (a) Nếu tồn tại một giá trị v′ ̸= \(\bot\) sao cho trong số tất cả các thông báo hợp lệ mr,3 j anh ấy có nhận được thì hơn 2/3 trong số chúng có dạng (ESIGj(v′), \(\sigma\)r,3 j ), sau đó anh ta đặt vi \(\triangleq\)v' và gi \(\triangleq\)2. (b) Ngược lại, nếu tồn tại một giá trị v′ ̸= \(\bot\) sao cho trong số tất cả các thông báo hợp lệ ông, 3 j người đó đã nhận được thì hơn 1/3 trong số đó có dạng (ESIGj(v′), \(\sigma\)r,3 j ), thì anh ấy đặt vi \(\triangleq\)v′ và gi \(\triangleq\)1.a (c) Ngược lại, anh ta đặt vi \(\triangleq\)H(Br ǫ ) và gi \(\triangleq\)0. 2. Anh ta tính bi, đầu vào của BBA⋆, như sau: bi \(\triangleq\)0 nếu gi = 2, và bi \(\triangleq\)1 nếu ngược lại. 3. Anh ấy tính tin nhắn ông,4 tôi \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i ), phá hủy sự phù du của anh ấy khóa bí mật skr,4 i , và sau đó truyền bá mr,4 tôi . aCó thể chứng minh rằng v’ trong trường hợp (b), nếu tồn tại thì phải là duy nhất.
Bước s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3: Bước cố định bằng tiền xu của BBA⋆ Hướng dẫn cho mọi người dùng i \(\in\)PKr−k: Người dùng i bắt đầu các Bước của riêng mình trong vòng r ngay khi anh ta biết Br−1. • Người dùng i tính Qr−1 từ thành phần thứ ba của Br−1 và kiểm tra xem i \(\in\)SV r,s. • Nếu i /\(\in\)SV r,s thì tôi dừng việc thực thi Bước s của chính anh ta ngay lập tức. • Nếu i \(\in\)SV r,s thì anh ta hành động như sau. – Anh ta đợi cho đến khi một khoảng thời gian ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ trôi qua. – Điều kiện kết thúc 0: Nếu trong quá trình chờ đợi đó và tại bất kỳ thời điểm nào tồn tại một chuỗi v ̸= \(\bot\) và một bước s′ sao cho (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 —nghĩa là Bước s′ là bước Coin-Fixed-To-0, (b) tôi đã nhận được ít nhất tH = 2n 3 + 1 tin nhắn hợp lệ mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ), a và (c) tôi đã nhận được một tin nhắn hợp lệ thưa ông,1 j = (Anh j , esigj(H(Br j )), \(\sigma\)r,1 j ) với v = H(Br j ), sau đó, tôi dừng việc thực hiện Bước s (và thực tế là vòng r) của chính anh ấy ngay lập tức mà không cần tuyên truyền bất cứ điều gì; đặt Br = Br j ; và đặt CERT r của riêng mình thành tập hợp các tin nhắn ông,s′−1 j của bước phụ (b).b – Điều kiện kết thúc 1: Nếu trong quá trình chờ đợi đó và tại bất kỳ thời điểm nào, tồn tại một bước s′ sao cho (a’) 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 —nghĩa là Bước s′ là bước Cố định thành 1 xu và (b’) tôi đã nhận được ít nhất tH tin nhắn hợp lệ mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),c sau đó, tôi dừng việc thực hiện Bước s (và thực tế là vòng r) của chính anh ấy ngay lập tức mà không cần tuyên truyền bất cứ điều gì; đặt Br = Br Ă ; và đặt CERT r của riêng mình thành tập hợp các tin nhắn ông,s′−1 j của bước phụ (b'). – Ngược lại, khi kết thúc quá trình chờ đợi, người dùng i thực hiện như sau. Anh ta đặt vi là đa số phiếu bầu của vj trong các thành phần thứ hai của tất cả các thành phần hợp lệ ông,s−1 j ' anh ấy đã nhận được. Anh ta tính bi như sau. Nếu nhiều hơn 2/3 tổng số mr,s−1 hợp lệ j ’ anh ấy đã nhận được có dạng (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), thì anh ta đặt bi \(\triangleq\)0. Ngược lại, nếu nhiều hơn 2/3 tổng số mr,s−1 hợp lệ j ’ anh ấy đã nhận được có dạng (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), thì anh ta đặt bi \(\triangleq\)1. Ngược lại, anh ta đặt bi \(\triangleq\) 0. Anh ấy tính toán tin nhắn thưa ông tôi \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), phá hủy sự phù du của anh ấy khóa bí mật skr,s i , và sau đó tuyên truyền mr,s tôi . aTin nhắn như vậy từ người chơi j được tính ngay cả khi người chơi i cũng đã nhận được tin nhắn từ j ký tên 1. Những điều tương tự đối với Điều kiện kết thúc 1. Như đã trình bày trong phân tích, việc này được thực hiện để đảm bảo rằng tất cả người dùng trung thực đều biết Br trong thời gian \(\lambda\) cách nhau. bNgười dùng bây giờ tôi đã biết Br và kết thúc vòng r của chính anh ấy. Anh ấy vẫn giúp truyền bá thông điệp với tư cách là người dùng chung, nhưng không bắt đầu bất kỳ sự lan truyền nào dưới dạng trình xác minh (r, s). Đặc biệt, ông đã giúp truyền bá mọi thông điệp trong CERT r, đủ cho giao thức của chúng tôi. Lưu ý rằng anh ta cũng nên đặt bi \(\triangleq\)0 cho giao thức BA nhị phân, nhưng bi dù sao cũng không cần thiết trong trường hợp này. Những điều tương tự cho tất cả các hướng dẫn trong tương lai. cTrong trường hợp này, vj là gì không quan trọng.Bước s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3: Bước cố định thành 1 xu của BBA⋆ Hướng dẫn cho mọi người dùng i \(\in\)PKr−k: Người dùng i bắt đầu các Bước của riêng mình trong vòng r ngay khi anh ta biết Br−1. • Người dùng i tính Qr−1 từ thành phần thứ ba của Br−1 và kiểm tra xem i \(\in\)SV r,s hay không. • Nếu i /\(\in\)SV r,s thì tôi dừng việc thực thi Bước s của chính anh ta ngay lập tức. • Nếu i \(\in\)SV r,s thì anh ta làm như sau. – Anh ta đợi cho đến khi một khoảng thời gian ts \(\triangleq\)(2s −3)\(\lambda\) + Λ trôi qua. – Điều kiện kết thúc 0: Hướng dẫn tương tự như các bước Coin-Fixed-To-0. – Điều kiện kết thúc 1: Hướng dẫn tương tự như các bước Coin-Fixed-To-0. – Ngược lại, khi kết thúc quá trình chờ đợi, người dùng i thực hiện như sau. Anh ta đặt vi là đa số phiếu bầu của vj trong các thành phần thứ hai của tất cả các thành phần hợp lệ ông,s−1 j ' anh ấy đã nhận được. Anh ta tính bi như sau. Nếu nhiều hơn 2/3 tổng số mr,s−1 hợp lệ j ’ anh ấy đã nhận được có dạng (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), thì anh ta đặt bi \(\triangleq\)0. Ngược lại, nếu nhiều hơn 2/3 tổng số mr,s−1 hợp lệ j ’ anh ấy đã nhận được có dạng (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), thì anh ta đặt bi \(\triangleq\)1. Ngược lại, anh ta đặt bi \(\triangleq\)1. Anh ấy tính toán tin nhắn thưa ông tôi \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), phá hủy sự phù du của anh ấy khóa bí mật skr,s i , và sau đó tuyên truyền mr,s tôi .
Bước s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: Bước lật xu thật của BBA⋆ Hướng dẫn cho mọi người dùng i \(\in\)PKr−k: Người dùng i bắt đầu các Bước của riêng mình trong vòng r ngay khi anh ta biết Br−1. • Người dùng i tính Qr−1 từ thành phần thứ ba của Br−1 và kiểm tra xem i \(\in\)SV r,s hay không. • Nếu i /\(\in\)SV r,s thì tôi dừng việc thực thi Bước s của chính anh ta ngay lập tức. • Nếu i \(\in\)SV r,s thì anh ta làm như sau. – Anh ta đợi cho đến khi một khoảng thời gian ts \(\triangleq\)(2s −3)\(\lambda\) + Λ trôi qua. – Điều kiện kết thúc 0: Hướng dẫn tương tự như các bước Coin-Fixed-To-0. – Điều kiện kết thúc 1: Hướng dẫn tương tự như các bước Coin-Fixed-To-0. – Ngược lại, khi kết thúc quá trình chờ đợi, người dùng i thực hiện như sau. Anh ta đặt vi là đa số phiếu bầu của vj trong các thành phần thứ hai của tất cả các thành phần hợp lệ ông,s−1 j ' anh ấy đã nhận được. Anh ta tính bi như sau. Nếu nhiều hơn 2/3 tổng số mr,s−1 hợp lệ j ’ anh ấy đã nhận được có dạng (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), thì anh ta đặt bi \(\triangleq\)0. Ngược lại, nếu nhiều hơn 2/3 tổng số mr,s−1 hợp lệ j ’ anh ấy đã nhận được có dạng (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), thì anh ta đặt bi \(\triangleq\)1. Ngược lại, đặt SV r,s−1 tôi là tập hợp các trình xác minh (r, s −1) mà từ đó anh ta đã nhận được thông tin hợp lệ nhắn tin cho ông,s−1 j . Anh ta đặt bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 tôi H(\(\sigma\)r,s−1 j )). Anh ấy tính toán tin nhắn thưa ông tôi \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), phá hủy sự phù du của anh ấy khóa bí mật skr,s i , và sau đó tuyên truyền mr,s tôi .
Bước m + 3: Bước cuối cùng của BBA⋆a Hướng dẫn cho mọi người dùng i \(\in\)PKr−k: Người dùng i bắt đầu Bước m + 3 của vòng r ngay khi anh ta biết Br−1. • Người dùng i tính Qr−1 từ thành phần thứ ba của Br−1 và kiểm tra xem i \(\in\)SV r,m+3 hay không. • Nếu i /\(\in\)SV r,m+3 thì tôi dừng việc thực hiện Bước m + 3 của anh ta ngay lập tức. • Nếu i \(\in\)SV r,m+3 thì anh ta làm như sau. – Anh ta đợi cho đến khi một khoảng thời gian tm+3 \(\triangleq\)tm+2 + 2\(\lambda\) = (2m + 3)\(\lambda\) + Λ trôi qua. – Điều kiện kết thúc 0: Hướng dẫn tương tự như các bước Coin-Fixed-To-0. – Điều kiện kết thúc 1: Hướng dẫn tương tự như các bước Coin-Fixed-To-0. – Ngược lại, khi kết thúc quá trình chờ đợi, người dùng i thực hiện như sau. Anh ta khởi hànhi \(\triangleq\)1 và Br \(\triangleq\)Br ừ. Anh tính tin nhắn mr,m+3 tôi = (ESIGi(outi), ESIGi(H(Br)), \(\sigma\)r,m+3 tôi ), phá hủy khóa bí mật phù du skr,m+3 tôi , rồi truyền bá mr,m+3 tôi chứng nhận Br.b aVới xác suất áp đảo BBA⋆ đã kết thúc trước bước này và chúng tôi chỉ định bước này cho đầy đủ. b Chứng chỉ từ Bước m + 3 không nhất thiết phải bao gồm ESIGi(outi). Chúng tôi đưa nó vào chỉ để thống nhất: chứng chỉ hiện có định dạng thống nhất cho dù chúng được tạo ở bước nào.Tái thiết khối Round-r bởi những người không xác minh Hướng dẫn cho mọi người dùng i trong hệ thống: Người dùng i bắt đầu vòng r của riêng mình ngay khi biết Br−1 và chờ thông tin khối như sau. – Nếu trong quá trình chờ đợi như vậy và tại bất kỳ thời điểm nào tồn tại một chuỗi v và một bước s′ như vậy đó (a) 5 ≡0 mod 3, (b) tôi đã nhận được ít nhất tH tin nhắn hợp lệ mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ) và (c) tôi đã nhận được một tin nhắn hợp lệ thưa ông,1 j = (Anh j , esigj(H(Br j )), \(\sigma\)r,1 j ) với v = H(Br j ), sau đó, tôi dừng việc thực hiện vòng r của chính anh ta ngay lập tức; đặt Br = Br j; và đặt CERT của riêng mình r là tập hợp các thông điệp mr,s′−1 j của bước phụ (b). – Nếu trong quá trình chờ đợi như vậy và tại bất kỳ thời điểm nào tồn tại một bước s′ sao cho (a’) 6 \(\leq\)s′ \(\leq\)m + 3 với s′ −2 ≡1 mod 3, và (b’) tôi đã nhận được ít nhất tH tin nhắn hợp lệ mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ), sau đó, tôi dừng việc thực hiện vòng r của chính anh ta ngay lập tức; đặt Br = Br Ă; và đặt CERT của riêng mình r là tập hợp các thông điệp mr,s′−1 j của bước phụ (b'). – Nếu trong thời gian chờ đợi đó và tại bất kỳ thời điểm nào, tôi đã nhận được ít nhất th tin nhắn hợp lệ ông,m+3 j = (ESIGj(1), ESIGj(H(Br ǫ )), \(\sigma\)r,m+3 j ), sau đó tôi dừng việc thực hiện vòng r của chính anh ấy ngay lập tức, đặt Br = Br ǫ , và đặt CERT r của riêng mình thành tập hợp các tin nhắn mr,m+3 j cho 1 và H(Br ừ ). 5,5 Phân tích Algorand ′ 1 Chúng tôi giới thiệu các ký hiệu sau cho mỗi vòng r \(\geq\)0, được sử dụng trong phân tích. • Gọi T r là thời điểm người dùng trung thực đầu tiên biết Br−1. • Gọi Ir+1 là khoảng [T r+1, T r+1 + \(\lambda\)]. Lưu ý rằng T 0 = 0 khi khởi tạo giao thức. Với mỗi s \(\geq\)1 và i \(\in\)SV r,s, nhớ lại rằng \(\alpha\)r,s tôi và \(\beta\)r,s tôi lần lượt là thời gian bắt đầu và thời gian kết thúc bước s của người chơi thứ i. Hơn nữa, nhớ lại rằng ts = (2s −3)\(\lambda\) + Λ với mỗi 2 \(\triangleq\)m + 3. Ngoài ra, đặt I0 \(\triangleq\){0} và t1 \(\triangleq\)0. Cuối cùng, hãy nhớ lại rằng Lr \(\leq\)m/3 là một biến ngẫu nhiên biểu thị số phép thử Bernoulli cần xem số 1, khi mỗi phép thử là 1 với xác suất ph 2 và có nhiều nhất m/3 phép thử. Nếu tất cả thử nghiệm thất bại thì Lr \(\triangleq\)m/3. Trong phân tích, chúng tôi bỏ qua thời gian tính toán vì trên thực tế nó không đáng kể so với thời gian cần thiết. để truyền bá thông điệp. Trong mọi trường hợp, bằng cách sử dụng \(\lambda\) và Λ lớn hơn một chút, thời gian tính toán có thể được đưa vào phân tích trực tiếp. Hầu hết các câu dưới đây đều có nội dung “với áp đảo xác suất,” và chúng ta có thể không nhấn mạnh nhiều lần thực tế này trong phân tích.5.6 Định lý chính Định lý 5.1. Các thuộc tính sau đây có xác suất áp đảo cho mỗi vòng r \(\geq\)0: 1. Tất cả người dùng trung thực đều đồng ý về cùng một khối Br. 2. Khi người dẫn đầu \(\ell\)r trung thực, khối Br được tạo bởi \(\ell\)r, Br chứa tập hợp thanh toán tối đa \(\ell\)r nhận được vào thời điểm \(\alpha\)r,1 \(\ell\)r , T r+1 \(\leq\)T r + 8\(\lambda\) + Λ và tất cả người dùng trung thực đều biết Br vào thời điểm đó khoảng Ir+1. 3. Khi người lãnh đạo \(\ell\)r độc hại, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ và tất cả người dùng trung thực đều biết Br trong khoảng thời gian Ir+1. 4. ph = h2(1 + h −h2) đối với Lr, và người dẫn đầu \(\ell\)r trung thực với xác suất ít nhất là ph. Trước khi chứng minh định lý chính, chúng ta hãy đưa ra hai nhận xét. Nhận xét. • Tạo khối và độ trễ thực sự. Thời gian để tạo khối Br được xác định là T r+1 −T r. Nghĩa là, nó được định nghĩa là sự khác biệt giữa lần đầu tiên một số người dùng trung thực học Br và lần đầu tiên một số người dùng trung thực học Br−1. Khi người dẫn đầu vòng r trung thực, Thuộc tính 2 của chúng ta định lý chính đảm bảo rằng thời gian chính xác để tạo ra Br là 8\(\lambda\) + Λ thời gian, bất kể thế nào giá trị chính xác của h > 2/3 có thể. Khi người lãnh đạo có ác ý, Thuộc tính 3 ngụ ý rằng thời gian dự kiến để tạo ra Br bị giới hạn bởi ( 12 ph + 10)\(\lambda\) + Λ, một lần nữa bất kể giá trị chính xác là bao nhiêu giá trị h.18 Tuy nhiên, thời gian dự kiến để tạo ra Br phụ thuộc vào giá trị chính xác của h. Thật vậy, theo Tính chất 4, ph = h2(1 + h −h2) và người lãnh đạo ít nhất là trung thực với xác suất ph, do đó E[T r+1 −T r] \(\leq\)h2(1 + h −h2) \(\cdot\) (8\(\lambda\) + Λ) + (1 −h2(1 + h −h2))(( 12 h2(1 + h −h2) + 10)\(\lambda\) + Λ). Ví dụ: nếu h = 80% thì E[T r+1 −T r] \(\leq\)12,7\(\lambda\) + Λ. • \(\lambda\) so với Λ. Lưu ý rằng kích thước của tin nhắn được người xác minh gửi trong bước Algorand ′ bị chi phối bằng độ dài của các phím chữ ký số, có thể được giữ cố định, ngay cả khi số lượng người dùng là rất lớn. Cũng lưu ý rằng, trong bất kỳ bước nào s > 1, số lượng người xác minh dự kiến như nhau có thể được sử dụng cho dù số lượng người dùng là 100K, 100M hay 100M. Điều này là như vậy bởi vì n chỉ phụ thuộc vào h và F. Do đó, tóm lại, để tránh nhu cầu tăng đột ngột độ dài khóa bí mật, giá trị của \(\lambda\) sẽ giữ nguyên cho dù số lượng người dùng có thể lớn đến mức nào tương lai có thể thấy trước. Ngược lại, đối với bất kỳ tỷ lệ giao dịch nào, số lượng giao dịch tăng theo số lượng người dùng. Do đó, để xử lý tất cả các giao dịch mới một cách kịp thời, kích thước của một khối phải cũng tăng theo số lượng người dùng, khiến Λ cũng tăng theo. Vì vậy, về lâu dài, chúng ta nên có \(\lambda\) << Λ. Theo đó, thật phù hợp khi có hệ số lớn hơn cho \(\lambda\), và thực tế là hệ số của 1 cho Λ. Chứng minh định lý 5.1. Chúng ta chứng minh Tính chất 1–3 bằng quy nạp: giả sử chúng đúng với vòng r −1 (không mất tính tổng quát, chúng tự động đúng với “làm tròn -1” khi r = 0), ta chứng minh chúng cho vòng r. 18Thật vậy, E[T r+1 −T r] \(\leq\)(6E[Lr] + 10)\(\lambda\) + Λ = (6 \(\cdot\) 2 ph + 10)\(\lambda\) + Λ = ( 12 ph + 10)\(\lambda\) + Λ.Vì Br−1 được xác định duy nhất theo giả thuyết quy nạp nên tập SV r,s được xác định duy nhất cho mỗi bước s của vòng r. Bằng cách chọn n1, SV r,1 ̸= \(\emptyset\)với xác suất áp đảo. Bây giờ chúng tôi phát biểu hai bổ đề sau đây, được chứng minh ở Mục 5.7 và 5.8. Trong suốt quá trình cảm ứng và trong Chứng minh hai bổ đề thì việc phân tích vòng 0 gần giống như bước quy nạp, và chúng tôi sẽ nêu bật những điểm khác biệt khi chúng xảy ra. Bổ đề 5.2. [Bổ đề đầy đủ] Giả sử Thuộc tính 1–3 đúng cho vòng r−1, khi người dẫn đầu \(\ell\)r là trung thực, với xác suất áp đảo, • Tất cả người dùng trung thực đều đồng ý về cùng một khối Br, được tạo bởi \(\ell\)r và chứa giá trị tối đa khoản thanh toán mà \(\ell\)r nhận được vào thời điểm \(\alpha\)r,1 \(\ell\)r \(\in\)Ir; và • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ và tất cả người dùng trung thực đều biết Br trong khoảng thời gian Ir+1. Bổ đề 5.3. [Bổ đề đúng đắn] Giả sử Thuộc tính 1–3 đúng cho vòng r −1, khi người dẫn đầu \(\ell\)r là độc hại, với xác suất áp đảo, tất cả người dùng trung thực đều đồng ý trên cùng một khối Br, T r+1 \(\leq\) T r + (6Lr + 10)\(\lambda\) + Λ và tất cả người dùng trung thực đều biết Br trong khoảng thời gian Ir+1. Tính chất 1–3 đúng khi áp dụng Bổ đề 5.2 và 5.3 cho r = 0 và cho bước quy nạp. Cuối cùng, chúng ta phát biểu lại Tính chất 4 như bổ đề sau, được chứng minh ở Phần 5.9. Bổ đề 5.4. Cho các Thuộc tính 1–3 cho mỗi vòng trước r, ph = h2(1 + h −h2) cho Lr, và lãnh đạo \(\ell\)r trung thực với xác suất ít nhất là ph. Kết hợp ba bổ đề trên với nhau, Định lý 5.1 đúng. ■ Bổ đề dưới đây phát biểu một số tính chất quan trọng của vòng r với biểu thức quy nạp giả thuyết và sẽ được sử dụng trong chứng minh ba bổ đề trên. Bổ đề 5.5. Giả sử Thuộc tính 1–3 giữ cho vòng r −1. Với mỗi bước s \(\geq\)1 của vòng r và mỗi người xác minh trung thực i \(\in\)HSV r,s, chúng ta có (a) \(\alpha\)r,s tôi \(\in\)Ir; (b) nếu người chơi i đã đợi một khoảng thời gian ts thì \(\beta\)r,s tôi \(\in\)[T r + ts, T r + \(\lambda\) + ts] với r > 0 và \(\beta\)r,s tôi = ts cho r = 0; và (c) nếu người chơi i đã đợi một khoảng thời gian ts thì theo thời gian \(\beta\)r,s tôi , anh ấy đã nhận được tất cả tin nhắn được gửi bởi tất cả những người xác minh trung thực j \(\in\)HSV r,s′ cho tất cả các bước s′ < s. Hơn nữa, với mỗi bước s \(\geq\)3, ta có (d) không tồn tại hai người chơi khác nhau i, i′ \(\in\)SV r,s và hai giá trị khác nhau v, v′ giống nhau dài, sao cho cả hai người chơi đã đợi một khoảng thời gian t, hơn 2/3 tổng thời gian tin nhắn hợp lệ ông,s−1 j người chơi tôi nhận được đã ký hợp đồng với v và hơn 2/3 số người chơi hợp lệ tin nhắn ông,s−1 j cầu thủ tôi′ nhận được đã ký hợp đồng với v′. Bằng chứng. Tính chất (a) suy ra trực tiếp từ giả thuyết quy nạp, vì người chơi i biết Br−1 trong khoảng thời gian Ir và bắt đầu bước đi s của chính mình ngay lập tức. Tính chất (b) suy ra trực tiếp từ (a): vì người chơi tôi đã đợi một khoảng thời gian ts trước khi hành động, \(\beta\)r,s tôi = \(\alpha\)r,s tôi +ts. Lưu ý rằng \(\alpha\)r,s tôi = 0 cho r = 0. Bây giờ chúng ta chứng minh Tính chất (c). Nếu s = 2 thì theo Tính chất (b), với mọi kiểm định j \(\in\)HSV r,1 ta có \(\beta\)r,s tôi = \(\alpha\)r,s tôi + ts \(\geq\)T r + ts = T r + \(\lambda\) + Λ \(\geq\) \(\beta\)r,1 j + Λ.Vì mỗi người xác minh j \(\in\)HSV r,1 gửi tin nhắn của mình vào thời điểm \(\beta\)r,1 j và thông điệp đến được với tất cả những người trung thực người dùng trong tối đa Λ thời gian, theo thời gian \(\beta\)r,s tôi người chơi tôi đã nhận được tin nhắn được gửi bởi tất cả người xác minh trong HSV r,1 như mong muốn. Nếu s > 2 thì ts = ts−1 + 2\(\lambda\). Theo Thuộc tính (b), với tất cả các bước s′ < s và tất cả các xác minh j \(\in\)HSV r,s′, \(\beta\)r,s tôi = \(\alpha\)r,s tôi + ts \(\geq\)T r + ts = T r + ts−1 + 2\(\lambda\) \(\geq\)T r + ts′ + 2\(\lambda\) = T r + \(\lambda\) + ts′ + \(\lambda\) \(\geq\) \(\beta\)r,s′ j + \(\lambda\). Vì mỗi người xác minh j \(\in\)HSV r,s′ gửi tin nhắn của mình vào thời điểm \(\beta\)r,s′ j và thông điệp đến được với tất cả những người trung thực người dùng trong tối đa \(\lambda\) lần, theo thời gian \(\beta\)r,s tôi người chơi tôi đã nhận được tất cả tin nhắn được gửi bởi tất cả những người xác minh trung thực trong HSV r,s′ với mọi s′ < s. Như vậy tính chất (c) đúng. Cuối cùng, chúng ta chứng minh Tính chất (d). Lưu ý rằng các bộ xác minh j \(\in\)SV r,s−1 ký nhiều nhất hai thứ trong Bước s −1 sử dụng các khóa bí mật tạm thời của chúng: giá trị vj có cùng độ dài với đầu ra của Hàm hash và cũng có một chút bj \(\in\){0, 1} nếu s −1 \(\geq\)4. Đó là lý do tại sao trong phát biểu của bổ đề chúng tôi yêu cầu v và v′ có cùng độ dài: nhiều người xác minh có thể đã ký cả hai giá trị hash v và một bit b, do đó cả hai đều vượt qua ngưỡng 2/3. Vì mục đích mâu thuẫn, giả sử tồn tại các yếu tố xác minh mong muốn i, i′ và các giá trị v, v′. Lưu ý rằng một số trình xác minh độc hại trong MSV r,s−1 có thể đã ký cả v và v′, nhưng mỗi trình xác minh trung thực người xác minh trong HSV r,s−1 đã ký nhiều nhất một trong số chúng. Theo tính chất (c), cả i và i′ đều nhận được tất cả tin nhắn được gửi bởi tất cả người xác minh trung thực trong HSV r,s−1. Giả sử HSV r,s−1(v) là tập hợp các người xác minh (r, s −1) trung thực đã ký v, MSV r,s−1 tôi bộ của các trình xác minh độc hại (r, s −1) mà tôi đã nhận được tin nhắn hợp lệ và MSV r,s−1 tôi (v) cái tập con của MSV r,s−1 tôi từ người mà tôi đã nhận được tin nhắn hợp lệ ký v. Theo yêu cầu đối với tôi và v, chúng ta có tỷ lệ \(\triangleq\)|HSV r,s−1(v)| + |MSV r,s−1 tôi (v)| |HSV r,s−1| + |MSV r,s−1 tôi |
2 3. (1) Đầu tiên chúng tôi trình bày |MSV r,s−1 tôi (v)| \(\leq\)|HSV r,s−1(v)|. (2) Giả sử ngược lại, bằng mối quan hệ giữa các tham số, với xác suất áp đảo |HSV r,s−1| > 2|MSV r,s−1| \(\geq\)2|MSV r,s−1 tôi |, do đó tỷ lệ < |HSV r,s−1(v)| + |MSV r,s−1 tôi (v)| 3|MSV r,s−1 tôi | < 2|MSV r,s−1 tôi (v)| 3|MSV r,s−1 tôi | 2 3, mâu thuẫn với Bất bình đẳng 1. Tiếp theo, theo Bất đẳng thức 1 ta có 2|HSV r,s−1| + 2|MSV r,s−1 tôi | < 3|HSV r,s−1(v)| + 3|MSV r,s−1 tôi (v)| \(\leq\) 3|HSV r,s−1(v)| + 2|MSV r,s−1 tôi | + |MSV r,s−1 tôi (v)|. Kết hợp với Bất đẳng thức 2, 2|HSV r,s−1| < 3|HSV r,s−1(v)| + |MSV r,s−1 tôi (v)| \(\leq\)4|HSV r,s−1(v)|, ngụ ý |HSV r,s−1(v)| > 1 2|HSV r,s−1|.Tương tự, theo yêu cầu của i′ và v′, ta có |HSV r,s−1(v′)| > 1 2|HSV r,s−1|. Vì người xác minh trung thực j \(\in\)HSV r,s−1 phá hủy khóa bí mật phù du skr,s−1 của mình j trước khi nhân giống thông điệp của mình, Đối thủ không thể giả mạo chữ ký của j cho một giá trị mà j không ký, sau khi biết rằng j là một người xác minh. Như vậy, hai bất đẳng thức trên suy ra |HSV r,s−1| \(\geq\)|HSV r,s−1(v)| + |HSV r,s−1(v′)| > |HSV r,s−1|, mâu thuẫn. Theo đó, i, i′, v, v′ mong muốn không tồn tại và Tính chất (d) giữ nguyên. ■ 5,7 Bổ đề đầy đủ Bổ đề 5.2. [Bổ đề đầy đủ, được trình bày lại] Giả sử Thuộc tính 1–3 đúng cho vòng r−1, khi người lãnh đạo \(\ell\)r là người trung thực, có khả năng áp đảo, • Tất cả người dùng trung thực đều đồng ý về cùng một khối Br, được tạo bởi \(\ell\)r và chứa giá trị tối đa khoản thanh toán mà \(\ell\)r nhận được vào thời điểm \(\alpha\)r,1 \(\ell\)r \(\in\)Ir; và • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ và tất cả người dùng trung thực đều biết Br trong khoảng thời gian Ir+1. Bằng chứng. Theo giả thuyết quy nạp và Bổ đề 5.5, với mỗi bước s và kiểm định i \(\in\)HSV r,s, \(\alpha\)r,s tôi \(\in\)Ir. Dưới đây chúng tôi phân tích giao thức từng bước. Bước 1. Theo định nghĩa, mọi người xác minh trung thực i \(\in\)HSV r,1 đều truyền bá thông điệp mong muốn mr,1 tôi tại thời gian \(\beta\)r,1 tôi = \(\alpha\)r,1 tôi, ông ở đâu,1 tôi = (Anh i , esigi(H(Br i )), \(\sigma\)r,1 tôi ), anh i = (r, TRẢ r i , SIGi(Qr−1), H(Br−1)), và TRẢ TIỀN r tôi là khoản thanh toán tối đa trong số tất cả các khoản thanh toán mà tôi đã thấy vào thời điểm \(\alpha\)r,1 tôi . Bước 2. Tự ý xác định người xác minh trung thực i \(\in\)HSV r,2. Theo bổ đề 5.5, khi người chơi i hoàn thành chờ đợi tại thời điểm \(\beta\)r,2 tôi = \(\alpha\)r,2 tôi + t2, anh ta đã nhận được tất cả tin nhắn được gửi bởi người xác minh trong HSV r,1, bao gồm ông, 1 \(\ell\)r . Theo định nghĩa của \(\ell\)r, không tồn tại người chơi nào khác trong PKr−k có thông tin xác thực hash giá trị nhỏ hơn H(\(\sigma\)r,1 \(\ell\)r ). Tất nhiên, Kẻ thù có thể làm hỏng \(\ell\)r sau khi thấy H(\(\sigma\)r,1 \(\ell\)r ) rất nhỏ, nhưng vào thời điểm đó người chơi \(\ell\)r đã phá hủy chìa khóa phù du của mình và tin nhắn mr,1 \(\ell\)r đã được tuyên truyền. Do đó, người xác minh tôi đặt người lãnh đạo của chính mình làm người chơi \(\ell\)r. Theo đó, tại thời điểm \(\beta\)r,2 tôi, người xác minh tôi tuyên truyền ông,2 tôi = (ESIGi(v′ i), \(\sigma\)r,2 i ), trong đó v′ tôi = H(Br \(\ell\)r). Khi r = 0, sự khác biệt duy nhất đó có phải là \(\beta\)r,2 không tôi = t2 thay vì nằm trong một phạm vi. Những điều tương tự có thể được nói cho các bước trong tương lai và chúng tôi sẽ không nhấn mạnh chúng nữa. Bước 3. Tự ý xác định người xác minh trung thực i \(\in\)HSV r,3. Theo bổ đề 5.5, khi người chơi i hoàn thành chờ đợi tại thời điểm \(\beta\)r,3 tôi = \(\alpha\)r,3 tôi + t3, anh ta đã nhận được tất cả tin nhắn được gửi bởi người xác minh trong HSV r,2. Bằng mối quan hệ giữa các tham số, với xác suất áp đảo |HSV r,2| > 2|MSV r,2|. Hơn nữa, không có người xác minh trung thực nào sẽ ký các thông điệp mâu thuẫn và Đối thủ không thể giả mạo chữ ký của người xác minh trung thực sau khi người này đã hủy chữ ký tương ứng của mình khóa bí mật phù du. Do đó, hơn 2/3 trong số tất cả các tin nhắn (r, 2) hợp lệ mà tôi nhận được là từ người xác minh trung thực và có dạng ông,2 j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,2 j ), không có gì mâu thuẫn. Theo đó, tại thời điểm \(\beta\)r,3 tôi người chơi tôi tuyên truyền ông,3 tôi = (ESIGi(v′), \(\sigma\)r,3 i ), trong đó v′ = H(Br \(\ell\)r).Bước 4. Tự ý xác định người xác minh trung thực i \(\in\)HSV r,4. Theo bổ đề 5.5, người chơi i đã nhận được tất cả tin nhắn được gửi bởi người xác minh trong HSV r,3 khi anh ta đợi xong tại thời điểm \(\beta\)r,4 tôi = \(\alpha\)r,4 tôi +t4. Tương tự như Bước 3, hơn 2/3 trong số tất cả các tin nhắn (r, 3) hợp lệ mà tôi nhận được là từ những người xác minh trung thực và có dạng ông,3 j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,3 j ). Theo đó, người chơi i đặt vi = H(Br \(\ell\)r), gi = 2 và bi = 0. Tại thời điểm \(\beta\)r,4 tôi = \(\alpha\)r,4 tôi +t4 anh ấy tuyên truyền ông, 4 tôi = (ESIGi(0), ESIGi(H(Br \(\ell\)r)), \(\sigma\)r,4 tôi ). Bước 5. Tự ý xác định người xác minh trung thực i \(\in\)HSV r,5. Theo Bổ đề 5.5, người chơi tôi sẽ có đã nhận được tất cả tin nhắn do người xác minh gửi trong HSV r,4 nếu anh ta đã đợi đến thời điểm \(\alpha\)r,5 tôi + t5. Lưu ý rằng |HSV r,4| \(\geq\)tH.19 Cũng lưu ý rằng tất cả người xác minh trong HSV r,4 đều đã ký cho H(Br \(\ell\)r). Như |MSV r,4| < tH, không tồn tại v′ ̸= H(Br \(\ell\)r) có thể được ký bởi tH người xác minh trong SV r,4 (người này nhất thiết phải có ác ý), vì vậy người chơi i không dừng lại trước khi anh ta có đã nhận được tin nhắn hợp lệ thưa ông,4 j = (ESIGj(0), ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,4 j ). Gọi T là thời điểm sự kiện sau xảy ra. Một số tin nhắn đó có thể đến từ những người chơi độc hại, nhưng vì |MSV r,4| < tH, ít nhất một trong số đó là từ người xác minh trung thực trong HSV r,4 và được gửi sau thời gian Tr +t4. Theo đó, T \(\geq\)T r +t4 > T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\)r +Λ, và đến lúc T người chơi tôi cũng đã nhận được tin nhắn thưa ông, 1 \(\ell\)r . Bằng cách xây dựng giao thức, người chơi i dừng lại ở thời điểm \(\beta\)r,5 tôi = T không có tuyên truyền bất cứ điều gì; đặt Br = Br \(\ell\)r; và đặt CERT r của riêng mình thành tập hợp các thông báo (r, 4) cho 0 và H(Br \(\ell\)r) mà anh ấy đã nhận được. Bước s > 5. Tương tự, với mọi bước s > 5 và bất kỳ trình xác minh i \(\in\)HSV r,s nào, trình phát i sẽ có đã nhận được tất cả tin nhắn do người xác minh gửi trong HSV r,4 nếu anh ta đã đợi đến thời điểm \(\alpha\)r,s tôi +ts. Bởi phân tích tương tự, trình phát i dừng mà không truyền bất cứ thứ gì, đặt Br = Br \(\ell\)r (và tự thiết lập CERT r đúng cách). Tất nhiên, trình xác minh độc hại có thể không dừng lại và có thể truyền bá một cách tùy tiện tin nhắn, nhưng vì |MSV r,s| < tH, bằng quy nạp, không có v′ nào khác có thể được ký bởi người xác minh tH ở bất kỳ bước 4 \(\leq\)s′< s nào, do đó người xác minh trung thực chỉ dừng lại vì họ đã nhận được tH hợp lệ (r, 4)-tin nhắn cho 0 và H(Br \(\ell\)r). Tái thiết khối Round-r. Phân tích của Bước 5 áp dụng cho một sự trung thực chung người dùng tôi gần như không có bất kỳ thay đổi nào. Thật vậy, người chơi i bắt đầu vòng r của mình trong khoảng thời gian Ir và sẽ chỉ dừng ở thời điểm T khi anh ta nhận được tH tin nhắn (r, 4)-hợp lệ cho H(Br \(\ell\)r). Một lần nữa bởi vì ít nhất một trong những tin nhắn đó là từ những người xác minh trung thực và được gửi sau thời gian Tr + t4, người chơi i có cũng đã nhận được thưa ông,1 \(\ell\)r theo thời gian T. Do đó anh ta đặt Br = Br \(\ell\)r với CERT r thích hợp. Điều còn lại là chỉ ra rằng tất cả người dùng trung thực đều hoàn thành vòng r của họ trong khoảng thời gian Ir+1. Bằng phân tích ở Bước 5, mọi người xác minh trung thực i \(\in\)HSV r,5 đều biết Br trên hoặc trước \(\alpha\)r,5 tôi +t5 \(\leq\) T r + \(\lambda\) + t5 = T r + 8\(\lambda\) + Λ. Vì T r+1 là thời điểm người dùng trung thực đầu tiên biết Br nên ta có T r+1 \(\leq\)T r + 8\(\lambda\) + Λ như mong muốn. Hơn nữa, khi người chơi biết Br, anh ta đã giúp truyền bá các thông điệp trong CERT của anh ấy r. Lưu ý rằng tất cả những tin nhắn đó sẽ được nhận bởi tất cả người dùng trung thực trong thời gian \(\lambda\), ngay cả khi 19Nói đúng ra, điều này xảy ra với xác suất rất cao nhưng không hẳn là quá lớn. Tuy nhiên, điều này xác suất ảnh hưởng một chút đến thời gian chạy của giao thức nhưng không ảnh hưởng đến tính đúng đắn của nó. Khi h = 80% thì |HSV r,4| \(\geq\)tH với xác suất 1 −10−8. Nếu sự kiện này không xảy ra thì giao thức sẽ tiếp tục cho sự kiện khác 3 bước. Vì xác suất điều này không xảy ra trong hai bước là không đáng kể nên giao thức sẽ kết thúc ở Bước 8. Trong thì số bước cần thiết là gần như 5.player ir là người chơi đầu tiên tuyên truyền chúng. Hơn nữa, theo phân tích ở trên ta có T r+1 \(\geq\)T r + t4 \(\geq\) \(\beta\)r,1 \(\ell\)r + Λ, như vậy tất cả người dùng trung thực đều đã nhận được mr,1 \(\ell\)r theo thời gian T r+1 + \(\lambda\). Theo đó, tất cả người dùng trung thực đều biết Br trong khoảng thời gian Ir+1 = [T r+1, T r+1 + \(\lambda\)]. Cuối cùng, với r = 0 chúng ta thực sự có T 1 \(\leq\)t4 + \(\lambda\) = 6\(\lambda\) + Λ. Kết hợp mọi thứ lại với nhau, Bổ đề 5.2 đúng. ■ 5,8 Bổ đề về tính đúng đắn Bổ đề 5.3. [Bổ đề đúng đắn, được trình bày lại] Giả sử các Thuộc tính 1–3 đúng cho vòng r −1, khi người dẫn đầu \(\ell\)r là độc hại, với xác suất áp đảo, tất cả người dùng trung thực đều đồng ý trên cùng một khối Br, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ và tất cả người dùng trung thực đều biết Br trong khoảng thời gian Ir+1. Bằng chứng. Chúng tôi xem xét riêng biệt hai phần của giao thức, GC và BBA⋆. GC. Theo giả thuyết quy nạp và theo Bổ đề 5.5, với mọi bước s \(\in\){2, 3, 4} và mọi xác minh i \(\in\)HSV r,s, khi người chơi i hành động tại thời điểm \(\beta\)r,s tôi = \(\alpha\)r,s tôi + ts, anh ấy đã nhận được tất cả tin nhắn gửi đi bởi tất cả những người xác minh trung thực ở bước s′ < s. Chúng tôi phân biệt hai trường hợp có thể xảy ra cho bước 4. Trường hợp 1. Không có người kiểm định i \(\in\)HSV r,4 bộ gi = 2. Trong trường hợp này, theo định nghĩa bi = 1 cho tất cả các kiểm định i \(\in\)HSV r,4. Tức là họ bắt đầu bằng một thỏa thuận về 1 trong giao thức BA nhị phân. Họ có thể không có thỏa thuận về vi của họ, nhưng điều này không quan trọng như chúng ta sẽ thấy trong BA nhị phân. Trường hợp 2. Tồn tại bộ kiểm định ˆi \(\in\)HSV r,4 sao cho gˆi = 2. Trong trường hợp này, chúng tôi chỉ ra rằng (1) gi \(\geq\)1 với mọi i \(\in\)HSV r,4, (2) tồn tại một giá trị v′ sao cho vi = v′ với mọi i \(\in\)HSV r,4, và (3) tồn tại một tin nhắn hợp lệ thưa ông,1 \(\ell\) từ một số người xác minh \(\ell\) \(\in\)SV r,1 sao cho v′ = H(Br \(\ell\)). Thật vậy, vì người chơi ˆi trung thực và đặt gˆi = 2, nên hơn 2/3 tổng số tin nhắn hợp lệ mr,3 j anh ta đã nhận được với cùng giá trị v′ ̸= \(\bot\), và anh ta đã đặt vˆi = v′. Theo Tính chất (d) trong Bổ đề 5.5, đối với bất kỳ trình xác minh (r, 4) i trung thực nào khác, nó không thể hơn thế nữa hơn 2/3 số tin nhắn hợp lệ ông,3 j mà tôi′ đã nhận được có cùng giá trị v′′ ̸= v′. Theo đó, nếu tôi đặt gi = 2 thì chắc chắn tôi cũng đã thấy > 2/3 đa số cho v′ và đặt vi = v', như mong muốn. Bây giờ hãy xem xét một trình xác minh tùy ý i \(\in\)HSV r,4 với gi < 2. Tương tự như phân tích Thuộc tính (d) trong Bổ đề 5.5, vì người chơi ˆi đã thấy > 2/3 đa số cho v′, lớn hơn 1 2|HSV r,3| trung thực (r, 3)-người xác minh đã ký v′. Bởi vì tôi đã nhận được tất cả tin nhắn bởi những người xác minh trung thực (r, 3) bởi thời gian \(\beta\)r,4 tôi = \(\alpha\)r,4 tôi + t4, cụ thể anh ấy đã nhận được nhiều hơn 1 2|HSV r,3| tin nhắn từ họ cho v′. Vì |HSV r,3| > 2|MSV r,3|, tôi thấy > 1/3 đa số cho v′. Theo đó, người chơi tôi đặt gi = 1 và Thuộc tính (1) giữ nguyên. Người chơi tôi có nhất thiết phải đặt vi = v′ không? Giả sử tồn tại một giá trị khác v′′ ̸= \(\bot\) sao cho người chơi tôi cũng đã thấy > 1/3 đa số cho v′′. Một số tin nhắn đó có thể đến từ phần mềm độc hại những người xác minh, nhưng ít nhất một trong số họ là từ một người xác minh trung thực nào đó j \(\in\)HSV r,3: thực sự, bởi vì |HSV r,3| > 2|MSV r,3| và tôi đã nhận được tất cả tin nhắn từ HSV r,3, tập hợp các mã độc những người xác minh mà tôi đã nhận được tin nhắn (r, 3) hợp lệ chiếm < 1/3 tổng số tin nhắn hợp lệ những tin nhắn anh đã nhận được.Theo định nghĩa, người chơi j phải nhìn thấy > 2/3 đa số cho v′′ trong số tất cả các tin nhắn (r, 2) hợp lệ anh ấy đã nhận được. Tuy nhiên, chúng ta đã biết rằng một số người xác minh (r, 3) trung thực khác đã thấy 2/3 đa số ủng hộ v′ (vì họ đã ký v′). Theo tính chất (d) của Bổ đề 5.5, điều này không thể xảy ra và giá trị v′′ như vậy không tồn tại. Vì vậy người chơi i phải đặt vi = v′ như mong muốn, và Tài sản (2) giữ nguyên. Cuối cùng, vì một số người xác minh (r, 3) trung thực đã thấy > 2/3 đa số cho v′, một số (thực ra, hơn một nửa trong số) người xác minh trung thực (r, 2) đã ký ủng hộ v′ và truyền bá thông điệp của họ. Bằng cách xây dựng giao thức, những người xác minh (r, 2) trung thực đó phải nhận được một nhắn tin cho anh 1 \(\ell\) từ người chơi nào đó \(\ell\) \(\in\)SV r,1 với v′ = H(Br \(\ell\)), do đó Tính chất (3) đúng. BBA⋆. Chúng ta lại phân biệt hai trường hợp. Trường hợp 1. Tất cả các chứng từ i \(\in\)HSV r,4 đều có bi = 1. Điều này xảy ra sau Trường hợp 1 của GC. Như |MSV r,4| < tH, trong trường hợp này không có trình xác minh nào trong SV r,5 có thể thu thập hoặc tạo ra các thông báo hợp lệ (r, 4) cho bit 0. Do đó, không có trình xác minh trung thực nào trong HSV r,5 sẽ dừng lại vì anh ta biết khối không trống Br. Hơn nữa, mặc dù có ít nhất các thông báo tH hợp lệ (r, 4) cho bit 1, nhưng s′ = 5 không thỏa mãn s′ −2 ≡1 mod 3, do đó không có người kiểm tra trung thực nào trong HSV r,5 sẽ dừng lại vì anh ta biết Br = Br ừ. Thay vào đó, mọi bộ xác minh i \(\in\)HSV r,5 đều hoạt động tại thời điểm \(\beta\)r,5 tôi = \(\alpha\)r,5 tôi + t5, khi anh ta đã nhận được tất cả thông điệp được gửi bởi HSV r,4 theo Bổ đề 5.5. Như vậy người chơi tôi đã thấy > 2/3 đa số cho 1 và đặt bi = 1. Ở Bước 6 là bước Cố định bằng tiền xu thành 1, mặc dù s′ = 5 thỏa mãn s′ −2 ≡0 mod 3, vẫn có không tồn tại các thông báo hợp lệ (r, 4) cho bit 0, do đó không có trình xác minh nào trong HSV r,6 sẽ dừng vì anh ta biết một khối không trống Br. Tuy nhiên, với s′ = 6, s′ −2 ≡1 mod 3 và tồn tại |HSV r,5| \(\geq\)tH các thông báo hợp lệ (r, 5) cho bit 1 từ HSV r,5. Với mọi bộ xác minh i \(\in\)HSV r,6, theo Bổ đề 5.5, vào hoặc trước thời điểm \(\alpha\)r,6 tôi + máy nghe nhạc t6 tôi đã nhận được tất cả tin nhắn từ HSV r,5, do đó tôi dừng lại mà không truyền bá bất cứ điều gì và đặt Br = Br ừ. CERT r của anh ta là tập hợp các thông báo-(r, 5) hợp lệ mr,5 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j ) được anh ta nhận được khi anh ta dừng lại. Tiếp theo, hãy để người chơi i là người xác minh trung thực ở bước s > 6 hoặc người dùng chung chung trung thực (tức là người không xác minh). Tương tự như chứng minh Bổ đề 5.2, người chơi i đặt Br = Br Ă và tự đặt ra CERT r là tập hợp các thông báo-(r, 5) hợp lệ mr,5 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j ) anh ấy có đã nhận được. Cuối cùng, tương tự như Bổ đề 5.2, Tr+1 \(\leq\) phút i\(\in\)HSV r,6 \(\alpha\)r,6 tôi + t6 \(\leq\)T r + \(\lambda\) + t6 = T r + 10\(\lambda\) + Λ, và tất cả người dùng trung thực đều biết Br trong khoảng thời gian Ir+1, bởi vì người dùng trung thực đầu tiên i là người biết Br đã giúp truyền bá các thông điệp-(r, 5) trong CERT r của anh ấy. Trường hợp 2. Tồn tại bộ kiểm định ˆi \(\in\)HSV r,4 với bˆi = 0. Điều này xảy ra sau Trường hợp 2 của GC và là trường hợp phức tạp hơn. Qua phân tích của GC, trong trường hợp này tồn tại một tin nhắn hợp lệ ông,1 \(\ell\) sao cho vi = H(Br \(\ell\)) với mọi i \(\in\)HSV r,4. Lưu ý rằng những người xác minh trong HSV r,4 có thể không có thỏa thuận về bi của họ. Với mọi bước s \(\in\){5, . . . , m + 3} và người xác minh i \(\in\)HSV r,s, bởi người chơi Lemma 5.5 tôi sẽ có đã nhận được tất cả tin nhắn được gửi bởi tất cả người xác minh trung thực trong HSV r,4 \(\cup\) \(\cdots\) \(\cup\)HSV r,s−1 nếu anh ta đã đợi trong thời gian ts.Bây giờ chúng ta xét sự kiện E sau: tồn tại một bước s∗ \(\geq\)5 sao cho lần đầu tiên thời gian trong BA nhị phân, một số người chơi i∗\(\in\)SV r,s∗(dù có ác tâm hay trung thực) nên dừng lại mà không tuyên truyền bất cứ điều gì. Chúng tôi sử dụng “nên dừng” để nhấn mạnh thực tế rằng, nếu người chơi i∗ là có ác ý thì anh ta có thể giả vờ rằng mình không nên dừng lại theo giao thức và truyền bá thông điệp về sự lựa chọn của Đối thủ. Hơn nữa, bằng cách xây dựng giao thức, hoặc (E.a) i∗có thể thu thập hoặc tạo ra ít nhất tH tin nhắn hợp lệ mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ) với cùng v và s′, với 5 ∗s′ ∗và s′ −2 ≡0 mod 3; hoặc (E.b) i∗có thể thu thập hoặc tạo ra ít nhất tH tin nhắn hợp lệ mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ) với cùng s′, với 6 ∗s′ ∗và s′ −2 ≡1 mod 3. Bởi vì các thông báo-(r,s′-1) trung thực được nhận bởi tất cả những người xác minh-(r, s′) trung thực trước khi chúng đã hoàn tất việc chờ đợi ở Bước s' và bởi vì Đối thủ nhận được mọi thứ không muộn hơn người dùng trung thực, không mất tính tổng quát, ta có s′ = s∗và người chơi i∗là độc hại. Lưu ý rằng chúng tôi không yêu cầu giá trị v trong E.a phải là hash của khối hợp lệ: vì nó sẽ trở nên rõ ràng trong phân tích, v = H(Br \(\ell\)) trong sự kiện phụ này. Dưới đây, trước tiên chúng tôi phân tích Trường hợp 2 theo sự kiện E và sau đó chỉ ra rằng giá trị của s∗ về cơ bản là được phân phối tương ứng cho Lr (do đó sự kiện E xảy ra trước Bước m + 3 với áp đảo xác suất cho trước các mối quan hệ của các tham số). Để bắt đầu, với bất kỳ bước 5 \(\leq\)s < s∗, mọi người xác minh trung thực i \(\in\)HSV r,s đã đợi thời gian ts và đặt vi là đa số phiếu của các tin nhắn (r, s−1) hợp lệ mà anh ta đã nhận được. Vì người chơi nên tôi đã nhận được tất cả các tin nhắn (r, s−1) trung thực theo Bổ đề 5.5, vì tất cả những người xác minh trung thực trong HSV r,4 đều có ký hiệu H(Br \(\ell\)) trường hợp sau 2 của GC, và vì |HSV r,s−1| > 2|MSV r,s−1| với mỗi s, bằng quy nạp chúng ta có người chơi i đã thiết lập vi = H(Br \(\ell\)). Điều tương tự cũng xảy ra với mọi người xác minh trung thực i \(\in\)HSV r,s∗người không dừng lại mà không lan truyền bất cứ điều gì. Bây giờ chúng ta xem xét Bước s∗và phân biệt bốn trường hợp con. Trường hợp 2.1.a. Sự kiện E.a xảy ra và tồn tại người xác minh trung thực i′ \(\in\)HSV r,s∗ai sẽ cũng dừng lại mà không tuyên truyền bất cứ điều gì. Trong trường hợp này, chúng ta có s∗−2 ≡0 mod 3 và Bước s∗là bước Coin-Fixed-To-0. Bởi định nghĩa, người chơi i' đã nhận được ít nhất tH thông báo hợp lệ (r, s∗−1) có dạng (ESIGj(0), ESIGj(v), \(\sigma\)r,s∗−1 j ). Vì tất cả người xác minh trong HSV r,s∗−1 đều có chữ ký H(Br \(\ell\)) và |MSV r,s∗−1| < tH, ta có v = H(Br \(\ell\)). Vì ít nhất tH −|MSV r,s∗−1| \(\geq\)1 trong số các tin nhắn (r, s∗−1) mà i′ nhận được cho 0 và v được gửi bởi người xác minh trong HSV r,s∗−1 sau thời gian T r +ts∗−1 \(\geq\)T r +t4 \(\geq\)T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\) +Λ, người chơi tôi′ đã nhận được ông,1 \(\ell\) vào thời điểm anh ta nhận được các tin nhắn (r, s∗−1) đó. Như vậy người chơi tôi’ dừng lại mà không truyền bá bất cứ điều gì; đặt Br = Br \(\ell\); và đặt CERT r của riêng mình thành tập hợp các thông báo (r, s∗−1) hợp lệ cho 0 và v mà anh ta đã nhận được. Tiếp theo, chúng tôi chỉ ra rằng, mọi trình xác minh i \(\in\)HSV r,s∗ đều đã dừng với Br = Br \(\ell\), hoặc đã đặt bi = 0 và được truyền (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s tôi ). Thật vậy, vì Bước s∗ đây là lần đầu tiên một số người xác minh dừng lại mà không truyền bá bất cứ điều gì, không có tồn tại một bước s′ < s∗ với s′ −2 ≡1 mod 3 sao cho tH (r, s′ −1)-người xác minh có dấu 1. Theo đó, không có trình xác minh nào trong HSV r,s∗dừng với Br = Br ừ.Hơn nữa, như tất cả những người xác minh trung thực ở bước {4, 5, . . . , s∗−1} đã ký H(Br \(\ell\)), có không tồn tại bước s′ \(\leq\)s∗với s′ −2 ≡0 mod 3 sao cho tH (r, s′ −1)-người xác minh đã ký một số v′′ ̸= H(Br \(\ell\)) —thực sự, |MSV r,s′−1| < th. Theo đó, không có trình xác minh nào trong HSV r,s∗stops với Br ̸= Br ǫ và Br ̸= Br \(\ell\). Nghĩa là, nếu người chơi i \(\in\)HSV r,s∗ đã dừng mà không truyền bá bất cứ thứ gì thì anh ta phải đặt Br = Br \(\ell\). Nếu người chơi i \(\in\)HSV r,s∗đã đợi thời gian ts∗và truyền một tin nhắn vào thời điểm đó \(\beta\)r,s∗ tôi = \(\alpha\)r,s∗ tôi + ts∗, anh ta đã nhận được tất cả tin nhắn từ HSV r,s∗−1, bao gồm ít nhất tH −|MSV r,s∗−1| của chúng cho 0 và v. Nếu tôi thấy > 2/3 đa số cho 1 thì anh ấy đã thấy hơn 2(tH −|MSV r,s∗−1|) tin nhắn hợp lệ (r, s∗−1) cho 1, với nhiều hơn hơn 2tH −3|MSV r,s∗−1| trong số chúng từ những người xác minh-(r, s∗−1) trung thực. Tuy nhiên, điều này hàm ý |HSV r,s∗−1| \(\geq\)tH−|MSV r,s∗−1|+2tH−3|MSV r,s∗−1| > 2n−4|MSV r,s∗−1|, mâu thuẫn sự thật là |HSV r,s∗−1| + 4|MSV r,s∗−1| < 2n, xuất phát từ mối quan hệ của các tham số. Theo đó, tôi không thấy > 2/3 đa số cho 1 và anh ta đặt bi = 0 vì Bước s∗ là bước Coin-Fixed-To-0. Như chúng tôi có đã thấy, vi = H(Br \(\ell\)). Do đó tôi truyền bá (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s i ) như chúng tôi muốn hiển thị. Đối với Bước s∗+ 1, vì người chơi i′ đã giúp truyền bá các thông điệp trong CERT r của mình vào hoặc trước thời điểm \(\alpha\)r,s∗ tôi′ + ts∗, tất cả người xác minh trung thực trong HSV r,s∗+1 đều đã nhận được ít nhất tH các thông báo hợp lệ (r, s∗−1) cho bit 0 và giá trị H(Br \(\ell\)) vào hoặc trước khi chúng hoàn thành đang chờ đợi. Hơn nữa, trình xác minh trong HSV r,s∗+1 sẽ không dừng trước khi nhận được (r, s∗−1)- bởi vì không tồn tại bất kỳ thông báo tH hợp lệ nào khác cho bit 1 với s′ −2 ≡1 mod 3 và 6 \(\leq\)s′ \(\leq\)s∗+ 1, theo định nghĩa của Bước s∗. Đặc biệt, Bước Bản thân s∗+ 1 là bước Coin-Fixed-To-1, nhưng không có người xác minh trung thực nào trong HSV r,s∗đã được phổ biến một tin nhắn cho 1 và |MSV r,s∗| < th. Do đó, tất cả các bộ xác minh trung thực trong HSV r,s∗+1 đều dừng mà không truyền bá bất cứ thứ gì và đặt Br = anh \(\ell\): như trước họ đã nhận được mr,1 \(\ell\) trước khi họ nhận được tin nhắn (r, s∗−1) mong muốn.20 Điều tương tự cũng có thể xảy ra với tất cả những người xác minh trung thực trong các bước tiếp theo và tất cả những người dùng trung thực nói chung. Đặc biệt họ đều biết Br = Br \(\ell\)trong khoảng thời gian Ir+1 và T r+1 \(\lambda\)r,s∗ tôi′ + ts∗<T r + \(\lambda\) + ts∗. Trường hợp 2.1.b. Sự kiện E.b xảy ra và tồn tại người xác minh trung thực i′ \(\in\)HSV r,s∗ai sẽ cũng dừng lại mà không tuyên truyền bất cứ điều gì. Trong trường hợp này, chúng ta có s∗−2 ≡1 mod 3 và Bước s∗là bước Coin-Fixed-To-1. Việc phân tích tương tự như Trường hợp 2.1.a và có nhiều chi tiết bị lược bỏ. 20Nếu \(\ell\)có ác ý, anh ta có thể cử ông,1 \(\ell\) muộn, hy vọng rằng một số người dùng/người xác minh trung thực chưa nhận được mr,1 \(\ell\) chưa khi họ nhận được chứng chỉ mong muốn cho nó. Tuy nhiên, do người kiểm tra ˆi \(\in\)HSV r,4 đã đặt bˆi = 0 và vˆi = H(Br \(\ell\)), như trước khi chúng ta có hơn một nửa số người xác minh trung thực i \(\in\)HSV r,3 đã đặt vi = H(Br \(\ell\)). Điều này càng hàm ý thêm hơn một nửa số người xác minh trung thực i \(\in\)HSV r,2 đã đặt vi = H(Br \(\ell\)), và những người xác minh (r, 2) đều đã nhận được mr,1 \(\ell\). Như Kẻ thù không thể phân biệt người xác minh với người không xác minh, anh ta không thể nhắm mục tiêu truyền bá mr,1 \(\ell\) tới (r, 2)-người xác minh mà không để những người không xác minh nhìn thấy nó. Trên thực tế, với xác suất cao, hơn một nửa (hoặc một phần không đổi tốt) trong số tất cả người dùng trung thực đã thấy mr,1 \(\ell\) sau khi chờ đợi t2 từ đầu vòng r của chính họ. Từ đây trở đi, thời gian \(\lambda\)′ cần thiết cho ông,1 \(\ell\) để tiếp cận những người dùng trung thực còn lại nhỏ hơn nhiều so với Λ và để đơn giản, chúng tôi không viết nó ra trong phân tích. Nếu 4\(\lambda\) \(\geq\) \(\lambda\)′ thì quá trình phân tích sẽ được thực hiện mà không có bất kỳ thay đổi nào: đến cuối Bước 4, tất cả người dùng trung thực sẽ nhận được mr,1 \(\ell\). Nếu kích thước của khối trở nên rất lớn và 4\(\lambda\) < \(\lambda\)′ thì ở Bước 3 và 4, giao thức có thể yêu cầu mỗi người xác minh đợi \(\lambda\)′/2 thay vì 2\(\lambda\) và phân tích tiếp tục được giữ nguyên.Như trước đây, người chơi i′ phải nhận được ít nhất tH thông báo hợp lệ (r, s∗−1) có dạng (ESIGj(1), ESIGj(vj), \(\sigma\)r,s∗−1 j ). Một lần nữa theo định nghĩa của s∗, không tồn tại bước 5 \(\leq\)s′ < s∗với s′ −2 ≡0 mod 3, trong đó ít nhất tH (r, s′ −1)-người xác minh có dấu 0 và tương tự v. Do đó, người chơi i′ dừng lại mà không truyền bá bất cứ điều gì; đặt Br = Br Ă; và bộ CERT r của chính anh ta là tập hợp các thông báo (r, s∗−1) hợp lệ cho bit 1 mà anh ta đã nhận được. Ngoài ra, bất kỳ trình xác minh nào khác i \(\in\)HSV r,s∗ đều đã dừng với Br = Br ă , hoặc đã đặt bi = 1 và được truyền bá (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ tôi ). Vì người chơi tôi′ đã giúp truyền bá các tin nhắn (r, s∗−1) trong CERT của anh ấy r theo thời gian \(\alpha\)r,s∗ tôi′ + ts∗, một lần nữa tất cả những người xác minh trung thực trong HSV r,s∗+1 dừng mà không lan truyền bất cứ thứ gì và đặt Br = Br ừ . Tương tự, tất cả đều trung thực người dùng biết Br = Br ǫ trong khoảng thời gian Ir+1 và T r+1 \(\lambda\)r,s∗ tôi′ + ts∗
2/3 đa số đối với bit 1, một lần nữa vì |HSV r,s∗−1| + 4|MSV r,s∗−1| < 2n. Do đó, mọi người xác minh trung thực i \(\in\)HSV r,s∗tập bi = 0, vi = H(Br \(\ell\)) theo đa số phiếu và tuyên truyền mr,s∗ tôi = (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s∗ tôi ) tại thời điểm \(\alpha\)r,s∗ tôi + ts∗. Bây giờ hãy xem xét những người xác minh trung thực ở Bước s∗+ 1 (là bước Coin-Fixed-To-1). Nếu Đối thủ thực sự gửi tin nhắn trong CERT r i∗với một số người trong số họ và khiến họ dừng lại thì tương tự như trường hợp 2.1.a, tất cả người dùng trung thực đều biết Br = Br \(\ell\)trong khoảng thời gian Ir+1 và T r+1 \(\leq\)T r + \(\lambda\) + ts∗+1. Mặt khác, tất cả những người xác minh trung thực ở Bước s∗+1 đã nhận được tất cả các thông báo (r, s∗)-cho 0 và H(Br \(\ell\)) từ HSV r,s∗sau thời gian chờ ts∗+1, dẫn đến > 2/3 đa số, bởi vì |HSV r,s∗| > 2|MSV r,s∗|. Do đó, tất cả các bộ xác minh trong HSV r,s∗+1 đều truyền bá thông điệp của chúng cho 0 và H(Br \(\ell\)) tương ứng. Lưu ý rằng các bộ xác minh trong HSV r,s∗+1 không dừng lại ở Br = Br \(\ell\), bởi vì Bước s∗+ 1 không phải là bước Coin-Fixed-To-0. Bây giờ hãy xem xét những người xác minh trung thực ở Bước s∗+2 (là bước Lật xu thật). Nếu Đối thủ gửi tin nhắn trong CERT r i∗với một số người trong số họ và khiến họ dừng lại, thì một lần nữa tất cả người dùng trung thực đều biết Br = Br \(\ell\)trong khoảng thời gian Ir+1 và T r+1 \(\leq\)T r + \(\lambda\) + ts∗+2.Mặt khác, tất cả những người xác minh trung thực ở Bước s∗+ 2 đều đã nhận được tất cả các thông báo (r, s∗+ 1) cho 0 và H(Br \(\ell\)) từ HSV r,s∗+1 sau thời gian chờ ts∗+2, dẫn đến > 2/3 đa số. Do đó tất cả chúng đều truyền bá thông điệp của chúng cho 0 và H(Br \(\ell\)) tương ứng: đó là họ làm không phải “tung đồng xu” trong trường hợp này. Một lần nữa, hãy lưu ý rằng chúng không dừng lại nếu không lan truyền, bởi vì Bước s∗+ 2 không phải là bước Coin-Fixed-To-0. Cuối cùng, đối với những người xác minh trung thực ở Bước s∗+3 (là một bước khác của Coin-Fixed-To-0), tất cả trong số họ sẽ nhận được ít nhất tH tin nhắn hợp lệ cho 0 và H(Br \(\ell\)) từ HSV s∗+2, nếu họ thực sự đợi thời gian ts∗+3. Do đó, dù đối thủ có gửi tin nhắn hay không trong CERT r i∗đối với bất kỳ trong số chúng, tất cả các trình xác minh trong HSV r,s∗+3 đều dừng lại với Br = Br \(\ell\), không có tuyên truyền bất cứ điều gì. Tùy thuộc vào cách hành động của Đối thủ, một số trong số họ có thể có CERT r của riêng họ bao gồm các thông báo (r, s∗−1) trong CERT r i∗, và những người khác có CERT r của riêng họ bao gồm các tin nhắn (r, s∗+ 2). Trong mọi trường hợp, tất cả người dùng trung thực biết Br = Br \(\ell\)trong khoảng thời gian Ir+1 và T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3. Trường hợp 2.2.b. Sự kiện E.b xảy ra và không tồn tại người xác minh trung thực i′ \(\in\)HSV r,s∗who cũng nên dừng lại mà không tuyên truyền bất cứ điều gì. Phân tích trong trường hợp này tương tự như trường hợp 2.1.b và trường hợp 2.2.a, do đó có nhiều chi tiết đã bị bỏ qua. Đặc biệt, CERT r i∗bao gồm các thông điệp tH mong muốn (r, s∗−1) đối với bit 1 mà Đối thủ có thể thu thập hoặc tạo ra, s∗−2 ≡1 mod 3, Bước s∗là Bước cố định bằng tiền xu thành 1 và không có người xác minh (r, s∗) trung thực nào có thể thấy > 2/3 đa số cho 0. Do đó, mọi trình xác minh i \(\in\)HSV r,s∗đặt bi = 1 và truyền mr,s∗ tôi = (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ tôi ) tại thời điểm \(\alpha\)r,s∗ tôi + ts∗. Tương tự như Trường hợp 2.2.a, trong tối đa 3 bước nữa (tức là giao thức đạt đến Bước s∗+3, đây là một bước khác được cố định bằng tiền xu thành 1), tất cả người dùng trung thực đều biết Br = Br ừ trong khoảng thời gian Ir+1. Hơn nữa, T r+1 có thể là T r+\(\lambda\)+ts∗+1, hoặcT r+\(\lambda\)+ts∗+2, hoặc \(\leq\)T r + \(\lambda\) + ts∗+3, tùy thuộc vào thời điểm lần đầu tiên người xác minh trung thực có thể dừng lại mà không lan truyền. Kết hợp bốn trường hợp con, chúng ta có tất cả người dùng trung thực đều biết Br trong khoảng thời gian Ir+1, với T r+1 \(\leq\)T r + \(\lambda\) + ts∗trong trường hợp 2.1.a và 2.1.b, và T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 trong Trường hợp 2.2.a và 2.2.b. Nó vẫn ở giới hạn trên s∗và do đó T r+1 cho Trường hợp 2, và chúng tôi làm như vậy bằng cách xem xét cách nhiều khi các bước Lật xu thực sự được thực thi trong giao thức: nghĩa là một số người xác minh trung thực thực sự đã tung đồng xu. Cụ thể, cố định tùy ý một bước Lật xu thật s′ (tức là 7 \(\leq\)s′ \(\leq\)m + 2 và s′ −2 ≡2 mod 3), và đặt \(\ell\)′ \(\triangleq\)arg minj\(\in\)SV r,s′−1 H(\(\sigma\)r,s′−1 j ). Bây giờ chúng ta hãy giả sử s′ < s∗, bởi vì nếu không thì không có người xác minh trung thực nào thực sự tung đồng xu trong Bước s′, theo quy định trước đó. các cuộc thảo luận. Theo định nghĩa của SV r,s′−1, giá trị hash của thông tin xác thực \(\ell\)′ cũng là giá trị nhỏ nhất trong số tất cả người dùng trong PKr−k. Vì hàm hash là ngẫu nhiên oracle nên lý tưởng nhất là người chơi \(\ell\)′ trung thực với xác suất ít nhất là h. Như chúng tôi sẽ trình bày sau, ngay cả khi Đối thủ cố gắng hết sức để dự đoán đầu ra ngẫu nhiên oracle và nghiêng xác suất, người chơi \(\ell\)′ vẫn trung thực với xác suấtít nhất ph = h2(1 + h −h2). Dưới đây chúng tôi xem xét trường hợp khi điều đó thực sự xảy ra: nghĩa là, \(\ell\)′ \(\in\)HSV r,s′−1. Lưu ý rằng mọi người xác minh trung thực i \(\in\)HSV r,s′ đều đã nhận được tất cả tin nhắn từ HSV r,s′−1 bởi thời gian \(\alpha\)r,s′ tôi +ts′. Nếu người chơi tôi cần tung một đồng xu (tức là anh ta chưa nhìn thấy > 2/3 đa số cho cùng bit b \(\in\){0, 1}), thì anh ta đặt bi = lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )). Nếu có tồn tại một sự trung thực khác người xác minh i′ \(\in\)HSV r,s′ người đã xem > 2/3 đa số cho một bit b \(\in\){0, 1}, sau đó theo Thuộc tính (d) trong Bổ đề 5.5, không có người xác minh trung thực nào trong HSV r,s′ sẽ thấy > 2/3 đa số trong một thời gian b′ ̸= b. Vì lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )) = b với xác suất 1/2, tất cả người xác minh trung thực trong HSV r,s′ đều đạt thỏa thuận về b với xác suất 1/2. Tất nhiên, nếu một người xác minh i' như vậy không tồn tại thì tất cả những người xác minh trung thực trong HSV r,s′ đồng ý về bit lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )) với xác suất 1. Kết hợp xác suất của \(\ell\)′ \(\in\)HSV r,s′−1, ta có người xác minh trung thực trong HSV r,s′ đạt được thỏa thuận về bit b \(\in\){0, 1} với xác suất ít nhất là ph 2 = h2(1+h−h2) 2 . Hơn nữa, bằng quy nạp theo đa số phiếu như trước đây, tất cả người xác minh trung thực trong HSV r,s′ đều có tập vi của họ là H(Br \(\ell\)). Do đó, khi đạt được thỏa thuận về b ở Bước s′, T r+1 là hoặcT r + \(\lambda\) + ts′+1 hoặcT r + \(\lambda\) + ts′+2, tùy thuộc vào b = 0 hay b = 1, theo phân tích Trường hợp 2.1.a và 2.1.b. trong cụ thể, sẽ không có bước Lật xu thật nào nữa được thực hiện: nghĩa là những người xác minh trong các bước như vậy vẫn kiểm tra xem chúng có phải là người xác minh hay không và do đó chờ đợi, nhưng tất cả chúng sẽ dừng mà không tuyên truyền bất cứ điều gì. Theo đó, trước Bước s∗, số lần thực hiện các bước Coin-GenuinelyFlipped được phân phối theo biến ngẫu nhiên Lr. Để Bước s′ là bước Lật xu thật cuối cùng theo Lr, bằng cách xây dựng giao thức chúng tôi có s′ = 4 + 3Lr. Khi nào Đối thủ nên thực hiện Bước s∗xảy ra nếu anh ta muốn trì hoãn T r+1 nhiều nhất có thể có thể? Chúng ta thậm chí có thể cho rằng Kẻ thù biết trước việc thực hiện Lr. Nếu s∗> s′ thì điều đó là vô ích, bởi vì những người xác minh trung thực đã đạt được thỏa thuận về Bước s′. Để chắc chắn, trong trường hợp này s∗sẽ là s′ +1 hoặc s′ +2, tùy thuộc vào việc b = 0 hoặc b = 1. Tuy nhiên, đây thực sự là Trường hợp 2.1.a và 2.1.b, và kết quả T r+1 chính xác là tương tự như trong trường hợp đó. Chính xác hơn, T r+1 \(\lambda\) + ts′+2. Nếu s∗< s′ −3 —tức là, s∗ nằm trước bước Lật xu thật cuối cùng thứ hai— thì bằng phân tích các trường hợp 2.2.a và 2.2.b, T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 < T r + \(\lambda\) + ts′. Nghĩa là, Đối thủ thực sự đang làm cho thỏa thuận về Br diễn ra nhanh hơn. Nếu s∗= s′ −2 hoặc s′ −1 —tức là bước Coin-Fixed-To-0 hoặc bước Coin-Fixed-To-1 ngay trước Bước s′— sau đó bằng cách phân tích bốn trường hợp phụ, những người xác minh trung thực trong Các bước s′ không được tung đồng xu nữa, vì chúng đã dừng mà không lan truyền, hoặc đã xem > 2/3 đa số cho cùng một bit b. Vì vậy chúng tôi có T r+1T r + \(\lambda\) + ts∗+3T r + \(\lambda\) + ts′+2.Tóm lại, bất kể là gì, chúng ta có T r+1 \(\leq\)T r + \(\lambda\) + ts′+2 = T r + \(\lambda\) + t3Lr+6 = T r + \(\lambda\) + (2(3Lr + 6) −3)\(\lambda\) + Λ = T r + (6Lr + 10)\(\lambda\) + Λ, như chúng tôi muốn thể hiện. Trường hợp xấu nhất xảy ra khi s∗= s′ −1 và Trường hợp 2.2.b xảy ra. Kết hợp Trường hợp 1 và 2 của giao thức BA nhị phân, Bổ đề 5.3 đúng. ■ 5,9 Sự an toàn của Qr hạt giống và xác suất của một nhà lãnh đạo trung thực Việc còn lại là chứng minh Bổ đề 5.4. Hãy nhớ lại rằng các bộ xác minh trong vòng r được lấy từ PKr−k và được chọn theo đại lượng Qr-1. Lý do đưa ra tham số nhìn lại k là để đảm bảo rằng, quay lại vòng r −k, khi Đối thủ có thể thêm người dùng độc hại mới đến PKr−k, anh ta không thể dự đoán đại lượng Qr−1 ngoại trừ với xác suất không đáng kể. Lưu ý rằng Hàm hash là ngẫu nhiên oracle và Qr−1 là một trong những đầu vào của nó khi chọn trình xác minh cho vòng r. Do đó, bất kể người dùng có ác ý được thêm vào PKr−k như thế nào, theo quan điểm của Đối thủ, mỗi người dùng đều có thể một trong số họ vẫn được chọn làm người xác minh ở bước của vòng r với xác suất yêu cầu p (hoặc p1 cho Bước 1). Chính xác hơn, chúng ta có bổ đề sau. Bổ đề 5.6. Với k = O(log1/2 F), với mỗi hiệp r, với xác suất áp đảo đối thủ sẽ đã không truy vấn Qr−1 tới oracle ngẫu nhiên ở vòng r −k. Bằng chứng. Chúng ta tiến hành bằng quy nạp. Giả sử rằng với mỗi vòng \(\gamma\) < r, Đối thủ không truy vấn Q\(\gamma\)−1 đến oracle ngẫu nhiên ở vòng \(\gamma\) −k.21 Hãy xem xét trò chơi tinh thần sau đây được chơi bởi Đối thủ ở vòng r −k, cố gắng dự đoán Qr−1. Ở Bước 1 của mỗi vòng \(\gamma\) = r −k, . . . , r −1, với một Q\(\gamma\)−1 cụ thể không được truy vấn ngẫu nhiên oracle, bằng cách sắp xếp người chơi i \(\in\)PK\(\gamma\)−k theo các giá trị hash H(SIGi(\(\gamma\), 1, Q\(\gamma\)−1)) ngày càng có nhiều hoán vị ngẫu nhiên trên PK\(\gamma\)−k. Theo định nghĩa, người dẫn đầu \(\ell\) \(\gamma\) là người người sử dụng đầu tiên trong hoán vị và trung thực với xác suất h. Hơn nữa, khi PK\(\gamma\)−k lớn đủ, với bất kỳ số nguyên x \(\geq\)1 nào, xác suất mà x người dùng đầu tiên trong hoán vị đều là độc hại nhưng (x + 1)st trung thực là (1 −h)xh. Nếu \(\ell\) \(\gamma\) là trung thực thì Q\(\gamma\) = H(SIG\(\ell\) \(\gamma\)(Q\(\gamma\)−1), \(\gamma\)). Vì đối thủ không thể giả mạo chữ ký của \(\ell\) \(\gamma\), Q\(\gamma\) được phân bổ đồng đều một cách ngẫu nhiên theo quan điểm của Đối thủ và, ngoại trừ với xác suất nhỏ theo cấp số nhân,22 không được truy vấn H ở vòng r −k. Vì mỗi Q\(\gamma\)+1, Q\(\gamma\)+2, . . . , Qr−1 tương ứng là đầu ra của H với Q\(\gamma\), Q\(\gamma\)+1, . . . , Qr−2 là một trong những đầu vào, tất cả đều trông ngẫu nhiên đối với Đối thủ và Đối thủ không thể truy vấn Qr−1 đến H tại tròn r −k. Theo đó, trường hợp duy nhất mà Đối thủ có thể dự đoán Qr−1 với xác suất tốt ở vòng đấu r−k là khi tất cả các nhà lãnh đạo \(\ell\)r−k, . . . , \(\ell\)r−1 là độc hại. Một lần nữa hãy xem xét một vòng \(\gamma\) \(\in\){r−k . . . , r−1} và hoán vị ngẫu nhiên trên PK\(\gamma\)−k được tạo ra bởi các giá trị hash tương ứng. Nếu vì một số người x \(\geq\)2, x −1 người dùng đầu tiên trong hoán vị đều độc hại và x-th là trung thực, sau đó là Đối thủ có x lựa chọn cho Q\(\gamma\): hoặc ở dạng H(SIGi(Q\(\gamma\)−1, \(\gamma\))), trong đó i là một trong 21Vì k là một số nguyên nhỏ, không mất tính tổng quát nên có thể giả sử rằng k vòng đầu tiên của giao thức được chạy trong một môi trường an toàn và giả thuyết quy nạp đúng cho các vòng đó. 22Nghĩa là, hàm mũ của độ dài đầu ra của H. Lưu ý rằng xác suất này nhỏ hơn F rất nhiều.những người dùng độc hại x−1 đầu tiên, bằng cách biến người chơi i trở thành người dẫn đầu thực sự của vòng \(\gamma\); hoặc H(Q\(\gamma\)−1, \(\gamma\)), bởi buộc B\(\gamma\) = B\(\gamma\) ừ . Ngược lại, người đứng đầu vòng \(\gamma\) sẽ là người dùng trung thực đầu tiên trong hoán vị và Qr−1 trở nên khó đoán đối với Kẻ thù. Đối thủ nên theo đuổi lựa chọn x nào ở trên của Q\(\gamma\)? Để giúp đỡ kẻ thù Trả lời câu hỏi này, trong trò chơi tinh thần, chúng ta thực sự khiến anh ta mạnh hơn anh ta thực sự là như sau. Trước hết, trên thực tế, Đối thủ không thể tính toán hash của người dùng trung thực chữ ký, do đó không thể quyết định, đối với mỗi Q\(\gamma\), số x(Q\(\gamma\)) của người dùng độc hại lúc đầu của hoán vị ngẫu nhiên trong vòng \(\gamma\) + 1 do Q\(\gamma\) gây ra. Trong trò chơi tinh thần, chúng tôi đưa cho anh ta số x(Q\(\gamma\)) miễn phí. Thứ hai, trên thực tế, có x người dùng đầu tiên trong hoán vị tất cả trở nên độc hại không nhất thiết có nghĩa là tất cả họ đều có thể trở thành người lãnh đạo, bởi vì hash giá trị chữ ký của họ cũng phải nhỏ hơn p1. Chúng tôi đã bỏ qua ràng buộc này trong tâm trí trò chơi, mang lại cho Đối thủ nhiều lợi thế hơn. Dễ dàng nhận thấy trong trò chơi trí tuệ, phương án tối ưu dành cho Đối thủ, ký hiệu là ˆQ\(\gamma\), là thứ tạo ra chuỗi người dùng độc hại dài nhất khi bắt đầu ngẫu nhiên hoán vị trong vòng \(\gamma\) + 1. Thật vậy, với một Q\(\gamma\) cụ thể, giao thức không phụ thuộc vào Q\(\gamma\)−1 nữa và Đối thủ chỉ có thể tập trung vào hoán vị mới ở vòng \(\gamma\) + 1, có phân phối tương tự cho số lượng người dùng độc hại lúc đầu. Theo đó, ở mỗi vòng \(\gamma\), ˆQ\(\gamma\) được đề cập ở trên mang lại cho anh ta số lượng tùy chọn lớn nhất cho Q\(\gamma\)+1 và do đó tối đa hóa xác suất những người dẫn đầu liên tiếp đều có ác ý. Do đó, trong trò chơi tinh thần, Đối thủ đang theo Chuỗi Markov từ vòng r −k để làm tròn r −1, với không gian trạng thái là {0} \(\cup\){x : x \(\geq\)2}. Trạng thái 0 thể hiện thực tế là Người dùng đầu tiên trong hoán vị ngẫu nhiên ở vòng hiện tại \(\gamma\) là trung thực, do đó Đối thủ không thực hiện được trò chơi dự đoán Qr−1; và mỗi trạng thái x \(\geq\)2 biểu thị thực tế là x −1 người dùng đầu tiên trong hoán vị là độc hại và thứ x là trung thực, do đó Đối thủ có x tùy chọn cho Q\(\gamma\). các xác suất chuyển tiếp P(x, y) như sau. • P(0, 0) = 1 và P(0, y) = 0 với mọi y \(\geq\)2. Nghĩa là, Đối thủ đã thất bại trong trò chơi ngay lần đầu tiên người dùng trong hoán vị trở nên trung thực. • P(x, 0) = hx với mọi x \(\geq\)2. Nghĩa là, với xác suất hx, tất cả các hoán vị ngẫu nhiên x đều có những người dùng đầu tiên của họ trung thực, do đó Đối thủ sẽ thất bại trong trò chơi ở vòng tiếp theo. • Với mọi x \(\geq\)2 và y \(\geq\)2, P(x, y) là xác suất trong số x hoán vị ngẫu nhiên gây ra bởi các tùy chọn x của Q\(\gamma\), chuỗi người dùng độc hại dài nhất ở đầu một số trong số đó là y −1, do đó Đối thủ có y lựa chọn cho Q\(\gamma\)+1 trong vòng tiếp theo. Đó là, P(x, y) = y−1 X tôi=0 (1 −h)ih !x − y−2 X tôi=0 (1 −h)ih !x = (1 −(1 −h)y)x −(1 −(1 −h)y−1)x. Lưu ý rằng trạng thái 0 là trạng thái hấp thụ duy nhất trong ma trận chuyển tiếp P và mọi trạng thái khác x có xác suất dương tiến tới 0. Chúng ta quan tâm đến giới hạn trên của số k của các vòng cần thiết để Chuỗi Markov hội tụ về 0 với xác suất áp đảo: nghĩa là không bất kể chuỗi bắt đầu ở trạng thái nào, với khả năng cao là Đối thủ sẽ thua trò chơi và không dự đoán được Qr−1 ở vòng r −k. Xét ma trận chuyển tiếp P (2) \(\triangleq\)P \(\cdot\) P sau hai vòng. Dễ dàng thấy rằng P(2)(0, 0) = 1 và P (2)(0, x) = 0 với mọi x \(\geq\)2. Với mọi x \(\geq\)2 và y \(\geq\)2, vì P(0, y) = 0, ta có P(2)(x, y) = P(x, 0)P(0, y) + X z \(\geq\)2 P(x, z)P(z, y) = X z \(\geq\)2 P(x, z)P(z, y).Giả sử ¯h \(\triangleq\)1 −h, ta có P(x, y) = (1 −¯hy)x −(1 −¯hy−1)x và P(2)(x, y) = X z \(\geq\)2 [(1 −¯hz)x −(1 −¯hz−1)x][(1 −¯hy)z −(1 −¯hy−1)z]. Dưới đây chúng tôi tính giới hạn của P (2)(x,y) P(x,y) khi h tiến tới 1 —tức là ¯h tiến tới 0. Lưu ý rằng giá trị cao nhất bậc của ¯h trong P(x, y) là ¯hy−1, với hệ số x. Theo đó, lim h \(\to\) 1 P (2)(x, y) P(x, y) = lim ¯h \(\to\) 0 P (2)(x, y) P(x, y) = lim ¯h \(\to\) 0 P (2)(x, y) x¯hy−1 + O(¯hy) = lim ¯h \(\to\) 0 P z \(\geq\)2[x¯hz−1 + O(¯hz)][z¯hy−1 + O(¯hy)] x¯hy−1 + O(¯hy) = lim ¯h \(\to\) 0 2x¯hy + O(¯hy+1) x¯hy−1 + O(¯hy) = lim ¯h \(\to\) 0 2x¯hy x¯hy−1 = lim ¯h \(\to\) 0 2¯h = 0. Khi h đủ gần 1,23 ta có P (2)(x, y) P(x, y) 11 2 với mọi x \(\geq\)2 và y \(\geq\)2. Bằng quy nạp, với mọi k > 2, P (k) \(\triangleq\)P k sao cho • P (k)(0, 0) = 1, P (k)(0, x) = 0 với mọi x \(\geq\)2, và • với mọi x \(\geq\)2 và y \(\geq\)2, P (k)(x, y) = P (k−1)(x, 0)P(0, y) + X z \(\geq\)2 P (k−1)(x, z)P(z, y) = X z \(\geq\)2 P (k−1)(x, z)P(z, y) \(\leq\) X z \(\geq\)2 P(x, z) 2k−2 \(\cdot\) P(z, y) = P(2)(x, y) 2k−2 \(\leq\)P(x, y) 2k−1 . Khi P(x, y) 1, sau 1−log2 F vòng, xác suất chuyển sang bất kỳ trạng thái y \(\geq\)2 nào là không đáng kể, bắt đầu với bất kỳ trạng thái x \(\geq\)2. Mặc dù có rất nhiều trạng thái như vậy, nhưng dễ dàng nhận thấy rằng lim y→+∞ P(x, y) P(x, y + 1) = lim y→+∞ (1 −¯hy)x −(1 −¯hy−1)x (1 −¯hy+1)x −(1 −¯hy)x = lim y→+∞ ¯hy−1 −¯hy ¯hy −¯hy+1 = 1 ¯h = 1 1 −h. Do đó, mỗi hàng x của ma trận chuyển tiếp P giảm dưới dạng một chuỗi hình học với tốc độ 1 1−h > 2 khi y đủ lớn và điều tương tự cũng đúng với P (k). Theo đó, khi k đủ lớn nhưng vẫn theo thứ tự log1/2 F, P y \(\geq\)2 P (k)(x, y) < F với mọi x \(\geq\)2. Nghĩa là, với xác suất áp đảo Đối thủ thua trò chơi và không dự đoán được Qr−1 ở hiệp r −k. Với h \(\in\)(2/3, 1], thêm phân tích phức tạp cho thấy tồn tại một hằng số C lớn hơn 1/2 một chút, sao cho đủ lấy k = O(logC F). Do đó Bổ đề 5.6 đúng. ■ Bổ đề 5.4. (trình bày lại) Cho các thuộc tính 1–3 cho mỗi vòng trước r, ph = h2(1 + h −h2) cho Lr, và người đứng đầu \(\ell\)r là người trung thực với xác suất ít nhất là ph. 23Ví dụ: h = 80% như được đề xuất bởi các lựa chọn tham số cụ thể.
Bằng chứng. Theo Bổ đề 5.6, Đối thủ không thể dự đoán Qr−1 ở vòng r −k ngoại trừ với xác suất không đáng kể. Lưu ý rằng điều này không có nghĩa là xác suất của một nhà lãnh đạo trung thực là h cho mỗi vòng. Thật vậy, với Qr−1, tùy thuộc vào số lượng người dùng độc hại lúc bắt đầu hoán vị ngẫu nhiên của PKr−k, Đối thủ có thể có nhiều lựa chọn cho Qr và do đó có thể làm tăng xác suất xuất hiện một người lãnh đạo ác ý trong vòng r + 1 — một lần nữa chúng ta đang cho anh ta một số ưu điểm không thực tế như trong Bổ đề 5.6, nhằm đơn giản hóa việc phân tích. Tuy nhiên, đối với mỗi Qr−1 mà Đối thủ không truy vấn H ở vòng r −k, đối với bất kỳ x \(\geq\)1 nào, với xác suất (1 −h)x−1h người dùng trung thực đầu tiên xuất hiện ở vị trí x trong kết quả hoán vị ngẫu nhiên của PKr−k. Khi x = 1 thì xác suất người dẫn đầu trung thực ở vòng r + 1 là quả thực là h; trong khi khi x = 2, Đối thủ có hai lựa chọn cho Qr và xác suất đạt được là h2. Chỉ bằng cách xem xét hai trường hợp này, chúng ta có xác suất để có một người dẫn đầu trung thực trong vòng r + 1 ít nhất là h \(\cdot\) h + (1 −h)h \(\cdot\) h2 = h2(1 + h −h2) như mong muốn. Lưu ý rằng xác suất trên chỉ xem xét tính ngẫu nhiên trong giao thức từ vòng r −k để làm tròn r. Khi tất cả tính ngẫu nhiên từ vòng 0 đến vòng r được xem xét, Qr−1 là Đối thủ thậm chí còn khó dự đoán hơn và xác suất có được người dẫn đầu trung thực ở vòng r + 1 là ít nhất h2(1 + h −h2). Thay r + 1 bằng r và dịch chuyển mọi thứ lùi lại một vòng, người dẫn đầu \(\ell\)r trung thực với xác suất ít nhất là h2(1 + h −h2), như mong muốn. Tương tự, trong mỗi bước Lật xu thật, “người dẫn đầu” của bước đó - tức là người xác minh. trong SV r,s có thông tin xác thực có giá trị hash nhỏ nhất, trung thực với xác suất ít nhất là h2(1 + h −h2). Do đó ph = h2(1 + h −h2) đối với Lr và Bổ đề 5.4 đúng. ■
Algorand ′
1 Dans cette section, nous construisons une version de Algorand ′ fonctionnant sous l'hypothèse suivante. Hypothèse de la majorité honnête des utilisateurs : plus des 2/3 des utilisateurs de chaque PKr sont honnêtes. Dans la section 8, nous montrons comment remplacer l'hypothèse ci-dessus par la majorité honnête souhaitée des Hypothèse monétaire. 5.1 Notations et paramètres supplémentaires Notations • m \(\in\)Z+ : le nombre maximum d'étapes dans le protocole binaire BA, un multiple de 3. • Lr \(\leq\)m/3 : une variable aléatoire représentant le nombre d'essais de Bernoulli nécessaires pour voir un 1, lorsque chaque essai vaut 1 avec probabilité ph 2 et il y a au plus des essais m/3. Si tous les essais échouent alors Lr\(\triangleq\)m/3. Lr sera utilisé pour limiter le temps nécessaire à la génération du bloc Br. • tH = 2n 3 + 1 : le nombre de signatures nécessaires dans les conditions finales du protocole. • CERT r : le certificat du Br. Il s’agit d’un ensemble de signatures de H(Br) provenant de vérificateurs appropriés dans rond r. Paramètres • Relations entre divers paramètres. — Pour chaque étape s > 1 du tour r, n est choisi de telle sorte que, avec une écrasante probabilité, |HSVr,s| > 2|MSVr,s| et |HSVr,s| + 4|MSVr,s| <2n. Plus la valeur de h est proche de 1, plus n doit être petit. En particulier, nous utilisons (variantes de) Tchernofflimite pour garantir que les conditions souhaitées soient maintenues avec une écrasante probabilité. — m est choisi tel que Lr < m/3 avec une probabilité écrasante. • Exemples de choix de paramètres importants. — F = 10−12. — n \(\approx\)1500, k = 40 et m = 180.5.2 Implémentation de clés éphémères dans Algorand ′ 1 Comme déjà mentionné, nous souhaitons qu'un vérificateur i \(\in\)SV r,s signe numériquement son message mr,s je de pas s dans le tour r, par rapport à une clé publique éphémère pkr,s i , en utilisant une clé secrète éphémère skr,s je que il détruit rapidement après utilisation. Nous avons donc besoin d'une méthode efficace pour garantir que chaque utilisateur puisse vérifier que pkr,s je est bien la clé à utiliser pour vérifier la signature de mr,s je. Nous le faisons par un (au mieux de nos connaissances) nouvelle utilisation de schémas de signature basés sur l'identité. A un niveau élevé, dans un tel schéma, une autorité centrale A génère une clé principale publique, PMK, et une clé principale secrète correspondante, SMK. Étant donné l’identité U d’un joueur U, A calcule : via SMK, une clé de signature secrète skU relative à la clé publique U, et donne en privé la skU à U. (En effet, dans un schéma de signature numérique basé sur l'identité, la clé publique d'un utilisateur U est U lui-même !) De cette façon, si A détruit SMK après avoir calculé les clés secrètes des utilisateurs qu'il souhaite permettre à produit des signatures numériques, et ne conserve aucune clé secrète calculée, alors U est le seul à pouvoir peut signer numériquement des messages relatifs à la clé publique U. Ainsi, toute personne connaissant le « nom de U », connaît automatiquement la clé publique de U et peut ainsi vérifier les signatures de U (éventuellement en utilisant également le clé principale publique PMK). Dans notre application, l’autorité A est l’utilisateur i, et l’ensemble de tous les utilisateurs possibles U coïncide avec la paire de pas ronds (r, s) dans —disons— S = {i}\(\times\){r′, . . . , r′ +106}\(\times\){1, . . . , m+3}, où r′ est une donnée tour, et m + 3 la limite supérieure du nombre d'étapes pouvant se produire au cours d'un tour. Ceci façon, pkr,s je \(\triangleq\)(i, r, s), pour que tout le monde voie la signature de i SIGr,s pkr,s je (madame, s je ) peux, avec écrasante probabilité, vérifiez-la immédiatement pour le premier million de tours r suivant r′. En d’autres termes, je génère d’abord PMK et SMK. Ensuite, il annonce que PMK est mon maître. clé publique pour n'importe quel tour r \(\in\)[r′, r′ + 106], et utilise SMK pour produire et stocker le secret en privé clé skr,s je pour chaque triplet (i, r, s) \(\in\)S. Ceci fait, il détruit SMK. S'il détermine qu'il n'est pas une partie de SV r,s, alors je peux quitter skr,s je seul (car le protocole n'exige pas qu'il authentifie n'importe quel message dans les étapes s du tour r). Sinon, j'utilise d'abord skr,s je signer numériquement son message mr,s moi, et puis détruit skr,s je. Notez que je peux publier sa première clé principale publique lors de sa première entrée dans le système. C'est-à-dire le même paiement \(\wp\)qui amène i dans le système (à un tour r′ ou à un tour proche de r′), peut aussi spécifier, à la demande de i, que la clé principale publique de i pour tout tour r \(\in\)[r′, r′ + 106] est PMK — par exemple, par incluant une paire de la forme (PMK, [r′, r′ + 106]). Notez également que, puisque m + 3 est le nombre maximum de pas dans un tour, en supposant qu'un tour Cela prend une minute, la réserve de clés éphémères ainsi produite durera près de deux ans. En même temps Avec le temps, ces clés secrètes éphémères ne prendront pas trop de temps à produire. Utilisation d'une courbe elliptique basée système avec 32B clés, chaque clé secrète est calculée en quelques microsecondes. Ainsi, si m + 3 = 180, alors toutes les 180 millions de clés secrètes peuvent être calculées en moins d’une heure. Lorsque le tour en cours se rapproche de r′ + 106, pour gérer le prochain million de tours, je génère une nouvelle paire (PMK′, SMK′) et informe quelle est sa prochaine réserve de clés éphémères en -par exemple- demander à SIGi(PMK′, [r′ + 106 + 1, r′ + 2 \(\cdot\) 106 + 1]) d'entrer un nouveau bloc, soit en tant que une « transaction » distincte ou des informations supplémentaires faisant partie d’un paiement. Ce faisant, J'informe tout le monde qu'il doit utiliser PMK′ pour vérifier mes signatures éphémères dans le prochain millions de tours. Et ainsi de suite. (Notez que, en suivant cette approche de base, d'autres moyens d'implémenter des clés éphémères sans l’utilisation de signatures basées sur l’identité est certainement possible. Par exemple, via Merkle trees.16) 16Dans cette méthode, je génère une paire de clés secrètes publiques (pkr,s je, skr,s je ) pour chaque paire d'étapes rondes (r, s) dans —disons—D'autres moyens d'implémenter des clés éphémères sont certainement possibles, par exemple via Merkle trees. 5.3 Correspondant aux étapes de Algorand ′ 1 avec ceux de BA⋆ Comme nous l'avons dit, un tour dans Algorand ′ 1 comporte au plus m + 3 marches. Étape 1. Dans cette étape, chaque leader potentiel i calcule et propage son bloc candidat Br je, avec son propre identifiant, \(\sigma\)r,1 je. Rappelons que ce titre identifie explicitement i. Il en est ainsi, car \(\sigma\)r,1 je \(\triangleq\)SIGi(r, 1, Qr−1). Le vérificateur potentiel i propage également, dans le cadre de son message, sa propre signature numérique de H(Br je ). Ne s'agissant ni d'un paiement ni d'un accréditif, cette signature de i est relative à son public éphémère clé pkr,1 i : c'est-à-dire qu'il propage sigpkr,1 je (H(Br je )). Compte tenu de nos conventions, plutôt que de propager Br je et sigpkr,1 je (H(Br i )), il aurait pu SIGpkr propagé,1 je (H(Br je )). Cependant, dans notre analyse, nous devons avoir un accès explicite à sigpkr,1 je (H(Br je )). Étapes 2. Dans cette étape, chaque vérificateur i définit \(\ell\)r je dois être le leader potentiel dont le titre hashed est le plus petit, et Br je suis le bloc proposé par \(\ell\)r je. Puisque, dans un souci d'efficacité, nous souhaite s'entendre sur H(Br), plutôt que directement sur Br, je propage le message qu'il aurait propagé dans la première étape de BA⋆avec la valeur initiale v′ je = H(Br je ). Autrement dit, il propage v′ moi, après l’avoir signé éphémèrement, bien entendu. (A savoir, après l'avoir signé par rapport au droit éphémère clé publique, qui dans ce cas est pkr,2 i .) Bien sûr aussi, je transmets également son propre identifiant. Puisque la première étape de BA⋆ consiste en la première étape du protocole de consensus gradué GC, l’étape 2 de Algorand ′ correspond à la première étape de GC. Étapes 3. Dans cette étape, chaque vérificateur i \(\in\)SV r,2 exécute la deuxième étape de BA⋆. Autrement dit, il envoie le même message qu’il aurait envoyé lors de la deuxième étape de GC. Encore une fois, mon message est éphémère signé et accompagné de mes identifiants. (Nous omettons désormais de dire qu'un vérificateur signe éphémèrement son message et propage également ses informations d'identification.) Étape 4. Dans cette étape, chaque vérificateur i \(\in\)SV r,4 calcule la sortie de GC, (vi, gi), et éphémèrement signe et envoie le même message qu'il aurait envoyé à la troisième étape de BA⋆, c'est-à-dire dans le première étape de BBA⋆, avec le bit initial 0 si gi = 2, et 1 sinon. Étape s = 5, . . . , m + 2. Un tel pas, si jamais atteint, correspond au pas s −1 de BA⋆, et donc à étape s −3 de BBA⋆. Puisque notre modèle de propagation est suffisamment asynchrone, nous devons tenir compte de la possibilité qu'au milieu d'une telle étape s, un vérificateur i \(\in\)SV r,s est atteint par une information lui prouvant ce bloc Br a déjà été choisi. Dans ce cas, j'arrête sa propre exécution du tour r de Algorand ′, et commence à exécuter ses instructions round-(r + 1). {r', . . . , r′ + 106} \(\times\) {1, . . . , m + 3}. Puis il ordonne ces clés publiques de manière canonique, stocke la jème clé publique saisissez la jème feuille d'un Merkle tree et calcule la valeur racine Ri, qu'il publie. Quand il veut signer un message relatif à la clé pkr,s je , je fournis non seulement la signature réelle, mais également le chemin d'authentification pour pkr,s je par rapport à Ri. Notez que ce chemin d'authentification prouve également que pkr,s je est stocké dans la jème feuille. Le reste du les détails peuvent être facilement remplis.En conséquence, les instructions d’un vérificateur i \(\in\)SV r,s, en plus des instructions correspondant à l'étape s −3 de BBA⋆, inclure la vérification si l'exécution de BBA⋆ s'est arrêtée dans un précédent Étapes s′. Puisque BBA⋆ne peut s'arrêter que dans une étape Coin-Fixed-to-0 ou dans une étape Coin-Fixed-to-1, le les instructions distinguent si A (Condition de fin 0) : s′ −2 ≡0 mod 3, ou B (Condition de fin 1) : s′ −2 ≡1 mod 3. En fait, dans le cas A, le bloc Br n'est pas vide, et donc des instructions supplémentaires sont nécessaires pour m'assurer que i reconstruit correctement Br, avec son certificat approprié CERT r. Dans le cas B, le bloc Br est vide, et donc je dois définir Br = Br \(\varepsilon\) = (r, \(\emptyset\), H(Qr−1, r), H(Br−1)), et pour calculer CERT r. Si, lors de l'exécution de l'étape s, je ne vois aucune preuve que le bloc Br a déjà été généré, alors il envoie le même message qu’il aurait envoyé à l’étape s −3 de BBA⋆. Étape m + 3. Si, lors de l'étape m + 3, i \(\in\)SV r,m+3 voit que le bloc Br a déjà été généré dans une étape préalable s', puis il procède comme expliqué ci-dessus. Sinon, plutôt que d'envoyer le même message qu'il aurait envoyé à l'étape m de BBA⋆, i est chargé, sur la base des informations en sa possession, de calculer Br et son correspondant certificat CERT r. Rappelons en effet que nous majorons de m + 3 le nombre total d'étapes d'un tour. 5.4 Le protocole actuel Rappelons qu'à chaque étape s d'un tour r, un vérificateur i \(\in\)SV r,s utilise sa paire de clés secrètes publiques à long terme pour produire son titre, \(\sigma\)r,s je \(\triangleq\)SIGi(r, s, Qr−1), ainsi que SIGi Qr−1 dans le cas s = 1. Vérificateur i utilise sa clé secrète éphémère skr,s je signer son (r, s)-message mr,s je. Par souci de simplicité, lorsque r et s sont clair, on écrit esigi(x) plutôt que sigpkr,s i (x) pour désigner la signature éphémère propre d'une valeur x à l'étape s du tour r, et écrivez ESIGi(x) au lieu de SIGpkr,s i (x) pour désigner (i, x, esigi(x)). Étape 1 : Bloquer la proposition Instructions pour chaque utilisateur i \(\in\)PKr−k : L'utilisateur i démarre sa propre étape 1 du tour r dès qu'il connaît Br−1. • L'utilisateur i calcule Qr−1 à partir de la troisième composante de Br−1 et vérifie si i \(\in\)SV r,1 ou non. • Si i /\(\in\)SV r,1, alors i arrête immédiatement sa propre exécution de l'étape 1. • Si i \(\in\)SV r,1, c'est-à-dire si i est un leader potentiel, alors il perçoit les paiements ronds r qui ont lui a été propagé jusqu'à présent et calcule un ensemble de paie maximal PAY r je d'eux. Ensuite, il calcule son « bloc candidat » Br je = (r, PAYER r je , SIGi(Qr−1), H(Br−1)). Finalement, il calcule le message monsieur,1 je = (Br je , esigi(H(Br je )), \(\sigma\)r,1 i ), détruit sa clé secrète éphémère skr,1 moi, et puis propage mr,1 je.Remarque. En pratique, pour raccourcir l’exécution globale de l’étape 1, il est important que le (r, 1)- les messages sont propagés de manière sélective. Autrement dit, pour chaque utilisateur i dans le système, pour le premier (r, 1)- message qu'il reçoit et vérifie avec succès17, le joueur i le propage comme d'habitude. Pour tous les autres (r, 1)-messages que le joueur i reçoit et vérifie avec succès, il ne les propage que si le hash la valeur des informations d'identification qu'il contient est la plus petite parmi les valeurs hash des informations d'identification contenues dans tous les messages (r, 1) qu'il a reçus et vérifiés avec succès jusqu'à présent. De plus, comme suggéré par Georgios Vlachos, il est utile que chaque leader potentiel i propage également son accréditation \(\sigma\)r,1 je séparément : ces petits messages voyagent plus rapidement que les blocs, assurent une propagation rapide du mr,1 j's où les informations d'identification contenues ont de petites valeurs hash, tandis que celles avec de grandes valeurs hash disparaître rapidement. Étape 2 : La première étape du protocole de consensus gradué GC Instructions pour chaque utilisateur i \(\in\)PKr−k : L'utilisateur i démarre sa propre étape 2 du tour r dès qu'il connaît Br−1. • L'utilisateur i calcule Qr−1 à partir de la troisième composante de Br−1 et vérifie si i \(\in\)SV r,2 ou non. • Si i /\(\in\)SV r,2 alors i arrête immédiatement sa propre exécution de l'étape 2. • Si i \(\in\)SV r,2, alors après avoir attendu un temps t2 \(\triangleq\) \(\lambda\) + Λ, i agit comme suit. 1. Il trouve l’utilisateur \(\ell\)tel que H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) pour tous les pouvoirs \(\sigma\)r,1 j qui font partie de les messages (r, 1) vérifiés avec succès qu'il a reçus jusqu'à présent.a 2. S'il a reçu de \(\ell\)un message valide mr,1 \(\ell\) = (Br \(\ell\), esig\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),b alors je définis v′ je \(\triangleq\)H(Br \(\ell\)); sinon je mets v′ je \(\triangleq\) \(\bot\). 3. je calcule le message mr,2 je \(\triangleq\)(ESIGi(v′ je), \(\sigma\)r,2 i ),c détruit sa clé secrète éphémère skr,2 i , puis propage mr,2 je. aEssentiellement, l'utilisateur i décide en privé que le leader du tour r est l'utilisateur \(\ell\). bEncore une fois, les signatures du joueur \(\ell\) et les hashes sont tous vérifiés avec succès, et PAY r \(\ell\)en Br \(\ell\)est un ensemble de paie valide pour round r — bien que je ne vérifie pas si PAY r \(\ell\)est maximal pour \(\ell\)ou non. cLe message monsieur,2 je signale que le joueur que je considère comme v′ je suis le hash du bloc suivant, ou considère le prochain le bloc doit être vide. 17C'est-à-dire que toutes les signatures sont correctes et que le bloc et son hash sont valides - même si je ne vérifie pas si le salaire inclus est maximal pour son proposant ou non.
Étape 3 : la deuxième étape du GC Instructions pour chaque utilisateur i \(\in\)PKr−k : L'utilisateur i démarre sa propre étape 3 du tour r dès qu'il connaît Br−1. • L'utilisateur i calcule Qr−1 à partir de la troisième composante de Br−1 et vérifie si i \(\in\)SV r,3 ou non. • Si i /\(\in\)SV r,3, alors i arrête immédiatement sa propre exécution de l'étape 3. • Si i \(\in\)SV r,3, alors après avoir attendu un temps t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ, i agit comme suit. 1. S’il existe une valeur v′ ̸= \(\bot\)telle que, parmi tous les messages valides mr,2 j il a reçu, plus des 2/3 d’entre eux sont de la forme (ESIGj(v′), \(\sigma\)r,2 j ), sans aucune contradiction,a puis il calcule le message mr,3 je \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 je ). Sinon, il calcule mr,3 je \(\triangleq\) (ESIGi(\(\bot\)), \(\sigma\)r,3 je ). 2. je détruit sa clé secrète éphémère skr,3 i , puis propage mr,3 je. aC'est-à-dire qu'il n'a pas reçu deux messages valides contenant respectivement ESIGj(v′) et un ESIGj(v′′) différent, d'un joueur j. Ici et à partir de là, sauf dans les Conditions de Fin définies plus loin, chaque fois qu'un joueur honnête veut des messages d'une forme donnée, les messages se contredisant ne sont jamais comptés ni considérés comme valides.Étape 4 : Résultat de GC et première étape de BBA⋆ Instructions pour chaque utilisateur i \(\in\)PKr−k : L'utilisateur i démarre sa propre étape 4 du tour r dès qu'il connaît Br−1. • L'utilisateur i calcule Qr−1 à partir de la troisième composante de Br−1 et vérifie si i \(\in\)SV r,4 ou non. • Si i /\(\in\)SV r,4, alors i his arrête immédiatement sa propre exécution de l'étape 4. • Si i \(\in\)SV r,4, alors après avoir attendu un temps t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ, i agit comme suit. 1. Il calcule vi et gi, la sortie de GC, comme suit. (a) S’il existe une valeur v′ ̸= \(\bot\)telle que, parmi tous les messages valides mr,3 j il a reçus, plus des 2/3 d’entre eux sont de la forme (ESIGj(v′), \(\sigma\)r,3 j ), puis il pose vi \(\triangleq\)v′ et gi \(\triangleq\)2. (b) Sinon, s'il existe une valeur v′ ̸= \(\bot\)telle que, parmi tous les messages valides monsieur,3 j qu'il a reçu, plus de 1/3 d'entre eux sont de la forme (ESIGj(v′), \(\sigma\)r,3 j), alors il pose vi \(\triangleq\)v′ et gi \(\triangleq\)1.a (c) Sinon, il pose vi \(\triangleq\)H(Br ǫ ) et gi \(\triangleq\)0. 2. Il calcule bi, l’entrée de BBA⋆, comme suit : bi \(\triangleq\)0 si gi = 2, et bi \(\triangleq\)1 sinon. 3. Il calcule le message mr,4 je \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i ), détruit son éphémère clé secrète skr,4 i , puis propage mr,4 je. aOn peut prouver que le v′ dans le cas (b), s’il existe, doit être unique.
Étape s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3 : Une étape fixée à 0 de BBA⋆ Instructions pour chaque utilisateur i \(\in\)PKr−k : L'utilisateur i démarre sa propre étape s du tour r dès qu'il connaît Br−1. • L'utilisateur i calcule Qr−1 à partir de la troisième composante de Br−1 et vérifie si i \(\in\)SV r,s. • Si i /\(\in\)SV r,s, alors i arrête immédiatement sa propre exécution du Step s. • Si i \(\in\)SV r,s alors il agit comme suit. – Il attend qu’un laps de temps ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ se soit écoulé. – Condition de fin 0 : si, pendant cette attente et à tout moment, il existe un chaîne v ̸= \(\bot\)et une étape s′ telle que (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 — c'est-à-dire que l'étape s′ est une étape Coin-Fixed-To-0, (b) j'ai reçu au moins le = 2n 3 + 1 messages valides mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ),a et (c) j'ai reçu un message valide mr,1 j = (Br j , esigj(H(Br j )), \(\sigma\)r,1 j ) avec v = H(Br j), puis, j'arrête immédiatement sa propre exécution du Step s (et en fait du tour r) sans propager quoi que ce soit ; ensembles Br = Br j ; et définit son propre CERT r comme l'ensemble des messages monsieur,s′−1 j de la sous-étape (b).b – Condition finale 1 : Si, pendant cette attente et à tout moment, il existe un étape telle que (a') 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 — c'est-à-dire que l'étape s′ est une étape Coin-Fixed-To-1, et (b’) j’ai reçu au moins les messages valides mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),c puis, j'arrête immédiatement sa propre exécution du Step s (et en fait du tour r) sans propager quoi que ce soit ; ensembles Br = Br ǫ ; et définit son propre CERT r comme l'ensemble des messages monsieur,s′−1 j de la sous-étape (b’). – Sinon, à la fin de l’attente, l’utilisateur i effectue la procédure suivante. Il définit vi comme étant le vote majoritaire des vj dans les secondes composantes de tous les votes valides. monsieur,s−1 j c’est ce qu’il a reçu. Il calcule bi comme suit. Si plus des 2/3 de tous les mr,s−1 valides j 's qu'il a reçu sont de la forme (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), puis il pose bi \(\triangleq\)0. Sinon, si plus des 2/3 de tous les mr,s−1 valides j 's qu'il a reçu sont de la forme (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), puis il pose bi \(\triangleq\)1. Sinon, il définit bi \(\triangleq\)0. Il calcule le message mr,s je \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), détruit son éphémère clé secrète skr,s i , puis propage mr,s je. aUn tel message du joueur j est compté même si le joueur i a également reçu un message de j signant pour 1. Des choses similaires pour la condition finale 1. Comme le montre l'analyse, cela est fait pour garantir que tous les utilisateurs honnêtes savent Br dans le temps \(\lambda\) les uns des autres. bUtilisateur i connaît maintenant Br et ses propres finitions de tour r. Il aide toujours à propager des messages en tant qu'utilisateur générique, mais n’initie aucune propagation en tant que vérificateur (r, s). Il a notamment contribué à propager tous les messages dans son CERT r, ce qui est suffisant pour notre protocole. Notez qu'il doit également définir bi \(\triangleq\)0 pour le protocole binaire BA, mais bi n'est de toute façon pas nécessaire dans ce cas. Des choses similaires pour toutes les instructions futures. cDans ce cas, peu importe les vj.Étape s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3 : Une étape Coin-Fixed-To-1 de BBA⋆ Instructions pour chaque utilisateur i \(\in\)PKr−k : L'utilisateur i démarre sa propre étape s du tour r dès qu'il connaît Br−1. • L'utilisateur i calcule Qr−1 à partir de la troisième composante de Br−1 et vérifie si i \(\in\)SV r,s ou non. • Si i /\(\in\)SV r,s, alors i arrête immédiatement sa propre exécution du Step s. • Si i \(\in\)SV r,s alors il fait ce qui suit. – Il attend qu’un laps de temps ts \(\triangleq\)(2s −3)\(\lambda\) + Λ se soit écoulé. – Condition de fin 0 : les mêmes instructions que les étapes Coin-Fixed-To-0. – Condition de fin 1 : les mêmes instructions que les étapes Coin-Fixed-To-0. – Sinon, à la fin de l’attente, l’utilisateur i effectue la procédure suivante. Il définit vi comme étant le vote majoritaire des vj dans les secondes composantes de tous les votes valides. monsieur,s−1 j c’est ce qu’il a reçu. Il calcule bi comme suit. Si plus des 2/3 de tous les mr,s−1 valides j 's qu'il a reçu sont de la forme (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), puis il pose bi \(\triangleq\)0. Sinon, si plus des 2/3 de tous les mr,s−1 valides j 's qu'il a reçu sont de la forme (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), puis il pose bi \(\triangleq\)1. Sinon, il définit bi \(\triangleq\)1. Il calcule le message mr,s je \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), détruit son éphémère clé secrète skr,s i , puis propage mr,s je.
Étape s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3 : Une étape véritablement inversée de BBA⋆ Instructions pour chaque utilisateur i \(\in\)PKr−k : L'utilisateur i démarre sa propre étape s du tour r dès qu'il connaît Br−1. • L'utilisateur i calcule Qr−1 à partir de la troisième composante de Br−1 et vérifie si i \(\in\)SV r,s ou non. • Si i /\(\in\)SV r,s, alors i arrête immédiatement sa propre exécution du Step s. • Si i \(\in\)SV r,s alors il fait ce qui suit. – Il attend qu’un laps de temps ts \(\triangleq\)(2s −3)\(\lambda\) + Λ se soit écoulé. – Condition de fin 0 : les mêmes instructions que les étapes Coin-Fixed-To-0. – Condition de fin 1 : les mêmes instructions que les étapes Coin-Fixed-To-0. – Sinon, à la fin de l’attente, l’utilisateur i effectue la procédure suivante. Il définit vi comme étant le vote majoritaire des vj dans les secondes composantes de tous les votes valides. monsieur,s−1 j c’est ce qu’il a reçu. Il calcule bi comme suit. Si plus des 2/3 de tous les mr,s−1 valides j 's qu'il a reçu sont de la forme (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), puis il pose bi \(\triangleq\)0. Sinon, si plus des 2/3 de tous les mr,s−1 valides j 's qu'il a reçu sont de la forme (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), puis il pose bi \(\triangleq\)1. Sinon, soit SV r,s−1 je être l’ensemble des (r, s −1)-vérificateurs dont il a reçu un message mr,s−1 j . Il pose bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 je H(\(\sigma\)r,s−1 j )). Il calcule le message mr,s je \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ), détruit son éphémère clé secrète skr,s i , puis propage mr,s je.
Étape m + 3 : La dernière étape de BBA⋆a Instructions pour chaque utilisateur i \(\in\)PKr−k : L'utilisateur i démarre sa propre étape m + 3 du tour r dès qu'il connaît Br−1. • L'utilisateur i calcule Qr−1 à partir de la troisième composante de Br−1 et vérifie si i \(\in\)SV r,m+3 ou non. • Si i /\(\in\)SV r,m+3, alors i arrête immédiatement sa propre exécution de l'étape m + 3. • Si i \(\in\)SV r,m+3 alors il fait ce qui suit. – Il attend qu’un laps de temps tm+3 \(\triangleq\)tm+2 + 2\(\lambda\) = (2m + 3)\(\lambda\) + Λ se soit écoulé. – Condition de fin 0 : les mêmes instructions que les étapes Coin-Fixed-To-0. – Condition de fin 1 : les mêmes instructions que les étapes Coin-Fixed-To-0. – Sinon, à la fin de l’attente, l’utilisateur i effectue la procédure suivante. Il énonce outi \(\triangleq\)1 et Br \(\triangleq\)Br ǫ. Il calcule le message mr,m+3 je = (ESIGi(outi), ESIGi(H(Br)), \(\sigma\)r,m+3 je ), détruit son clé secrète éphémère skr,m+3 je , puis propage mr,m+3 je certifier Br.b aIl est très probable que BBA⋆ se soit terminé avant cette étape, et nous spécifions cette étape par souci d’exhaustivité. bUn certificat de l'étape m + 3 ne doit pas nécessairement inclure ESIGi(outi). Nous l'incluons uniquement par souci d'uniformité : le les certificats ont désormais un format uniforme quelle que soit l'étape à laquelle ils sont générés.Reconstruction du bloc Round-r par des non-vérificateurs Instructions pour chaque utilisateur i dans le système : L'utilisateur i démarre son propre tour r dès qu'il le sait Br−1, et attend les informations de bloc comme suit. – Si, pendant cette attente et à tout instant, il existe une chaîne v et une étape s′ telle que (a) 5 \(\leq\)s′ \(\leq\)m + 3 avec s′ −2 ≡0 mod 3, (b) j’ai reçu au moins les messages valides mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ), et (c) j'ai reçu un message valide mr,1 j = (Br j , esigj(H(Br j )), \(\sigma\)r,1 j ) avec v = H(Br j), puis, j'arrête immédiatement sa propre exécution du tour r ; ensembles Br = Br j; et définit son propre CERT r être l’ensemble des messages mr,s′−1 j de la sous-étape (b). – Si, au cours de cette attente et à tout instant, il existe une étape s′ telle que (a’) 6 \(\leq\)s′ \(\leq\)m + 3 avec s′ −2 ≡1 mod 3, et (b’) j’ai reçu au moins les messages valides mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ), puis, j'arrête immédiatement sa propre exécution du tour r ; ensembles Br = Br ǫ; et définit son propre CERT r être l’ensemble des messages mr,s′−1 j de la sous-étape (b’). – Si, pendant cette attente et à tout moment, j’ai reçu au moins les messages valides monsieur, m+3 j = (ESIGj(1), ESIGj(H(Br ǫ )), \(\sigma\)r,m+3 j ), puis j'arrête sa propre exécution du tour r tout de suite, définit Br = Br ǫ , et définit son propre CERT r comme étant l'ensemble des messages mr,m+3 j pour 1 et H(Br ǫ ). 5.5 Analyse de Algorand′ 1 Nous introduisons les notations suivantes pour chaque tour r \(\geq\)0, utilisées dans l'analyse. • Soit T r l'instant où le premier utilisateur honnête connaît Br−1. • Soit Ir+1 l'intervalle [T r+1, T r+1 + \(\lambda\)]. Notons que T 0 = 0 par l'initialisation du protocole. Pour chaque s \(\geq\)1 et i \(\in\)SV r,s, rappelons que \(\alpha\)r,s je et \(\beta\)r,s je sont respectivement l’heure de début et l’heure de fin de l’étape s du joueur i. De plus, rappelons que ts = (2s −3)\(\lambda\) + Λ pour chaque 2 \(\leq\)s \(\leq\)m + 3. De plus, soit I0 \(\triangleq\){0} et t1 \(\triangleq\)0. Rappelons enfin que Lr \(\leq\)m/3 est une variable aléatoire représentant le nombre d'essais de Bernoulli nécessaire pour voir un 1, lorsque chaque essai est 1 avec une probabilité ph 2 et il y a au plus des essais m/3. Si tout les essais échouent alors Lr \(\triangleq\)m/3. Dans l’analyse, nous ignorons le temps de calcul, car il est en fait négligeable par rapport au temps nécessaire pour propager des messages. Dans tous les cas, en utilisant \(\lambda\) et Λ légèrement plus grands, le temps de calcul peut être directement intégré à l’analyse. La plupart des déclarations ci-dessous sont valables « avec une écrasante majorité » probabilité », et nous ne pouvons pas insister à plusieurs reprises sur ce fait dans l’analyse.5.6 Théorème principal Théorème 5.1. Les propriétés suivantes sont vérifiées avec une écrasante probabilité pour chaque tour r \(\geq\)0 : 1. Tous les utilisateurs honnêtes sont d'accord sur le même bloc Br. 2. Lorsque le leader \(\ell\)r est honnête, le bloc Br est généré par \(\ell\)r, Br contient un ensemble de gains maximal reçu par \(\ell\)r à l'heure \(\alpha\)r,1 \(\ell\)r , T r+1 \(\leq\)T r + 8\(\lambda\) + Λ et tous les utilisateurs honnêtes connaissent Br à l'époque intervalle Ir+1. 3. Lorsque le leader \(\ell\)r est malveillant, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ et tous les utilisateurs honnêtes savent Br dans l'intervalle de temps Ir+1. 4. ph = h2(1 + h −h2) pour Lr, et le leader \(\ell\)r est honnête avec une probabilité d'au moins ph. Avant de démontrer notre théorème principal, faisons deux remarques. Remarques. • Génération de blocs et latence réelle. Le temps pour générer le bloc Br est défini comme étant T r+1 −T r. Autrement dit, il s'agit de la différence entre la première fois qu'un utilisateur honnête apprend Br et c'est la première fois qu'un utilisateur honnête apprend Br−1. Lorsque le leader du round-r est honnête, Property 2 notre le théorème principal garantit que le temps exact pour générer Br est le temps 8\(\lambda\) + Λ, quoi qu'il arrive la valeur précise de h > 2/3 peut l'être. Lorsque le leader est malveillant, la propriété 3 implique que le le temps prévu pour générer Br est limité par ( 12 ph + 10)\(\lambda\) + Λ, encore une fois, quelle que soit la précision valeur de h.18 Cependant, le temps attendu pour générer Br dépend de la valeur précise de h. En effet, par la Propriété 4, ph = h2(1 + h −h2) et le leader est honnête avec probabilité au moins ph, donc E[T r+1 −T r] \(\leq\)h2(1 + h −h2) \(\cdot\) (8\(\lambda\) + Λ) + (1 −h2(1 + h −h2))(( 12 h2(1 + h −h2) + 10)\(\lambda\) + Λ). Par exemple, si h = 80 %, alors E[T r+1 −T r] \(\leq\)12,7\(\lambda\) + Λ. • \(\lambda\) contre Λ. A noter que la taille des messages envoyés par les vérificateurs dans une étape Algorand ′ est dominée par la longueur des clés de signature numérique, qui peut rester fixe, même lorsque le nombre de les utilisateurs sont énormes. Notez également que, à toute étape s > 1, le même nombre attendu n de vérificateurs peut être utilisé que le nombre d'utilisateurs soit de 100 000, 100 M ou 100 M. Il en est ainsi parce que n uniquement dépend de h et F. En résumé, donc, à moins d'un besoin soudain d'augmenter la longueur de la clé secrète, la valeur de \(\lambda\) doit rester la même, quel que soit le nombre d'utilisateurs dans le avenir prévisible. En revanche, quel que soit le taux de transaction, le nombre de transactions augmente avec le nombre de transactions. utilisateurs. Par conséquent, pour traiter toutes les nouvelles transactions en temps opportun, la taille d'un bloc doit augmente également avec le nombre d'utilisateurs, ce qui entraîne une croissance de Λ également. Ainsi, à long terme, nous aurions dû \(\lambda\) << Λ. En conséquence, il convient d’avoir un coefficient plus grand pour \(\lambda\), et en réalité un coefficient de 1 pour Λ. Preuve du théorème 5.1. Nous prouvons les propriétés 1 à 3 par récurrence : en supposant qu'elles soient valables pour le tour r −1 (sans perte de généralité, ils sont automatiquement valables pour le « tour -1 » lorsque r = 0), on les prouve pour rond r. 18En effet, E[T r+1 −T r] \(\leq\)(6E[Lr] + 10)\(\lambda\) + Λ = (6 \(\cdot\) 2 ph + 10)\(\lambda\) + Λ = ( 12 ph + 10)\(\lambda\) + Λ.Puisque Br−1 est défini de manière unique par l’hypothèse inductive, l’ensemble SV r,s est défini de manière unique pour chaque étape s du tour r. Par le choix de n1, SV r,1 ̸= \(\emptyset\)avec une écrasante probabilité. Nous maintenant énoncer les deux lemmes suivants, prouvés dans les sections 5.7 et 5.8. Tout au long de l'intégration et dans les preuves des deux lemmes, l'analyse pour le tour 0 est presque la même que l'étape inductive, et nous mettrons en évidence les différences lorsqu'elles se produiront. Lemme 5.2. [Lemme d'exhaustivité] En supposant que les propriétés 1 à 3 soient valables pour le tour r−1, lorsque le leader \(\ell\)r est honnête, avec une écrasante probabilité, • Tous les utilisateurs honnêtes s'accordent sur le même bloc Br, qui est généré par \(\ell\)r et contient un maximum ensemble de paie reçu par \(\ell\)r à l'heure \(\alpha\)r,1 \(\ell\)r \(\in\)Ir ; et • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ et tous les utilisateurs honnêtes connaissent Br dans l'intervalle de temps Ir+1. Lemme 5.3. [Lemme de solidité] En supposant que les propriétés 1 à 3 soient valables pour le tour r −1, lorsque le leader \(\ell\)r est malveillant, avec une probabilité écrasante, tous les utilisateurs honnêtes sont d'accord sur le même bloc Br, T r+1 \(\leq\) T r + (6Lr + 10)\(\lambda\) + Λ et tous les utilisateurs honnêtes connaissent Br dans l'intervalle de temps Ir+1. Les propriétés 1 à 3 sont vérifiées en appliquant les lemmes 5.2 et 5.3 à r = 0 et à l'étape inductive. Enfin, nous reformulons la propriété 4 comme le lemme suivant, prouvé dans la section 5.9. Lemme 5.4. Étant donné les propriétés 1 à 3 pour chaque tour avant r, ph = h2(1 + h −h2) pour Lr, et le le leader \(\ell\)r est honnête avec une probabilité d'au moins ph. En combinant les trois lemmes ci-dessus, le théorème 5.1 est valable. ■ Le lemme ci-dessous énonce plusieurs propriétés importantes concernant le tour r étant donné le caractère inductif hypothèse, et sera utilisé dans les preuves des trois lemmes ci-dessus. Lemme 5.5. Supposons que les propriétés 1 à 3 soient valables pour le tour r −1. Pour chaque étape s \(\geq\)1 du tour r et chaque vérificateur honnête i \(\in\)HSV r,s, nous avons cela (a) ar,s je \(\in\)Ir ; (b) si le joueur i a attendu un temps ts, alors \(\beta\)r,s je \(\in\)[T r + ts, T r + \(\lambda\) + ts] pour r > 0 et \(\beta\)r,s je = ts pour r = 0 ; et (c) si le joueur i a attendu un temps ts, alors au temps \(\beta\)r,s moi, il a reçu tous les messages envoyé par tous les vérificateurs honnêtes j \(\in\)HSV r,s′ pour toutes les étapes s′ < s. De plus, pour chaque pas s \(\geq\)3, on a que (d) il n’existe pas deux joueurs différents i, i′ \(\in\)SV r,s et deux valeurs différentes v, v′ du même durée, de telle sorte que les deux joueurs ont attendu un temps ts, soit plus des 2/3 de tout le temps. messages valides mr,s−1 j joueur que je reçois a signé pour v, et plus des 2/3 de tous les joueurs valides messages mr,s−1 j le joueur que je reçois a signé pour v. Preuve. La propriété (a) découle directement de l’hypothèse inductive, puisque le joueur i connaît Br−1 dans le intervalle de temps Ir et démarre immédiatement son propre pas s. La propriété (b) découle directement de (a) : puisque joueur j'ai attendu un certain temps ts avant d'agir, \(\beta\)r,s je = \(\alpha\)r,s je + c.t. Notez que \(\alpha\)r,s je = 0 pour r = 0. Nous prouvons maintenant la propriété (c). Si s = 2, alors par la propriété (b), pour tous les vérificateurs j \(\in\)HSV r,1 nous avons \(\beta\)r,s je = \(\alpha\)r,s je + ts \(\geq\)T r + ts = T r + \(\lambda\) + Λ \(\geq\) \(\beta\)r,1 j + Λ.Puisque chaque vérificateur j \(\in\)HSV r,1 envoie son message à l’instant \(\beta\)r,1 j et le message atteint tous les honnêtes utilisateurs dans un temps Λ maximum, par temps \(\beta\)r,s je joueur, j'ai reçu les messages envoyés par tous les vérificateurs en HSV r,1 au choix. Si s > 2, alors ts = ts−1 + 2\(\lambda\). Par propriété (b), pour toutes les étapes s′ < s et tous les vérificateurs j \(\in\)HSV r,s′, \(\beta\)r,s je = \(\alpha\)r,s je + ts \(\geq\)T r + ts = T r + ts−1 + 2\(\lambda\) \(\geq\)T r + ts′ + 2\(\lambda\) = T r + \(\lambda\) + ts′ + \(\lambda\) \(\geq\) \(\beta\)r,s′ j + \(\lambda\). Puisque chaque vérificateur j \(\in\)HSV r,s′ envoie son message à l’instant \(\beta\)r,s′ j et le message atteint tous les honnêtes utilisateurs dans un temps \(\lambda\) maximum, par temps \(\beta\)r,s je joueur, j'ai reçu tous les messages envoyés par tous les vérificateurs honnêtes dans HSV r,s′ pour tout s′ < s. Ainsi la propriété (c) est vraie. Enfin, nous prouvons la propriété (d). Notons que les vérificateurs j \(\in\)SV r,s−1 signent au plus deux choses dans Étape s −1 utilisant leurs clés secrètes éphémères : une valeur vj de même longueur que la sortie du Fonction hash, et aussi un peu bj \(\in\){0, 1} si s −1 \(\geq\)4. C'est pourquoi dans l'énoncé du lemme nous exigeons que v et v′ aient la même longueur : de nombreux vérificateurs peuvent avoir signé tous les deux une valeur hash v et un bit b, passent donc tous les deux le seuil des 2/3. Supposons, par souci de contradiction, qu'il existe les vérificateurs i, i' et les valeurs v, v' souhaités. Notez que certains vérificateurs malveillants dans MSV r,s−1 peuvent avoir signé à la fois v et v′, mais chaque vérificateur honnête le vérificateur en HSV r,s−1 en a signé au plus un. Par la propriété (c), i et i′ ont tous deux reçu tous les messages envoyés par tous les vérificateurs honnêtes dans HSV r,s−1. Soit HSV r,s−1(v) l'ensemble des vérificateurs honnêtes de (r, s −1) qui ont signé v, MSV r,s−1 je l'ensemble de vérificateurs (r, s −1) malveillants de qui i a reçu un message valide, et MSV r,s−1 je (v) le sous-ensemble de MSV r,s−1 je de qui j'ai reçu un message valide signant v. Par les exigences pour i et v, nous avons rapport \(\triangleq\)|HSV r,s−1(v)| + |MSV r,s−1 je (v)| |HSVr,s−1| + |MSV r,s−1 je |
2 3. (1) Nous montrons d'abord |MSVr,s−1 je (v)| \(\leq\)|HSVr,s−1(v)|. (2) En supposant le contraire, d’après les relations entre les paramètres, avec une probabilité écrasante |HSVr,s−1| > 2|MSV r,s−1| \(\geq\)2|MSV r,s−1 je |, donc rapport < |HSV r,s−1(v)| + |MSV r,s−1 je (v)| 3|MSVr,s−1 je | < 2|MSV r,s−1 je (v)| 3|MSVr,s−1 je | \(\leq\)2 3, contredisant l’inégalité 1. Ensuite, par inégalité 1, nous avons 2|HSVr,s−1| + 2|MSVr,s−1 je | < 3|HSVr,s−1(v)| + 3|MSV r,s−1 je (v)| \(\leq\) 3|HSVr,s−1(v)| + 2|MSVr,s−1 je | + |MSV r,s−1 je (v)|. En combinant avec Inégalité 2, 2|HSVr,s−1| < 3|HSVr,s−1(v)| + |MSV r,s−1 je (v)| \(\leq\)4|HSVr,s−1(v)|, ce qui implique |HSVr,s−1(v)| > 1 2|HSVr,s−1|.De même, d’après les exigences pour i′ et v′, nous avons |HSVr,s−1(v′)| > 1 2|HSVr,s−1|. Puisqu’un vérificateur honnête j \(\in\)HSV r,s−1 détruit sa clé secrète éphémère skr,s−1 j avant de se propager son message, l’Adversaire ne peut pas falsifier la signature de j pour une valeur que j n’a pas signée, après apprendre que j est un vérificateur. Ainsi, les deux inégalités ci-dessus impliquent |HSV r,s−1| \(\geq\)|HSVr,s−1(v)| + |HSVr,s−1(v′)| > |HSV r,s−1|, une contradiction. En conséquence, les i, i', v, v' souhaités n'existent pas, et La propriété (d) est détenue. ■ 5.7 Le lemme de complétude Lemme 5.2. [Lemme d'exhaustivité, reformulé] En supposant que les propriétés 1 à 3 soient valables pour le tour r−1, lorsque le leader \(\ell\)r est honnête, avec une probabilité écrasante, • Tous les utilisateurs honnêtes s'accordent sur le même bloc Br, qui est généré par \(\ell\)r et contient un maximum ensemble de paie reçu par \(\ell\)r à l'heure \(\alpha\)r,1 \(\ell\)r \(\in\)Ir ; et • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ et tous les utilisateurs honnêtes connaissent Br dans l'intervalle de temps Ir+1. Preuve. Par l’hypothèse inductive et le lemme 5.5, pour chaque étape s et vérificateur i \(\in\)HSV r,s, \(\alpha\)r,s je \(\in\)Ir. Ci-dessous, nous analysons le protocole étape par étape. Étape 1. Par définition, tout vérificateur honnête i \(\in\)HSV r,1 propage le message souhaité mr,1 je à temps \(\beta\)r,1 je = \(\alpha\)r,1 je, où monsieur,1 je = (Br je , esigi(H(Br je )), \(\sigma\)r,1 je ), Br je = (r, PAYER r je , SIGi(Qr−1), H(Br−1)), et PAYER r i est un ensemble de paiements maximal parmi tous les paiements que j'ai vus au temps \(\alpha\)r,1 je. Étape 2. Fixer arbitrairement un vérificateur honnête i \(\in\)HSV r,2. D'après le lemme 5.5, lorsque le joueur i a terminé attente à l'instant \(\beta\)r,2 je = \(\alpha\)r,2 je + t2, il a reçu tous les messages envoyés par les vérificateurs en HSV r,1, y compris monsieur,1 \(\ell\)r. D’après la définition de \(\ell\)r, il n’existe pas d’autre joueur dans PKr−k dont l’identifiant hash la valeur est inférieure à H(\(\sigma\)r,1 \(\ell\)r ). Bien entendu, l’Adversaire peut corrompre \(\ell\)r après avoir vu que H(\(\sigma\)r,1 \(\ell\)r) est très petit, mais à ce moment-là, le joueur \(\ell\)r a détruit sa clé éphémère et le message mr,1 \(\ell\)r s'est propagée. Ainsi, le vérificateur i définit son propre leader comme étant le joueur \(\ell\)r. En conséquence, au temps \(\beta\)r,2 je, vérificateur je propage mr,2 je = (ESIGi(v′ je), \(\sigma\)r,2 je ), où v′ je = H(Br \(\ell\)r). Lorsque r = 0, la seule différence est-ce \(\beta\)r,2 je = t2 plutôt que d'être dans une plage. Des choses similaires peuvent être dites pour les étapes futures et nous je ne les soulignerai plus. Étape 3. Fixer arbitrairement un vérificateur honnête i \(\in\)HSV r,3. D'après le lemme 5.5, lorsque le joueur i a terminé attente à l'instant \(\beta\)r,3 je = \(\alpha\)r,3 je + t3, il a reçu tous les messages envoyés par les vérificateurs en HSV r,2. Par les relations entre les paramètres, avec une probabilité écrasante |HSV r,2| > 2|MSV r,2|. De plus, aucun vérificateur honnête ne signerait des messages contradictoires, et l’Adversaire ne peut pas falsifier la signature d'un vérificateur honnête après que ce dernier a détruit son clé secrète éphémère. Ainsi, plus des 2/3 de tous les messages (r, 2) valides que j'ai reçus proviennent de vérificateurs honnêtes et de la forme mr,2 j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,2 j ), sans contradiction. En conséquence, au temps \(\beta\)r,3 je joueur je propage mr,3 je = (ESIGi(v′), \(\sigma\)r,3 je ), où v′ = H(Br \(\ell\)r).Étape 4. Fixer arbitrairement un vérificateur honnête i \(\in\)HSV r,4. D'après le lemme 5.5, le joueur i a tout reçu messages envoyés par les vérificateurs en HSV r,3 lorsqu'il a fini d'attendre à l'instant \(\beta\)r,4 je = \(\alpha\)r,4 je +t4. Semblable à Étape 3, plus des 2/3 de tous les messages (r, 3) valides que j'ai reçus proviennent de vérificateurs honnêtes et de la forme mr,3 j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,3 j). En conséquence, le joueur i définit vi = H(Br \(\ell\)r), gi = 2 et bi = 0. Au temps \(\beta\)r,4 je = \(\alpha\)r,4 je +t4 il se propage monsieur,4 je = (ESIGi(0), ESIGi(H(Br \(\ell\)r)), \(\sigma\)r,4 je ). Étape 5. Fixer arbitrairement un vérificateur honnête i \(\in\)HSV r,5. D'après le lemme 5.5, joueur que j'aurais a reçu tous les messages envoyés par les vérificateurs en HSV r,4 s'il a attendu l'heure \(\alpha\)r,5 je +t5. Notez que |HSVr,4| \(\geq\)tH.19 Notez également que tous les vérificateurs dans HSV r,4 ont signé pour H(Br \(\ell\)r). Comme |MSV r,4| < tH, il n’existe aucun v′ ̸= H(Br \(\ell\)r) qui aurait pu être signé par TH vérificateurs dans SV r,4 (qui seraient forcément malveillants), donc le joueur i ne s'arrête pas avant d'avoir reçu des messages valides mr,4 j = (ESIGj(0), ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,4 j). Soit T le moment où ce dernier événement se produit. Certains de ces messages peuvent provenir de joueurs malveillants, mais comme |MSVr,4| < thH, au moins l'un d'entre eux provient d'un vérificateur honnête en HSV r,4 et est envoyé après un délai T r + t4. Par conséquent, T \(\geq\)T r +t4 > T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\)r +Λ, et au moment T joueur j'ai également reçu le message monsieur,1 \(\ell\)r. Par la construction du protocole, le joueur i s'arrête à l'instant \(\beta\)r,5 je = T sans propager quoi que ce soit ; ensembles Br = Br \(\ell\)r; et définit son propre CERT r comme étant l'ensemble des messages (r, 4) pour 0 et H(Br \(\ell\)r) qu’il a reçu. Étapes > 5. De même, pour toute étape s > 5 et tout vérificateur i \(\in\)HSV r,s, le joueur i aurait a reçu tous les messages envoyés par les vérificateurs en HSV r,4 s'il a attendu l'heure \(\alpha\)r,s je + c.t. Par le même analyse, le joueur i s'arrête sans rien propager, en mettant Br = Br \(\ell\)r (et définissant le sien CERT r correctement). Bien entendu, les vérificateurs malveillants peuvent ne pas s'arrêter et se propager de manière arbitraire. messages, mais parce que |MSV r,s| < th, par induction aucun autre v′ ne pourrait être signé par les th vérificateurs dans n'importe quelle étape 4 \(\leq\)s′ < s, donc les vérificateurs honnêtes ne s'arrêtent que parce qu'ils ont reçu le code valide (r, 4)-messages pour 0 et H(Br \(\ell\)r). Reconstruction du bloc Round-r. L'analyse de l'étape 5 s'applique à un modèle honnête utilisateur, je suis presque sans aucun changement. En effet, le joueur i commence son propre tour r dans l'intervalle Ir et ne s'arrêtera qu'à un instant T lorsqu'il aura reçu les messages (r, 4) valides pour H(Br \(\ell\)r). Encore une fois parce que au moins un de ces messages provient de vérificateurs honnêtes et est envoyé après le temps T r + t4, le joueur i a a également reçu mr,1 \(\ell\)r au temps T. Ainsi il pose Br = Br \(\ell\)r avec le CERT r approprié. Il ne reste plus qu'à montrer que tous les utilisateurs honnêtes terminent leur tour r dans l'intervalle de temps Ir+1. D’après l’analyse de l’étape 5, tout vérificateur honnête i \(\in\)HSV r,5 connaît Br sur ou avant \(\alpha\)r,5 je + t5 \(\leq\) T r + \(\lambda\) + t5 = T r + 8\(\lambda\) + Λ. Puisque T r+1 est le moment où le premier utilisateur honnête ir connaît Br, on a T r+1 \(\leq\)T r + 8\(\lambda\) + Λ comme souhaité. De plus, lorsque le joueur connaît Br, il a déjà contribué à propager les messages dans son CERT r. Notez que tous ces messages seront reçus par tous les utilisateurs honnêtes dans un délai \(\lambda\), même si 19À proprement parler, cela se produit avec une très forte probabilité, mais pas nécessairement de manière écrasante. Cependant, ceci la probabilité affecte légèrement la durée d’exécution du protocole, mais n’affecte pas son exactitude. Lorsque h = 80 %, alors |HSVr,4| \(\geq\)tH avec probabilité 1 −10−8. Si cet événement ne se produit pas, le protocole se poursuivra pendant une autre période. 3 étapes. Comme la probabilité que cela ne se produise pas en deux étapes est négligeable, le protocole se terminera à l'étape 8. Dans ce cas, le nombre d'étapes nécessaires est presque de 5.J'ai été le premier joueur à les propager. De plus, suite à l’analyse ci-dessus, nous avons T r+1 \(\geq\)T r + t4 \(\geq\) \(\beta\)r,1 \(\ell\)r + Λ, donc tous les utilisateurs honnêtes ont reçu mr,1 \(\ell\)r au temps T r+1 + \(\lambda\). En conséquence, tous les utilisateurs honnêtes connaissent Br dans l'intervalle de temps Ir+1 = [T r+1, T r+1 + \(\lambda\)]. Enfin, pour r = 0 nous avons en fait T 1 \(\leq\)t4 + \(\lambda\) = 6\(\lambda\) + Λ. En combinant tout ensemble, Le lemme 5.2 est valable. ■ 5.8 Le lemme de solidité Lemme 5.3. [Lemme de solidité, reformulé] En supposant que les propriétés 1 à 3 soient valables pour le tour r −1, lorsque le leader \(\ell\)r est malveillant, avec une écrasante probabilité, tous les utilisateurs honnêtes sont d'accord sur le même bloc Br, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ et tous les utilisateurs honnêtes connaissent Br dans l'intervalle de temps Ir+1. Preuve. Nous considérons les deux parties du protocole, GC et BBA⋆, séparément. CG. Par l’hypothèse inductive et par le lemme 5.5, pour toute étape s \(\in\){2, 3, 4} et toute étape honnête vérificateur i \(\in\)HSV r,s, lorsque le joueur i agit au temps \(\beta\)r,s je = \(\alpha\)r,s je + ts, il a reçu tous les messages envoyés par tous les vérificateurs honnêtes aux étapes s′ < s. Nous distinguons deux cas possibles pour l’étape 4. Cas 1. Aucun vérificateur i \(\in\)HSV r,4 définit gi = 2. Dans ce cas, par définition bi = 1 pour tous les vérificateurs i \(\in\)HSV r,4. Autrement dit, ils commencent par un accord sur 1 dans le protocole binaire BA. Ils n’ont peut-être pas d’accord sur leurs vi’s, mais cela n'a pas d'importance comme nous le verrons dans le BA binaire. Cas 2. Il existe un vérificateur ˆi \(\in\)HSV r,4 tel que gˆi = 2. Dans ce cas, nous montrons que (1) gi \(\geq\)1 pour tout i \(\in\)HSV r,4, (2) il existe une valeur v′ telle que vi = v′ pour tout i \(\in\)HSV r,4, et (3) il existe un message valide mr,1 \(\ell\) d’un vérificateur \(\ell\) \(\in\)SV r,1 tel que v′ = H(Br \(\ell\)). En effet, puisque le joueur ˆi est honnête et fixe gˆi = 2, plus des 2/3 de tous les messages valides mr,3 j il a reçu sont pour la même valeur v′ ̸= \(\bot\), et il a posé vˆi = v′. Par la propriété (d) du lemme 5.5, pour tout autre vérificateur i honnête (r, 4), cela ne peut pas être plus que que 2/3 de tous les messages valides mr,3 j que i′ a reçu sont pour la même valeur v′′ ̸= v′. En conséquence, si je fixe gi = 2, il faut que j'aie également vu une majorité > 2/3 pour v′ et que j'ai défini vi = v′, comme souhaité. Considérons maintenant un vérificateur arbitraire i \(\in\)HSV r,4 avec gi < 2. Semblable à l'analyse de la propriété (d) dans le lemme 5.5, parce que le joueur ˆi a vu une majorité > 2/3 pour v′, plus de 1 2|HSV r,3| honnête (r, 3)-vérificateurs ont signé v′. Parce que j'ai reçu tous les messages de vérificateurs honnêtes (r, 3) par temps \(\beta\)r,4 je = \(\alpha\)r,4 je + t4, il a notamment reçu plus de 1 2|HSV r,3| messages de leur part pour v′. Parce que |HSV r,3| > 2|MSV r,3|, j'ai vu > 1/3 de majorité pour v′. En conséquence, le joueur i définit gi = 1 et la propriété (1) est valable. Est-ce que le joueur i définit nécessairement vi = v′ ? Supposons qu’il existe une valeur différente v′′ ̸= \(\bot\) telle que joueur que j'ai également vu > 1/3 de majorité pour v′′. Certains de ces messages peuvent provenir de logiciels malveillants vérificateurs, mais au moins l’un d’entre eux provient d’un vérificateur honnête j \(\in\)HSV r,3 : en effet, parce que |HSV r,3| > 2|MSV r,3| et j'ai reçu tous les messages de HSV r,3, l'ensemble des logiciels malveillants les vérificateurs de qui j'ai reçu un message (r, 3) valide comptent pour < 1/3 de tous les messages valides. messages qu'il a reçus.Par définition, le joueur j doit avoir vu > 2/3 de majorité pour v′′ parmi tous les (r, 2)-messages valides il a reçu. Cependant, nous savons déjà que d’autres vérificateurs (r, 3) honnêtes ont vu Majorité des 2/3 pour v′ (car ils ont signé v′). Par la propriété (d) du lemme 5.5, cela ne peut pas se produire et une telle valeur v′′ n’existe pas. Ainsi, le joueur doit avoir défini vi = v′ comme souhaité, et la propriété (2) est détenue. Enfin, étant donné que certains vérificateurs (r, 3) honnêtes ont vu une majorité > 2/3 pour v′, certains (en fait, plus de la moitié des) vérificateurs honnêtes (r, 2) ont signé pour v′ et ont propagé leurs messages. Par la construction du protocole, ces vérificateurs (r, 2) honnêtes doivent avoir reçu un message monsieur, 1 \(\ell\) d'un joueur \(\ell\) \(\in\)SV r,1 avec v′ = H(Br \(\ell\)), donc la propriété (3) est vérifiée. BBA⋆. Nous distinguons encore deux cas. Cas 1. Tous les vérificateurs i \(\in\)HSV r,4 ont bi = 1. Cela se produit à la suite du cas 1 de GC. Comme |MSV r,4| < tH, dans ce cas aucun vérificateur dans SV r,5 pourrait collecter ou générer les messages (r, 4) valides pour le bit 0. Ainsi, aucun vérificateur honnête dans HSV r,5 s'arrêterait parce qu'il connaît un bloc non vide Br. De plus, bien qu’il y ait au moins tH messages (r, 4) valides pour le bit 1, s′ = 5 ne satisfait pas s′ −2 ≡1 mod 3, donc aucun vérificateur honnête dans HSV r,5 ne s'arrêterait parce qu'il sait Br = Br ǫ. Au lieu de cela, tout vérificateur i \(\in\)HSV r,5 agit au temps \(\beta\)r,5 je = \(\alpha\)r,5 je + t5, au moment où il a tout reçu messages envoyés par HSV r,4 suivant le lemme 5.5. Ainsi le joueur que j'ai vu > 2/3 de majorité pour 1 et définit bi = 1. À l’étape 6 qui est une étape Coin-Fixed-To-1, bien que s′ = 5 satisfasse s′ −2 ≡0 mod 3, il y a n’existe pas de messages (r, 4) valides pour le bit 0, donc aucun vérificateur dans HSV r,6 ne s’arrêterait car il connaît un bloc non vide Br. Cependant, avec s′ = 6, s′ −2 ≡1 mod 3 et il existe |HSVr,5| \(\geq\)tH messages (r, 5) valides pour le bit 1 de HSV r,5. Pour tout vérificateur i \(\in\)HSV r,6, suivant le lemme 5.5, au plus tard à l’instant \(\alpha\)r,6 je + joueur t6 je a reçu tous les messages de HSV r,5, donc je m'arrête sans rien propager et je règle Br = Br ǫ. Son CERT r est l'ensemble des messages (r, 5) valides mr,5 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j) reçu par lui quand il s'arrête. Ensuite, laissez le joueur i être soit un vérificateur honnête dans une étape s > 6, soit un utilisateur honnête générique (c'est-à-dire, non-vérificateur). Semblable à la preuve du lemme 5.2, le joueur i définit Br = Br ǫ et définit le sien CERT r est l'ensemble des messages (r, 5) valides mr,5 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j) il a reçu. Enfin, similaire au lemme 5.2, Tr+1 \(\leq\) min i\(\in\)HSV r,6 \(\alpha\)r,6 je + t6 \(\leq\)T r + \(\lambda\) + t6 = T r + 10\(\lambda\) + Λ, et tous les utilisateurs honnêtes connaissent Br dans l’intervalle de temps Ir+1, car le premier utilisateur honnête i qui sait que Br a aidé à propager les messages (r, 5) dans son CERT r. Cas 2. Il existe un vérificateur ˆi \(\in\)HSV r,4 avec bˆi = 0. Cela se produit après le cas 2 de GC et constitue le cas le plus complexe. Par l'analyse de GC, dans ce cas il existe un message valide mr,1 \(\ell\) tel que vi = H(Br \(\ell\)) pour tout i \(\in\)HSV r,4. Remarque que les vérificateurs dans HSV r,4 peuvent ne pas avoir d'accord sur leurs bi. Pour toute étape s \(\in\){5, . . . , m + 3} et vérificateur i \(\in\)HSV r,s, d'après le joueur du lemme 5.5 j'aurais reçu tous les messages envoyés par tous les vérificateurs honnêtes dans HSV r,4 \(\cup\) \(\cdots\) \(\cup\)HSV r,s−1 s'il a attendu pour le temps ts.Considérons maintenant l’événement E suivant : il existe une étape s∗\(\geq\)5 telle que, pour la première temps dans le BA binaire, un joueur i∗\(\in\)SV r,s∗ (qu'il soit malveillant ou honnête) devrait s'arrêter sans rien propager. Nous utilisons « devrait arrêter » pour souligner le fait que, si le joueur i∗ est malveillant, alors il peut prétendre qu'il ne devrait pas s'arrêter conformément au protocole et propager des messages au choix de l’Adversaire. De plus, par la construction du protocole, soit (E.a) i∗est capable de collecter ou de générer au moins les messages valides mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ) pour les mêmes v et s′, avec 5 \(\leq\)s′ \(\leq\)s∗ et s′ −2 ≡0 mod 3 ; ou (E.b) i∗est capable de collecter ou de générer au moins les messages valides mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ) pour le même s′, avec 6 \(\leq\)s′ \(\leq\)s∗ et s′ −2 ≡1 mod 3. Parce que les messages (r, s′ −1) honnêtes sont reçus par tous les vérificateurs (r, s′) honnêtes avant d’être envoyés. ont fini d'attendre à l'étape s', et parce que l'Adversaire reçoit tout au plus tard utilisateurs honnêtes, sans perte de généralité on a s′ = s∗ et le joueur i∗ est malveillant. Notez que nous n'avons pas exigé que la valeur v dans E.a soit le hash d'un bloc valide : comme cela deviendra clair dans l'analyse, v = H(Br \(\ell\)) dans ce sous-événement. Ci-dessous, nous analysons d’abord le cas 2 suite à l’événement E, puis montrons que la valeur de s∗ est essentiellement distribué en conséquence à Lr (ainsi l'événement E se produit avant l'étape m + 3 avec une écrasante probabilité compte tenu des relations entre les paramètres). Pour commencer, pour tout pas 5 \(\leq\)s < s∗, tout vérificateur honnête i \(\in\)HSV r,s a attendu un temps ts et a défini vi comme étant le vote majoritaire du messages (r, s−1) valides qu'il a reçus. Depuis que le joueur j'ai reçu tous les messages (r, s−1) honnêtes suivant le lemme 5.5, puisque tous les vérificateurs honnêtes dans HSV r,4 ont signé H(Br \(\ell\)) cas suivant 2 de GC, et puisque |HSV r,s−1| > 2|MSV r,s−1| pour chaque s, par induction nous avons ce joueur i a fixé vi = H(Br \(\ell\)). Il en va de même pour tout vérificateur honnête i \(\in\)HSV r,s∗ qui ne s’arrête pas sans se propager n'importe quoi. Considérons maintenant l’étape s∗ et distinguons quatre sous-cas. Cas 2.1.a. L’événement E.a se produit et il existe un vérificateur honnête i′ \(\in\)HSV r,s∗ qui devrait s'arrêter aussi sans rien propager. Dans ce cas, nous avons s∗−2 ≡0 mod 3 et l'étape s∗ est une étape Coin-Fixed-To-0. Par définition, le joueur i′ a reçu au moins les (r, s∗−1)-messages valides de la forme (ESIGj(0), ESIGj(v), \(\sigma\)r,s∗−1 j ). Puisque tous les vérificateurs dans HSV r,s∗−1 ont signé H(Br \(\ell\)) et |MSVr,s∗−1| < tH, on a v = H(Br \(\ell\)). Puisque au moins tH −|MSV r,s∗−1| \(\geq\)1 des (r, s∗−1)-messages reçus par i′ pour 0 et v sont envoyés par les vérificateurs dans HSV r,s∗−1 après le temps T r +ts∗−1 \(\geq\)T r +t4 \(\geq\)T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\) +Λ, joueur, j'ai reçu mr,1 \(\ell\) au moment où il reçoit ces (r, s∗−1)-messages. Ainsi joueur je m'arrête sans rien propager ; ensembles Br = Br \(\ell\) ; et définit son propre CERT r comme étant le ensemble de messages (r, s∗−1) valides pour 0 et v qu'il a reçus. Ensuite, nous montrons que tout autre vérificateur i \(\in\)HSV r,s∗ s’est arrêté avec Br = Br \(\ell\), ou a défini bi = 0 et propagé (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s je ). En effet, parce que l’étape s∗ C'est la première fois qu'un vérificateur doit s'arrêter sans rien propager, il n'y a pas existe une étape s′ < s∗ avec s′ −2 ≡1 mod 3 telle que les tH (r, s′ −1)-vérificateurs ont signé 1. Par conséquent, aucun vérificateur dans HSV r,s∗ ne s’arrête avec Br = Br ǫ.De plus, comme tous les vérificateurs honnêtes aux étapes {4, 5, . . . , s∗−1} sont signés H(Br \(\ell\)), il y a il n’existe pas d’étape s′ \(\leq\)s∗avec s′ −2 ≡0 mod 3 telle que les tH (r, s′ −1)-vérificateurs aient signé certains v′′ ̸= H(Br \(\ell\)) — en effet, |MSV r,s′−1| < th. En conséquence, aucun vérificateur dans HSV r,s∗arrête avec Br ̸ = Br ǫ et Br ̸= Br \(\ell\). Autrement dit, si un joueur i \(\in\)HSV r,s∗ s’est arrêté sans propageant quoi que ce soit, il a dû définir Br = Br \(\ell\). Si un joueur i \(\in\)HSV r,s∗ a attendu le temps ts∗ et a propagé un message à l'instant \(\beta\)r,s∗ je = \(\alpha\)r,s∗ je + ts∗, il a reçu tous les messages de HSV r,s∗−1, dont au moins tH −|MSVr,s∗−1| d'entre eux pour 0 et v. Si j'ai vu une majorité > 2/3 pour 1, alors il a vu plus de 2(tH −|MSV r,s∗−1|) messages (r, s∗−1) valides pour 1, avec plus que 2tH −3|MSV r,s∗−1| d’entre eux provenant de vérificateurs (r, s∗−1) honnêtes. Cependant, cela implique |HSVr,s∗−1| \(\geq\)tH−|MSV r,s∗−1|+2tH−3|MSV r,s∗−1| > 2n−4|MSV r,s∗−1|, contredisant le fait que |HSVr,s∗−1| + 4|MSV r,s∗−1| <2n, qui vient des relations pour les paramètres. En conséquence, je ne vois pas > 2/3 majorité pour 1, et il fixe bi = 0 car l'étape s∗ est une étape Coin-Fixed-To-0. Comme nous l'avons vu, vi = H(Br \(\ell\)). Ainsi je propage (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s i ) comme nous le voulions montrer. Pour l’étape s∗+ 1, puisque le joueur i′ a contribué à propager les messages dans son CERT r au plus tard à l’heure \(\alpha\)r,s∗ je + ts∗, tous les vérificateurs honnêtes dans HSV r,s∗+1 ont reçu au moins tH messages (r, s∗−1) valides pour le bit 0 et la valeur H(Br \(\ell\)) au plus tard en attendant. De plus, les vérificateurs dans HSV r,s∗+1 ne s'arrêteront pas avant de recevoir ceux (r, s∗−1)- messages, car il n’existe pas d’autres messages (r, s′ −1) valides pour le bit 1 avec s′ −2 ≡1 mod 3 et 6 \(\leq\)s′ \(\leq\)s∗+ 1, par la définition du Pas s∗. En particulier, l'étape s∗+ 1 lui-même est une étape Coin-Fixed-To-1, mais aucun vérificateur honnête dans HSV r,s∗ ne s'est propagé un message pour 1, et |MSV r,s∗| < th. Ainsi tous les vérificateurs honnêtes dans HSV r,s∗+1 s’arrêtent sans rien propager et posent Br = Br \(\ell\) : comme avant, ils ont reçu mr,1 \(\ell\) avant de recevoir les messages (r, s∗−1) souhaités.20 La même chose peut être dite pour tous les vérificateurs honnêtes dans les étapes futures et pour tous les utilisateurs honnêtes en général. En particulier, ils savent tous Br = Br \(\ell\)dans l'intervalle de temps Ir+1 et T r+1 \(\leq\) \(\alpha\)r,s∗ je + ts∗\(\leq\)T r + \(\lambda\) + ts∗. Cas 2.1.b. L’événement E.b se produit et il existe un vérificateur honnête i′ \(\in\)HSV r,s∗ qui devrait s'arrêter aussi sans rien propager. Dans ce cas, nous avons s∗−2 ≡1 mod 3 et l'étape s∗ est une étape Coin-Fixed-To-1. L'analyse est similaire au cas 2.1.a et de nombreux détails ont été omis. 20 S’il est méchant, il pourra envoyer monsieur,1 \(\ell\) en retard, en espérant que certains utilisateurs/vérificateurs honnêtes n'aient pas reçu mr,1 \(\ell\) encore lorsqu'ils recevront le certificat souhaité. Cependant, puisque le vérificateur ˆi \(\in\)HSV r,4 a posé bˆi = 0 et vˆi = H(Br \(\ell\)), comme avant d’avoir que plus de la moitié des vérificateurs honnêtes i \(\in\)HSV r,3 ont défini vi = H(Br \(\ell\)). Cela implique en outre davantage plus de la moitié des vérificateurs honnêtes i \(\in\)HSV r,2 ont défini vi = H(Br \(\ell\)), et ces (r, 2)-vérificateurs ont tous reçu mr,1 \(\ell\). Comme le L'adversaire ne peut pas distinguer un vérificateur d'un non-vérificateur, il ne peut pas cibler la propagation de mr,1 \(\ell\) aux (r, 2)-vérificateurs sans que les non-vérificateurs ne le voient. En fait, avec une forte probabilité, plus de la moitié (ou une bonne fraction constante) de tous les utilisateurs honnêtes ont vu mr,1 \(\ell\) après avoir attendu t2 depuis le début de son propre tour r. A partir de là, le temps \(\lambda\)′ nécessaire pour mr,1 \(\ell\) pour atteindre les utilisateurs honnêtes restants est beaucoup plus petit que Λ, et par souci de simplicité, nous ne le faisons pas écrivez-le dans l’analyse. Si 4\(\lambda\) \(\geq\) \(\lambda\)′ alors l’analyse se déroule sans aucun changement : à la fin de l’étape 4, tous des utilisateurs honnêtes auraient reçu mr,1 \(\ell\). Si la taille du bloc devient énorme et 4\(\lambda\) < \(\lambda\)′, alors aux étapes 3 et 4, le protocole pourrait demander à chaque vérificateur d'attendre \(\lambda\)′/2 plutôt que 2\(\lambda\), et l'analyse continue de tenir.Comme précédemment, le joueur i′ doit avoir reçu au moins les (r, s∗−1)-messages valides de la forme (ESIGj(1), ESIGj(vj), \(\sigma\)r,s∗−1 j ). Toujours par la définition de s∗, il n’existe pas d’étape 5 \(\leq\)s′ < s∗avec s′ −2 ≡0 mod 3, où au moins les tH (r, s′ −1)-vérificateurs ont signé 0 et le même v. Ainsi le joueur i s'arrête sans rien propager ; ensembles Br = Br ǫ; et des ensembles son propre CERT r est l'ensemble des messages (r, s∗−1) valides pour le bit 1 qu'il a reçu. De plus, tout autre vérificateur i \(\in\)HSV r,s∗ s’est arrêté avec Br = Br ǫ , ou a défini bi = 1 et propagé (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ je ). Depuis que je suis joueur, j'ai aidé à se propager les (r, s∗−1)-messages dans son CERT r au temps \(\alpha\)r,s∗ je + ts∗, encore une fois tous les vérificateurs honnêtes dans HSV r,s∗+1 s'arrête sans rien propager et pose Br = Br ǫ . De même, tous honnêtes les utilisateurs savent que Br = Br ǫ dans l’intervalle de temps Ir+1 et T r+1 \(\leq\) \(\alpha\)r,s∗ je + ts∗\(\leq\)T r + \(\lambda\) + ts∗. Cas 2.2.a. L’événement E.a se produit et il n’existe pas de vérificateur honnête i′ \(\in\)HSV r,s∗qui devrait également s'arrêter sans rien propager. Dans ce cas, notez que le joueur i∗pourrait avoir un CERT r valide i∗constitué du tH souhaité (r, s∗−1)-messages que l'adversaire est capable de collecter ou de générer. Cependant, le malveillant les vérificateurs ne peuvent pas aider à propager ces messages, nous ne pouvons donc pas conclure que les honnêtes les utilisateurs les recevront dans le temps \(\lambda\). En fait, |MSV r,s∗−1| de ces messages peuvent provenir de des vérificateurs (r, s∗−1) malveillants, qui ne propageaient pas du tout leurs messages et envoyaient uniquement aux vérificateurs malveillants à l’étape s∗. Semblable au cas 2.1.a, nous avons ici s∗−2 ≡0 mod 3, l'étape s∗est une étape Coin-Fixed-To-0, et les messages (r, s∗−1) dans CERT r i∗sont pour le bit 0 et v = H(Br \(\ell\)). En effet, tout est honnête (r, s∗−1)-vérificateurs signe v, donc l'Adversaire ne peut pas générer les (r, s∗−1)-messages valides pour un v′ différent. De plus, tous les vérificateurs (r, s∗) honnêtes ont attendu un temps ts∗ et ne voient pas une majorité > 2/3 pour le bit 1, encore une fois parce que |HSV r,s∗−1| + 4|MSV r,s∗−1| <2n. Ainsi, tout vérificateur honnête i \(\in\)HSV r,s∗sets bi = 0, vi = H(Br \(\ell\)) à la majorité des voix, et propage mr,s∗ je = (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s∗ je ) au temps \(\alpha\)r,s∗ je + ts∗. Considérons maintenant les vérificateurs honnêtes de l’étape s∗+1 (qui est une étape Coin-Fixed-To-1). Si le L'adversaire envoie réellement les messages dans CERT r i∗à certains d'entre eux et les amène à stop, alors similaire au cas 2.1.a, tous les utilisateurs honnêtes savent Br = Br \(\ell\)dans l'intervalle de temps Ir+1 et T r+1 \(\leq\)T r + \(\lambda\) + ts∗+1. Sinon, tous les vérificateurs honnêtes de l’étape s∗+1 ont reçu tous les messages (r, s∗) pour 0 et H(Br \(\ell\)) de HSV r,s∗après le temps d'attente ts∗+1, ce qui conduit à une majorité > 2/3, car |HSVr,s∗| > 2|MSV r,s∗|. Ainsi tous les vérificateurs dans HSV r,s∗+1 propagent leurs messages pour 0 et H(Br \(\ell\)) en conséquence. Notons que les vérificateurs dans HSV r,s∗+1 ne s’arrêtent pas à Br = Br \(\ell\), car l'étape s∗ + 1 n'est pas une étape Coin-Fixed-To-0. Considérons maintenant les vérificateurs honnêtes de l’étape s∗+2 (qui est une étape Coin-Genuinely-Flipped). Si l'adversaire envoie les messages dans CERT r i∗à certains d'entre eux et les fait arrêter, là encore, tous les utilisateurs honnêtes savent Br = Br \(\ell\)dans l'intervalle de temps Ir+1 et T r+1 \(\leq\)T r + \(\lambda\) + ts∗+2.Sinon, tous les vérificateurs honnêtes à l’étape s∗+ 2 ont reçu tous les messages (r, s∗+ 1) pour 0 et H(Br \(\ell\)) de HSV r,s∗+1 après le temps d’attente ts∗+2, ce qui conduit à une majorité > 2/3. Ainsi tous propagent leurs messages pour 0 et H(Br \(\ell\)) en conséquence : c'est ce qu'ils font pas de « lancer une pièce » dans ce cas. Encore une fois, notez qu'ils ne s'arrêtent pas sans se propager, car l'étape s∗+ 2 n'est pas une étape Coin-Fixed-To-0. Enfin, pour les vérificateurs honnêtes de l’étape s∗+3 (qui est une autre étape Coin-Fixed-To-0), tous d'entre eux auraient reçu au moins les messages valides pour 0 et H(Br \(\ell\)) de HSV s∗+2, s'ils attendent réellement le temps ts∗+3. Ainsi, que l'Adversaire envoie ou non les messages en CERT r i∗pour n’importe lequel d’entre eux, tous les vérificateurs dans HSV r,s∗+3 s’arrêtent avec Br = Br \(\ell\), sans propager quoi que ce soit. Selon la manière dont l'Adversaire agit, certains d'entre eux peuvent avoir leur propre CERT r composé de ces (r, s∗−1)-messages dans CERT r i∗, et les autres ont leur propre CERT r composé de ces messages (r, s∗+ 2). Quoi qu'il en soit, tous les utilisateurs honnêtes savoir Br = Br \(\ell\)dans l'intervalle de temps Ir+1 et T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3. Cas 2.2.b. L’événement E.b se produit et il n’existe pas de vérificateur honnête i′ \(\in\)HSV r,s∗qui devrait également s'arrêter sans rien propager. L'analyse dans ce cas est similaire à celles des cas 2.1.b et 2.2.a, donc de nombreux détails ont été omis. En particulier, CERT r i∗se compose des tH (r, s∗−1)-messages souhaités pour le bit 1 que l'Adversaire est capable de collecter ou de générer, s∗−2 ≡1 mod 3, l'Etape s∗est un Étape Coin-Fixed-To-1, et aucun vérificateur honnête (r, s∗) n'aurait pu voir une majorité > 2/3 pour 0. Ainsi, tout vérificateur i \(\in\)HSV r,s∗ fixe bi = 1 et propage mr,s∗ je = (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ je ) au temps \(\alpha\)r,s∗ je + ts∗. Semblable au cas 2.2.a, en au plus 3 étapes supplémentaires (c'est-à-dire le protocole atteint l'étape s∗+3, qui est une autre étape Coin-Fixed-To-1), tous les utilisateurs honnêtes savent Br = Br ǫ dans l'intervalle de temps Ir+1. De plus, T r+1 peut être \(\leq\)T r+\(\lambda\)+ts∗+1, ou \(\leq\)T r+\(\lambda\)+ts∗+2, ou \(\leq\)T r + \(\lambda\) + ts∗+3, selon la première fois qu'un vérificateur honnête est capable d'arrêter sans se propager. En combinant les quatre sous-cas, nous constatons que tous les utilisateurs honnêtes connaissent Br dans l'intervalle de temps Ir+1, avec T r+1 \(\leq\)T r + \(\lambda\) + ts∗dans les cas 2.1.a et 2.1.b, et T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 dans les cas 2.2.a et 2.2.b. Il reste à majorer s∗ et donc T r+1 pour le cas 2, et nous le faisons en considérant comment plusieurs fois, les étapes Coin-Genuinely-Flipped sont réellement exécutées dans le protocole : c'est-à-dire certains vérificateurs honnêtes ont en fait tiré à pile ou face. En particulier, fixez arbitrairement un pas s′ de Coin-Genuinely-Flipped (c'est-à-dire 7 \(\leq\)s′ \(\leq\)m + 2 et s′ −2 ≡2 mod 3), et soit \(\ell\)′ \(\triangleq\)arg minj\(\in\)SV r,s′−1 H(\(\sigma\)r,s′−1 j ). Pour l’instant supposons s′ < s∗, car autrement, aucun vérificateur honnête ne lance réellement une pièce à l’étape s′, selon la précédente discussions. Par la définition de SV r,s′−1, la valeur hash du titre de \(\ell\)′ est également la plus petite parmi tous les utilisateurs de PKr−k. Puisque la fonction hash est un oracle aléatoire, idéalement le joueur \(\ell\)′ est honnête avec probabilité d'au moins h. Comme nous le montrerons plus tard, même si l'Adversaire fait de son mieux pour prédire le sortie du oracle aléatoire et inclinez la probabilité, le joueur \(\ell\)′ est toujours honnête avec la probabilitéau moins ph = h2(1 + h −h2). Ci-dessous, nous considérons le cas où cela se produit effectivement : c'est-à-dire \(\ell\)′ \(\in\)HSV r, s′−1. Notez que tout vérificateur honnête i \(\in\)HSV r,s′ a reçu tous les messages de HSV r,s′−1 par temps \(\alpha\)r,s′ je + ts′. Si le joueur i doit lancer une pièce de monnaie (c'est-à-dire s'il n'a pas vu une majorité > 2/3 depuis le même bit b \(\in\){0, 1}), puis il pose bi = lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )). S'il existe un autre honnête vérificateur i′ \(\in\)HSV r,s′ qui a vu > 2/3 de majorité pour un bit b \(\in\){0, 1}, puis par Propriété (d) du lemme 5.5, aucun vérificateur honnête dans HSV r,s′ n'aurait vu une majorité > 2/3 pendant un moment b′ ̸= b. Puisque lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )) = b avec probabilité 1/2, tous les vérificateurs honnêtes dans HSV r,s′ atteignent un accord sur b avec une probabilité 1/2. Bien sûr, si un tel vérificateur i n’existe pas, alors tout les vérificateurs honnêtes en HSV r,s′ s’accordent sur le bit lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )) avec probabilité 1. En combinant la probabilité pour \(\ell\)′ \(\in\)HSV r,s′−1, nous avons que les vérificateurs honnêtes dans HSV r,s′ parvenir à un accord sur un bit b \(\in\){0, 1} avec une probabilité d'au moins ph 2 = h2(1+h−h2) 2 . De plus, par induction au vote majoritaire comme auparavant, tous les vérificateurs honnêtes dans HSV r,s′ ont leur vi défini être H(Br \(\ell\)). Ainsi, une fois qu’un accord sur b est atteint à l’étape s′, T r+1 est soit \(\leq\)T r + \(\lambda\) + ts′+1 soit \(\leq\)T r + \(\lambda\) + ts′+2, selon que b = 0 ou b = 1, suite à l'analyse des cas 2.1.a et 2.1.b. Dans En particulier, aucune autre étape Coin-Genuinely-Flipped ne sera exécutée : c'est-à-dire que les vérificateurs dans de telles démarches vérifient toujours qu'ils sont les vérificateurs et attendent donc, mais ils s'arrêteront tous sans propager quoi que ce soit. En conséquence, avant l'étape s∗, le nombre de fois où les étapes Coin-GenuinelyFlipped sont exécutées est distribué en fonction de la variable aléatoire Lr. Laisser les étapes s' être la dernière étape Coin-Genuinely-Flipped selon Lr, par la construction du protocole nous avons s′ = 4 + 3Lr. Quand l’Adversaire doit-il réaliser l’étape s∗ s’il veut retarder T r+1 d’autant possible ? On peut même supposer que l’Adversaire connaît à l’avance la réalisation de Lr. Si s∗> s′ alors cela ne sert à rien, car les vérificateurs honnêtes sont déjà parvenus à un accord dans Étapes s′. Bien sûr, dans ce cas s∗ serait s′ +1 ou s′ +2, toujours selon que b = 0 ou b = 1. Cependant, il s’agit en fait des cas 2.1.a et 2.1.b, et le T r+1 résultant est exactement le pareil que dans ce cas. Plus précisément, T r+1 \(\leq\)T r + \(\lambda\) + ts∗\(\leq\)T r + \(\lambda\) + ts′+2. Si s∗< s′ −3 — c'est-à-dire s∗ est avant l'avant-dernière étape Coin-Genuinely-Flipped — alors par l'analyse des cas 2.2.a et 2.2.b, T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 < T r + \(\lambda\) + ts′. Autrement dit, l’Adversaire fait en réalité en sorte que l’accord sur Br se réalise plus rapidement. Si s∗= s′ −2 ou s′ −1 — c'est-à-dire l'étape Coin-Fixed-To-0 ou l'étape Coin-Fixed-To-1 immédiatement avant l'étape s' - puis par l'analyse des quatre sous-cas, les vérificateurs honnêtes en Les étapes s ne permettent plus de lancer des pièces, car soit elles se sont arrêtées sans se propager, ou ont vu une majorité > 2/3 pour le même bit b. Nous avons donc T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 \(\leq\)T r + \(\lambda\) + ts′+2.En résumé, peu importe ce que s∗is, nous avons T r+1 \(\leq\)T r + \(\lambda\) + ts′+2 = T r + \(\lambda\) + t3Lr+6 = T r + \(\lambda\) + (2(3Lr + 6) −3)\(\lambda\) + Λ = T r + (6Lr + 10)\(\lambda\) + Λ, comme nous voulions le montrer. Le pire des cas est celui où s∗= s′ −1 et le cas 2.2.b se produit. En combinant les cas 1 et 2 du protocole binaire BA, le lemme 5.3 est valable. ■ 5.9 Sécurité du Qr des semences et probabilité d’un leader honnête Il reste à prouver le lemme 5.4. Rappelons que les vérificateurs du tour r sont tirés de PKr−k et sont choisis en fonction de la quantité Qr−1. La raison de l'introduction du paramètre de rétrospection k est de s'assurer que, au tour r −k, lorsque l'adversaire sera en mesure d'ajouter de nouveaux utilisateurs malveillants à PKr−k, il ne peut prédire la quantité Qr−1 qu’avec une probabilité négligeable. Notez que le La fonction hash est un oracle aléatoire et Qr−1 est l'une de ses entrées lors de la sélection des vérificateurs pour le tour r. Ainsi, quelle que soit la manière dont des utilisateurs malveillants sont ajoutés à PKr−k, du point de vue de l’Adversaire, chacun l'un d'eux est toujours sélectionné pour être vérificateur dans une étape du tour r avec la probabilité requise p (ou p1 pour l'étape 1). Plus précisément, nous avons le lemme suivant. Lemme 5.6. Avec k = O(log1/2 F), pour chaque tour r, avec une écrasante probabilité, l'Adversaire n'a pas interrogé Qr−1 au oracle aléatoire au tour r −k. Preuve. Nous procédons par induction. Supposons que pour chaque round \(\gamma\) < r, l’Adversaire n’a pas interrogé Q\(\gamma\)−1 au oracle aléatoire au tour \(\gamma\) −k.21 Considérons le jeu mental suivant joué par l'Adversaire au tour r −k, essayant de prédire Qr−1. À l'étape 1 de chaque tour \(\gamma\) = r −k, . . . , r −1, étant donné un Q\(\gamma\)−1 spécifique non interrogé au hasard oracle, en ordonnant les joueurs i \(\in\)PK\(\gamma\)−k selon les hash valeurs H(SIGi(\(\gamma\), 1, Q\(\gamma\)−1)) de plus en plus, nous obtenons une permutation aléatoire sur PK\(\gamma\)−k. Par définition, le leader \(\ell\) \(\gamma\) est le premier utilisateur dans la permutation et est honnête avec la probabilité h. De plus, lorsque PK\(\gamma\)−k est grand assez, pour tout entier x \(\geq\)1, la probabilité que les x premiers utilisateurs de la permutation soient tous malveillant mais le (x + 1)st est honnête est (1 −h)xh. Si \(\ell\) \(\gamma\) est honnête, alors Q\(\gamma\) = H(SIG\(\ell\) \(\gamma\)(Q\(\gamma\)−1), \(\gamma\)). Comme l'Adversaire ne peut pas contrefaire la signature de \(\ell\) \(\gamma\), Q\(\gamma\) est distribué uniformément de manière aléatoire du point de vue de l’Adversaire et, sauf avec une probabilité exponentiellement faible,22 n’a pas été interrogé sur H au tour r −k. Puisque chaque Qy+1, Qy+2, . . . , Qr−1 est respectivement la sortie de H avec Q\(\gamma\), Q\(\gamma\)+1, . . . , Qr−2 comme une des entrées, ils semblent tous aléatoires pour l'Adversaire et l'Adversaire n'aurait pas pu interroger Qr−1 à H à arrondir r −k. En conséquence, le seul cas où l’Adversaire peut prédire Qr−1 avec une bonne probabilité au tour r−k est lorsque tous les leaders \(\ell\)r−k, . . . , \(\ell\)r−1 sont malveillants. Considérons à nouveau un tour \(\gamma\) \(\in\){r−k . . . , r−1} et la permutation aléatoire sur PK\(\gamma\)−k induite par les valeurs hash correspondantes. Si pour certains x \(\geq\)2, les x −1 premiers utilisateurs de la permutation sont tous malveillants et le x-ème est honnête, alors le L'adversaire a x choix possibles pour Q\(\gamma\) : soit de la forme H(SIGi(Q\(\gamma\)−1, \(\gamma\))), où i est l'un des 21Comme k est un petit entier, sans perte de généralité on peut supposer que les k premiers tours du protocole sont exécutés dans un environnement sûr et l'hypothèse inductive est valable pour ces tours. 22C’est-à-dire exponentielle dans la longueur de la sortie de H. Notez que cette probabilité est bien inférieure à F.les x−1 premiers utilisateurs malveillants, en faisant du joueur i le véritable leader du tour \(\gamma\) ; ou H(Q\(\gamma\)−1, \(\gamma\)), par forcer B\(\gamma\) = B\(\gamma\) ǫ . Sinon, le leader du tour \(\gamma\) sera le premier utilisateur honnête dans la permutation et Qr−1 devient imprévisible pour l'Adversaire. Laquelle des x options de Q\(\gamma\) ci-dessus l’Adversaire devrait-il poursuivre ? Pour aider l'Adversaire Répondez à cette question, dans le jeu mental, nous le rendons en fait plus puissant qu'il ne l'est réellement. est, comme suit. Tout d’abord, en réalité, l’Adversaire ne peut pas calculer le hash du comportement d’un utilisateur honnête. signature, ne peut donc pas décider, pour chaque Q\(\gamma\), du nombre x(Q\(\gamma\)) d'utilisateurs malveillants au début de la permutation aléatoire en tour \(\gamma\) + 1 induite par Q\(\gamma\). Dans le jeu mental, on lui donne le nombres x(Q\(\gamma\)) gratuitement. Deuxièmement, en réalité, avoir les x premiers utilisateurs dans la permutation être malveillant ne signifie pas nécessairement qu'ils peuvent tous devenir le leader, car le hash les valeurs de leurs signatures doivent également être inférieures à p1. Nous avons ignoré cette contrainte dans le mental jeu, donnant à l'adversaire encore plus d'avantages. Il est facile de voir que dans le jeu mental, l'option optimale pour l'Adversaire, notée ˆQ\(\gamma\), est celui qui produit la plus longue séquence d'utilisateurs malveillants au début du processus aléatoire. permutation en tour \(\gamma\) + 1. En effet, étant donné un Q\(\gamma\) spécifique, le protocole ne dépend pas de Q\(\gamma\)−1 et l’Adversaire peut uniquement se concentrer sur la nouvelle permutation du tour \(\gamma\) + 1, qui a pour même répartition pour le nombre d'utilisateurs malveillants au début. Ainsi, à chaque tour \(\gamma\), le ˆQ\(\gamma\) mentionné ci-dessus lui donne le plus grand nombre d’options pour Q\(\gamma\)+1 et maximise ainsi la probabilité que les leaders consécutifs soient tous malveillants. Par conséquent, dans le jeu mental, l’Adversaire suit une Chaîne de Markov du tour r −k pour arrondir r −1, l'espace d'état étant {0} \(\cup\){x : x \(\geq\)2}. L'état 0 représente le fait que le Le premier utilisateur de la permutation aléatoire du tour en cours \(\gamma\) est honnête, donc l'Adversaire échoue à la jeu de prédiction de Qr−1 ; et chaque état x \(\geq\)2 représente le fait que les x −1 premiers utilisateurs du les permutations sont malveillantes et le x-ième est honnête, donc l'adversaire a x options pour Q\(\gamma\). Le les probabilités de transition P(x, y) sont les suivantes. • P(0, 0) = 1 et P(0, y) = 0 pour tout y \(\geq\)2. C'est-à-dire que l'Adversaire échoue au jeu une fois que le premier l'utilisateur dans la permutation devient honnête. • P(x, 0) = hx pour tout x \(\geq\)2. Autrement dit, avec la probabilité hx, toutes les x permutations aléatoires ont leurs premiers utilisateurs étant honnêtes, l’Adversaire échoue au tour suivant. • Pour tout x \(\geq\)2 et y \(\geq\)2, P(x, y) est la probabilité que, parmi les x permutations aléatoires induite par les options x de Q\(\gamma\), la plus longue séquence d'utilisateurs malveillants au début de certains d'entre eux sont y −1, donc l'Adversaire a y options pour Q\(\gamma\)+1 au tour suivant. C'est-à-dire P(x, y) = y−1 X je = 0 (1 −h)ih !x − y−2 X je = 0 (1 −h)ih !x = (1 −(1 −h)y)x −(1 −(1 −h)y−1)x. Notez que l'état 0 est l'unique état absorbant dans la matrice de transition P, et tous les autres états x a une probabilité positive d’aller vers 0. Nous souhaitons majorer le nombre k de tours nécessaires pour que la chaîne de Markov converge vers 0 avec une probabilité écrasante : c'est-à-dire non peu importe l'état dans lequel la chaîne commence, avec une écrasante probabilité, l'adversaire perd la partie. et ne parvient pas à prédire Qr−1 au tour r −k. Considérons la matrice de transition P (2) \(\triangleq\)P \(\cdot\) P après deux tours. Il est facile de voir que P (2)(0, 0) = 1 et P (2)(0, x) = 0 pour tout x \(\geq\)2. Pour tout x \(\geq\)2 et y \(\geq\)2, comme P(0, y) = 0, on a P (2)(x, y) = P(x, 0)P(0, y) + X z\(\geq\)2 P(x, z)P(z, y) = X z\(\geq\)2 P(x, z)P(z, y).Soit ¯h \(\triangleq\)1 −h, on a P(x, y) = (1 −¯hy)x −(1 −¯hy−1)x et P (2)(x, y) = X z\(\geq\)2 [(1 −¯hz)x −(1 −¯hz−1)x][(1 −¯hy)z −(1 −¯hy−1)z]. Ci-dessous nous calculons la limite de P (2)(x,y) P (x, y) lorsque h tend vers 1, c'est-à-dire que ¯h tend vers 0. Notez que le plus haut l’ordre de ¯h dans P(x, y) est ¯hy−1, de coefficient x. En conséquence, lim h \(\to\) 1 P (2)(x, y) P(x,y) = lim ¯h \(\to\) 0 P (2)(x, y) P(x,y) = lim ¯h \(\to\) 0 P (2)(x, y) x¯hy−1 + O(¯hy) = lim ¯h \(\to\) 0 P. z\(\geq\)2[x¯hz−1 + O(¯hz)][z¯hy−1 + O(¯hy)] x¯hy−1 + O(¯hy) = lim ¯h \(\to\) 0 2x¯hy + O(¯hy+1) x¯hy−1 + O(¯hy) = lim ¯h \(\to\) 0 2x¯hy x¯hy−1 = lim ¯h \(\to\) 0 2¯h = 0. Quand h est suffisamment proche de 1,23 on a P (2)(x, y) P(x,y) \(\leq\)1 2 pour tout x \(\geq\)2 et y \(\geq\)2. Par récurrence, pour tout k > 2, P (k) \(\triangleq\)P k est tel que • P (k)(0, 0) = 1, P (k)(0, x) = 0 pour tout x \(\geq\)2, et • pour tout x \(\geq\)2 et y \(\geq\)2, P (k)(x, y) = P (k−1)(x, 0)P(0, y) + X z\(\geq\)2 P (k−1)(x, z)P(z, y) = X z\(\geq\)2 P (k−1)(x, z)P(z, y) \(\leq\) X z\(\geq\)2 P(x,z) 2k−2 \(\cdot\) P(z, y) = P (2)(x, y) 2k−2 \(\leq\)P(x,y) 2k−1 . Comme P(x, y) \(\leq\)1, après 1−log2 F tours, la probabilité de transition vers n'importe quel état y \(\geq\)2 est négligeable, en commençant par n’importe quel état x \(\geq\)2. Bien qu’il existe de nombreux états y, il est facile de voir que lim y → + ∞ P(x,y) P(x, y + 1) = lim y → + ∞ (1 −¯hy)x −(1 −¯hy−1)x (1 −¯hy+1)x −(1 −¯hy)x = lim y → + ∞ ¯hy−1 −¯hy ¯hy −¯hy+1 = 1 ¯h = 1 1 −h. Par conséquent, chaque ligne x de la matrice de transition P décroît comme une séquence géométrique avec le taux 1 1−h > 2 lorsque y est suffisamment grand, et il en va de même pour P (k). En conséquence, lorsque k est suffisamment grand mais quand même de l'ordre de log1/2 F, P y\(\geq\)2 P (k)(x, y) < F pour tout x \(\geq\)2. Autrement dit, avec une écrasante probabilité l'Adversaire perd la partie et ne parvient pas à prédire Qr−1 au tour r −k. Pour h \(\in\)(2/3, 1], un plus Une analyse complexe montre qu’il existe une constante C légèrement supérieure à 1/2, telle qu’elle suffit prendre k = O(logC F). Ainsi le lemme 5.6 est vérifié. ■ Lemme 5.4. (retraité) Étant donné les propriétés 1 à 3 pour chaque tour avant r, ph = h2(1 + h −h2) pour Lr, et le leader \(\ell\)r est honnête avec une probabilité d'au moins ph. 23Par exemple, h = 80 % comme le suggèrent les choix spécifiques des paramètres.
Preuve. D’après le lemme 5.6, l’Adversaire ne peut pas prédire Qr−1 au tour r −k sauf avec probabilité négligeable. Notez que cela ne signifie pas que la probabilité d’avoir un leader honnête soit h pour chaque tour. En effet, étant donné Qr−1, en fonction du nombre d'utilisateurs malveillants au début de la permutation aléatoire de PKr−k, l'Adversaire peut avoir plus d'une option pour Qr et cela peut donc augmenter la probabilité d'un leader malveillant au tour r + 1 — encore une fois, nous lui donnons quelques avantages irréalistes comme dans le lemme 5.6, afin de simplifier l’analyse. Cependant, pour chaque Qr−1 qui n’a pas été interrogé à H par l’Adversaire au tour r −k, pour tout x \(\geq\)1, avec probabilité (1 −h)x−1h que le premier utilisateur honnête se produise à la position x dans le résultat permutation aléatoire de PKr−k. Lorsque x = 1, la probabilité d’avoir un leader honnête au tour r + 1 est en effet h; tandis que lorsque x = 2, l'Adversaire a deux options pour Qr et la probabilité résultante est h2. En considérant seulement ces deux cas, nous avons que la probabilité d'avoir un leader honnête au tour r + 1 est au moins h \(\cdot\) h + (1 −h)h \(\cdot\) h2 = h2(1 + h −h2) comme souhaité. Notez que la probabilité ci-dessus ne prend en compte que le caractère aléatoire du protocole du tour r −k arrondir r. Lorsque tout le hasard du tour 0 au tour r est pris en compte, Qr−1 est encore moins prévisible pour l’Adversaire et la probabilité d’avoir un leader honnête au tour r+1 est de moins h2(1 + h −h2). En remplaçant r + 1 par r et décale tout en arrière d'un tour, le leader \(\ell\)r est honnête avec une probabilité d'au moins h2(1 + h −h2), comme souhaité. De même, dans chaque étape Coin-Genuinely-Flipped, le « leader » de cette étape – c’est-à-dire le vérificateur dans SV r,s dont le titre a la plus petite valeur hash, est honnête avec une probabilité d'au moins h2(1 + h-h2). Ainsi ph = h2(1 + h −h2) pour Lr et le lemme 5.4 est vérifié. ■
Algorand ′
2 Trong phần này, chúng tôi xây dựng một phiên bản Algorand ′ hoạt động theo giả định sau. Giả định của đa số người dùng trung thực: Hơn 2/3 số người dùng trong mỗi PKr là trung thực. Trong Phần 8, chúng tôi trình bày cách thay thế giả định trên bằng Đa số trung thực mong muốn của Giả định về tiền. 6.1 Ký hiệu và thông số bổ sung cho Algorand ′ 2 Ký hiệu • \(\mu\) \(\in\)Z+: giới hạn trên thực dụng của số bước mà với xác suất áp đảo, thực sự sẽ được thực hiện trong một vòng. (Như chúng ta sẽ thấy, tham số \(\mu\) kiểm soát số lượng tạm thời phím mà người dùng chuẩn bị trước cho mỗi vòng.) • Lr: một biến ngẫu nhiên biểu thị số phép thử Bernoulli cần để thấy số 1, khi mỗi phép thử thử nghiệm là 1 với xác suất ph 2 . Lr sẽ được sử dụng để giới hạn trên thời gian cần thiết để tạo chặn Br. • tH: giới hạn dưới của số lượng người xác minh trung thực ở bước s > 1 của vòng r, sao cho với xác suất áp đảo (cho n và p), có > tH người xác minh trung thực trong SV r,s. Thông số • Mối quan hệ giữa các thông số khác nhau. — Với mỗi bước s > 1 của vòng r, n được chọn sao cho với xác suất áp đảo,
|HSV r,s| > th và |HSV r,s| + 2|MSV r,s| < 2tH. Lưu ý rằng hai bất đẳng thức trên cùng suy ra |HSV r,s| > 2|MSV r,s|: tức là có là 2/3 đa số trung thực trong số những người xác minh được chọn. Giá trị của h càng gần 1 thì n càng nhỏ. Đặc biệt, chúng tôi sử dụng (các biến thể of) Giới hạn Chernoff để đảm bảo các điều kiện mong muốn được giữ vững với xác suất áp đảo. • Ví dụ lựa chọn các thông số quan trọng. — F = 10−18. — n \(\approx\)4000, tH \(\approx\)0,69n, k = 70. 6.2 Triển khai Khóa tạm thời trong Algorand ′ 2 Hãy nhớ lại rằng người xác minh i \(\in\)SV r,s ký điện tử vào tin nhắn của mình mr,s tôi của bước s trong vòng r, liên quan đến một khóa công khai phù du pkr,s i , sử dụng khóa tiết ra tạm thời skr,s tôi rằng anh ta nhanh chóng phá hủy sau khi sử dụng. Khi số bước có thể thực hiện của một vòng bị giới hạn bởi một giới hạn nhất định số nguyên \(\mu\), chúng ta đã biết cách xử lý các khóa tạm thời trên thực tế. Ví dụ, như chúng tôi đã giải thích trong Algorand ′ 1 (trong đó \(\mu\) = m + 3), để xử lý tất cả các khóa phù du có thể có của anh ta, từ một vòng r′ đến một vòng r′ + 106, tôi tạo ra một cặp (PMK, SMK), trong đó PMK public master khóa của sơ đồ chữ ký dựa trên nhận dạng và SMK khóa chính bí mật tương ứng của nó. Người dùng tôi công khai PMK và sử dụng SMK để tạo khóa bí mật của từng khóa chung có thể tạm thời (và phá hủy SMK sau khi làm như vậy). Tập hợp các khóa công khai tạm thời của i cho các khóa có liên quan vòng là S = {i} \(\times\) {r′, . . . , r′ + 106} \(\times\) {1, . . . , \(\mu\)}. (Như đã thảo luận, khi vòng r′ + 106 đến gần, tôi “làm mới” cặp của anh ấy (PMK, SMK).) Trong thực tế, nếu \(\mu\) đủ lớn, một vòng Algorand ′ 2 sẽ không mất nhiều hơn \(\mu\) bước. trong Tuy nhiên, về nguyên tắc, có một khả năng rất nhỏ là, đối với một số vòng r, số bước thực tế lấy sẽ vượt quá \(\mu\). Khi điều này xảy ra, tôi sẽ không thể ký vào tin nhắn của anh ấy, ông ạ. tôi cho bất kỳ bước nào s > \(\mu\), bởi vì anh ta chỉ chuẩn bị trước \(\mu\) khóa bí mật cho vòng r. Hơn nữa, anh ấy không thể chuẩn bị và công khai một kho khóa tạm thời mới, như đã thảo luận trước đó. Trên thực tế, để làm vì vậy, anh ta sẽ cần chèn một khóa chính công khai PMK′ mới vào một khối mới. Nhưng, nên làm tròn r thực hiện ngày càng nhiều bước, sẽ không có khối mới nào được tạo ra. Tuy nhiên, các giải pháp vẫn tồn tại. Ví dụ: tôi có thể sử dụng khóa tạm thời cuối cùng của vòng r, pkr,\(\mu\) tôi , như sau. Anh ta tạo ra một kho cặp khóa khác cho vòng r — ví dụ: bằng cách (1) tạo ra một kho khóa khác cặp khóa chính (PMK, SMK); (2) sử dụng cặp này để tạo ra một khóa khác, chẳng hạn như 106 khóa tạm thời, sk r,\(\mu\)+1 tôi , . . . , sk r,\(\mu\)+106 tôi , tương ứng với các bước \(\mu\)+1, ..., \(\mu\)+106 của vòng r; (3) sử dụng skr,\(\mu\) tôi kỹ thuật số ký PMK (và bất kỳ thông điệp (r, \(\mu\)) nào nếu i \(\in\)SV r,\(\mu\)), liên quan đến pkr,\(\mu\) tôi ; và (4) xóa SMK và skr,\(\mu\) tôi . Tôi có nên trở thành người xác minh ở bước \(\mu\) + s với s \(\in\){1, . . . , 106}, sau đó tôi ký điện tử (r, \(\mu\) + s)- của anh ấy nhắn tin cho ông,\(\mu\)+s tôi liên quan đến pk khóa mới của anh ấy r,\(\mu\)+s tôi = (i, r, \(\mu\) + s). Tất nhiên, để xác minh chữ ký này của i, những người khác cần chắc chắn rằng khóa công khai này tương ứng với khóa công khai mới PMK của tôi. Vì vậy, ngoài chữ ký này, tôi còn truyền chữ ký số PMK của anh ấy tương ứng với pkr,\(\mu\) tôi . Tất nhiên, cách tiếp cận này có thể được lặp lại nhiều lần nếu cần thiết, nếu vòng r tiếp tục để biết thêm nhiều bước hơn nữa! Khóa bí mật tạm thời cuối cùng được sử dụng để xác thực một khóa công khai chính mới khóa, và do đó, một kho khóa tạm thời khác cho vòng r. Và vân vân.6.3 Giao thức thực tế Algorand ′ 2 Hãy nhớ lại rằng, trong mỗi bước s của vòng r, người xác minh i \(\in\)SV r,s sử dụng bí mật công cộng dài hạn của mình cặp khóa để tạo thông tin xác thực của anh ấy, \(\sigma\)r,s tôi \(\triangleq\)SIGi(r, s, Qr−1), cũng như SIGi Qr−1 trong trường hợp s = 1. Người xác minh tôi sử dụng cặp khóa phù du của anh ấy, (pkr,s tôi, skr,s i ), để ký bất kỳ tin nhắn nào khác m có thể được yêu cầu. Để đơn giản, chúng ta viết esigi(m), thay vì sigpkr,s i (m), để biểu thị sự phù du đúng nghĩa của i chữ ký của m ở bước này và viết ESIGi(m) thay vì SIGpkr,s tôi (m) \(\triangleq\)(i, m, esigi(m)). Bước 1: Chặn đề xuất Hướng dẫn cho mọi người dùng i \(\in\)PKr−k: Người dùng i bắt đầu Bước 1 của vòng r ngay khi anh ta có CERT r−1, cho phép tôi tính toán rõ ràng H(Br−1) và Qr−1. • Người dùng i sử dụng Qr−1 để kiểm tra xem i \(\in\)SV r,1 hay không. Nếu i /\(\in\)SV r,1, anh ta không làm gì ở Bước 1. • Nếu tôi \(\in\)SV r,1, tức là nếu tôi là một nhà lãnh đạo tiềm năng thì anh ta sẽ làm như sau. (a) Nếu tôi đã nhìn thấy B0, . . . , chính Br−1 (bất kỳ Bj = Bj ǫ có thể dễ dàng suy ra từ giá trị hash của nó trong CERT j và do đó được giả định là “đã nhìn thấy”), sau đó anh ta sẽ thu các khoản thanh toán vòng r có đã được truyền tới anh ta cho đến nay và tính toán mức lương tối đa PAY r tôi từ họ. (b) Nếu tôi chưa thấy hết B0, . . . , Br−1 chưa, sau đó anh ta đặt PAY r tôi = \(\emptyset\). (c) Tiếp theo, tôi tính “khối ứng viên” Br của anh ấy i = (r, TRẢ r i , SIGi(Qr−1), H(Br−1)). (c) Cuối cùng, tôi tính toán thông điệp mr,1 tôi = (Anh i , esigi(H(Br i )), \(\sigma\)r,1 i ), phá hủy sự phù du của anh ấy khóa bí mật skr,1 i , sau đó truyền hai tin nhắn, mr,1 tôi và (SIGi(Qr−1), \(\sigma\)r,1 tôi ), riêng biệt nhưng đồng thời.a aKhi tôi là người dẫn đầu, SIGi(Qr−1) cho phép người khác tính Qr = H(SIGi(Qr−1), r).
Nhân giống chọn lọc Để rút ngắn thời gian thực hiện chung của Bước 1 và toàn bộ vòng, điều quan trọng là (r, 1)- thông điệp được truyền bá có chọn lọc. Nghĩa là, với mỗi người dùng j trong hệ thống, • Đối với tin nhắn (r, 1) đầu tiên mà anh ta nhận được và xác minh thành công, liệu nó có chứa một khối hoặc chỉ là thông tin xác thực và chữ ký của Qr−1, người chơi j sẽ truyền nó như bình thường. • Đối với tất cả các tin nhắn (r, 1) khác mà người chơi j nhận được và xác minh thành công, anh ta sẽ truyền chỉ khi giá trị hash của thông tin xác thực chứa trong đó là giá trị nhỏ nhất trong số các giá trị hash thông tin xác thực có trong tất cả các tin nhắn (r, 1) mà anh ấy đã nhận được và đã xác minh thành công xa. • Tuy nhiên, nếu j nhận được hai tin nhắn khác nhau có dạng mr,1 tôi từ cùng một người chơi i,b anh ấy loại bỏ cái thứ hai bất kể giá trị hash của thông tin xác thực của tôi là bao nhiêu. Lưu ý rằng, dưới sự lan truyền có chọn lọc, điều hữu ích là mỗi nhà lãnh đạo tiềm năng tôi sẽ tuyên truyền thông tin xác thực \(\sigma\)r,1 tôi tách biệt với ông, 1 i :c những tin nhắn nhỏ đó di chuyển nhanh hơn các khối, đảm bảo tuyên truyền kịp thời của mr,1 i là nơi thông tin xác thực được chứa có giá trị hash nhỏ, trong khi làm cho những giá trị có giá trị hash lớn biến mất nhanh chóng. aNghĩa là tất cả các chữ ký đều đúng và nếu nó có dạng ông1 i , cả khối và hash của nó đều hợp lệ —mặc dù j không kiểm tra xem tập thanh toán đi kèm có tối đa cho i hay không. bĐiều đó có nghĩa là tôi có ác ý. cChúng tôi cảm ơn Georgios Vlachos vì đã gợi ý điều này.Bước 2: Bước đầu tiên của Giao thức đồng thuận được phân loại GC Hướng dẫn cho mọi người dùng i \(\in\)PKr−k: Người dùng i bắt đầu Bước 2 của vòng r ngay khi anh ta có CERT r-1. • Người dùng i đợi trong khoảng thời gian tối đa t2 \(\triangleq\) \(\lambda\) + Λ. Trong khi chờ đợi tôi làm như sau. 1. Sau khi đợi thời gian 2\(\lambda\), anh ta tìm được người dùng \(\ell\)sao cho H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) với mọi thông tin xác thực \(\sigma\)r,1 j đó là một phần của các tin nhắn được xác minh thành công (r, 1) mà anh ấy đã nhận được cho đến nay.a 2. Nếu anh ấy có đã nhận được một khối Br−1, cái nào trận đấu cái hash giá trị H(Br−1) chứa trong CERT r−1,b và nếu anh ta đã nhận được từ \(\ell\)một tin nhắn hợp lệ mr,1 \(\ell\) = (Anh \(\ell\), esig\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),c thì tôi dừng chờ và đặt v′ tôi \(\triangleq\)(H(Br \(\ell\)), \(\ell\)). 3. Ngược lại, khi hết thời gian t2, tôi đặt v′ tôi \(\triangleq\) \(\bot\). 4. Khi giá trị của v′ tôi đã được thiết lập, tôi tính Qr−1 từ CERT r−1 và kiểm tra xem i \(\in\)SV r,2 hoặc không. 5. Nếu tôi \(\in\)SV r,2 thì tôi tính thông điệp mr,2 tôi \(\triangleq\)(ESIGi(v′ i), \(\sigma\)r,2 i ),d phá hủy phù du của mình khóa bí mật skr,2 i , và sau đó truyền bá mr,2 tôi . Nếu không, tôi dừng lại mà không lan truyền bất cứ điều gì. aVề cơ bản, người dùng i quyết định riêng rằng người dẫn đầu vòng r là người dùng \(\ell\). b Tất nhiên, nếu CERT r−1 chỉ ra rằng Br−1 = Br−1 ừ , thì tôi đã “nhận được” Br−1 ngay khi anh ấy có CERT r-1. cMột lần nữa, chữ ký của người chơi \(\ell\) và hash đều được xác minh thành công và TRẢ TIỀN r \(\ell\)ở Br \(\ell\)là một khoản thanh toán hợp lệ cho làm tròn r —mặc dù tôi không kiểm tra xem TRẢ TIỀN r \(\ell\)là tối đa cho \(\ell\)hoặc không. Nếu anh \(\ell\)chứa một tập thanh toán trống thì thực ra tôi không cần phải xem Br−1 trước khi xác minh xem Br \(\ell\)có hợp lệ hay không. dLời nhắn của ông,2 tôi tín hiệu mà người chơi i coi là thành phần đầu tiên của v′ tôi là hash của khối tiếp theo, hoặc coi khối tiếp theo là trống.
Bước 3: Bước thứ hai của GC Hướng dẫn cho mọi người dùng i \(\in\)PKr−k: Người dùng i bắt đầu Bước 3 của vòng r ngay khi anh ta có CERT r-1. • Người dùng i đợi trong khoảng thời gian tối đa t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ. Trong khi chờ đợi, tôi đóng vai theo sau. 1. Nếu tồn tại một giá trị v sao cho anh ta đã nhận được ít nhất tH tin nhắn hợp lệ mr,2 j của dạng (ESIGj(v), \(\sigma\)r,2 j ), không có bất kỳ mâu thuẫn nào, a sau đó anh ta ngừng chờ đợi và đặt v′ = v. 2. Ngược lại, khi hết thời gian t3, anh ta đặt v′ = \(\bot\). 3. Khi giá trị của v′ đã được đặt, tôi tính Qr−1 từ CERT r−1 và kiểm tra xem i \(\in\)SV r,3 hoặc không. 4. Nếu tôi \(\in\)SV r,3 thì tôi tính thông điệp mr,3 tôi \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 i ), phá hủy của anh ấy khóa bí mật phù du skr,3 i , rồi tuyên truyền mr,3 tôi . Nếu không, tôi dừng lại mà không tuyên truyền bất cứ điều gì. a Tức là anh ta chưa nhận được hai tin nhắn hợp lệ lần lượt chứa ESIGj(v) và ESIGj(ˆv) khác nhau, từ một người chơi j. Từ đây trở đi, ngoại trừ các Điều kiện kết thúc được xác định sau, bất cứ khi nào một người chơi trung thực muốn các tin nhắn có hình thức nhất định, các tin nhắn mâu thuẫn với nhau không bao giờ được tính hoặc coi là hợp lệ.
Bước 4: Đầu ra của GC và Bước đầu tiên của BBA⋆ Hướng dẫn cho mọi người dùng i \(\in\)PKr−k: Người dùng i bắt đầu Bước 4 của vòng r ngay khi anh ta hoàn thành Bước 3 của riêng mình. • Người dùng i đợi một khoảng thời gian tối đa 2\(\lambda\).a Trong khi chờ đợi, i thực hiện như sau. 1. Anh ta tính vi và gi, đầu ra của GC, như sau. (a) Nếu tồn tại một giá trị v′ ̸= \(\bot\) sao cho anh ta đã nhận được ít nhất tH tin nhắn hợp lệ ông, 3 j = (ESIGj(v′), \(\sigma\)r,3 j ), sau đó anh ta ngừng chờ đợi và đặt vi \(\triangleq\)v′ và gi \(\triangleq\)2. (b) Nếu anh ta đã nhận được ít nhất th tin nhắn hợp lệ mr,3 j = (ESIGj(\(\bot\)), \(\sigma\)r,3 j ), sau đó anh ấy dừng lại chờ đợi và đặt vi \(\triangleq\) \(\bot\)và gi \(\triangleq\)0.b (c) Ngược lại, khi hết thời gian 2\(\lambda\), nếu tồn tại một giá trị v′ ̸= \(\bot\) sao cho anh ta có nhận được ít nhất ⌈tH 2 ⌉tin nhắn hợp lệ mr,j j = (ESIGj(v′), \(\sigma\)r,3 j ), thì anh ta đặt vi \(\triangleq\)v′ và gi \(\triangleq\)1.c (d) Ngược lại, khi hết thời gian 2\(\lambda\), anh ta đặt vi \(\triangleq\) \(\bot\) và gi \(\triangleq\)0. 2. Khi các giá trị vi và gi đã được đặt, i tính bi, đầu vào của BBA⋆, như sau: bi \(\triangleq\)0 nếu gi = 2, và bi \(\triangleq\)1 nếu ngược lại. 3. i tính Qr−1 từ CERT r−1 và kiểm tra xem i \(\in\)SV r,4 hay không. 4. Nếu i \(\in\)SV r,4, anh ta tính thông điệp mr,4 tôi \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i ), phá hủy của anh ấy khóa bí mật phù du skr,4 i , và tuyên truyền ông,4 tôi . Nếu không, tôi dừng lại mà không lan truyền bất cứ điều gì. aDo đó, tổng thời gian tối đa kể từ khi tôi bắt đầu Bước 1 của vòng r có thể là t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ. bCho dù Bước (b) có trong quy trình hay không không ảnh hưởng đến tính chính xác của nó. Tuy nhiên, sự hiện diện của Bước (b) cho phép Bước 4 kết thúc trong thời gian ít hơn 2\(\lambda\) nếu có đủ nhiều người xác minh Bước 3 đã “ký \(\bot\)”. cCó thể chứng minh rằng v’ trong trường hợp này, nếu tồn tại, phải là duy nhất.Bước s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3: Bước cố định bằng tiền xu của BBA⋆ Hướng dẫn cho mọi người dùng i \(\in\)PKr−k: Người dùng i bắt đầu các Bước của riêng mình trong vòng r ngay khi anh ta hoàn thành Bước s −1 của riêng mình. • Người dùng i đợi một khoảng thời gian tối đa 2\(\lambda\).a Trong khi chờ đợi, i thực hiện như sau. – Điều kiện kết thúc 0: Nếu tại một điểm bất kỳ tồn tại chuỗi v ̸= \(\bot\) và bước s′ sao cho (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 —nghĩa là Bước s′ là bước Coin-Fixed-To-0, (b) tôi đã nhận được ít nhất tH tin nhắn hợp lệ mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ),b và (c) tôi đã nhận được một tin nhắn hợp lệ (SIGj(Qr−1), \(\sigma\)r,1 j ) với j là số thứ hai thành phần của v, sau đó, tôi ngừng chờ đợi và kết thúc việc thực hiện Bước s của chính anh ấy (và trên thực tế là vòng r) ngay lập tức mà không cần truyền bá bất cứ thứ gì dưới dạng trình xác minh (r, s); đặt H(Br) là đầu tiên thành phần của v; và đặt CERT r của riêng mình thành tập hợp các tin nhắn mr,s′−1 j của bước (b) cùng với (SIGj(Qr−1), \(\sigma\)r,1 j ).c – Điều kiện kết thúc 1: Nếu tại bất kỳ điểm nào tồn tại bước s′ sao cho (a’) 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 —nghĩa là Bước s′ là bước Cố định thành 1 xu và (b’) tôi đã nhận được ít nhất tH tin nhắn hợp lệ mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),d sau đó, tôi ngừng chờ đợi và kết thúc việc thực hiện Bước s của chính anh ấy (và trên thực tế là vòng r) phải không đi mà không truyền bá bất cứ thứ gì dưới dạng trình xác minh (r, s); đặt Br = Br Ă ; và tự đặt ra CERT r là tập hợp các thông điệp mr,s′−1 j của bước phụ (b'). – Nếu tại bất kỳ điểm anh ấy có đã nhận được tại ít nhất th hợp lệ ông,s−1 j ' là của cái hình thức (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), sau đó anh ta ngừng chờ đợi và đặt bi \(\triangleq\)1. – Nếu tại bất kỳ điểm anh ấy có đã nhận được tại ít nhất th hợp lệ ông,s−1 j ' là của cái hình thức (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), nhưng họ không đồng ý về cùng v thì anh ta dừng lại chờ đợi và đặt bi \(\triangleq\)0. – Ngược lại, khi hết thời gian 2\(\lambda\), tôi đặt bi \(\triangleq\)0. – Khi giá trị bi đã được đặt, tôi tính Qr−1 từ CERT r−1 và kiểm tra xem i \(\in\)SV r,s. – Nếu i \(\in\)SV r,s thì tôi tính thông điệp mr,s tôi \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ) với vi là giá trị mà anh ấy đã tính toán ở Bước 4, phá hủy khóa bí mật phù du của anh ấy skr,s tôi, và sau đó tuyên truyền ông tôi . Nếu không, tôi dừng lại mà không truyền bá bất cứ điều gì. aDo đó, tổng thời gian tối đa kể từ khi tôi bắt đầu Bước 1 của vòng r có thể là ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ. bTin nhắn như vậy từ người chơi j được tính ngay cả khi người chơi i cũng đã nhận được tin nhắn từ j ký tên 1. Những điều tương tự đối với Điều kiện kết thúc 1. Như đã trình bày trong phân tích, điều này nhằm đảm bảo rằng tất cả người dùng trung thực đều biết CERT r trong khoảng thời gian \(\lambda\) cách nhau. cNgười dùng bây giờ tôi đã biết H(Br) và kết thúc vòng r của chính anh ta. Anh ta chỉ cần đợi cho đến khi khối Br thực sự được được truyền bá cho anh ta, việc này có thể mất thêm thời gian. Anh ấy vẫn giúp truyền bá thông điệp với tư cách là một người dùng chung, nhưng không bắt đầu bất kỳ sự lan truyền nào dưới dạng trình xác minh (r, s). Đặc biệt, ông đã giúp truyền bá mọi thông điệp trong CERT r của anh ấy, đủ cho giao thức của chúng tôi. Lưu ý rằng anh ta cũng nên đặt bi \(\triangleq\)0 cho giao thức BA nhị phân, nhưng bi dù sao cũng không cần thiết trong trường hợp này. Những điều tương tự cho tất cả các hướng dẫn trong tương lai. dTrong trường hợp này, vj là gì không quan trọng. 65Bước s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3: Bước cố định thành 1 xu của BBA⋆ Hướng dẫn cho mọi người dùng i \(\in\)PKr−k: Người dùng i bắt đầu các Bước của riêng mình trong vòng r ngay khi anh ta hoàn thành Bước s −1 của riêng mình. • Người dùng i đợi trong thời gian tối đa 2\(\lambda\). Trong khi chờ đợi tôi làm như sau. – Điều kiện kết thúc 0: Hướng dẫn tương tự như ở bước Coin-Fixed-To-0. – Điều kiện kết thúc 1: Hướng dẫn tương tự như ở bước Coin-Fixed-To-0. – Nếu tại bất kỳ điểm anh ấy có đã nhận được tại ít nhất th hợp lệ ông,s−1 j ' là của cái hình thức (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), thì anh ta ngừng chờ đợi và đặt bi \(\triangleq\)0.a – Ngược lại, khi hết thời gian 2\(\lambda\), tôi đặt bi \(\triangleq\)1. – Khi giá trị bi đã được đặt, tôi tính Qr−1 từ CERT r−1 và kiểm tra xem i \(\in\)SV r,s. – Nếu i \(\in\)SV r,s thì tôi tính thông điệp mr,s tôi \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ) với vi là giá trị mà anh ấy đã tính toán ở Bước 4, phá hủy khóa bí mật phù du của anh ấy skr,s tôi, và sau đó tuyên truyền ông tôi . Nếu không, tôi dừng lại mà không truyền bá bất cứ điều gì. aLưu ý rằng việc nhận được các thông báo tH hợp lệ (r, s −1) ký cho 1 có nghĩa là Điều kiện kết thúc 1. Bước s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3: Bước lật xu thật của BBA⋆ Hướng dẫn cho mọi người dùng i \(\in\)PKr−k: Người dùng i bắt đầu các Bước của riêng mình trong vòng r ngay khi anh ta hoàn thành bước s −1 của chính mình. • Người dùng i đợi trong thời gian tối đa 2\(\lambda\). Trong khi chờ đợi tôi làm như sau. – Điều kiện kết thúc 0: Hướng dẫn tương tự như ở bước Coin-Fixed-To-0. – Điều kiện kết thúc 1: Hướng dẫn tương tự như ở bước Coin-Fixed-To-0. – Nếu tại bất kỳ điểm anh ấy có đã nhận được tại ít nhất th hợp lệ ông,s−1 j ' là của cái hình thức (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), sau đó anh ta ngừng chờ đợi và đặt bi \(\triangleq\)0. – Nếu tại bất kỳ điểm anh ấy có đã nhận được tại ít nhất th hợp lệ ông,s−1 j ' là của cái hình thức (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), sau đó anh ta ngừng chờ đợi và đặt bi \(\triangleq\)1. – Ngược lại, khi hết thời gian 2\(\lambda\), cho SV r,s−1 tôi là tập hợp các bộ xác minh (r, s −1) từ người mà anh ấy đã nhận được một tin nhắn hợp lệ mr,s−1 j , tôi đặt bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 tôi H(\(\sigma\)r,s−1 j )). – Khi giá trị bi đã được đặt, tôi tính Qr−1 từ CERT r−1 và kiểm tra xem i \(\in\)SV r,s. – Nếu i \(\in\)SV r,s thì tôi tính thông điệp mr,s tôi \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ) với vi là giá trị mà anh ấy đã tính toán ở Bước 4, phá hủy khóa bí mật phù du của anh ấy skr,s tôi, và sau đó tuyên truyền ông tôi . Nếu không, tôi dừng lại mà không truyền bá bất cứ điều gì. Nhận xét. Về nguyên tắc, như được xem xét trong tiểu mục 6.2, giao thức có thể thực hiện nhiều tùy ý bước trong một số vòng. Nếu điều này xảy ra, như đã thảo luận, người dùng i \(\in\)SV r,s với s > \(\mu\) đã cạn kiệt
kho khóa tạm thời được tạo trước của anh ấy và phải xác thực tin nhắn (r, s) của anh ấy, mr,s tôi bởi một “thác” của những chìa khóa phù du. Do đó tin nhắn của tôi sẽ dài hơn một chút và truyền đi lâu hơn tin nhắn sẽ mất nhiều thời gian hơn một chút. Theo đó, sau rất nhiều bước của một vòng nhất định, giá trị của tham số \(\lambda\) sẽ tự động tăng nhẹ. (Nhưng nó trở lại bản gốc \(\lambda\) một lần khối được tạo ra và một vòng mới bắt đầu.) Tái thiết khối Round-r bởi những người không xác minh Hướng dẫn cho mọi người dùng i trong hệ thống: Người dùng i bắt đầu vòng r của riêng mình ngay khi anh ta có CERT r-1. • tôi làm theo hướng dẫn của từng bước của giao thức, tham gia tuyên truyền tất cả tin nhắn, nhưng không bắt đầu bất kỳ việc truyền bá nào trong một bước nếu anh ta không phải là người xác minh trong bước đó. • i kết thúc vòng r của chính anh ấy bằng cách nhập Điều kiện kết thúc 0 hoặc Điều kiện kết thúc 1 trong một số trường hợp bước, với CERT tương ứng r. • Từ đó trở đi, anh ta bắt đầu vòng r + 1 trong khi chờ nhận khối Br thực tế (trừ khi anh ấy đã nhận được nó), người có hash H(Br) đã bị CERT r ghim xuống. Một lần nữa, nếu CERT r chỉ ra rằng Br = Br ǫ, cái tôi biết Br ngay lúc anh ấy có CERT r. 6,4 Phân tích Algorand ′ 2 Phân tích Algorand ′ 2 dễ dàng được suy ra từ Algorand ′ 1. Về cơ bản, trong Algorand ′ 2, với xác suất áp đảo, (a) tất cả người dùng trung thực đều đồng ý trên cùng một khối Br; người lãnh đạo của một cái mới khối trung thực với xác suất ít nhất là ph = h2(1 + h −h2).
Algorand ′
2 Dans cette section, nous construisons une version de Algorand ′ fonctionnant sous l'hypothèse suivante. Hypothèse de la majorité honnête des utilisateurs : plus des 2/3 des utilisateurs de chaque PKr sont honnêtes. Dans la section 8, nous montrons comment remplacer l'hypothèse ci-dessus par la majorité honnête souhaitée des Hypothèse monétaire. 6.1 Notations et paramètres supplémentaires pour Algorand ′ 2 Notations • \(\mu\) \(\in\)Z+ : une limite supérieure pragmatique du nombre d'étapes qui, avec une probabilité écrasante, sera effectivement pris en un seul tour. (Comme nous le verrons, le paramètre \(\mu\) contrôle le nombre clés qu'un utilisateur prépare à l'avance pour chaque tour.) • Lr : une variable aléatoire représentant le nombre d'essais de Bernoulli nécessaires pour obtenir un 1, lorsque chaque l'essai est 1 avec une probabilité ph 2 . Lr sera utilisé pour limiter le temps nécessaire à la génération bloquer Br. • th : une limite inférieure pour le nombre de vérificateurs honnêtes dans une étape s > 1 du tour r, telle que avec Avec une probabilité écrasante (étant donné n et p), il y a > 100 vérificateurs honnêtes dans SV r,s. Paramètres • Relations entre divers paramètres. — Pour chaque étape s > 1 du tour r, n est choisi de telle sorte que, avec une écrasante probabilité,
|HSVr,s| > e et |HSVr,s| + 2|MSVr,s| < 2ème. Notez que les deux inégalités ci-dessus impliquent ensemble |HSV r,s| > 2|MSV r,s| : c'est-à-dire qu'il y a Il existe une majorité honnête des 2/3 parmi les vérificateurs sélectionnés. Plus la valeur de h est proche de 1, plus n doit être petit. En particulier, nous utilisons (variantes de) Tchernofflimite pour garantir que les conditions souhaitées soient maintenues avec une écrasante probabilité. • Exemples de choix de paramètres importants. — F = 10−18. — n \(\approx\)4000, tH \(\approx\)0,69n, k = 70. 6.2 Implémentation de clés éphémères dans Algorand ′ 2 Rappelons qu'un vérificateur i \(\in\)SV r,s signe numériquement son message mr,s je de l'étape s du tour r, par rapport à une clé publique éphémère pkr,s i , en utilisant une clé secrète éphémère skr,s je qu'il détruit promptement après utilisation. Lorsque le nombre d'étapes possibles qu'un tour peut effectuer est plafonné par un entier \(\mu\), nous avons déjà vu comment gérer pratiquement les clés éphémères. Par exemple, comme nous ont expliqué dans Algorand ′ 1 (où \(\mu\) = m + 3), pour gérer toutes ses clés éphémères possibles, de d'un tour r' à un tour r' + 106, i génère une paire (PMK, SMK), où PMK public master clé d'un schéma de signature basé sur l'identité, et SMK sa clé principale secrète correspondante. Utilisateur je fait connaître PMK et utilise SMK pour générer la clé secrète de chaque clé publique éphémère possible (et détruit SMK après l'avoir fait). L’ensemble des clés publiques éphémères de i pour le les tours sont S = {i} \(\times\) {r′, . . . , r′ + 106} \(\times\) {1, . . . ,\(\mu\)}. (Comme discuté, à mesure que le tour r′ + 106 approche, je « rafraîchis » sa paire (PMK, SMK).) En pratique, si \(\mu\) est suffisamment grand, un tour de Algorand ′ 2 ne prendra pas plus de \(\mu\) pas. Dans Cependant, il existe une faible possibilité que, pour certains tours, le nombre d'étapes effectivement prélevé dépassera \(\mu\). Lorsque cela se produira, je serais incapable de signer son message mr,s je pour toute étape s > \(\mu\), car il n'a préparé à l'avance que \(\mu\) clés secrètes pour le tour r. De plus, il ne pouvait pas préparer et publier une nouvelle réserve de clés éphémères, comme indiqué précédemment. En fait, faire il lui faudrait donc insérer une nouvelle clé principale publique PMK′ dans un nouveau bloc. Mais il faudrait arrondir r faites de plus en plus de pas, aucun nouveau bloc ne sera généré. Pourtant, des solutions existent. Par exemple, je peux utiliser la dernière clé éphémère du tour r, pkr,\(\mu\) je , comme suit. Il génère une autre réserve de paires de clés pour le tour r — par exemple, en (1) générant une autre paire de clés principales (PMK, SMK) ; (2) utiliser cette paire pour générer, disons, 106 autres clés éphémères, sk r,\(\mu\)+1 je , . . . , sk r,μ+106 je , correspondant aux étapes \(\mu\)+1, ..., \(\mu\)+106 du tour r ; (3) en utilisant skr,\(\mu\) je au numérique signe PMK (et tout message (r, \(\mu\)) si i \(\in\)SV r,\(\mu\)), par rapport à pkr,\(\mu\) je ; et (4) effacer SMK et skr,\(\mu\) je . Dois-je devenir vérificateur dans une étape \(\mu\) + s avec s \(\in\){1, . . . , 106}, alors je signe numériquement son (r, \(\mu\) + s)- message mr,\(\mu\)+s je par rapport à sa nouvelle clé pk r,\(\mu\)+s je = (je, r, \(\mu\) + s). Bien entendu, pour vérifier cette signature de i, d’autres doivent être certains que cette clé publique correspond à la nouvelle clé principale publique PMK de i. Ainsi, en plus de cette signature, i transmet sa signature numérique de PMK relative à pkr,\(\mu\) je . Bien entendu, cette approche peut être répétée autant de fois que nécessaire, si le cycle continue. pour toujours plus d'étapes ! La dernière clé secrète éphémère est utilisée pour authentifier un nouveau maître public clé, et donc une autre réserve de clés éphémères pour le tour r. Et ainsi de suite.6.3 Le protocole actuel Algorand ′ 2 Rappelons à nouveau qu'à chaque étape s d'un tour r, un vérificateur i \(\in\)SV r,s utilise son secret public à long terme paire de clés pour produire son identifiant, \(\sigma\)r,s je \(\triangleq\)SIGi(r, s, Qr−1), ainsi que SIGi Qr−1 dans le cas s = 1. Vérifier que j'utilise sa bi-clé éphémère, (pkr,s je, skr,s i ), pour signer tout autre message m qui pourrait être requis. Pour plus de simplicité, nous écrivons esigi(m), plutôt que sigpkr,s je (m), pour désigner i est proprement éphémère signature de m dans cette étape, et écrivez ESIGi(m) au lieu de SIGpkr,s je (m) \(\triangleq\)(je, m, esigi(m)). Étape 1 : Bloquer la proposition Instructions pour chaque utilisateur i \(\in\)PKr−k : L'utilisateur i démarre sa propre étape 1 du tour r dès qu'il a CERT r−1, qui permet de calculer sans ambiguïté H(Br−1) et Qr−1. • L'utilisateur i utilise Qr−1 pour vérifier si i \(\in\)SV r,1 ou non. Si i /\(\in\)SV r,1, il ne fait rien pour l’étape 1. • Si i \(\in\)SV r,1, c'est-à-dire si i est un leader potentiel, alors il fait ce qui suit. (a) Si j'ai vu B0, . . . , Br−1 lui-même (tout Bj = Bj ǫ peut être facilement dérivé de sa valeur hash dans CERT j et est donc supposé « vu »), puis il collecte les paiements ronds qui ont lui a été propagé jusqu'à présent et calcule un ensemble de paie maximal PAY r je d'eux. (b) Si je n’ai pas vu tous les B0, . . . , Br−1 encore, puis il fixe PAY r je = \(\emptyset\). (c) Ensuite, i calcule son « bloc candidat » Br je = (r, PAYER r je , SIGi(Qr−1), H(Br−1)). (c) Finalement, i calcule le message mr,1 je = (Br je , esigi(H(Br je )), \(\sigma\)r,1 i ), détruit son éphémère clé secrète skr,1 i , puis propage deux messages, mr,1 je et (SIGi(Qr−1), \(\sigma\)r,1 je ), séparément mais simultanément.a aQuand i est le leader, SIGi(Qr−1) permet aux autres de calculer Qr = H(SIGi(Qr−1), r).
Propagation sélective Pour raccourcir l'exécution globale de l'étape 1 et de l'ensemble du tour, il est important que le (r, 1)- les messages sont propagés de manière sélective. Autrement dit, pour chaque utilisateur j du système, • Pour le premier message (r, 1) qu'il reçoit et vérifie avec succès, s'il contient un bloc ou n'est qu'un identifiant et une signature de Qr−1, le joueur j le propage comme d'habitude. • Pour tous les autres (r, 1)-messages que le joueur j reçoit et vérifie avec succès, il propage uniquement si la valeur hash de l'identifiant qu'il contient est la plus petite parmi les valeurs hash des informations d'identification contenues dans tous les messages (r, 1) qu'il a reçus et vérifiés avec succès ainsi loin. • Cependant, si j reçoit deux messages différents de la forme mr,1 je du même joueur je,b il supprime le second, quelle que soit la valeur hash des informations d'identification de i. Notez que, dans le cadre d'une propagation sélective, il est utile que chaque leader potentiel i propage son identifiant \(\sigma\)r,1 je séparément de monsieur,1 i :c ces petits messages voyagent plus vite que les blocs, assurez-vous propagation rapide du mr,1 i est l'endroit où les informations d'identification contenues ont de petites valeurs hash, tandis que faire disparaître rapidement ceux avec de grandes valeurs hash. aC'est-à-dire que toutes les signatures sont correctes et, si elle est de la forme mr,1 i , le bloc et son hash sont valides — bien que j ne vérifie pas si le ensemble de paie inclus est maximal pour i ou non. bCe qui signifie que je suis malveillant. cNous remercions Georgios Vlachos pour cette suggestion.Étape 2 : La première étape du protocole de consensus gradué GC Instructions pour chaque utilisateur i \(\in\)PKr−k : L'utilisateur i démarre sa propre étape 2 du tour r dès qu'il a CERT r−1. • L'utilisateur i attend un temps maximum t2 \(\triangleq\) \(\lambda\) + Λ. En attendant, j'agis comme suit. 1. Après avoir attendu le temps 2\(\lambda\), il trouve l’utilisateur \(\ell\)tel que H(\(\sigma\)r,1 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) pour tous informations d'identification \(\sigma\)r,1 j qui font partie des messages (r, 1) vérifiés avec succès qu'il a reçus jusqu'à présent.a 2. Si il a reçu un bloquer Br−1, lequel matchs le hash valeur H(Br−1) contenu dans CERT r−1,b et s'il a reçu de \(\ell\)un message valide mr,1 \(\ell\) = (Fr \(\ell\), esig\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),c alors j'arrête d'attendre et définit v′ je \(\triangleq\)(H(Br \(\ell\)), \(\ell\)). 3. Sinon, lorsque le temps t2 est écoulé, je fixe v′ je \(\triangleq\) \(\bot\). 4. Lorsque la valeur de v′ i a été défini, je calcule Qr−1 à partir de CERT r−1 et vérifie si i \(\in\)SV r,2 ou non. 5. Si i \(\in\)SV r,2, i calcule le message mr,2 je \(\triangleq\)(ESIGi(v′ je), \(\sigma\)r,2 i ),d détruit son éphémère clé secrète skr,2 i , puis propage mr,2 je. Sinon, j'arrête sans propager n'importe quoi. aEssentiellement, l'utilisateur i décide en privé que le leader du tour r est l'utilisateur \(\ell\). bBien sûr, si CERT r−1 indique que Br−1 = Br−1 ǫ , alors j’ai déjà « reçu » Br−1 au moment où il a CERT r−1. cEncore une fois, les signatures du joueur \(\ell\) et les hashes sont tous vérifiés avec succès, et PAY r \(\ell\)en Br \(\ell\)est un ensemble de paie valide pour round r — bien que je ne vérifie pas si PAY r \(\ell\)est maximal pour \(\ell\)ou non. Si Br \(\ell\)contient un ensemble de paie vide, alors il n’est en fait pas nécessaire que je voie Br−1 avant de vérifier si Br \(\ell\)est valide ou non. dLe message monsieur,2 je signale que le joueur i considère la première composante de v′ je suis le hash du bloc suivant, ou considère que le bloc suivant est vide.
Étape 3 : la deuxième étape du GC Instructions pour chaque utilisateur i \(\in\)PKr−k : L'utilisateur i démarre sa propre étape 3 du tour r dès qu'il a CERT r−1. • L'utilisateur i attend un temps maximum t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ. En attendant, j'agis comme suit. 1. S'il existe une valeur v telle qu'il a reçu au moins les messages valides mr,2 j de la forme (ESIGj(v), \(\sigma\)r,2 j ), sans aucune contradiction,a puis il arrête d'attendre et pose v′ = v. 2. Sinon, lorsque le temps t3 est écoulé, il pose v′ = \(\bot\). 3. Lorsque la valeur de v′ a été définie, je calcule Qr−1 à partir de CERT r−1 et vérifie si i \(\in\)SV r,3 ou non. 4. Si i \(\in\)SV r,3, alors i calcule le message mr,3 je \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 je ), détruit son clé secrète éphémère skr,3 i , puis propage mr,3 je. Sinon, j'arrête sans propager quoi que ce soit. aC'est-à-dire qu'il n'a pas reçu deux messages valides contenant respectivement ESIGj(v) et un ESIGj(ˆv) différent, d'un joueur j. Ici et à partir de là, sauf dans les Conditions de Fin définies plus loin, chaque fois qu'un joueur honnête veut des messages d'une forme donnée, les messages se contredisant ne sont jamais comptés ni considérés comme valides.
Étape 4 : Résultat de GC et première étape de BBA⋆ Instructions pour chaque utilisateur i \(\in\)PKr−k : L'utilisateur i démarre sa propre étape 4 du tour r dès qu'il termine sa propre étape 3. • L'utilisateur i attend un temps maximum 2\(\lambda\).a Pendant l'attente, i agit comme suit. 1. Il calcule vi et gi, la sortie de GC, comme suit. (a) S'il existe une valeur v′ ̸= \(\bot\)telle qu'il a reçu au moins les messages valides monsieur,3 j = (ESIGj(v′), \(\sigma\)r,3 j ), puis il arrête d'attendre et pose vi \(\triangleq\)v′ et gi \(\triangleq\)2. (b) S'il a reçu au moins les messages valides mr,3 j = (ESIGj(\(\bot\)), \(\sigma\)r,3 j ), puis il s'arrête attend et définit vi \(\triangleq\) \(\bot\)et gi \(\triangleq\)0.b (c) Sinon, lorsque le temps 2\(\lambda\) s'écoule, s'il existe une valeur v′ ̸= \(\bot\) telle qu'il a reçu au moins ⌈tH 2 ⌉messages valides mr,j j = (ESIGj(v′), \(\sigma\)r,3 j ), alors il pose vi \(\triangleq\)v′ et gi \(\triangleq\)1.c (d) Sinon, lorsque le temps 2\(\lambda\) est écoulé, il définit vi \(\triangleq\) \(\bot\) et gi \(\triangleq\)0. 2. Lorsque les valeurs vi et gi ont été définies, i calcule bi, l'entrée de BBA⋆, comme suit : bi \(\triangleq\)0 si gi = 2, et bi \(\triangleq\)1 sinon. 3. i calcule Qr−1 à partir de CERT r−1 et vérifie si i \(\in\)SV r,4 ou non. 4. Si i \(\in\)SV r,4, il calcule le message mr,4 je \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 je ), détruit son clé secrète éphémère skr,4 je , et propage mr,4 je. Sinon, j'arrête sans propager n'importe quoi. aAinsi, le temps total maximum écoulé depuis que i commence son étape 1 du tour r pourrait être t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ. bQue l'étape (b) figure ou non dans le protocole n'affecte pas son exactitude. Cependant, la présence de l'étape (b) permet à l’étape 4 de se terminer en moins de 2 \(\lambda\) si suffisamment de vérificateurs de l’étape 3 ont « signé \(\bot\) ». cOn peut prouver que le v′ dans ce cas, s’il existe, doit être unique.Étape s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ≡0 mod 3 : Une étape fixée à 0 de BBA⋆ Instructions pour chaque utilisateur i \(\in\)PKr−k : L'utilisateur i démarre sa propre étape s du tour r dès qu'il termine sa propre étape s −1. • L'utilisateur i attend un temps maximum 2\(\lambda\).a Pendant l'attente, i agit comme suit. – Condition de fin 0 : Si à un moment donné il existe une chaîne v ̸= \(\bot\)et une étape s′ telle que (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 ≡0 mod 3 — c'est-à-dire que l'étape s′ est une étape Coin-Fixed-To-0, (b) j’ai reçu au moins les messages valides mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ),b et (c) j'ai reçu un message valide (SIGj(Qr−1), \(\sigma\)r,1 j ) avec j étant le deuxième composante de v, puis, j'arrête d'attendre et termine sa propre exécution du Step s (et en fait du tour r) tout de suite sans rien propager en tant que vérificateur (r, s) ; définit H(Br) comme le premier composante de v ; et définit son propre CERT r comme étant l'ensemble des messages mr,s′−1 j de l'étape (b) avec (SIGj(Qr−1), \(\sigma\)r,1 j ).c – Condition de fin 1 : si à un moment donné il existe une étape s′ telle que (a') 6 \(\leq\)s′ \(\leq\)s, s′ −2 ≡1 mod 3 — c'est-à-dire que l'étape s′ est une étape Coin-Fixed-To-1, et (b’) j’ai reçu au moins les messages valides mr,s′−1 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),d puis, j'arrête d'attendre et termine sa propre exécution du Step s (et en fait du tour r) à droite sans propager quoi que ce soit en tant que vérificateur (r, s) ; ensembles Br = Br ǫ ; et définit le sien CERT r est l'ensemble des messages mr,s′−1 j de la sous-étape (b’). – Si à n'importe quel pointe il a reçu à le moins e valide monsieur,s−1 j c'est de le formulaire (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), puis il arrête d'attendre et fixe bi \(\triangleq\)1. – Si à n'importe quel pointe il a reçu à le moins e valide monsieur,s−1 j c'est de le formulaire (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), mais ils ne sont pas d'accord sur le même v, alors il s'arrête en attente et définit bi \(\triangleq\)0. – Sinon, lorsque le temps 2\(\lambda\) est écoulé, i définit bi \(\triangleq\)0. – Lorsque la valeur bi a été définie, i calcule Qr−1 à partir de CERT r−1 et vérifie si je \(\in\)SV r,s. – Si i \(\in\)SV r,s, i calcule le message mr,s je \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ) avec vi étant la valeur qu'il a calculée à l'étape 4, détruit sa clé secrète éphémère skr,s moi, et puis se propage mr, s je. Sinon, je m'arrête sans rien propager. aAinsi, le temps total maximum depuis que i commence son étape 1 du tour r pourrait être ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ. bUn tel message du joueur j est compté même si le joueur i a également reçu un message de j signant pour 1. Des choses similaires pour la condition finale 1. Comme le montre l'analyse, il s'agit de garantir que tous les utilisateurs honnêtes savent CERT r dans le temps \(\lambda\) les uns des autres. cUser i connaît maintenant H(Br) et son propre tour r se termine. Il lui suffit d'attendre que le bloc Br soit réellement lui est propagé, ce qui peut prendre un certain temps supplémentaire. Il aide toujours à propager des messages en tant qu'utilisateur générique, mais n'initie aucune propagation en tant que vérificateur (r, s). Il a notamment contribué à propager tous les messages dans son CERT r, ce qui est suffisant pour notre protocole. Notez qu'il doit également définir bi \(\triangleq\)0 pour le protocole binaire BA, mais bi n'est de toute façon pas nécessaire dans ce cas. Des choses similaires pour toutes les instructions futures. dDans ce cas, peu importe les vj. 65Étape s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ≡1 mod 3 : Une étape Coin-Fixed-To-1 de BBA⋆ Instructions pour chaque utilisateur i \(\in\)PKr−k : L'utilisateur i démarre sa propre étape s du tour r dès qu'il termine sa propre étape s −1. • L'utilisateur i attend un temps maximum 2\(\lambda\). En attendant, j'agis comme suit. – Condition de fin 0 : les mêmes instructions que dans une étape Coin-Fixed-To-0. – Condition de fin 1 : les mêmes instructions que dans une étape Coin-Fixed-To-0. – Si à n'importe quel pointe il a reçu à le moins e valide monsieur,s−1 j c'est de le formulaire (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), puis il arrête d'attendre et fixe bi \(\triangleq\)0.a – Sinon, lorsque le temps 2\(\lambda\) est écoulé, i définit bi \(\triangleq\)1. – Lorsque la valeur bi a été définie, i calcule Qr−1 à partir de CERT r−1 et vérifie si je \(\in\)SV r,s. – Si i \(\in\)SV r,s, i calcule le message mr,s je \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ) avec vi étant la valeur qu'il a calculée à l'étape 4, détruit sa clé secrète éphémère skr,s moi, et puis se propage mr, s je. Sinon, je m'arrête sans rien propager. aNotez que recevoir des messages (r, s −1) valides signant pour 1 signifierait la condition de fin 1. Étape s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ≡2 mod 3 : Une étape véritablement inversée de BBA⋆ Instructions pour chaque utilisateur i \(\in\)PKr−k : L'utilisateur i démarre sa propre étape s du tour r dès qu'il termine son propre pas s −1. • L'utilisateur i attend un temps maximum 2\(\lambda\). En attendant, j'agis comme suit. – Condition de fin 0 : les mêmes instructions que dans une étape Coin-Fixed-To-0. – Condition de fin 1 : les mêmes instructions que dans une étape Coin-Fixed-To-0. – Si à n'importe quel pointe il a reçu à le moins e valide monsieur,s−1 j c'est de le formulaire (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), puis il arrête d'attendre et fixe bi \(\triangleq\)0. – Si à n'importe quel pointe il a reçu à le moins e valide monsieur,s−1 j c'est de le formulaire (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), puis il arrête d'attendre et fixe bi \(\triangleq\)1. – Sinon, lorsque le temps 2\(\lambda\) est écoulé, soit SV r,s−1 je être l’ensemble des (r, s −1)-vérificateurs de pour qui il a reçu un message valide mr,s−1 j , je définit bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 je H(\(\sigma\)r,s−1 j )). – Lorsque la valeur bi a été définie, i calcule Qr−1 à partir de CERT r−1 et vérifie si je \(\in\)SV r,s. – Si i \(\in\)SV r,s, i calcule le message mr,s je \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ) avec vi étant la valeur qu'il a calculée à l'étape 4, détruit sa clé secrète éphémère skr,s moi, et puis se propage mr, s je. Sinon, je m'arrête sans rien propager. Remarque. En principe, comme indiqué à la sous-section 6.2, le protocole peut prendre arbitrairement plusieurs étapes dans un tour. Si cela se produit, comme indiqué, un utilisateur i \(\in\)SV r,s avec s > \(\mu\) a épuisé
sa réserve de clés éphémères pré-générées et doit authentifier son message (r, s) mr,s je par un « cascade » de clés éphémères. Ainsi, le message de mon message devient un peu plus long et sa transmission est plus longue. les messages prendront un peu plus de temps. En conséquence, après tant d'étapes d'un tour donné, la valeur de le paramètre \(\lambda\) augmentera automatiquement légèrement. (Mais il revient au \(\lambda\) original une fois un nouveau un bloc est produit et un nouveau tour commence.) Reconstruction du bloc Round-r par des non-vérificateurs Instructions pour chaque utilisateur i dans le système : L'utilisateur i démarre son propre tour r dès qu'il a CERT r−1. • je suis les instructions de chaque étape du protocole, participe à la propagation de tous messages, mais n'initie aucune propagation dans une étape s'il n'y est pas vérificateur. • i termine son propre tour r en entrant soit la condition de fin 0, soit la condition de fin 1 dans certains étape, avec le CERT r correspondant. • A partir de là, il commence son tour r + 1 en attendant de recevoir le bloc Br proprement dit (sauf si il l'a déjà reçu), dont hash H(Br) a été épinglé par le CERT r. Encore une fois, si CERT r indique que Br = Br ǫ, le je connaît Br dès qu'il a le CERT r. 6.4 Analyse de Algorand′ 2 L’analyse de Algorand′ 2 se déduit facilement de celui de Algorand′ 1. Essentiellement, en Algorand ′ 2, avec probabilité écrasante, (a) tous les utilisateurs honnêtes sont d’accord sur le même bloc Br ; le leader d'un nouveau le bloc est honnête avec une probabilité d'au moins ph = h2(1 + h −h2).
Xử lý người dùng trung thực ngoại tuyến
Như chúng tôi đã nói, một người dùng trung thực tuân theo tất cả các hướng dẫn được quy định của mình, bao gồm cả việc trực tuyến. và chạy giao thức. Đây không phải là gánh nặng lớn trong Algorand, vì việc tính toán và băng thông yêu cầu từ một người dùng trung thực là khá khiêm tốn. Tuy nhiên, chúng ta hãy chỉ ra rằng Algorand có thể có thể dễ dàng sửa đổi để hoạt động theo hai mô hình, trong đó người dùng trung thực được phép ngoại tuyến những con số tuyệt vời. Trước khi thảo luận về hai mô hình này, chúng ta hãy chỉ ra rằng, nếu tỷ lệ người chơi trung thực là 95%, Algorand vẫn có thể chạy khi thiết lập tất cả các tham số giả sử thay vào đó h = 80%. Theo đó, Algorand sẽ tiếp tục hoạt động bình thường ngay cả khi có nhiều nhất một nửa số người chơi trung thực đã chọn ngoại tuyến (thực sự là một trường hợp chính của “vắng mặt”). Trên thực tế, tại bất kỳ thời điểm nào, ít nhất 80% người chơi trực tuyến sẽ trung thực. Từ sự tham gia liên tục đến sự trung thực lười biếng Như chúng ta đã thấy, Algorand ′ 1 và Algorand ′ 2 chọn tham số nhìn lại k. Bây giờ chúng ta hãy chỉ ra rằng việc chọn k lớn đúng cách sẽ cho phép loại bỏ yêu cầu tham gia liên tục. Yêu cầu này đảm bảo một tính chất quan trọng: cụ thể là, rằng giao thức BA cơ bản BBA⋆ có đa số trung thực phù hợp. Bây giờ chúng ta hãy giải thích lười biếng như thế nào sự trung thực cung cấp một cách thay thế và hấp dẫn để đáp ứng đặc tính này.
Hãy nhớ lại rằng người dùng i lười biếng nhưng trung thực nếu (1) anh ta làm theo tất cả các hướng dẫn được chỉ định của mình, khi anh ta được yêu cầu tham gia vào giao thức và (2) anh ta chỉ được yêu cầu tham gia vào giao thức rất hiếm khi—ví dụ, mỗi tuần một lần—với thông báo trước phù hợp và có khả năng nhận được lợi ích đáng kể phần thưởng khi tham gia. Để cho phép Algorand làm việc với những người chơi như vậy, chỉ cần “chọn người xác minh của vòng hiện tại giữa những người dùng đã có trong hệ thống ở vòng trước đó nhiều.” Quả thực, hãy nhớ lại rằng những người xác minh cho vòng r được chọn từ những người dùng trong vòng r −k và các lựa chọn được thực hiện dựa trên về đại lượng Qr-1. Lưu ý rằng một tuần bao gồm khoảng 10.000 phút và giả sử rằng một một vòng mất khoảng (ví dụ: trung bình) 5 phút, vì vậy một tuần có khoảng 2.000 vòng. Giả sử rằng, tại một thời điểm nào đó, người dùng tôi muốn lập kế hoạch cho thời gian của mình và biết liệu anh ta có định làm như vậy không một người xác minh trong tuần tới. Giao thức hiện chọn người xác minh cho vòng r từ người dùng trong làm tròn r −k −2.000 và các lựa chọn dựa trên Qr−2.001. Ở vòng r, người chơi tôi đã biết các giá trị Qr−2.000, . . . , Qr−1, vì chúng thực sự là một phần của blockchain. Khi đó, với mỗi M trong khoảng từ 1 đến 2.000, i là người xác minh ở bước s của vòng r + M khi và chỉ khi .H SIGi r + M, s, Qr+M−2,001 \(\leq\)p . Vì vậy, để kiểm tra xem liệu anh ta có được gọi làm người xác minh trong 2.000 vòng tiếp theo hay không, tôi phải tính \(\sigma\)M,s tôi = SIGi r + M, s, Qr+M−2,001 với M = 1 đến 2.000 và với mỗi bước s, đồng thời kiểm tra cho dù .H(\(\sigma\)M,s tôi ) \(\leq\)p đối với một số trong số chúng. Nếu việc tính toán chữ ký số mất một phần nghìn giây thì toàn bộ thao tác này sẽ khiến anh ta mất khoảng 1 phút tính toán. Nếu anh ta không được chọn làm người xác minh trong bất kỳ vòng nào trong số này, thì anh ta có thể ngoại tuyến với “lương tâm lương thiện”. Liệu anh ấy có liên tục đã tham gia, dù sao thì về cơ bản anh ấy cũng đã tiến được 0 bước trong 2.000 vòng tiếp theo! Nếu thay vào đó, anh ta được chọn làm người xác minh ở một trong những vòng này, sau đó anh ta chuẩn bị sẵn sàng (ví dụ: bằng cách thu thập tất cả thông tin cần thiết) để đóng vai trò là người xác minh trung thực ở vòng thích hợp. Bằng cách hành động như vậy, một người xác minh tiềm năng lười biếng nhưng trung thực chỉ bỏ lỡ việc tham gia tuyên truyền của các tin nhắn. Nhưng việc truyền bá thông điệp thường mạnh mẽ. Hơn nữa, người trả tiền và người được trả tiền của các khoản thanh toán được truyền gần đây dự kiến sẽ trực tuyến để xem điều gì xảy ra với các khoản thanh toán của họ, và do đó họ sẽ tham gia truyền bá thông điệp nếu họ trung thực.
Gestion des utilisateurs honnêtes hors ligne
Comme nous l'avons dit, un utilisateur honnête suit toutes les instructions qui lui sont prescrites, parmi lesquelles celle d'être en ligne et exécuter le protocole. Ceci ne représente pas une charge majeure dans Algorand, puisque le calcul et la bande passante requise par un utilisateur honnête est assez modeste. Précisons cependant que Algorand peut être facilement modifié de manière à fonctionner dans deux modèles, dans lesquels les utilisateurs honnêtes sont autorisés à être déconnectés dans de grands nombres. Avant d'évoquer ces deux modèles, précisons que, si le pourcentage de joueurs honnêtes étaient de 95 %, Algorand pouvait toujours être exécuté en définissant tous les paramètres en supposant à la place que h = 80 %. En conséquence, Algorand continuerait à fonctionner correctement même si au plus la moitié des joueurs honnêtes choisi de se déconnecter (en effet, un cas majeur d'« absentéisme »). En fait, à tout moment, au moins 80% des joueurs en ligne seraient honnêtes. De la participation continue à l’honnêteté paresseuse Comme nous l'avons vu, Algorand ′ 1 et Algorand′ 2 choisir le paramètre de rétrospection k. Montrons maintenant que choisir k proprement grand permet de supprimer l’exigence de participation continue. Cette exigence garantit une propriété cruciale : à savoir, que le protocole BA sous-jacent BBA⋆a une majorité honnête et appropriée. Expliquons maintenant à quel point l'honnêteté offre une manière alternative et attrayante de satisfaire cette propriété.
Rappelons qu'un utilisateur i est paresseux mais honnête si (1) il suit toutes les instructions qui lui sont prescrites, lorsque il lui est demandé de participer au protocole, et (2) il lui est demandé de participer au protocole uniquement très rarement — par exemple, une fois par semaine — avec un préavis approprié et potentiellement recevoir des récompenses lorsqu'il participe. Pour permettre à Algorand de travailler avec de tels acteurs, il suffit de « choisir les vérificateurs des cycle en cours parmi les utilisateurs déjà présents dans le système lors d’un cycle beaucoup plus ancien. Rappelons en effet que les vérificateurs pour un tour r sont choisis parmi les utilisateurs du tour r −k, et les sélections sont faites en fonction sur la quantité Qr−1. Notez qu'une semaine compte environ 10 000 minutes et supposons qu'un le tour prend environ (par exemple, en moyenne) 5 minutes, donc une semaine compte environ 2 000 tours. Supposons qu'à un moment donné, un utilisateur i souhaite planifier son temps et savoir s'il va être un vérificateur dans la semaine à venir. Le protocole choisit désormais les vérificateurs pour un tour r parmi les utilisateurs de autour de r −k −2 000, et les sélections sont basées sur Qr−2 001. Au tour r, joueur que je connais déjà les valeurs Qr−2 000, . . . , Qr−1, puisqu’ils font en réalité partie des blockchain. Alors, pour chaque M entre 1 et 2 000, i est vérificateur dans une étape s du tour r + M si et seulement si .H SIGI r + M, s, Qr+M−2,001 \(\leq\)p. Ainsi, pour vérifier s'il va être appelé à agir comme vérificateur lors des 2 000 prochains tours, je dois calculer \(\sigma\)M,s je = SIGi r + M, s, Qr+M−2,001 pour M = 1 à 2 000 et pour chaque pas s, et vérifier si .H(\(\sigma\)M,s je ) \(\leq\)p pour certains d'entre eux. Si le calcul d'une signature numérique prend une milliseconde, alors toute cette opération lui prendra environ 1 minute de calcul. S'il n'est pas sélectionné comme vérificateur dans n’importe lequel de ces tours, il peut alors se déconnecter avec une « conscience honnête ». Avait-il continuellement participé, il aurait de toute façon fait essentiellement 0 pas dans les 2 000 tours suivants ! Si, au contraire, il est sélectionné pour être vérificateur lors d'un de ces tours, puis il se prépare (par exemple, en obtenant tous les informations nécessaires) pour agir en tant que vérificateur honnête au moment approprié. En agissant ainsi, un vérificateur de potentiel paresseux mais honnête ne manque que de participer à la propagation de messages. Mais la propagation des messages est généralement robuste. De plus, les payeurs et les bénéficiaires de les paiements récemment propagés devraient être en ligne pour surveiller ce qu'il advient de leurs paiements, et ainsi ils participeront à la propagation du message, s'ils sont honnêtes.
Giao thức Algorand ′ với số tiền trung thực
Bây giờ, cuối cùng, chúng tôi trình bày cách thay thế giả định Đa số người dùng trung thực bằng nhiều hơn nữa. giả định Phần lớn tiền trung thực có ý nghĩa. Ý tưởng cơ bản là (theo hương vị proof-of-stake) “để chọn một người dùng i \(\in\)PKr−k thuộc về SV r,s với trọng số (tức là quyền quyết định) tỷ lệ với số tiền mà tôi sở hữu.”24 Theo giả định HMM của chúng tôi, chúng tôi có thể chọn xem số tiền đó có nên được sở hữu ở vòng r −k hay không hoặc tại (bắt đầu) vòng r. Giả sử rằng chúng tôi không bận tâm đến việc tham gia liên tục, chúng tôi lựa chọn sự lựa chọn sau này. (Để loại bỏ sự tham gia liên tục, chúng tôi đã chọn lựa chọn trước đây. Nói đúng hơn là với số tiền sở hữu ở vòng r −k −2.000.) Có nhiều cách để thực hiện ý tưởng này. Cách đơn giản nhất là giữ từng phím nhiều nhất là 1 đơn vị tiền và sau đó chọn ngẫu nhiên n người dùng i từ PKr−k sao cho a(r) tôi = 1. 24Chúng ta nên nói PKr−k−2.000 để thay thế việc tham gia liên tục. Để đơn giản, vì người ta có thể muốn yêu cầu dù sao đi nữa, chúng tôi vẫn sử dụng PKr−k để mang ít tham số hơn.
Cách thực hiện đơn giản nhất tiếp theo Việc triển khai đơn giản nhất tiếp theo có thể là yêu cầu mỗi khóa công khai sở hữu số lượng tối đa của tiền M, đối với một số M cố định. Giá trị M đủ nhỏ so với tổng số tiền tiền trong hệ thống, sao cho xác suất một khóa thuộc về bộ xác minh gồm nhiều hơn một bước vào —nói— k vòng là không đáng kể. Khi đó, khóa i \(\in\)PKr−k, sở hữu số tiền a(r) tôi ở vòng r, được chọn thuộc SV r,s nếu .H SIGi r, s, Qr−1 \(\leq\)p \(\cdot\) a(r) tôi M . Và tất cả tiến hành như trước đây. Triển khai phức tạp hơn Việc thực hiện cuối cùng “buộc một người giàu có tham gia hệ thống phải sở hữu nhiều chìa khóa”. Một cách triển khai thay thế, được mô tả dưới đây, khái quát hóa khái niệm trạng thái và xem xét mỗi người dùng i bao gồm K + 1 bản sao (i, v), mỗi bản được chọn độc lập để làm người xác minh, và sẽ sở hữu chìa khóa phù du của riêng mình (pkr,s tôi,v,skr,s i,v) trong bước s của vòng r. Giá trị K phụ thuộc về số tiền a(r) tôi thuộc sở hữu của tôi ở vòng r. Bây giờ chúng ta hãy xem một hệ thống như vậy hoạt động chi tiết hơn như thế nào. Số lượng bản sao Đặt n là số lượng phần tử dự kiến mục tiêu của mỗi bộ xác minh và đặt a(r) tôi là số tiền thuộc sở hữu của người dùng i ở vòng r. Gọi Ar là tổng số tiền sở hữu bởi người dùng trong PKr−k ở vòng r, nghĩa là, Ar = X i\(\in\)P Kr−k một(r) tôi . Nếu tôi là người dùng trong PKr−k thì các bản sao của tôi là (i, 1), . . . , (i, K + 1), ở đâu K = $ n \(\cdot\) một(r) tôi Ar % . Ví dụ. Đặt n = 1.000, Ar = 109 và a(r) tôi = 3,7 triệu. Sau đó, K = 103 \(\cdot\) (3,7 \(\cdot\) 106) 109 = ⌊3.7⌋= 3 . Người xác minh và thông tin xác thực Hãy để tôi là người dùng trong PKr−k với K + 1 bản sao. Với mỗi v = 1, . . . , K, copy (i, v) tự động thuộc SV r,s. Nghĩa là, thông tin xác thực của tôi là \(\sigma\)r,s i,v \(\triangleq\)SIGi((i, v), r, s, Qr−1), nhưng điều kiện tương ứng trở thành .H(\(\sigma\)r,s i,v) 1, tức là luôn đúng. Đối với bản sao (i, K + 1), với mỗi Bước s của vòng r, tôi kiểm tra xem .H SIGi (i, K + 1), r, s, Qr−1 \(\leq\)a(r) tôi n Ar −K .
Nếu vậy thì bản sao (i, K+1) thuộc SV r,s. Để chứng minh điều đó, tôi tuyên truyền bằng chứng xác thực \(\sigma\)r,1 i,K+1 = SIGi (i, K + 1), r, s, Qr−1 . Ví dụ. Như trong ví dụ trước, cho n = 1K, a(r) tôi = 3,7M, Ar = 1B, và tôi có 4 bản sao: (i, 1), . . . , (tôi, 4). Sau đó, 3 bản sao đầu tiên sẽ tự động thuộc về SV r,s. Đối với cái thứ 4, về mặt khái niệm, Algorand ′ tung một đồng xu thiên vị một cách độc lập, có xác suất xuất hiện Mặt ngửa là 0,7. Sao chép (i, 4) được chọn khi và chỉ nếu lần tung đồng xu là Ngửa. (Tất nhiên, việc lật xu thiên vị này được thực hiện bằng cách hashing, ký tên và so sánh —như chúng ta đã làm suốt bài viết này—để giúp tôi chứng minh kết quả của mình.) Kinh doanh như bình thường Đã giải thích cách chọn người xác minh và thông tin xác thực của họ như thế nào được tính toán ở mỗi bước của vòng r, việc thực hiện vòng này tương tự như đã được giải thích.
Protocole Algorand ′ avec une majorité honnête d'argent
Nous montrons maintenant, enfin, comment remplacer l'hypothèse de la majorité honnête des utilisateurs par l'hypothèse beaucoup plus hypothèse significative de majorité honnête de l’argent. L'idée de base est (dans une saveur proof-of-stake) « pour sélectionner un utilisateur i \(\in\)PKr−k pour appartenir à SV r,s avec un poids (c'est-à-dire un pouvoir de décision) proportionnel à le montant d’argent que je possède. »24 D’après notre hypothèse HMM, nous pouvons choisir si ce montant doit être détenu au tour r −k ou au (début du) tour r. En supposant que cela ne nous dérange pas une participation continue, nous optons pour ce dernier choix. (Pour supprimer la participation continue, nous aurions opté pour le premier choix. Mieux dit, pour le montant d'argent possédé au tour r −k −2 000.) Il existe de nombreuses façons de mettre en œuvre cette idée. Le moyen le plus simple serait de maintenir chaque touche enfoncée au plus 1 unité de monnaie puis sélectionner au hasard n utilisateurs i parmi PKr−k tel que a(r) je = 1. 24Il faudrait dire PKr−k−2 000 pour remplacer une participation continue. Par souci de simplicité, puisqu'on peut souhaiter exiger participation continue de toute façon, on utilise PKr−k comme avant, de manière à porter un paramètre de moins.
La prochaine mise en œuvre la plus simple La prochaine mise en œuvre la plus simple pourrait consister à exiger que chaque clé publique possède un montant maximum d'argent M, pour certains M fixes. La valeur M est suffisamment petite par rapport au montant total de de l'argent dans le système, de telle sorte que la probabilité qu'une clé appartienne à l'ensemble de vérificateurs de plus d'un intervenir dans — disons — k tours est négligeable. Alors, une clé i \(\in\)PKr−k, possédant une somme d’argent a(r) je au tour r, est choisi pour appartenir à SV r,s si .H SIGI r, s, Qr−1 \(\leq\)p \(\cdot\) a(r) je M . Et tout se passe comme avant. Une mise en œuvre plus complexe La dernière implémentation « a forcé un riche participant au système à posséder de nombreuses clés ». Une implémentation alternative, décrite ci-dessous, généralise la notion de statut et considère chaque utilisateur i doit être constitué de K + 1 copies (i, v), dont chacune est sélectionnée indépendamment pour être un vérificateur, et possédera sa propre clé éphémère (pkr,s je,v,skr,s i,v) dans une étape s d'un tour r. La valeur K dépend sur le montant d'argent a(r) je appartenant à moi au tour r. Voyons maintenant plus en détail comment fonctionne un tel système. Nombre d'exemplaires Soit n la cardinalité attendue ciblée de chaque ensemble de vérificateurs, et soit a(r) je être le montant d'argent détenu par un utilisateur i au tour r. Soit Ar le montant total d'argent possédé par les utilisateurs de PKr−k au tour r, c'est-à-dire Ar = X i\(\in\)P Kr−k un(r) je. Si i est un utilisateur dans PKr−k, alors les copies de i sont (i, 1), . . . , (i, K + 1), où K = $ n \(\cdot\) a(r) je Ar % . Exemple. Soit n = 1 000, Ar = 109 et a(r) je = 3,7 millions. Ensuite, K = 103 \(\cdot\) (3,7 \(\cdot\) 106) 109 = ⌊3,7⌋= 3 . Vérificateurs et informations d'identification Soit un utilisateur de PKr−k avec K + 1 copies. Pour chaque v = 1, . . . , K, copie (i, v) appartient automatiquement à SV r,s. Autrement dit, mes informations d'identification sont \(\sigma\)r,s i,v \(\triangleq\)SIGi((i, v), r, s, Qr−1), mais la condition correspondante devient .H(\(\sigma\)r,s i,v) \(\leq\)1, ce qui est toujours vrai. Pour la copie (i, K + 1), pour chaque étape s du tour r, je vérifie si .H SIGI (je, K + 1), r, s, Qr−1 \(\leq\)a(r) je n Ar−K.
Si tel est le cas, la copie (i, K + 1) appartient à SV r,s. Pour le prouver, je propage le badge \(\sigma\)r,1 je,K+1 = SIGi (je, K + 1), r, s, Qr−1 . Exemple. Comme dans l’exemple précédent, soit n = 1K, a(r) je = 3,7M, Ar = 1B et j'en ai 4 exemplaires : (i, 1), . . . , (i, 4). Ensuite, les 3 premières copies appartiennent automatiquement à SV r,s. Pour le 4ème, conceptuellement, Algorand ′ lance indépendamment une pièce biaisée, dont la probabilité de face est de 0,7. Copier (i, 4) est sélectionné si et seulement si le tirage au sort est face. (Bien sûr, ce tirage au sort biaisé est mis en œuvre en hashing, en signant et en comparant - comme nous le faisons). l'ai fait tout au long de cet article - afin de me permettre de prouver son résultat.) Affaires comme d'habitude Après avoir expliqué comment les vérificateurs sont sélectionnés et comment leurs informations d'identification sont calculé à chaque étape d'un tour r, l'exécution d'un tour est similaire à celle déjà expliquée.
Xử lý Fork
Đã giảm xác suất của các nhánh xuống 10−12 hoặc 10−18, thực tế không cần thiết phải xử lý chúng trong khả năng rất xa là chúng sẽ xảy ra. Tuy nhiên, Algorand cũng có thể sử dụng nhiều nhánh khác nhau thủ tục giải quyết, có hoặc không có bằng chứng về công việc. Một cách có thể hướng dẫn người dùng giải quyết các nhánh như sau: • Theo chuỗi dài nhất nếu người dùng nhìn thấy nhiều chuỗi. • Nếu có nhiều hơn một chuỗi dài nhất, hãy làm theo chuỗi có khối không trống ở cuối. Nếu tất cả chúng đều có các khối trống ở cuối, hãy xem xét các khối cuối cùng thứ hai của chúng. • Nếu có nhiều hơn một chuỗi dài nhất với các khối không trống ở cuối, giả sử các chuỗi đó là có độ dài r, theo sau khối có trưởng khối r có thông tin xác thực nhỏ nhất. Nếu có ràng buộc, làm theo khối có khối r có giá trị hash nhỏ nhất. Nếu vẫn còn mối quan hệ, hãy làm theo khối có khối r được sắp xếp theo thứ tự từ điển đầu tiên.
Gestion des forks
Ayant réduit la probabilité de fourchettes à 10−12 ou 10−18, il est pratiquement inutile de gérer au cas où ils se produiraient. Algorand, cependant, peut également utiliser divers fork procédures de résolution, avec ou sans justificatif de travail. Une manière possible de demander aux utilisateurs de résoudre les forks est la suivante : • Suivez la chaîne la plus longue si un utilisateur voit plusieurs chaînes. • S'il y a plusieurs chaînes les plus longues, suivez celle avec un bloc non vide à la fin. Si ils ont tous des blocs vides à la fin, considérez leurs avant-derniers blocs. • S'il y a plusieurs chaînes les plus longues avec des blocs non vides à la fin, disons que les chaînes sont de longueur r, suivez celui dont le chef du bloc r a le plus petit identifiant. S'il y a des liens, suivez celui dont le bloc r lui-même a la plus petite valeur hash. S'il y a encore des égalités, suivez les celui dont le bloc r est ordonné le premier lexicographiquement.
Xử lý phân vùng mạng
Như đã nói, chúng tôi giả sử thời gian truyền tin nhắn giữa tất cả người dùng trong mạng bị giới hạn bởi \(\lambda\) và Λ. Đây không phải là một giả định chắc chắn vì Internet ngày nay rất nhanh và mạnh mẽ, và giá trị thực tế của các tham số này là khá hợp lý. Ở đây, chúng ta hãy chỉ ra rằng Algorand ′ 2 tiếp tục hoạt động ngay cả khi Internet thỉnh thoảng bị phân chia thành hai phần. Trường hợp khi Internet được phân chia thành nhiều hơn hai phần là tương tự nhau. 10.1 Phân vùng vật lý Trước hết, việc phân vùng có thể do nguyên nhân vật lý. Ví dụ, một trận động đất lớn có thể cuối cùng đã phá vỡ hoàn toàn mối liên hệ giữa Châu Âu và Châu Mỹ. Trong trường hợp này, những người dùng độc hại cũng bị phân vùng và không có liên lạc giữa hai phần. Như vậy
sẽ có hai Đối thủ, một cho phần 1 và một cho phần 2. Mỗi Đối thủ vẫn cố gắng phá vỡ giao thức trong phần riêng của nó. Giả sử việc phân vùng xảy ra ở giữa vòng r. Sau đó mỗi người dùng vẫn được chọn là một trình xác minh dựa trên PKr-k, với cùng xác suất như trước. Đặt HSV r,s tôi và MSV r,s tôi tương ứng là tập hợp các trình xác minh trung thực và độc hại trong bước s của phần i \(\in\){1, 2}. Chúng tôi có |HSV r,s 1 | + |MSV r,s 1 | + |HSV r,s 2 | + |MSV r,s 2 | = |HSV r,s| + |MSV r,s|. Lưu ý rằng |HSV r,s| + |MSV r,s| < |HSV r,s| + 2|MSV r,s| < 2tH với xác suất áp đảo. Nếu phần nào đó tôi có |HSV r,s tôi | + |MSV r,s tôi | \(\geq\)tH với xác suất không thể bỏ qua, ví dụ 1% thì xác suất |HSV r,s 3−i| + |MSV r,s 3−i| \(\geq\)tH là rất thấp, ví dụ: 10−16 khi F = 10−18. Trong trường hợp này, chúng ta cũng có thể coi phần nhỏ hơn là ngoại tuyến, bởi vì sẽ không có đủ người xác minh trong phần này để tạo chữ ký tH để chứng nhận một khối. Chúng ta hãy xem xét phần lớn hơn, ví dụ phần 1 mà không mất tính tổng quát. Mặc dù |HSV r,s| < tH với xác suất không đáng kể ở mỗi bước s, khi mạng được phân vùng, |HSV r,s 1 | có thể nhỏ hơn tH với xác suất không thể bỏ qua. Trong trường hợp này, Đối phương có thể, với một số xác suất không đáng kể khác, buộc giao thức BA nhị phân vào một ngã ba trong vòng r, với khối Br khác trống và khối trống Br ǫ cả hai đều có chữ ký hợp lệ.25 Ví dụ, trong một Bước Coin-Fixed-To-0 s, tất cả các trình xác minh trong HSV r,s 1 đã ký cho bit 0 và H(Br), và truyền bá chúng tin nhắn. Tất cả các trình xác minh trong MSV r,s 1 cũng đã ký 0 và H(Br), nhưng giữ lại tin nhắn của họ. Bởi vì |HSV r,s 1 | + |MSV r,s 1 | \(\geq\)tH, hệ thống có đủ chữ ký chứng nhận Br. Tuy nhiên, kể từ khi những người xác minh độc hại đã giữ lại chữ ký của họ, người dùng sẽ nhập bước s + 1, đây là bước Coin-Fixed-To1. Vì |HSV r,s 1 | < tH do phân vùng, các bộ xác minh trong HSV r,s+1 1 không thấy tH chữ ký cho bit 0 và tất cả chúng đều ký cho bit 1. Tất cả các trình xác minh trong MSV r,s+1 1 cũng làm như vậy. Bởi vì |HSV r,s+1 1 | + |MSV r,s+1 1 | \(\geq\)tH, hệ thống có đủ chữ ký chứng nhận Br ừ. kẻ thù sau đó tạo một nhánh bằng cách giải phóng chữ ký của MSV r,s 1 cho 0 và H(Br). Theo đó, sẽ có hai Qr, được xác định bởi các khối tương ứng của vòng r. Tuy nhiên, ngã ba sẽ không tiếp tục và chỉ một trong hai nhánh có thể phát triển ở vòng r + 1. Hướng dẫn bổ sung cho Algorand ′ 2. Khi nhìn thấy khối không trống Br và khối trống khối Br ǫ , theo sau cái không trống (và Qr được xác định bởi nó). Thật vậy, bằng cách hướng dẫn người dùng sử dụng khối không trống trong giao thức, nếu một khối lớn số lượng người dùng trung thực trong PKr+1−k nhận ra rằng có một ngã ba ở đầu vòng r +1, sau đó khối trống sẽ không có đủ người theo dõi và sẽ không phát triển. Giả sử đối thủ có thể phân vùng những người dùng trung thực để một số người dùng trung thực nhìn thấy Br (và có lẽ Br ǫ), và một số chỉ nhìn thấy anh ừ. Bởi vì Đối thủ không thể biết ai trong số họ sẽ là người xác minh theo sau Br và ai sẽ là người xác minh. sẽ là người xác minh theo sau Br ǫ , những người dùng trung thực được phân vùng ngẫu nhiên và mỗi người trong số họ vẫn trở thành người xác minh (đối với Br hoặc đối với Br ǫ) ở bước s > 1 với xác suất trang. Đối với những người dùng có ý đồ xấu, mỗi người trong số họ có thể có hai cơ hội để trở thành người xác minh, một cơ hội có Br và người kia với Br ǫ, mỗi cái có xác suất p độc lập. Đặt HSV r+1,s 1;Anh là tập hợp những người xác minh trung thực ở bước s của vòng r+1 theo sau Br. Các ký hiệu khác chẳng hạn như HSV r+1,s 1;Brǫ , MSV r+1,s 1;Anh và MSV r+1,s 1;Brū được xác định tương tự. Bởi Chernoffbound, thật dễ dàng 25Không thể có một nhánh với hai khối không trống có hoặc không có phân vùng, ngoại trừ không đáng kể xác suất.để thấy điều đó với xác suất áp đảo, |HSV r+1,s 1;Anh | + |HSV r+1,s 1;Brū | + |MSV r+1,s 1;Anh | + |MSV r+1,s 1;Brū | < 2tH. Theo đó, hai nhánh không thể cùng có chữ ký phù hợp xác nhận một khối cho vòng r + 1 trong cùng bước s. Hơn nữa, vì xác suất lựa chọn cho hai bước s và s′ là giống nhau và các lựa chọn là độc lập, cũng có xác suất áp đảo |HSV r+1,s 1;Anh | + |MSV r+1,s 1;Anh | + |HSV r+1,s′ 1;Brū | + |MSV r+1,s′ 1;Brū | < 2tH, với hai bước bất kỳ s và s′. Khi F = 10−18, bởi liên minh bị ràng buộc, miễn là Đối thủ không thể phân vùng những người dùng trung thực trong một thời gian dài (ví dụ 104 bước, tức là hơn 55 giờ với \(\lambda\) = 10 giây26), với xác suất cao (ví dụ 1−10−10) nhiều nhất một nhánh sẽ có chữ ký phù hợp tH để chứng nhận một khối ở vòng r + 1. Cuối cùng, nếu phân vùng vật lý đã tạo ra hai phần có kích thước gần giống nhau thì xác suất |HSV r,s tôi | + |MSV r,s tôi | \(\geq\)tH nhỏ đối với mỗi phần i. Sau một phân tích tương tự, ngay cả khi Đối thủ cố gắng tạo ra một ngã ba với xác suất không thể bỏ qua ở mỗi phần đối với vòng r, nhiều nhất một trong bốn nhánh có thể mọc ở vòng r + 1. 10.2 Phân vùng đối nghịch Thứ hai, việc phân vùng có thể do Kẻ thù gây ra nên thông điệp được truyền đi bởi những người dùng trung thực ở một phần sẽ không tiếp cận trực tiếp với những người dùng trung thực ở phần khác, nhưng Đối thủ có thể chuyển tiếp tin nhắn giữa hai phần. Tuy nhiên, một khi một tin nhắn từ một phần này đến được với người dùng trung thực ở phần kia thì nó sẽ được phổ biến ở phần sau như bình thường. Nếu Đối thủ sẵn sàng chi rất nhiều tiền, có thể tưởng tượng rằng anh ta có thể hack được Internet và phân vùng nó như thế này một thời gian. Phân tích tương tự như phân tích đối với phần lớn hơn trong phân vùng vật lý ở trên (phần nhỏ hơn một phần có thể được coi là có dân số 0): Đối thủ có thể tạo một nhánh và mỗi người dùng trung thực chỉ nhìn thấy một trong các nhánh, nhưng nhiều nhất một nhánh có thể phát triển. 10.3 Tổng phân vùng mạng Mặc dù việc phân vùng mạng có thể xảy ra và việc phân nhánh trong một vòng có thể xảy ra dưới các phân vùng, nhưng vẫn có không có gì mơ hồ kéo dài: một đợt fork tồn tại rất ngắn và trên thực tế chỉ kéo dài tối đa một vòng duy nhất. trong tất cả các phần của phân vùng ngoại trừ tối đa một phần, người dùng không thể tạo khối mới và do đó (a) nhận ra rằng có một phân vùng trong mạng và (b) không bao giờ dựa vào các khối sẽ “biến mất”. Lời cảm ơn Trước tiên chúng tôi xin cảm ơn Sergey Gorbunov, đồng tác giả của hệ thống Democoin được trích dẫn. Lời cảm ơn chân thành nhất xin gửi đến Maurice Herlihy, vì nhiều cuộc thảo luận mang tính khai sáng, vì đã chỉ ra chỉ ra rằng đường ống sẽ cải thiện hiệu suất thông lượng của Algorand và cải thiện đáng kể 26Lưu ý rằng người dùng hoàn thành một bước s mà không phải đợi 2\(\lambda\) thời gian chỉ khi anh ta đã nhìn thấy ít nhất tH chữ ký cho bước đó. cùng một tin nhắn. Khi không đủ chữ ký, mỗi bước sẽ kéo dài trong thời gian 2\(\lambda\).
trình bày của một phiên bản trước đó của bài viết này. Rất cám ơn Sergio Rajsbaum vì những nhận xét của ông về phiên bản trước của bài viết này. Cảm ơn Vinod Vaikuntanathan rất nhiều vì nhiều cuộc thảo luận sâu sắc và hiểu biết sâu sắc. Xin gửi lời cảm ơn chân thành đến Yossi Gilad, Rotem Hamo, Georgios Vlachos và Nickolai Zeldovich vì đã bắt đầu thử nghiệm những ý tưởng này cũng như có nhiều nhận xét và thảo luận hữu ích. Silvio Micali xin đích thân cảm ơn Ron Rivest vì vô số cuộc thảo luận và hướng dẫn trong nghiên cứu mật mã trong hơn 3 thập kỷ, vì đã đồng tác giả hệ thống thanh toán vi mô được trích dẫn điều đó đã truyền cảm hứng cho một trong những cơ chế lựa chọn người xác minh của Algorand. Chúng tôi hy vọng sẽ đưa công nghệ này lên một tầm cao mới. Trong khi đó việc đi lại và đồng hành là niềm vui lớn, mà chúng tôi rất biết ơn.
Gestion des partitions réseau
Comme indiqué, nous supposons que les temps de propagation des messages entre tous les utilisateurs du réseau sont limités par \(\lambda\) et Λ. Ce n’est pas une hypothèse solide, car l’Internet d’aujourd’hui est rapide et robuste, et les valeurs réelles de ces paramètres sont tout à fait raisonnables. Précisons ici que Algorand ′ 2 continue de fonctionner même si Internet est parfois divisé en deux parties. Le cas où Internet est divisé en plus de deux parties, c'est similaire. 10.1 Partitions physiques Tout d’abord, la partition peut être provoquée par des raisons physiques. Par exemple, un énorme tremblement de terre peut finissent par briser complètement la connexion entre l’Europe et l’Amérique. Dans ce cas, le les utilisateurs malveillants sont également partitionnés et il n'y a aucune communication entre les deux parties. Ainsi
il y aura deux Adversaires, un pour la partie 1 et l'autre pour la partie 2. Chaque Adversaire essaie toujours de rompre le protocole dans sa propre partie. Supposons que la partition se produise au milieu du tour r. Ensuite, chaque utilisateur est toujours sélectionné comme vérificateur basé sur PKr−k, avec la même probabilité que précédemment. Soit HSV r,s je et MSV r,s je respectivement être l’ensemble des vérificateurs honnêtes et malveillants dans une étape s de la partie i \(\in\){1, 2}. Nous avons |HSVr,s 1 | + |MSVr,s 1 | + |HSVr,s 2 | + |MSVr,s 2 | = |VHS r,s| + |MSVr,s|. Notez que |HSV r,s| + |MSVr,s| < |HSVr,s| + 2|MSVr,s| < 2th avec une probabilité écrasante. Si une partie j'ai |HSV r,s je | + |MSVr,s je | \(\geq\)tH avec une probabilité non négligeable, par exemple 1 %, alors le probabilité que |HSV r,s 3−i| + |MSVr,s 3−i| \(\geq\)tH est très faible, par exemple 10−16 lorsque F = 10−18. Dans ce cas, autant considérer la plus petite partie comme étant hors ligne, car il n'y aura pas assez de vérificateurs dans cette partie pour générer les signatures pour certifier un bloc. Considérons la plus grande partie, disons la partie 1 sans perte de généralité. Bien que |HSV r,s| < th avec une probabilité négligeable à chaque étape s, lorsque le réseau est partitionné, |HSV r,s 1 | peut-être inférieur à tH avec une probabilité non négligeable. Dans ce cas, l'Adversaire peut, avec quelques autre probabilité non négligeable, forcer le protocole binaire BA dans un fork au tour r, avec un bloc non vide Br et le bloc vide Br ǫ tous deux ayant des signatures valides.25 Par exemple, dans un Coin-Fixed-To-0 step s, tous les vérificateurs en HSV r,s 1 signé pour le bit 0 et H(Br), et propagé leur messages. Tous les vérificateurs dans MSV r,s 1 ont également signé 0 et H(Br), mais ont caché leurs messages. Parce que |HSVr,s 1 | + |MSVr,s 1 | \(\geq\)th, le système dispose de suffisamment de signatures pour certifier Br. Cependant, depuis le les vérificateurs malveillants ont retenu leurs signatures, les utilisateurs entrent dans l'étape s + 1, qui est une étape Coin-Fixed-To1. Parce que |HSV r,s 1 | < tH dû à la partition, les vérificateurs en HSV r,s+1 1 je n'ai pas vu ça signatures pour le bit 0 et ils ont tous signé pour le bit 1. Tous les vérificateurs dans MSV r,s+1 1 a fait de même. Parce que |HSVr,s+1 1 | + |MSVr,s+1 1 | \(\geq\)tH, le système dispose de suffisamment de signatures pour certifier Br ǫ. L'adversaire crée ensuite un fork en libérant les signatures de MSV r,s 1 pour 0 et H(Br). En conséquence, il y aura deux Qr, définis par les blocs correspondants du tour r. Cependant, la fourche ne continuera pas et une seule des deux branches pourra pousser au tour r+1. Instructions supplémentaires pour Algorand ′ 2. En voyant un bloc Br non vide et le bloc vide bloc Br ǫ , suit celui non vide (et le Qr défini par lui). En effet, en demandant aux utilisateurs d'opter pour le bloc non vide dans le protocole, si un grand nombre d'utilisateurs honnêtes dans PKr+1−k se rendent compte qu'il y a un fork au début du tour r +1, alors le le bloc vide n’aura pas assez d’abonnés et ne grandira pas. Supposons que l'Adversaire parvienne à partitionner les utilisateurs honnêtes afin que certains utilisateurs honnêtes voient Br (et peut-être Br ǫ), et certains ne voient que Br ǫ. Parce que l'Adversaire ne peut pas dire lequel d'entre eux sera un vérificateur à la suite de Br et lequel d'entre eux sera un vérificateur après Br et lequel d'entre eux sera un vérificateur après Br et lequel sera un vérificateur suivant Br ǫ , les utilisateurs honnêtes sont partitionnés aléatoirement et chacun d'entre eux reste devient vérificateur (soit par rapport à Br, soit par rapport à Br ǫ) dans une étape s > 1 avec probabilité p. Pour les utilisateurs malveillants, chacun d'entre eux peut avoir deux chances de devenir vérificateur, une avec Br et l'autre avec Br ǫ, chacun avec une probabilité p indépendamment. Soit HSV r+1,s 1;Br être l'ensemble des vérificateurs honnêtes à l'étape s du tour r+1 suivant Br. Autres notations comme HSV r+1,s 1;Brǫ , MSV r+1,s 1;Br et MSV r+1,s 1;Brǫ sont définis de la même manière. En direction de Tchernoff, c'est facile 25Avoir un fork avec deux blocs non vides n'est pas possible avec ou sans partitions, sauf avec des probabilité.voir cela avec une écrasante probabilité, |HSVr+1,s 1;Br | + |HSVr+1,s 1;Br | + |MSV r+1,s 1;Br | + |MSV r+1,s 1;Br | < 2ème. En conséquence, les deux succursales ne peuvent pas toutes deux avoir les signatures appropriées certifiant un bloc pour le tour r + 1 dans la même étape s. De plus, puisque les probabilités de sélection pour deux étapes s et s′ sont les pareil et les sélections sont indépendantes, également avec une probabilité écrasante |HSVr+1,s 1;Br | + |MSV r+1,s 1;Br | + |HSVr+1,s′ 1;Brǫ | + |MSV r+1,s′ 1;Brǫ | < 2eH, pour deux étapes s et s′ quelconques. Lorsque F = 10−18, par l'union liée, tant que l'Adversaire ne peut pas partitionner les utilisateurs honnêtes pendant une longue période (disons 104 étapes, soit plus de 55 heures avec \(\lambda\) = 10 secondes26), avec une forte probabilité (disons 1−10−10) au plus une branche aura les signatures propres pour certifier un bloc au tour r+1. Enfin, si la partition physique a créé deux parties ayant à peu près la même taille, alors la probabilité que |HSV r,s je | + |MSVr,s je | \(\geq\)tH est petit pour chaque partie i. Suite à une analyse similaire, même si l'Adversaire parvient à créer un fork avec une probabilité non négligeable dans chaque partie pour le tour r, au plus une des quatre branches peut pousser au tour r + 1. 10.2 Partition contradictoire Deuxièmement, la partition peut être provoquée par l'Adversaire, de sorte que les messages propagés par les utilisateurs honnêtes d’une part n’atteindra pas directement les utilisateurs honnêtes de l’autre partie, mais l'Adversaire est capable de transmettre des messages entre les deux parties. Pourtant, une fois un message d'un une partie parvient à un utilisateur honnête dans l'autre partie, elle sera propagée dans cette dernière comme d'habitude. Si le L'adversaire est prêt à dépenser beaucoup d'argent, il est concevable qu'il puisse pirater le Internet et partitionnez-le comme ça pendant un moment. L'analyse est similaire à celle de la plus grande partie de la partition physique ci-dessus (la plus petite partie peut être considérée comme ayant une population de 0) : l'Adversaire peut être capable de créer un fork et chaque utilisateur honnête ne voit qu'une seule des branches, mais au plus une branche peut croître. 10.3 Partitions réseau en somme Bien que des partitions réseau puissent se produire et qu'un fork en un seul tour puisse se produire sous les partitions, il Il n'y a pas d'ambiguïté persistante : une fourchette a une durée de vie très éphémère, et ne dure en fait qu'un seul tour au maximum. Dans toutes les parties de la partition sauf une au plus, les utilisateurs ne peuvent pas générer de nouveau bloc et donc (a) se rendre compte qu'il existe une partition dans le réseau et (b) ne jamais s'appuyer sur des blocs qui « disparaîtront ». Remerciements Nous tenons tout d'abord à remercier Sergey Gorbunov, co-auteur du système Democoin cité. Nos plus sincères remerciements vont à Maurice Herlihy, pour ses nombreux échanges éclairants, pour avoir souligné que le pipeline améliorera les performances de débit de Algorand, et pour améliorer considérablement le 26Remarquons qu'un utilisateur termine une étape s sans attendre 2\(\lambda\) temps seulement s'il a vu au moins les signatures de l'étape s. même message. Lorsqu’il n’y a pas assez de signatures, chaque étape durera 2\(\lambda\).
exposition d’une version antérieure de cet article. Un grand merci à Sergio Rajsbaum, pour ses commentaires sur une version antérieure de cet article. Un grand merci à Vinod Vaikuntanathan, pour plusieurs discussions approfondies et des idées. Un grand merci à Yossi Gilad, Rotem Hamo, Georgios Vlachos et Nickolai Zeldovich pour avoir commencé à tester ces idées et pour de nombreux commentaires et discussions utiles. Silvio Micali tient à remercier personnellement Ron Rivest pour ses innombrables discussions et conseils en recherche cryptographique pendant plus de 3 décennies, pour avoir co-écrit le système de micropaiement cité qui a inspiré l’un des mécanismes de sélection des vérificateurs de Algorand. Nous espérons amener cette technologie au niveau supérieur. Pendant ce temps, le voyage et la compagnie sont très amusants, pour lesquels nous sommes très reconnaissants.