초록
공개 원장은 누구나 읽고 확장할 수 있는 변조 방지된 데이터 시퀀스입니다. 공개 원장은 셀 수 없이 많고 강력한 용도로 사용됩니다. 그들은 모든 종류의 것을 눈에 띄게 확보할 수 있습니다. 소유권, 판매, 지불 등의 거래를 발생한 순서대로 정확하게 기록합니다. 공공 원장은 부패를 억제할 뿐만 아니라 다음과 같은 매우 정교한 애플리케이션을 가능하게 합니다. 암호화폐 및 smart contracts. 그들은 민주사회의 방식에 혁명을 일으키기 위해 서 있습니다. 운영합니다. 그러나 현재 구현된 대로 확장성이 부족하고 잠재력을 달성할 수 없습니다. Algorand은 공개 원장을 구현하는 진정으로 민주적이고 효율적인 방법입니다. 이전과 달리 작업 증명을 기반으로 한 구현에는 무시할 만한 양의 계산이 필요합니다. 압도적으로 높은 확률로 "포크"되지 않는 거래 내역을 생성합니다. Algorand은 (신선하고 매우 빠른) 메시지 전달 비잔틴 계약을 기반으로 합니다. 구체적으로 Algorand은 머니 플랫폼으로만 설명하겠습니다.
概要
公開台帳は、誰でも読み取って拡張できる改ざん防止された一連のデータです。 公開台帳には無数の魅力的な用途があります。一目瞭然で、あらゆる種類のセキュリティを確保できます。 トランザクション (タイトル、販売、支払いなど) を発生した正確な順序で記録します。 公開台帳は汚職を防止するだけでなく、非常に高度なアプリケーションを可能にします。 暗号通貨とsmart contract。彼らは民主主義社会のあり方に革命を起こそうとしている 動作します。ただし、現在実装されているように、拡張性が低く、潜在力を発揮できません。 Algorand は、公開台帳を実装するための真に民主的で効率的な方法です。 以前とは異なり プルーフ・オブ・ワークに基づく実装では、必要な計算量はごくわずかです。 圧倒的に高い確率で「フォーク」しない取引履歴を生成します。 Algorand は、(斬新で超高速な) メッセージ パッシング ビザンチン協定に基づいています。 具体的にするために、Algorand をマネープラットフォームとしてのみ説明します。
소개
돈은 점점 더 가상화되고 있습니다. 미국의 약 80%가 차지하는 것으로 추산된다. 현재 달러는 원장 항목 [5]로만 존재합니다. 다른 금융수단도 이를 따르고 있다. 우리가 보편적으로 신뢰할 수 있는 중앙 실체에 의지할 수 있는 이상적인 세계에서는 가능한 모든 사이버 공격에 대비해 돈과 기타 금융 거래는 전적으로 전자적일 수 있습니다. 불행하게도 우리는 그런 세상에 살고 있지 않습니다. 따라서, 분산형 암호화폐와 같은 Bitcoin [29] 및 "smart contract" 시스템(예: Ethereum)이 [4]로 제안되었습니다. 에 이러한 시스템의 핵심은 일련의 거래를 안정적으로 기록하는 공유 원장입니다. ✽이것은 두 번째 저자인 [24]의 ArXiv 논문의 보다 공식적인(비동기적) 버전입니다. Gorbunov와 Micali [18]의 것을 기반으로 합니다. Algorand의 기술은 다음의 대상입니다 특허 출원: US62/117,138 US62/120,916 US62/142,318 US62/218,817 US62/314,601 PCT/US2016/018300 US62/326,865 62/331,654 US62/333,340 US62/343,369 US62/344,667 US62/346,775 US62/351,011 US62/653,482 US62/352,195 US62/363,970 US62/369,447 US62/378,753 US62/383,299 US62/394,091 US62/400,361 US62/403,403 US62/410,721 US62/416,959 US62/422,883 US62/455,444 US62/458,746 US62/459,652 US62/460,928 US62/465,931변조 방지 방식으로 지불 및 계약만큼 다양합니다. 선택하는 기술 그러한 변조 방지를 보장하는 것은 blockchain입니다. 블록체인은 다음과 같은 애플리케이션 뒤에 있습니다. 암호화폐 [29], 금융 애플리케이션 [4], 사물 인터넷 [3]. 여러 가지 기술 blockchain 기반 원장을 관리하기 위해 제안되었습니다: 작업 증명 [29], 지분 증명 [2], 실용적인 비잔틴 결함 허용 [8] 또는 일부 조합. 그러나 현재 원장은 관리하기가 비효율적일 수 있습니다. 예를 들어 Bitcoin의 proof-of-work [14]의 원래 개념을 기반으로 한 접근 방식은 엄청난 양의 계산이 필요하고 낭비적입니다. 확장성이 좋지 않습니다 [1]. 게다가 사실상 극소수의 손에 권력을 집중시킨다. 따라서 우리는 다음을 제공하는 공개 원장을 구현하는 새로운 방법을 제시하고자 합니다. 신뢰할 수 있고 침해할 수 없는 기관에 의해 운영되는 중앙 집중식 시스템의 편리성과 효율성 현재 분산 구현의 비효율성과 약점. 우리는 접근 방식을 이렇게 부릅니다. Algorand, 지금까지 구성된 원장을 기반으로 알고리즘 무작위성을 사용하여 선택하기 때문에 유효한 거래의 다음 블록을 구성하는 역할을 담당하는 검증자 집합입니다. 당연히, 우리는 그러한 선택이 조작으로부터 면제되고 예측할 수 없는 것으로 증명되도록 보장합니다. 마지막 순간에 있지만 궁극적으로는 보편적으로 분명합니다. Algorand의 접근 방식은 원칙적으로도 사실상으로도 그렇지 않다는 점에서 매우 민주적입니다. 다양한 종류의 사용자를 생성합니다(Bitcoin의 "광부" 및 "일반 사용자"). Algorand에서 "모두 권력은 모든 사용자 집합에 있습니다.” Algorand의 주목할만한 속성 중 하나는 거래 내역이 매우 작은 경우에만 분기될 수 있다는 것입니다. 확률(예: 1조분의 1, 즉 10-18). Algorand은 일부 법적 문제도 해결할 수 있습니다. 그리고 정치적 우려. Algorand 접근 방식은 blockchain에 적용되며 더 일반적으로는 모든 생성 방법에 적용됩니다. 변조 방지된 블록 시퀀스. 우리는 실제로 새로운 방법을 제시했습니다. blockchains보다 더 효율적입니다. 이는 독립적인 관심사일 수 있습니다. 1.1 Bitcoin의 가정과 기술적인 문제 Bitcoin은 매우 독창적인 시스템이며 많은 후속 연구에 영감을 주었습니다. 그래도, 그것은 도 문제가 된다. 기본 가정과 기술적 문제를 요약해 보겠습니다. 실제로 Bitcoin와 같이 proof-of-work을 기반으로 하는 모든 암호화폐에서 공유됩니다. 이 요약에서는 Bitcoin에서 사용자가 여러 공개 키를 소유할 수 있다는 점을 기억하면 됩니다. 디지털 서명 방식에 따르면 돈은 공개 키와 연결되어 있으며 지불은 하나의 공개 키에서 다른 공개 키로 일정 금액을 전송하는 디지털 서명입니다. 본질적으로, Bitcoin은 처리된 모든 결제를 B1, B2, 블록 체인으로 구성합니다. . ., 각각은 여러 개로 구성됩니다. 순서에 관계없이 B1의 모든 지불이 이루어지고 이어서 B2의 지불이 순서에 관계없이 수행됩니다. 등은 유효한 지불의 순서를 구성합니다. 각 블록은 평균 10분마다 생성됩니다. 이 일련의 블록은 어떤 변경이라도 보장하도록 구조화되어 있기 때문에 체인입니다. 단일 블록에서 모든 후속 블록에 침투하여 변경 사항을 더 쉽게 발견할 수 있습니다. 지불 내역. (앞으로 살펴보겠지만 이는 각 블록에 암호화된 이전 것의 hash.) 이러한 블록 구조를 blockchain이라고 합니다. 가정: 계산 능력의 정직한 다수 Bitcoin은 악의적인 행위가 없다고 가정합니다. 엔터티(또는 조직된 악의적 엔터티의 연합)가 계산의 대부분을 제어합니다. 블록 생성에 전력을 할당합니다. 실제로 그러한 개체는 blockchain을 수정할 수 있습니다.원하는 대로 결제 내역을 다시 작성하세요. 특히, 결제가 가능합니다 \(\wp\), 지불한 혜택을 얻은 다음 \(\wp\)의 흔적을 "삭제"합니다. 기술적인 문제 1: 전산 폐기물 Bitcoin의 proof-of-work 차단 접근 방식 생성에는 엄청난 양의 계산이 필요합니다. 현재는 몇백개만 가지고 수천 개의 공개 키가 시스템에 존재하므로 가장 강력한 상위 500대 슈퍼컴퓨터만 소집할 수 있습니다. Bitcoin 플레이어에게 필요한 총 계산 능력의 12.8%에 불과합니다. 이 훨씬 더 많은 사용자가 시스템에 참여하면 계산량이 크게 증가합니다. 기술적 문제 2: 권력의 집중 오늘은 엄청난 물량으로 인해 일반 데스크톱을 사용하여 새 블록을 생성하려는 사용자(컴퓨터는 물론이고 계산이 필요함) 휴대폰), 돈을 잃을 것으로 예상됩니다. 실제로 일반 컴퓨터로 새로운 블록을 계산하기 위해서는, 계산에 전력을 공급하는 데 필요한 전기의 예상 비용이 예상 보상을 초과합니다. 특별히 제작된 컴퓨터 풀("새 블록 채굴" 외에는 아무 작업도 수행하지 않음)만 사용하여 새로운 블록을 생성하여 수익을 창출할 수 있을 것으로 기대할 수 있습니다. 따라서 오늘날에는 사실상 두 가지가 있습니다. 분리된 사용자 클래스: 결제만 하는 일반 사용자와 전문 채굴 풀, 새로운 블록만 검색합니다. 따라서 최근 블록의 전체 컴퓨팅 성능이 세대는 단 5개의 풀 내에 있습니다. 그러한 조건에서, 대부분의 사람들이 계산 능력이 정직하다는 것은 신뢰도가 떨어집니다. 기술적 문제 3: 모호함 Bitcoin에서 blockchain은 반드시 고유할 필요는 없습니다. 과연 최신 부분은 종종 분기됩니다. blockchain은 -예를 들어- B1, . . . , Bk, B′ k+1, B' k+2에 따르면 한 명의 사용자와 B1, . . . , Bk, B′′ k+1, B′′ k+2, B′′ 다른 사용자에 따르면 k+3입니다. 여러 블록이 완료된 후에만 체인에 추가되면 처음 k + 3개 블록이 동일할 것이라고 합리적으로 확신할 수 있습니까? 모든 사용자에게. 따라서 마지막 블록에 포함된 지불금에 즉시 의존할 수는 없습니다. 체인. 블록이 충분히 깊어지는지 기다려 보는 것이 더 현명합니다. blockchain 따라서 충분히 안정적입니다. 이와 별도로 Bitcoin.1에 대해 법 집행 및 통화 정책에 대한 우려도 제기되었습니다. 1.2 Algorand, 간단히 말해서 설정 Algorand은 매우 어려운 환경에서 작동합니다. 간략하게, (a) 허가 없는 환경과 허가된 환경. Algorand은(는) 효율적이고 안전하게 작동합니다. 완전히 허가가 없는 환경에서 임의로 많은 사용자가 가입할 수 있습니다. 어떤 종류의 심사나 허가 없이 언제든지 시스템에 접근할 수 있습니다. 물론 Algorand는 작동합니다. 허가된 환경에서는 더욱 좋습니다. 1Bitcoin 결제가 제공하는 (유사) 익명성은 자금 세탁 및/또는 자금 조달에 악용될 수 있습니다. 범죄인이나 테러리스트 조직의 원칙적으로 완벽한 기능을 제공하는 전통적인 지폐 또는 금괴 익명성은 동일한 문제를 제기해야 하지만 이러한 통화의 물리적 특성으로 인해 통화 속도가 크게 느려집니다. 법 집행 기관의 어느 정도 모니터링을 허용하기 위한 전송입니다. “돈을 인쇄하는” 능력은 국민국가의 가장 기본적인 권력 중 하나입니다. 따라서 원칙적으로 대규모 독립적으로 변동하는 통화를 채택하면 이러한 힘이 줄어들 수 있습니다. 그러나 현재 Bitcoin은(는) 존재하지 않습니다. 정부 통화 정책에 대한 위협이며, 확장성 문제로 인해 결코 위협이 되지 않을 수도 있습니다.(b) 매우 적대적인 환경. Algorand은 매우 강력한 적을 견딜 수 있습니다. (1) 원하는 사용자를 원하는 시간에 즉시 부패시킵니다. 무허가 환경에서는 시스템 자금의 2/3가 정직한 사용자에게 귀속됩니다. (한 허가된 환경에서는 돈에 관계없이 사용자의 2/3가 정직하면 충분합니다.) (2) 모든 부패한 사용자를 완전히 통제하고 완벽하게 조정합니다. 그리고 (3) 각 메시지가 정직한 사용자에 의해 전송된 경우 모든 메시지 전달을 예약합니다. m의 크기에만 의존하는 \(\lambda\)m 시간 내에 정직한 사용자의 95%에 도달합니다. 주요 속성 Algorand에 우리의 강력한 적의 존재에도 불구하고 • 필요한 계산량이 최소화됩니다. 기본적으로 사용자 수에 관계없이 시스템에 존재하는 경우, 1,500명의 사용자 각각은 최대 몇 초의 작업을 수행해야 합니다. 계산. • 새 블록은 10분 이내에 생성되며 사실상 blockchain을 떠나지 않습니다. 예를 들어, 첫 번째 실시예에서는 블록을 생성하는 데 걸리는 시간이 더 짧을 것으로 예상됩니다. 여기서 Λ는 P2P 가십에서 블록을 전파하는 데 필요한 시간입니다. 어떤 블록 크기를 선택하든 관계없이 \(\lambda\)는 1,500개의 200Blong 메시지를 전파하는 데 걸리는 시간입니다. (진정한 분산형 시스템에서 Λ는 본질적으로 본질적인 대기 시간이므로 Algorand 블록 생성의 제한 요소는 네트워크 속도입니다.) 두 번째 실시예는 실제로 실험적으로 ( ? 에 의해) 테스트되었는데, 이는 40분 이내에 블록이 생성됨을 나타냅니다. 초. 또한 Algorand의 blockchain은 무시할 수 있는 확률(예: 1 미만)로만 포크할 수 있습니다. 1조 단위), 따라서 사용자는 새 블록에 포함된 지불금을 다음과 같이 중계할 수 있습니다. 블록이 나타납니다. • 모든 권한은 사용자 자신에게 있습니다. Algorand은 진정한 분산 시스템입니다. 특히, 어떤 거래를 통제할 수 있는 외생적 실체(Bitcoin의 "채굴자")가 없습니다. 인식됩니다. Algorand의 기술. 1. 새롭고 빠른 비잔틴 합의 프로토콜. Algorand은 다음을 통해 새 블록을 생성합니다. 새로운 암호화, 메시지 전달, 바이너리 비잔틴 계약(BA) 프로토콜 BA⋆. 프로토콜 BA⋆(곧 논의할) 몇 가지 추가 속성을 충족할 뿐만 아니라 속도도 매우 빠릅니다. 대략적으로 말하면 이진 입력 버전은 3단계 루프로 구성됩니다. 여기서 플레이어 i는 단일 다른 모든 플레이어에게 mi 메시지를 보내세요. 더 많은 기능을 갖춘 완전하고 동기식 네트워크에서 실행됩니다. 플레이어의 2/3 이상이 정직하고 확률이 1/3보다 크면 각 루프 후에 프로토콜이 끝납니다. 합의. (우리는 프로토콜 BA⋆가 비잔틴 합의의 원래 정의를 충족한다는 점을 강조합니다. Pease, Shostak 및 Lamport [31]의 약화 없이.) Algorand은 이 바이너리 BA 프로토콜을 활용하여 다양한 통신에서 합의에 도달합니다. 각각의 새로운 블록에 모델을 추가합니다. 그런 다음 합의된 블록은 미리 정해진 수의 블록을 통해 인증됩니다. 적절한 검증자의 디지털 서명이 네트워크를 통해 전파됩니다. 2. 암호화 정렬. 매우 빠르지만 프로토콜 BA⋆는 더 많은 이점을 얻을 수 있습니다. 수백만 명의 사용자가 플레이할 때의 속도. 따라서 Algorand는 BA⋆의 플레이어를 선택합니다.모든 사용자 집합 중 훨씬 작은 하위 집합입니다. 다양한 종류의 권력 집중을 피하기 위해 문제가 발생하면 BA⋆의 새로운 실행을 통해 각각의 새로운 블록 Br이 구성되고 합의됩니다. 별도의 선택된 검증자 세트인 SV r에 의해. 원칙적으로 그러한 세트를 선택하는 것은 다음과 같이 어려울 수 있습니다. Br을 직접 선택합니다. 우리는 포용이라는 접근 방식을 통해 이러한 잠재적인 문제를 해결합니다. Maurice Herlihy의 통찰력 있는 제안, 암호화 분류. 정렬은 다음과 같은 관행입니다. 대규모의 적격 개인 중에서 무작위로 공무원을 선택합니다 [6]. (분류가 실행되었습니다. 수 세기에 걸쳐, 예를 들어 아테네, 피렌체, 베네치아 공화국이 그랬습니다. 현대 사법에서는 시스템에서는 배심원을 선택하는 데 종종 무작위 선택이 사용됩니다. 최근에는 무작위 샘플링도 이루어지고 있습니다. David Chaum [9]이 선거를 옹호했습니다.) 물론 분산형 시스템에서는 각 검증자 세트 SV r의 구성원을 무작위로 선택하는 데 필요한 무작위 코인은 문제가 있습니다. 따라서 우리는 모든 사용자 집단에서 각 검증자 세트를 선택하기 위해 암호화에 의존합니다. 자동(즉, 메시지 교환이 필요하지 않음)과 무작위가 보장되는 방식입니다. 본질적으로 우리는 이전 블록에서 자동으로 결정하기 위해 암호화 기능을 사용합니다. 새로운 블록 Br을 제안하는 리더인 사용자 Br-1과 검증자 세트 SV r이 존재한다. 리더가 제안한 블록에 대한 합의에 도달하는 책임. 악의적인 사용자가 영향을 미칠 수 있으므로 Br−1의 구성(예: 지불금 중 일부를 선택하여)을 특별히 구성하고 사용합니다. r번째 블록의 리더와 검증자 세트 SV r이 실제로 무작위로 선택되었습니다. 3. 수량(종자) Qr. 우리는 blockchain의 마지막 블록 Br−1을 사용하여 다음을 수행합니다. 새로운 블록 구축을 담당할 다음 검증자 세트와 리더를 자동으로 결정합니다. 브르. 이 접근 방식의 문제점은 단지 약간 다른 지불 방법을 선택함으로써 이전 라운드에서는 우리의 강력한 적이 다음 리더에 대해 엄청난 통제권을 얻습니다. 그 사람이 시스템에서 플레이어/돈의 1/1000만 통제하면 모든 리더가 악의적이다. (직관 섹션 4.1을 참조하십시오.) 이 과제는 모든 proof-of-stake 접근 방식의 핵심입니다. 그리고 우리가 아는 한, 지금까지 만족스럽게 해결되지 않았습니다. 이러한 과제를 해결하기 위해 우리는 의도적으로 별도의 신중한 솔루션을 구축하고 지속적으로 업데이트합니다. 정의된 양 Qr은 예측할 수 없을 뿐만 아니라, 우리의 방식으로 영향을 미칠 수도 없습니다. 강력한 적. Algorand이 선택한 Qr에서 나온 것이므로 Qr을 r번째 시드로 참조할 수 있습니다. 비밀 암호화 분류를 통해 생성에 특별한 역할을 할 모든 사용자 번째 블록. 4. 비밀 암호화 분류 및 비밀 자격 증명. 검증자 세트와 담당 리더를 선택하기 위해 현재 마지막 블록인 Br−1을 무작위로 명확하게 사용 새로운 블록인 Br을 만드는 것만으로는 충분하지 않습니다. Br을 생성하기 전에 Br−1을 알아야 하므로, Br−1에 포함된 마지막 비유동량 Qr−1도 알아야 합니다. 따라서 블록 Br을 계산하는 검증자이자 리더입니다. 그러므로 우리의 강력한 대적 Br에 대한 논의에 참여하기 전에 즉시 그들 모두를 부패시킬 수 있습니다. 그들이 인증하는 블록에 대한 모든 권한을 갖습니다. 이 문제를 방지하기 위해 리더(실제로 검증자도 포함)는 자신의 역할을 비밀리에 학습하지만 실제로 해당 역할을 맡은 모든 사람에게 증명할 수 있는 적절한 자격 증명을 계산합니다. 언제 사용자는 자신이 다음 블록의 리더라는 것을 개인적으로 깨닫고 먼저 비밀리에 자신의 블록을 조립합니다. 자신이 제안한 새 블록을 자신의 블록과 함께 (인증할 수 있도록) 전파합니다. 자격 증명. 이렇게 하면 대적은 다음 공격의 리더가 누구인지 즉시 깨닫게 될 것입니다. 블록은 즉시 그를 부패시킬 수 있지만 적이 그렇게 하기에는 너무 늦을 것입니다. 새로운 블록 선택에 영향을 미칩니다. 실제로 그는 지도자의 메시지를 더 이상 “회신”할 수 없습니다.강력한 정부가 WikiLeaks에 의해 바이러스로 퍼진 메시지를 다시 병에 담을 수는 없습니다. 앞으로 살펴보겠지만 리더의 고유성을 보장할 수 없으며 모든 사람이 리더가 누구인지 확신할 수도 없습니다. 리더 자신도 포함되어 있습니다! 그러나 Algorand에서는 명확한 진행이 보장됩니다. 5. 플레이어 교체 가능성. 새로운 블록을 제안한 후 리더는 "죽는" 것이 나을 수도 있습니다. 대적에 의해 부패됨) 그의 임무가 끝났기 때문입니다. 그러나 SV r의 검증자에게는 상황이 덜합니다. 간단하다. 실제로 충분히 많은 서명을 받은 새로운 블록 Br의 인증을 담당하게 되면서, 그들은 먼저 리더가 제안한 블록에 대해 비잔틴 합의를 실행해야 합니다. 문제는, 아무리 효율적이더라도 BA⋆에는 여러 단계와 2/3 이상의 플레이어의 정직성이 필요합니다. 이는 효율성상의 이유로 BA⋆의 플레이어 세트가 작은 세트 SV r로 구성되기 때문에 문제가 됩니다. 전체 사용자 집합 중에서 무작위로 선택됩니다. 그러므로 우리의 강력한 대적은 비록 할 수는 없지만 전체 사용자의 1/3을 부패시키면 SV r의 모든 구성원을 확실히 부패시킬 수 있습니다! 다행스럽게도 우리는 P2P 방식으로 메시지를 전파하여 실행되는 프로토콜 BA⋆가 플레이어 대체 가능하다는 것을 증명할 것입니다. 이 새로운 요구 사항은 프로토콜이 정확하고 각 단계가 완전히 새롭고 무작위로 실행되더라도 효율적으로 합의에 도달합니다. 독립적으로 선택된 플레이어 세트입니다. 따라서 수백만 명의 사용자가 있는 각각의 소규모 플레이어 세트는 BA⋆ 단계와 연관된 것은 아마도 다음 세트와 빈 교차점을 가질 것입니다. 게다가 BA⋆의 서로 다른 단계에 있는 플레이어 세트는 아마도 완전히 다른 단계를 가질 것입니다. 카디널리티. 게다가 각 세트의 멤버들은 다음 세트의 플레이어가 누구인지 알 수 없습니다. 내부 상태를 비밀리에 전달하지 마십시오. 교체 가능한 플레이어 속성은 실제로 역동적이고 매우 강력한 적을 물리치는 데 중요합니다. 우리가 상상하는 적. 우리는 교체 가능한 플레이어 프로토콜이 많은 분야에서 결정적인 역할을 할 것이라고 믿습니다. 컨텍스트와 애플리케이션. 특히 소규모 하위 프로토콜을 안전하게 실행하는 데 중요합니다. 역동적인 적과 함께 더 넓은 플레이어 세계에 포함되어 있습니다. 전체 플레이어의 작은 부분은 더 작은 규모의 모든 플레이어를 손상시키는 데 어려움이 없습니다. 하위 프로토콜. 추가 속성/기술: 게으른 정직함 정직한 사용자는 자신이 처방한 것을 따릅니다. 여기에는 온라인 상태 및 프로토콜 실행이 포함됩니다. 이후 Algorand에는 적당한 수준만 있습니다. 계산 및 통신 요구 사항, 온라인 상태 및 프로토콜 실행 배경”은 큰 희생이 아닙니다. 물론, 정직한 플레이어들 사이에는 몇 가지 "부재"가 있습니다. 갑작스러운 연결 끊김 또는 재부팅 필요로 인해 자동으로 허용됩니다(왜냐하면 우리는 항상 그러한 소수의 플레이어를 일시적으로 악의적인 것으로 간주할 수 있습니다. 그러나 지적하자면, Algorand은 정직한 사용자가 사용할 수 있는 새로운 모델에서 작동하도록 간단하게 조정할 수 있습니다. 대부분의 경우 오프라인 상태입니다. 우리의 새로운 모델은 다음과 같이 비공식적으로 소개될 수 있습니다. 게으른 정직. 대략적으로 말해서, 사용자 i는 (1) 자신이 규정한 모든 사항을 따르는 경우 게으르지만 정직합니다. 지침, 프로토콜에 참여하도록 요청받은 경우, 그리고 (2) 참여하도록 요청받은 경우 프로토콜에 적용하는 경우는 드물며 적절한 사전 통지가 있어야 합니다. 정직함에 대해 그렇게 여유로운 개념을 갖고 있으면, 우리는 정직한 사람들이 정직할 것이라고 더욱 확신할 수 있습니다. 필요할 때 바로 사용할 수 있으며, Algorand는 이러한 경우에 특정 시점에 시스템이 안전하게 작동하는 경우 참여하는 플레이어의 대다수는 악의적입니다.1.3 밀접하게 관련된 작품 작업 증명 접근 방식(인용된 [29] 및 [4]과 같은)은 우리의 접근 방식과 상당히 직교합니다. 그래서 메시지 전달 비잔틴 합의 또는 실제적인 비잔틴 내결함성을 기반으로 한 접근 방식 (인용된 [8]과 유사). 실제로 이러한 프로토콜은 모든 사용자 집합에서 실행될 수 없으며, 우리 모델에서는 적절하게 작은 사용자 집합으로 제한됩니다. 사실 우리의 강력한 적 실제로 BA 프로토콜을 실행하는 데 사용되는 소규모 세트에 관련된 모든 사용자를 즉시 손상시킵니다. 우리의 접근 방식은 사용자의 "권한"이 있다는 의미에서 지분 증명 [2]과 관련된 것으로 간주될 수 있습니다. 블록 구축에서 그들이 시스템에서 소유한 돈에 비례합니다. 그들이 "에스크로"에 넣은 돈). 우리 논문에 가장 가까운 논문은 Pass and Shi [30]의 Sleepy Consensus Model입니다. 피하기 위해 proof-of-work 접근 방식에는 많은 계산이 필요하기 때문에 그들의 논문은 (그리고 친절하게도) 크레딧) Algorand의 비밀 암호화 분류입니다. 이 중요한 측면의 공통점을 가지고 여러 우리 논문들 사이에는 상당한 차이가 존재합니다. 특히, (1) 해당 설정은 허가된 것뿐입니다. 이와 대조적으로 Algorand도 무허가 시스템입니다. (2) Nakamoto 스타일 프로토콜을 사용하므로 blockchain 포크가 자주 발생합니다. 비록 proof-of-work을 생략하고 프로토콜에서 비밀리에 선택된 리더에게 기간을 연장하도록 요청합니다. 가장 긴 유효 기간(더 풍부한 의미에서) blockchain. 따라서 포크는 불가피하며 이를 기다려야 합니다. 블록은 체인에서 충분히 "깊습니다". 실제로, 적과 함께 목표를 달성하기 위해 적응형 손상이 가능하려면 블록이 폴리(N) 깊이여야 합니다. 여기서 N은 시스템의 총 사용자 수입니다. 블록이 생성될 수 있다고 가정하더라도 1분 안에 N = 100만 명의 사용자가 있다면 약 200만 년을 기다려야 합니다. 블록은 N 2-deep이 되고, 블록은 N-deep이 되기까지 약 2년이 걸립니다. 대조적으로, Algorand의 blockchain은 적의 부패에도 불구하고 무시할 수 있는 확률로만 포크됩니다. 사용자는 즉시 적응할 수 있으며 새로운 블록은 즉시 신뢰할 수 있습니다. (3) 개별 비잔틴 계약을 처리하지 않습니다. 어떤 의미에서 그들은 단지 보장합니다. “가치의 증가하는 순서에 대한 최종 합의”. 그들의 프로토콜은 상태 복제 프로토콜입니다. BA보다 중요하며 개별 관심 가치에 대한 비잔틴 합의에 도달하는 데 사용할 수 없습니다. 이와 대조적으로 Algorand은 원하는 경우 한 번만 사용하여 수백만 명의 사용자가 신속하게 특정 관심 가치에 대한 비잔틴 합의에 도달합니다. (4) 약하게 동기화된 시계가 필요합니다. 즉, 모든 사용자의 시계는 약간의 시간만큼 오프셋됩니다. δ. 대조적으로, Algorand에서 시계는 (본질적으로) 동일한 "속도"만 있으면 됩니다. (5) 그들의 프로토콜은 게으르지만 정직한 사용자 또는 정직한 대다수의 온라인 사용자에게 작동합니다. 그들은 정직한 사용자가 한꺼번에 오프라인이 되는 문제를 제기한 데 대해 Algorand의 공로를 인정합니다. 이에 대응하여 게으른 정직 모델을 제시합니다. 그들의 프로토콜은 게으른 환경에서만 작동하는 것이 아닙니다. 정직 모델뿐만 아니라 적이 어떤 사용자를 선택하는지를 선택하는 적의 졸린 모델에서도 마찬가지입니다. 항상 대부분의 온라인 사용자가 정직하다면 온라인이고 오프라인입니다.2 2원본 버전의 논문에서는 실제로 적대적 졸음 모델의 보안만 고려했습니다. 는 그들의 버전보다 앞선 Algorand의 원래 버전은 또한 주어진 대다수의 온라인 플레이어는 항상 정직하지만 게으른 정직 모델을 선호하여 이를 고려 대상에서 명시적으로 제외했습니다. (예를 들어, 어느 시점에서 정직한 사용자의 절반이 오프라인으로 전환하기로 선택하면 대다수의 사용자는 온라인은 매우 악의적일 수 있습니다. 따라서 이러한 일이 발생하는 것을 방지하기 위해 대적은 자신의 대부분의 힘을 동원해야 합니다. 타락한 플레이어도 오프라인 상태가 되도록 유도합니다. 이는 명백히 그 자신의 이익에 반하는 것입니다.) 게으르지만 정직한 플레이어의 경우 온라인 사용자의 대다수가 항상 악의적인 경우에는 제대로 작동합니다. 그렇기 때문에 그렇습니다. 어느 시점에 자신이 결정적인 역할을 하게 될 것이라는 점을 알고 있는 충분한 수의 정직한 플레이어가 그 순간에 오프라인 상태가 되어서는 안 되며, 대적에 의해 강제로 오프라인 상태가 될 수도 없습니다. 왜냐하면 대적은 누가 공격을 하는지 모르기 때문입니다. 중요한 정직한 플레이어가 될 수 있습니다.(6) 단순하고 정직한 다수가 필요합니다. 대조적으로, Algorand의 현재 버전에는 다음이 필요합니다. 2/3의 정직한 다수. 우리와 가까운 또 다른 논문은 Ouroboros: 입증 가능한 보안 지분 증명 블록체인 프로토콜입니다. Kiayias, Russell, David 및 Oliynykov [20] 작성. 또한 그들의 시스템은 우리 시스템 이후에 나타났습니다. 그것은 또한 증명 가능한 방식으로 작업 증명을 생략하기 위해 암호화 분류를 사용합니다. 그러나 그들의 시스템은 다시 말해 포크가 불가피하고 빈번한 나카모토 스타일 프로토콜입니다. (그러나 그들의 모델에서는 블록이 졸린 합의 모델만큼 깊어질 필요는 없습니다.) 더욱이, 그들의 시스템은 다음과 같은 가정에 의존합니다: 저자 자신의 말에 따르면, “(1) 네트워크는 고도로 동기식입니다. (2) 선택된 이해관계자의 대부분을 필요에 따라 사용할 수 있습니다. 각 시대에 참여하기 위해, (3) 이해관계자가 오랫동안 오프라인 상태를 유지하지 않고, (4) 부패의 적응성은 선형 라운드로 측정되는 작은 지연의 영향을 받습니다. 보안 매개변수입니다.” 대조적으로 Algorand은(는) 압도적인 확률로 포크가 없으며 이 4가지 가정 중 어느 것에도 의존하지 않습니다. 특히 Algorand에서 공격자는 다음을 수행할 수 있습니다. 그가 제어하려는 사용자를 즉시 부패시킵니다.
導入
お金はますます仮想化しています。米国の約80%と推定されています。 現在のドルは台帳エントリ [5] としてのみ存在します。他の金融商品もこれに追随している。 理想的な世界では、普遍的に信頼される中心的存在である免疫を頼りにすることができます。 あらゆる可能性のあるサイバー攻撃に対して、金銭やその他の金融取引は電子的にのみ行われる可能性があります。 残念ながら、私たちはそのような世界に住んでいません。したがって、分散型暗号通貨、 Bitcoin [29]、および Ethereum などの「smart contract」システムが [4] として提案されています。 で これらのシステムの中心は、一連の取引を確実に記録する共有台帳です。 ∗これは、2 番目の著者 [24] による ArXiv 論文のより正式な (および非同期) バージョンです。 それ自体は、ゴルブノフとミカリ [18] のそれに基づいています。 Algorand のテクノロジーは以下の対象です 特許出願: US62/117,138 US62/120,916 US62/142,318 US62/218,817 US62/314,601 PCT/US2016/018300 US62/326,865 62/331,654 US62/333,340 US62/343,369 US62/344,667 US62/346,775 US62/351,011 US62/653,482 US62/352,195 US62/363,970 US62/369,447 US62/378,753 US62/383,299 US62/394,091 US62/400,361 US62/403,403 US62/410,721 US62/416,959 US62/422,883 US62/455,444 US62/458,746 US62/459,652 US62/460,928 US62/465,931支払いや契約などさまざまな情報を改ざん防止された方法で。 選ばれるテクノロジー このような改ざん防止性を保証するものは blockchain です。 ブロックチェーンは次のようなアプリケーションの背後にあります。 暗号通貨 [29]、金融アプリケーション [4]、モノのインターネット [3]。いくつかのテクニック blockchain ベースの台帳を管理することが提案されています: プルーフ・オブ・ワーク [29]、プルーフ・オブ・ステーク [2]、 実用的なビザンチン フォールト トレランス [8]、またはその組み合わせ。 ただし、現在のところ、台帳の管理は非効率的である可能性があります。たとえば、Bitcoin の proof-of-work ([14] の元の概念に基づく) アプローチは膨大な量の計算を必要とし、無駄が多い [1] はスケーリングが不十分です。さらに、事実上、ごく少数の手に権力が集中している。 したがって、私たちは、以下を提供する公開台帳を実装する新しい方法を提案したいと考えています。 信頼できる不可侵の機関によって運営される集中システムの利便性と効率性。 現在の分散型実装の非効率性と弱点。私たちのアプローチを Algorand、これまでに構築された台帳に基づいてアルゴリズムのランダム性を使用して選択するため、 有効なトランザクションの次のブロックの構築を担当する一連の検証者。当然のことながら、 私たちは、そのような選択が操作の影響を受けないことが証明されており、実際に行われるまでは予測できないことを保証します。 それは最後の瞬間だけでなく、最終的には普遍的に明らかであるということでもあります。 Algorand のアプローチは、原理的にも事実上もそうではないという意味で、非常に民主的です。 さまざまなクラスのユーザーを作成します (Bitcoin では「マイナー」と「一般ユーザー」)。 Algorand では「すべて 権限はすべてのユーザーの集合にあります。」 Algorand の注目すべき特性の 1 つは、そのトランザクション履歴が非常に小さいものだけでフォークされる可能性があることです。 確率(たとえば、1兆分の1、つまり10−18)。 Algorand は、いくつかの法的問題にも対処できます そして政治的な懸念。 Algorand アプローチは、blockchain に適用され、より一般的には、あらゆる生成方法に適用されます。 改ざん防止された一連のブロック。私たちは実際に、および に代わる新しい方法を提案しました。 blockchains よりも効率的です。これは独立した関心事かもしれません。 1.1 Bitcoin の仮定と技術的問題 Bitcoin は非常に独創的なシステムであり、その後の大量の研究に影響を与えました。それでも、それは も問題があります。その根底にある前提と技術的問題をまとめてみましょう。 実際には、Bitcoin のような、proof-of-work に基づく基本的にすべての暗号通貨によって共有されます。 この概要については、Bitcoin で、ユーザーは複数の公開鍵を所有できることを思い出していただくだけで十分です。 デジタル署名スキームの、お金は公開鍵に関連付けられている、そして支払いは ある公開鍵から別の公開鍵にいくらかの金額を転送するデジタル署名。本質的には、 Bitcoin は、処理されたすべての支払いを一連のブロック B1、B2、... に整理します。 。 .、それぞれは複数で構成されます B1 のすべての支払いが任意の順序で行われ、続いて B2 の支払いが任意の順序で行われるような支払い、 などは、一連の有効な支払いを構成します。各ブロックは平均して 10 分ごとに生成されます。 この一連のブロックはチェーンです。これは、あらゆる変更が確実に行われるように構造化されているためです。 単一のブロック内で後続のすべてのブロックに浸透するため、変更を発見しやすくなります。 支払い履歴。 (後で説明するように、これは各ブロックに暗号化を含めることによって実現されます。 このようなブロック構造は、blockchain と呼ばれます。 仮定: 計算能力の正直な過半数 Bitcoin は悪意がないことを前提としています エンティティ (または調整された悪意のあるエンティティの連合体) が、計算の大部分を制御します。 ブロック生成に専念する電力。実際、そのようなエンティティは blockchain を変更できます。支払い履歴を好き勝手に書き換えます。特に、支払い\(\wp\)を行うことができます。 支払われた給付金を受け取り、その後、\(\wp\)の痕跡をすべて「消去」します。 技術的問題 1: 計算上の無駄 Bitcoin の proof-of-work をブロックするアプローチ 生成には膨大な量の計算が必要です。現在、わずか数百人ですが、 システム内に数千の公開鍵があり、上位 500 の最も強力なスーパーコンピュータだけが集めることができます。 Bitcoin プレーヤーに必要な総計算能力のわずか 12.8% に過ぎません。これ 大幅に多くのユーザーがシステムに参加すると、計算量が大幅に増加します。 技術課題2:電力の集中 今日は、あまりにも量が多かったので、 計算が必要な場合、ユーザーは通常のデスクトップ (ましてやデスクトップ) を使用して新しいブロックを生成しようとします。 携帯電話)、損失が予想されます。実際、通常のコンピュータで新しいブロックを計算するには、 計算に必要な電力の予想コストが、予想される報酬を超えています。 特別に構築されたコンピューター (「新しいブロックをマイニングする」以外のことは何もしない) のプールのみを使用します。 新しいブロックを生成することで利益が期待できるかもしれません。したがって、今日では事実上、次の 2 つが存在します。 ユーザーの分離したクラス: 支払いのみを行う通常のユーザーと、特殊なマイニング プール 新しいブロックのみを検索します。 したがって、最近の時点で、ブロックの総計算能力が 世代はわずか 5 つのプール内にあります。このような状況では、大多数の 正直なところ、計算能力の信頼性は低くなります。 技術的問題 3: あいまいさ Bitcoin では、blockchain は必ずしも一意である必要はありません。確かに その最新部分はフォークすることがよくあります。blockchain は、たとえば、B1 である可能性があります。 。 。 、Bk、B' k+1、B' k+2、によると 1 人のユーザーと B1、. 。 。 、Bk、B'' k+1、B'' k+2、B'' 別のユーザーによれば、k+3。いくつかのブロックが完了した後でのみ、 チェーンに追加された場合、最初の k + 3 ブロックが同じであると合理的に確信できますか すべてのユーザーのために。したがって、最後のブロックに含まれる支払いにすぐに依存することはできません。 チェーン。ブロックが十分に深くなるかどうかを待って確認する方が賢明です。 blockchain であるため、十分に安定しています。 これとは別に、Bitcoin に関して法執行機関と金融政策に関する懸念も提起されています。1 1.2 Algorand、要約すると 設定 Algorand は非常に厳しい環境で動作します。簡単に言うと、 (a) 許可のない環境と許可された環境。 Algorand は、たとえ 完全に許可のない環境では、任意の数のユーザーが参加できます。 いかなる審査や許可も必要とせず、いつでもシステムを利用できます。もちろん、Algorand は機能します 許可された環境ではさらに優れています。 1Bitcoin の支払いによって提供される (擬似) 匿名性は、マネーロンダリングや資金調達に悪用される可能性があります。 犯罪者やテロ組織のこと。従来の紙幣や金の延べ棒は、原則として完璧な品質を提供します。 匿名性も同様の課題を引き起こすはずですが、これらの通貨の現物性により、お金の動きが大幅に遅くなります。 法執行機関によるある程度の監視を可能にするため。 「お金を印刷する」能力は、国民国家の非常に基本的な権限の 1 つです。したがって、原則として、大規模な 独立変動通貨の採用により、この力が抑制される可能性があります。ただし、現時点では Bitcoin は実現には程遠いです。 政府の金融政策に対する脅威ではありますが、その拡張性の問題により、決して脅威にならない可能性があります。(b) 非常に敵対的な環境。 Algorand は非常に強力な敵に耐えます。 (1) 必要なときに、必要なユーザーを即座に破損させます。 許可のない環境では、システム内のお金の 2/3 は正直なユーザーに属します。 (で 許可された環境では、お金に関係なく、ユーザーの 2/3 が正直であれば十分です。) (2) すべての破損したユーザーを完全に制御し、完全に調整します。そして (3) 各メッセージが誠実なユーザーによって送信された場合に限り、すべてのメッセージの配信をスケジュールします。 時間 \(\lambda\)m 以内に正直なユーザーの 95% に到達します。これは m のサイズのみに依存します。 主な特性 強力な敵の存在にもかかわらず、Algorand • 必要な計算量は最小限です。基本的に、ユーザーの数に関係なく、 システム内に存在する場合、1500 人のユーザーはそれぞれ、せいぜい数秒間実行する必要があります。 計算。 • 新しいブロックは 10 分以内に生成され、事実上、blockchain から離れることはありません。 例えば、予想では、第1の実施形態におけるブロックを生成する時間はより短い。 Λ + 12.4\(\lambda\) よりも優れています。ここで、Λ は、ピアツーピアのゴシップでブロックを伝播するのに必要な時間です。 選択するブロック サイズに関係なく、\(\lambda\) は 1,500 個の 200Blong メッセージを伝播する時間です。 (真の分散型システムでは、Λ は本質的に固有のレイテンシであるため、 Algorand ブロック生成の制限要因はネットワーク速度です。) 2 番目の実施形態には次のような特徴があります。 実際に実験的に (? によって) テストされており、ブロックが 40 秒未満で生成されることが示されています。 秒。 さらに、Algorand の blockchain は無視できる確率 (つまり、1 未満) でのみフォークする可能性があります。 1 兆単位)、したがってユーザーは、ブロックが完了するとすぐに、新しいブロックに含まれる支払いを中継することができます。 ブロックが表示されます。 • すべての権限はユーザー自身にあります。 Algorand は真の分散システムです。特に、 どのトランザクションを制御できる外部エンティティ (Bitcoin の「マイナー」など) は存在しません。 認識されています。 Algorand のテクニック。 1. 新しい高速ビザンチン協定プロトコル。 Algorand は次の方法で新しいブロックを生成します 新しい暗号化、メッセージ パッシング、バイナリ ビザンチン協定 (BA) プロトコル、BA⋆。プロトコル BA⋆は、いくつかの追加特性 (これについてはすぐに説明します) を満たすだけでなく、非常に高速です。 大まかに言えば、そのバイナリ入力バージョンは 3 ステップのループで構成されており、プレイヤー i が単一のメッセージを送信します。 他のプレイヤー全員にメッセージを送ります。完全な同期ネットワークで実行され、さらに多くの機能が追加されます。 プレイヤーの 2/3 が正直である場合、確率は 1/3 以上で、各ループの後、プロトコルは次のように終了します。 合意。 (プロトコル BA⋆ がビザンチン協定の元の定義を満たしていることを強調します) ピーズ、ショスタコ、ランポート [31] の、弱体化なし。) Algorand は、このバイナリ BA プロトコルを利用して、さまざまなコミュニケーションで合意に達します。 新しいブロックごとにモデルを作成します。合意されたブロックは、規定の数の認証を介して認証されます。 適切な検証者のデジタル署名が含まれ、ネットワークを通じて伝播されます。 2. 暗号の分類。非常に高速ですが、BA⋆プロトコルはさらに多くの利点をもたらします。 何百万ものユーザーがプレイした場合の速度。したがって、Algorand は BA⋆の選手を選出します。すべてのユーザーのセットのはるかに小さいサブセット。異種の権力集中を避けるために この問題では、新しいブロック Br はそれぞれ、BA⋆ の新たな実行を通じて構築され、合意されます。 選択された検証者の別のセット、SV r による。原則として、そのようなセットを選択するのは次のような困難になる可能性があります。 Br を直接選択します。私たちは、この潜在的な問題を、次のようなアプローチと呼んでいます。 Maurice Herlihy の洞察力に富んだ提案、暗号ソート。仕分けというのは、 資格のある大規模な集団から無作為に役人を選択する[6]。 (仕分け練習をしました 何世紀にもわたって、たとえばアテネ、フィレンツェ、ヴェネツィアの共和国によって。現代の司法では システムでは、陪審員を選ぶためにランダムな選択がよく使用されます。最近ではランダムサンプリングも行われています David Chaum [9] によって選挙について提唱されました。) 分散型システムでは、もちろん、 各検証者セットSV r のメンバーをランダムに選択するために必要なランダムコインには問題があります。 したがって、すべてのユーザーの母集団から各検証セットを選択するために暗号化に頼ります。 自動(つまり、メッセージ交換を必要としない)かつランダムであることが保証された方法で。 本質的には、暗号化関数を使用して、前のブロックから自動的に決定します。 Br-1、新しいブロック Br の提案を担当するユーザー、リーダー、および検証者セット SV r、 リーダーが提案したブロックについて合意に達するよう請求する。悪意のあるユーザーが影響を与える可能性があるため、 Br−1 の構成(たとえば、その支払いの一部を選択することによって)を特別に構築して使用します。 r 番目のブロックのリーダーと検証子セット SV r が確かに正しいことを証明するための追加入力 ランダムに選ばれます。 3. 数量 (シード) Qr.次の目的で、blockchain の最後のブロック Br−1 を使用します。 新しいブロックの構築を担当する次の検証者セットとリーダーを自動的に決定します Br.このアプローチの課題は、わずかに異なる支払いを選択するだけで、 前のラウンドでは、私たちの強力な敵対者が次のリーダーに対する驚異的なコントロールを獲得しました。たとえ彼が システム内のプレイヤー/資金の 1/1000 のみを管理しているだけで、彼はすべてのリーダーが確実に行動できるようにすることができました。 悪意のある。 (直感セクション 4.1 を参照してください。) この課題は、すべての proof-of-stake アプローチの中心です。 そして、私たちの知る限りでは、これまでのところ、この問題は十分に解決されていません。 この課題に対処するために、私たちは意図的に別の、慎重に構築し、継続的に更新しています。 定義された量 Qr は、おそらく予測できないだけでなく、影響を与えることもできません。 強力な敵。 Algorand が選択するのは Qr からであるため、Qr を r 番目のシードと呼ぶことがあります。 秘密の暗号ソートを介して、 r番目のブロック。 4. 秘密暗号による分類と秘密資格情報。検証者セットと担当リーダーを選択するために、現在の最後のブロック Br-1 をランダムかつ明確に使用します。 新しいブロック Br を構築するだけでは十分ではありません。 Br−1 は Br を生成する前に既知である必要があるため、 Br-1 に含まれる影響のない最後の量 Qr-1 も既知でなければなりません。したがって、 は検証者であり、ブロック Br の計算を担当するリーダーです。したがって、私たちの強力な敵は、 彼らがBrについて議論する前に、即座に彼ら全員を堕落させるかもしれない。 彼らが認証するブロックを完全に制御します。 この問題を防ぐために、リーダー (実際には検証者も) は自分たちの役割を密かに知りますが、 実際にその役割を担っているすべての人に証明できる適切な資格情報を計算します。いつ ユーザーは、自分が次のブロックのリーダーであることを内密に認識し、最初に密かに自分のブロックを組み立てます。 彼自身が新しいブロックを提案し、それを自分のブロックと一緒に(認証できるように)広めます。 資格情報。この方法では、敵対者は次のリーダーが誰であるかをすぐに認識します。 ブロックはあり、彼はすぐに彼を堕落させることができますが、敵対者にとっては遅すぎるでしょう。 新しいブロックの選択に影響します。確かに、彼はもうリーダーのメッセージを「コールバック」することはできません強力な政府がウィキリークスによってウイルス的に拡散されたメッセージを瓶に戻すよりも。 これから説明するように、リーダーの独自性を保証することはできませんし、誰がリーダーであるかを誰もが確信できるわけでもありません。 リーダー自身も含めてです!ただし、Algorand では、明確な進捗が保証されます。 5. 選手の交代可能性。新しいブロックを提案した後、リーダーは「死ぬ」(あるいは死ぬ)のも同然かもしれない。 敵対者によって破壊されました)、彼の仕事は終わったからです。しかし、SV r の検証者にとっては、状況はそれほど変わりません。 シンプル。確かに、十分な数の署名を持つ新しいブロック Br の認証を担当しており、 彼らはまずリーダーが提案したブロックに関してビザンチン協定を締結しなければならない。問題は、 どんなに効率的であっても、BA⋆には複数のステップと、プレイヤーの 2/3 以上の誠実さが必要です。 これは問題です。効率上の理由から、BA⋆ のプレーヤー セットは小さなセット SV r から構成されているからです。 すべてのユーザーのセットの中からランダムに選択されます。したがって、私たちの強力な敵は、たとえそれができないとしても、 全ユーザーの 1/3 が破損しているため、SV r のすべてのメンバーが破損している可能性があります。 幸いなことに、ピアツーピア方式でメッセージを伝播することによって実行されるプロトコル BA⋆ は、プレーヤーの置き換えが可能であることが証明されます。この新しい要件は、プロトコルが正しく、 各ステップがまったく新しいランダムな方法で実行された場合でも、効率的に合意に達します。 独立して選ばれたプレイヤーのセット。したがって、何百万ものユーザーがいる場合、それぞれの小さなプレイヤーのセットは BA のステップに関連付けられている⋆は、おそらく次のセットとの空の交差があります。 さらに、BA⋆の異なるステップのプレイヤーのセットは、おそらくまったく異なるものになるでしょう。 基数。さらに、各セットのメンバーは、次のセットのプレーヤーが誰になるかを知りません。 内部状態を密かに渡してはなりません。 ダイナミックで非常に強力なプレーヤーを倒すには、プレーヤーの交換可能特性が実際に非常に重要です 私たちが想定している敵。私たちは、プレーヤー交換プロトコルが多くの分野で重要になると信じています。 コンテキストとアプリケーション。特に、小さなサブプロトコルを安全に実行するために重要になります。 より大きなプレイヤーの世界に組み込まれたダイナミックな敵は、 全プレイヤーのほんの一部ですが、小規模なプレイヤー全員を堕落させるのは難しいことではありません。 サブプロトコル。 追加の特性/テクニック: 怠惰な正直さ 正直なユーザーは自分の規定に従います これには、オンラインになってプロトコルを実行することが含まれます。以来、Algorand にはささやかなものしかありません 計算と通信の要件、オンラインであり、「中で」プロトコルを実行している 「背景」は大きな犠牲ではありません。もちろん、誠実なプレイヤーの中にもいくつかの「不在」はあります。 接続が突然失われたり、再起動が必要になったりする場合は、自動的に許容されます (理由は、 このような少数のプレイヤーは一時的に悪意があると常に考えることができます)。ただし、次のことを指摘しておきます。 Algorand は、新しいモデルで動作するように簡単に適応できます。そのモデルでは、正直なユーザーが ほとんどの時間はオフラインです。当社の新モデルは次のように非公式に紹介されます。 怠惰な正直さ。大まかに言えば、ユーザー i は、(1) 決められたことをすべて守っている場合、怠け者だが正直であると言えます。 指示、プロトコールへの参加を求められたとき、および (2) 参加を求められたとき プロトコルに従うことはまれであり、適切な事前通知が必要です。 正直さについてこのように緩やかな概念があると、正直な人は誠実であるという確信がさらに高まるかもしれません。 必要なときにいつでもすぐに利用できるようにし、Algorand がそのような場合に保証します。 システムは、特定の時点で次のような場合でも安全に動作します。 参加プレイヤーの大半は悪意のあるプレイヤーです。1.3 密接に関連する作品 Proof-of-Work アプローチ (引用された [29] や [4] など) は、私たちのアプローチとはまったく直交しています。も同様です メッセージ パッシング ビザンチン協定または実用的なビザンチン フォールト トレランスに基づくアプローチ (引用された [8] のように)。実際、これらのプロトコルはすべてのユーザー間で実行できず、 私たちのモデルでは、適切な少数のユーザー セットに制限します。実際、私たちの強力な敵は、 実際に BA プロトコルを実行する責任を負う小規模なセットに関与するすべてのユーザーが即座に破損します。 私たちのアプローチは、ユーザーの「力」という意味で、プルーフ・オブ・ステーク [2] に関連していると考えることができます。 ブロックの構築は、システム内で所有するお金に比例します(「言う」のとは対照的に) 彼らが「エスクロー」に預けたお金)。 私たちの論文に最も近い論文は、Pass と Shi [30] の Sleepy Consensus Model です。を避けるために、 proof-of-work アプローチでは大量の計算が必要となるため、彼らの論文が依存しています (親切にも クレジット) Algorand の秘密の暗号ソート。この重要な側面が共通しているため、いくつかの 私たちの論文間には大きな違いがあります。特に、 (1) 設定は許可のみです。対照的に、Algorand もパーミッションレス システムです。 (2) 彼らはnakamoto スタイルのプロトコルを使用しているため、blockchain は頻繁にフォークします。とはいえ proof-of-work を省略し、彼らのプロトコルでは、秘密裏に選ばれたリーダーが、その期間を延長するよう求められています。 最長有効 (よりリッチな意味で) blockchain。したがって、フォークは避けられず、それが完了するまで待つ必要があります。 ブロックはチェーンの十分に「深い」ところにあります。 確かに、敵と協力して目的を達成するには 適応的な破損が発生する可能性があるため、ブロックの深さがポリ(N)である必要があります。ここで、Nは システム内のユーザーの総数。ブロックが生成されると仮定しても、次の点に注意してください。 1 分以内に、N = 100 万人のユーザーがいる場合、約 200 万年待たなければなりません。 ブロックが深さ N 2 になるまで、ブロックが深さ N になるまで約 2 年かかります。対照的に、 Algorand の blockchain は、敵対者が破損しているにもかかわらず、無視できる確率でのみフォークします ユーザーは即座に適応的に機能し、その新しいブロックはすぐに信頼できます。 (3) 個別のビザンチン協定は扱っていない。 ある意味、彼らは保証するだけです 「増大する一連の価値観に関する最終的な合意」。彼らのプロトコルは状態レプリケーションプロトコルです。 BA のものよりも重要であり、関心のある個別の値についてビザンチン合意に達するために使用することはできません。 対照的に、Algorand は、必要に応じて 1 回だけ使用して、何百万ものユーザーが迅速に 特定の関心のある値についてビザンチン合意に達する。 (4) 弱く同期されたクロックが必要です。つまり、すべてのユーザーの時計がわずかな時間だけずれています。 δ。対照的に、Algorand では、クロックは (本質的に) 同じ「速度」を持つだけで済みます。 (5) 彼らのプロトコルは、怠け者だが正直なユーザー、または大多数の正直なオンライン ユーザーに対して機能します。 彼らは、正直なユーザーが一斉にオフラインになるという問題を提起した Algorand を親切に称賛しています。 それに応じて怠惰な正直モデルを提唱します。彼らのプロトコルは怠惰な環境で機能するだけではありません 正直モデルだけでなく、敵対者がどのユーザーを選択するかという、敵対的眠気モデルでもあります。 オンライン ユーザーの大多数が常に正直であれば、どれがオンラインでどれがオフラインであるかが決まります。2 2 彼らの論文の元のバージョンでは、実際には、敵対的スリーピー モデルにおけるセキュリティのみが考慮されていました。 の 彼らのバージョンに先行する Algorand のオリジナル バージョンも、特定の過半数が オンライン プレーヤーは常に正直ですが、怠惰な正直モデルを支持して、考慮から明示的に除外されています。 (たとえば、ある時点で誠実なユーザーの半数がオフラインになることを選択した場合、大多数のユーザーは オンラインは悪意のあるものである可能性が非常に高いです。したがって、これが起こらないようにするために、敵対者は自分の攻撃のほとんどを強制する必要があります。 破損したプレイヤーもオフラインになりますが、これは明らかに彼自身の利益に反します。) 過半数を獲得したプロトコルに注目してください。 オンラインのユーザーの大多数が常に悪意を持っている場合、怠け者だが正直なプレイヤーが問題なく動作します。これはそうです、なぜなら 十分な数の正直なプレイヤーは、まれな時点で重要な存在になることを知っていて、選出するだろう。 そのような瞬間にオフラインになってはなりませんし、敵対者が誰を攻撃しているのかわからないため、敵対者によってオフラインに強制されることもできません。 正直なプレイヤーは重要かもしれない。(6) 単純な正直な多数決が必要である。対照的に、Algorand の現在のバージョンでは、 2/3の正直な過半数。 私たちに近いもう 1 つの論文は、Ouroboros: A Provively Secure Proof-of-Stake Blockchain Protocol です。 Kiayias、Russell、David、Oliynykov [20] 著。彼らのシステムも私たちのシステムの後に登場しました。それも 暗号ソートを使用して、証明可能な方法で作業証明を不要にします。しかし、彼らの このシステムもまた、ナカモト スタイルのプロトコルであり、フォークが避けられず、頻繁に発生します。 (ただし、彼らのモデルでは、ブロックはスリーピーコンセンサスモデルほど深くする必要はありません。) さらに、 彼らのシステムは次の仮定に依存しています。著者自身の言葉を借りれば、「(1) ネットワークは高度に同期性が高く、(2) 選択された関係者の大多数は必要に応じて利用可能です。 各エポックに参加する、(3) 利害関係者が長期間オフラインにならない、 (4) 破損の適応性は、ラウンド単位で線形に測定される小さな遅延の影響を受けます。 セキュリティパラメータ。」対照的に、Algorand は、圧倒的な確率でフォークがなく、 これら 4 つの仮定のいずれにも依存しません。特に、Algorand では、敵対者は次のことが可能です。 彼が制御したいユーザーを瞬時に破壊します。
기본 사항
2.1 암호화 프리미티브 이상적인 해싱. 우리는 효율적으로 계산 가능한 암호화 hash 함수 H에 의존할 것입니다. 임의로 긴 문자열을 고정 길이의 이진 문자열로 매핑합니다. 오랜 전통을 이어가며 모델로 활동하고 있습니다. H는 무작위 oracle로서 본질적으로 가능한 각 문자열 s를 무작위로 매핑하는 함수입니다. 선택한 길이의 이진 문자열 H(s)를 독립적으로 선택한(그리고 고정된) 본 논문에서 H는 256비트의 긴 출력을 갖는다. 실제로 그러한 길이는 충분히 짧습니다. 시스템을 안전하게 만들 수 있을 만큼 충분히 길고 효율적입니다. 예를 들어, 우리는 H가 충돌 복원력을 갖기를 원합니다. 즉, H(x) = H(y)가 되는 두 개의 서로 다른 문자열 x와 y를 찾는 것이 어려워야 합니다. H가 256비트 길이의 출력을 갖는 임의의 oracle인 경우 이러한 문자열 쌍을 찾는 것은 실제로 어렵다. (무작위로 시도하고 생일 역설에 의존하면 2256/2 = 2128이 필요합니다. 재판.) 디지털 서명. 디지털 서명을 통해 사용자는 서로 정보를 인증할 수 있습니다. 비밀 키를 공유하지 않고 공유합니다. 디지털 서명 체계는 세 가지 빠른 서명으로 구성됩니다. 알고리즘: 확률적 키 생성기 G, 서명 알고리즘 S, 검증 알고리즘 V. 충분히 높은 정수인 보안 매개변수 k가 주어지면 사용자 i는 G를 사용하여 다음 쌍을 생성합니다. k-비트 키(즉, 문자열): "공개" 키 pki 및 일치하는 "비밀" 서명 키 스키. 결정적으로, 공개 키는 해당 비밀 키를 "배신"하지 않습니다. 즉, pki에 대한 지식이 있어도 나 말고 다른 사람은 천문학적 시간보다 짧은 시간에 스키를 계산할 수 있습니다. 사용자 i는 스키를 사용하여 메시지에 디지털 서명을 합니다. 가능한 각 메시지(이진 문자열) m에 대해 i가 먼저 hashes m 그런 다음 입력 H(m)에 대해 알고리즘 S를 실행하고 k비트 문자열을 생성하기 위해 스키를 실행합니다. sigpki(m) \(\triangleq\)S(H(m), 스키) .3 3H는 충돌 복원력이 있기 때문에 하나에 서명함으로써 다른 서명에 "우연히 서명"하는 것은 사실상 불가능합니다. 메시지 m'.이진 문자열 sigpki(m)은 i의 m 디지털 서명(pki에 상대적)이라고 하며 다음과 같이 될 수 있습니다. 공개 키 pki가 문맥에서 명확할 때 sigi(m)로 더 간단하게 표시됩니다. pki를 아는 사람은 누구나 이를 사용하여 i가 생성한 디지털 서명을 확인할 수 있습니다. 구체적으로, 에 (a) 플레이어 i의 공개 키 pki, (b) 메시지 m, (c) 문자열 s, 즉 i가 주장하는 문자열을 입력합니다. 메시지 m의 디지털 서명에 대해 검증 알고리즘 V는 YES 또는 NO를 출력합니다. 디지털 서명 체계에 필요한 속성은 다음과 같습니다. 1. 적법한 서명은 항상 확인됩니다. s = sigi(m)이면 V(pki, m, s) = Y ES입니다. 그리고 2. 디지털 서명은 위조하기 어렵습니다. 스키에 대한 지식이 없으면 그러한 문자열을 찾는 데 시간이 걸립니다. i가 서명하지 않은 메시지 m의 경우 V(pki, m, s) = Y ES는 천문학적으로 길다. (Goldwasser, Micali 및 Rivest [17]의 강력한 보안 요구 사항에 따라 이는 사실입니다. 다른 메시지의 서명을 얻을 수 있는 경우에도 마찬가지입니다.) 따라서 다른 사람이 자신을 대신하여 메시지에 서명하는 것을 방지하려면 플레이어가 자신의 메시지를 보관해야 합니다. 키 스키 비밀(따라서 "비밀 키"라는 용어)에 서명하고 누구나 메시지를 확인할 수 있도록 합니다. 그가 서명하면 나는 그의 키 pki(따라서 "공개 키"라는 용어)를 공개하는 데 관심이 있습니다. 일반적으로 메시지 m은 서명 sigi(m)에서 검색할 수 없습니다. 사실상 거래를 하려면 개념적으로 편리한 "검색 가능성" 속성을 충족하는 디지털 서명을 사용합니다(즉, 서명자와 메시지가 서명에서 쉽게 계산될 수 있도록 보장합니다. SIGpki(m) = (i, m, sigpki(m)) 그리고 SIGi(m) = (i, m, sigi(m)), pki가 명확한 경우. 고유한 디지털 서명. 우리는 또한 다음을 만족하는 디지털 서명 체계(G, S, V)를 고려합니다. 추가 속성을 따릅니다. 3. 독창성. 다음과 같은 문자열 pk′, m, s 및 s′를 찾는 것은 어렵습니다. s̸= s′ 그리고 V(pk′, m, s) = V(pk′, m, s′) = 1입니다. (고유성 속성은 합법적으로 생성되지 않은 문자열 pk'에도 적용됩니다. 공개 키. 그러나 특히 고유성 속성은 다음을 사용하는 경우 다음을 의미합니다. 일치하는 비밀 키 sk와 함께 공개 키 pk를 계산하기 위해 지정된 키 생성기 G, 따라서 sk를 알았더라면 그가 두 가지 다른 디지털 장치를 찾는 것도 본질적으로 불가능했을 것입니다. pk와 관련된 동일한 메시지의 서명.) 비고 • 고유 서명부터 검증 가능한 무작위 함수까지. 디지털에 비해 고유성 속성이 있는 서명 체계에서 m \(\to\) H(sigi(m)) 매핑은 다음과 연관됩니다. 가능한 각 문자열 m, 무작위로 선택된 고유한 256비트 문자열, 그리고 이 문자열의 정확성 서명 sigi(m)이 주어지면 매핑이 증명될 수 있습니다. 즉 고유성 속성을 본질적으로 만족시키는 이상적인 hashing 및 전자서명 방식이다. 소개된 바와 같이 검증 가능한 무작위 함수의 기본 구현을 제공합니다. Micali, Rabin 및 Vadhan [27]. (원래 구현은 필연적으로 더 복잡했습니다. 이상적인 hashing에 의존하지 않았기 때문입니다.)• 디지털 서명에 대한 세 가지 요구 사항. Algorand에서 내가 디지털에 의존하는 사용자는 서명 (1) 본인의 결제를 인증합니다. 이 애플리케이션에서 키는 "장기적"일 수 있습니다(예: 장기간에 걸쳐 많은 메시지에 서명) 일반적인 서명 체계에서 비롯됩니다. (2) i가 라운드 r의 일부 단계 s에서 행동할 자격이 있음을 증명하는 자격 증명을 생성합니다. 여기, 키는 장기적일 수 있지만 고유성 속성을 충족하는 체계에서 나와야 합니다. (3) 그가 행동하는 각 단계에서 내가 보내는 메시지를 인증합니다. 여기서 키는 다음과 같아야 합니다. 임시적(즉, 처음 사용 후 폐기됨)이지만 일반 서명 체계에서 나올 수 있습니다. • 적은 비용의 단순화. 단순화를 위해 각 사용자 i가 단일 장기 키를 갖는 것을 상상합니다. 따라서 이러한 키는 고유성을 지닌 서명 체계에서 나와야 합니다. 재산. 이러한 단순성은 계산 비용이 적습니다. 일반적으로 실제로 고유한 디지털 서명은 일반 서명보다 생성 및 확인 비용이 약간 더 비쌉니다. 2.2 이상적인 공공 원장 Algorand은 이상적인 공개 원장을 기반으로 다음 결제 시스템을 모방하려고 합니다. 1. 초기 상태. 돈은 개별 공개 키(개인적으로 생성되고 사용자 소유). pk1, . . . , pkj는 초기 공개 키이고 a1, . . . , j 각각의 초기 금액 단위의 경우 초기 상태는 다음과 같습니다. S0 = (pk1, a1), . . . , (pkj, aj) , 이는 시스템 내에서 상식으로 간주됩니다. 2. 지불. pk를 현재 0개 이상의 화폐 단위를 갖는 공개 키로 두고, pk′는 또 다른 공개 키로 둡니다. 키, 그리고 a′는 a보다 크지 않은 음수가 아닌 숫자입니다. 그렇다면 (유효한) 결제는 디지털 결제입니다. pk를 기준으로 a' 화폐 단위를 pk에서 pk'로 함께 전송하는 것을 지정하는 서명 몇 가지 추가 정보와 함께. 기호에서는, \(\wp\)= SIGpk(pk, pk′, a′, I, H(I)), 유용하지만 민감하지 않은 추가 정보(예: 시간 정보 및 결제 식별자) 및 민감한 것으로 간주되는 추가 정보(예: 지불 이유, pk 및 pk′ 소유자의 신원 등). 우리는 pk(또는 그 소유자)를 지불인으로, 각 pk'(또는 그 소유자)를 수취인으로, a'를 다음과 같이 지칭합니다. 결제 금액 \(\wp\). 결제를 통한 무료 가입. 사용자는 원할 때마다 시스템에 참여할 수 있습니다. 자신의 공개/비밀 키 쌍을 생성합니다. 따라서, 에 나타나는 공개키 pk'는 위의 지불은 돈을 "소유"한 적이 없는 새로 생성된 공개 키일 수 있습니다. 전에. 3. 매직 레저. 이상화된 시스템에서는 모든 결제가 유효하며 변조 방지 기능으로 표시됩니다. 모든 사람이 볼 수 있도록 "하늘에 게시된" 지불 세트 목록 L: L = 1페이, 2페이, . . . ,각 블록 PAY r+1은 블록 출현 이후 이루어진 모든 지불 세트로 구성됩니다. 지불 r. 이상적인 시스템에서는 고정된(또는 유한한) 시간이 지나면 새로운 블록이 나타납니다. 논의. • 더 많은 일반 지불 및 미사용 거래 출력. 보다 일반적으로 공개 키 pk가 a 금액을 소유한 경우 pk의 유효한 지불 \(\wp\)을 통해 금액 a′을 이체할 수 있습니다. 1, 아' 2, . . ., 각각 키 pk'에 1, PK′ 2, . . ., P가 있는 한 자아′ j \(\leq\)a. Bitcoin 및 유사한 시스템에서는 공개 키 pk가 소유한 자금이 별도의 자산으로 분리됩니다. 금액, pk가 지급한 금액은 해당 분리된 금액 전체를 이체해야 합니다. pk가 a의 a' < a 부분만 다른 키로 전송하려면 다음 키도 전송해야 합니다. 잔액, 사용되지 않은 트랜잭션 출력을 다른 키(아마도 pk 자체)로 보냅니다. Algorand은 금액이 분리된 키와도 작동합니다. 하지만, 그 부분에 집중하기 위해 Algorand의 새로운 측면으로 인해 더 단순한 결제 방식을 고수하는 것이 개념적으로 더 간단합니다. 그리고 그와 관련된 단일 금액을 갖는 키. • 현재 상태. 이상화된 계획은 현재에 대한 정보를 직접 제공하지 않습니다. 시스템 상태(즉, 각 공개 키에 얼마나 많은 화폐 단위가 있는지). 이 정보 Magic Ledger에서 추론할 수 있습니다. 이상적인 시스템에서는 활성 사용자가 최신 상태 정보를 지속적으로 저장하고 업데이트하며, 그렇지 않으면 처음부터 다시 작성해야 하거나 지난 번에 다시 작성해야 했을 것입니다. 그것을 계산했다. (이 백서의 다음 버전에서는 Algorand을 확장하여 사용자는 현재 상태를 효율적인 방식으로 재구성할 수 있습니다.) • 보안 및 "개인정보 보호". 디지털 서명은 누구도 결제를 위조할 수 없음을 보장합니다. 다른 사용자. 결제\(\wp\)에서는 공개키와 금액이 숨겨지지 않지만 민감한 정보는 정보는 나야. 실제로 \(\wp\)에는 H(I)만 나타나고 H는 이상적인 hash 함수이므로 H(I) 는 임의의 256비트 값이므로 내가 무엇을 더 잘했는지 알아낼 수 있는 방법이 없습니다. 단순히 추측하면 됩니다. 하지만 내가 어떤 사람인지 증명하기 위해(예: 지불 이유를 증명하기 위해) 지불자는 I를 공개할 수도 있습니다. 공개된 I의 정확성은 H(I)를 계산하여 확인할 수 있습니다. 그리고 그 결과 값을 \(\wp\)의 마지막 항목과 비교합니다. 실제로 H는 충돌 복원력이 있으므로 H(I) = H(I′)와 같은 두 번째 값 I′을 찾는 것은 어렵습니다. 2.3 기본 개념 및 표기법 키, 사용자 및 소유자 별도로 지정하지 않는 한, 각 공개 키(줄여서 "키")는 고유성을 지닌 디지털 서명 체계에 상대적이며 장기적입니다. 내가 조인하는 공개 키 이미 시스템에 있는 다른 공개 키 j가 i에 지불할 때 시스템이 작동합니다. 색상의 경우 키를 의인화합니다. 우리는 키 i를 "그"라고 부르며, 내가 정직하다고 말하고, 내가 보낸다고 말합니다. 메시지 등을 수신합니다. 사용자는 키의 동의어입니다. 키를 구별하고 싶을 때 해당 키가 속한 사람에 대해서는 각각 "디지털 키" 및 "소유자"라는 용어를 사용합니다. 무허가 및 허가 시스템. 디지털 키가 무료인 경우 시스템은 허가가 없습니다. 언제든지 가입할 수 있으며 소유자는 여러 개의 디지털 키를 소유할 수 있습니다. 그렇지 않으면 허가됩니다.고유한 표현 Algorand의 각 개체에는 고유한 표현이 있습니다. 특히, 각각은 {(x, y, z, . . . .) : x \(\in\)X, y \(\in\)Y, z \(\in\)Z, . . .}는 미리 지정된 방식으로 정렬됩니다. 예: 첫 번째 x에서 사전식으로, 그다음 y로, 등등. 동일 속도 클록 전역 시계는 없습니다. 오히려 각 사용자는 자신만의 시계를 갖습니다. 사용자 시계 어떤 방식으로든 동기화할 필요는 없습니다. 그러나 우리는 그것들이 모두 같은 속도를 가지고 있다고 가정합니다. 예를 들어, 사용자 i의 시계 기준으로 오후 12시라면, 기준으로는 오후 2시 30분일 수 있다. 다른 사용자 j의 시계는 i의 시계 기준으로 12시 1분, j의 시계 기준으로는 2시 31분입니다. j의 시계에. 즉, “모든 사용자에게 1분은 동일합니다(충분히, 본질적으로 동일함).” 라운드 Algorand은 논리 단위 r = 0, 1, 로 구성됩니다. . ., 라운드라고 합니다. 우리는 라운드를 표시하기 위해 지속적으로 위 첨자를 사용합니다. 숫자가 아닌 수량 Q를 나타냅니다. (예: 문자열, 공개 키, 집합, 디지털 서명 등)은 라운드 r을 참조하므로 간단히 Qr이라고 씁니다. Q가 실수인 경우에만(숫자로 해석할 수 있는 이진 문자열과 반대) 다음을 수행하십시오. 기호 r이 Q의 지수로 해석될 수 없도록 Q(r)을 씁니다. (a의 시작) 라운드 r > 0에서 모든 공개 키 세트는 PKr이고 시스템 상태는 다음과 같습니다. 선생님 = 엔 나, a(r) 나 , . . . : 나는 \(\in\)PKro , 여기서 a(r) 나 공개 키 i에 사용할 수 있는 금액입니다. PKr은 다음에서 추론할 수 있습니다. Sr, Sr은 각 공개 키에 대해 다른 구성 요소를 지정할 수도 있습니다. i. 0 라운드의 경우 PK0은 초기 공개 키 집합이고 S0은 초기 상태입니다. PK0과 S0는 시스템에서 상식으로 간주됩니다. 단순화를 위해 라운드 r의 시작 부분에서 PK1, . . . , PKr 및 S1, . . . , 선생님 라운드 r에서 시스템 상태는 Sr에서 Sr+1로 전환됩니다. 라운드 r: Sr −→Sr+1. 결제 Algorand에서는 사용자가 지속적으로 결제를 합니다. 하위 섹션 2.7에 설명되어 있습니다. 사용자 i \(\in\)PKr의 결제 \(\wp\)는 동일한 형식과 의미를 갖습니다. 이상적인 시스템에서와 마찬가지로. 즉, \(\wp\)= SIGi(i, i′, a, I, H(I)) . 지불 \(\wp\)은 (1) 금액인 경우 r 라운드에서 개별적으로 유효합니다(간략히 r 라운드 지불). a는 a(r)보다 작거나 같습니다. i, 그리고 (2) r′ < r에 대해 공식 페이세트 PAY r′에는 나타나지 않습니다. (아래 설명과 같이 두 번째 조건은 \(\wp\)이 아직 유효하지 않음을 의미합니다. i의 라운드 r 지불 세트는 해당 금액의 합계가 최대 a(r)인 경우 집합적으로 유효합니다. 나. 지불 세트 라운드 R 지불 세트 P는 각 사용자 i에 대해 지불이 이루어지는 라운드 R 지불 세트입니다. P의 i(아마도 없음)는 집합적으로 유효합니다. 모든 round-r 페이세트의 집합은 PAY(r)입니다. 라운드 R P의 상위 집합이 라운드 R 지불 집합이 아닌 경우 지불 집합 P는 최대입니다. 우리는 실제로 지불 \(\wp\)이 라운드 \(\rho\), \(\wp\)= SIGi(\(\rho\), i, i′, a, I, H(I))를 지정하는 것을 제안합니다. 일부 고정된 음수가 아닌 정수 k에 대해 [\(\rho\), \(\rho\) + k] 외부의 모든 라운드에서는 유효할 수 없습니다. 4이것은 \(\wp\)가 "효과적"인지 확인하는 것을 단순화합니다(즉, 일부 급여 세트가 유효한지 여부를 결정하는 것을 단순화합니다) PAY r에는 \(\wp\)가 포함되어 있습니다. k = 0일 때 \(\wp\)= SIGi(r, i, i′, a, I, H(I)) 및 \(\wp\)/\(\in\)PAY r인 경우 \(\wp\)를 다시 제출해야 합니다.ffi공용지불세트 모든 라운드 r에 대해 Algorand은 (나중에 설명하는 방식으로) 공개적으로 선택합니다. 단일(비어 있을 수도 있음) 페이세트, PAY r, 라운드의 공식 페이세트. (본질적으로 PAY r은 "실제로" 발생한 라운드 R 지불.) 이상적인 시스템(및 Bitcoin)에서와 마찬가지로 (1) 새로운 사용자 j가 시스템에 들어갈 수 있는 유일한 방법입니다. 주어진 라운드 r의 공식 지불 세트 PAY r에 속하는 지불의 수령인입니다. 그리고 (2) PAY r은 현재 라운드 Sr에서 다음 라운드 Sr+1의 상태를 결정합니다. 상징적으로, PAY r : Sr −→Sr+1. 구체적으로, 1. 라운드 r + 1의 공개 키 세트인 PKr+1은 PKr의 합집합과 모든 키 세트로 구성됩니다. PAY r의 지불에 처음으로 나타나는 수취인 키; 그리고 2. 금액 a(r+1) 나 라운드 r + 1에서 사용자 i가 소유한 것은 ai(r)의 합입니다. 즉, 이전 라운드에서 내가 소유한 금액(i ̸\(\in\)PKr인 경우 0) — 및 금액의 합계 PAY r의 지불에 따라 i에게 지불됩니다. 요약하자면, 이상적인 시스템에서와 같이 각 상태 Sr+1은 이전 지불 내역에서 공제 가능합니다. 지불 0, . . . , 지불 r. 2.4 블록과 검증된 블록 Algorand0에서 라운드 r에 해당하는 블록 Br은 r 자체를 지정합니다. 지불 세트 r 라운드, PAY r; 설명할 수량 Qr과 이전 블록의 hash인 H(Br−1)입니다. 따라서 고정된 블록 B0부터 시작하여 전통적인 blockchain을 갖게 됩니다. B1 = (1, 페이 1, Q0, H(B0)), B2 = (2, 지불 2, Q1, H(B1)), B3 = (3, 지불 3, Q2, H(B2)), . . . Algorand에서는 블록의 신뢰성이 실제로 별도의 정보로 보증됩니다. Br을 입증된 블록인 Br로 바꾸는 "블록 인증서" CERT r. 따라서 매직 레저는 검증된 블록의 순서로 구현되며, B1, B2, . . . 토론 앞으로 살펴보겠지만 CERT r은 H(Br)에 대한 디지털 서명 세트로 구성됩니다. SV r 회원의 대다수와 각 회원이 실제로 속해 있다는 증거 SV r에. 물론 블록 자체에 CERT r 인증서를 포함할 수도 있지만 찾을 수는 없습니다. 개념적으로는 별도로 유지하는 것이 더 깔끔합니다.) Bitcoin에서 각 블록은 특별한 속성을 충족해야 합니다. 즉, "다음의 해를 포함해야 합니다. 암호화 퍼즐”, 이는 블록 생성을 계산 집약적으로 만들고 포크를 모두 불가피하게 만듭니다. 그리고 드물지 않습니다. 대조적으로, Algorand의 blockchain에는 두 가지 주요 장점이 있습니다. 최소한의 계산으로, 압도적으로 높은 확률로 포크되지 않습니다. 각 블록 Bi는 blockchain에 들어가자마자 안전하게 최종 처리됩니다.2.5 허용 가능한 실패 확률 Algorand의 보안을 분석하기 위해 우리는 확률 F를 지정합니다. 무언가 잘못되었다는 사실을 받아들입니다(예: 검증자 세트 SV r이 정직한 다수를 갖지 않는다는 사실). 암호화 hash 함수 H의 출력 길이의 경우와 마찬가지로 F도 매개변수입니다. 그러나 이 경우와 마찬가지로 보다 직관적인 결과를 얻기 위해 F를 구체적인 값으로 설정하는 것이 유용하다는 것을 알았습니다. Algorand에서는 동시에 충분한 보안을 누리는 것이 실제로 가능하다는 사실을 이해합니다. 그리고 충분한 효율성. F는 원하는 대로 설정할 수 있는 매개변수임을 강조하기 위해 처음에는 두 번째 실시예는 각각 설정했습니다. F = 10−12 그리고 F = 10−18 . 토론 10-12는 실제로 1조분의 1보다 적다는 점에 유의하세요. 우리의 응용 프로그램에서는 F를 선택하는 것이 적절합니다. 10-12는 확률이 아니라는 점을 강조하겠습니다. 이를 통해 공격자는 정직한 사용자의 지불금을 위조할 수 있습니다. 모든 결제는 디지털 방식으로 이루어집니다. 서명되므로 적절한 디지털 서명을 사용하면 결제가 위조될 확률은 다음과 같습니다. 10-12보다 훨씬 낮으며 실제로 본질적으로 0입니다. 우리가 기꺼이 용납할 수 있는 나쁜 사건 확률 F는 Algorand의 blockchain 포크입니다. F로 설정하면 1분 길이의 라운드에서는 Algorand의 blockchain에서 포크가 드물게 발생할 것으로 예상됩니다. (대략) 190만 년에 한 번. 대조적으로, Bitcoin에서는 포크가 꽤 자주 발생합니다. 더 까다로운 사람은 F를 더 낮은 값으로 설정할 수 있습니다. 이를 위해 두 번째 실시예에서는 F를 10−18로 설정하는 것을 고려합니다. 참고로 1초마다 블록이 생성된다고 가정하면 1018입니다. 빅뱅부터 현재까지 우주가 우주에 걸린 추정 시간(초)입니다. 시간. 따라서 F = 10−18인 경우 블록이 1초 안에 생성되면 다음과 같은 기간을 예상해야 합니다. 포크를 볼 수 있는 우주. 2.6 적대적 모델 Algorand은 매우 적대적인 모델에서 보안을 유지하도록 설계되었습니다. 설명해 보겠습니다. 정직하고 악의적인 사용자 사용자가 자신의 모든 프로토콜 지침을 따르면 정직합니다. 메시지를 완벽하게 보내고 받을 수 있습니다. 사용자가 악의적입니다(즉, 비잔틴, 분산 컴퓨팅의 용어) 규정된 지침에서 임의로 벗어날 수 있는 경우. 대적 대적자는 색상을 의인화한 효율적인(기술적으로 다항식 시간) 알고리즘으로, 원하는 사용자를 언제라도 즉시 악의적으로 만들 수 있습니다(주제 그가 손상시킬 수 있는 사용자 수의 상한선까지만). 대적은 모든 악의적인 사용자를 완전히 통제하고 완벽하게 조정합니다. 그는 모든 조치를 취한다 모든 메시지를 받고 보내는 것을 포함하여 그들을 대신하여 그들이 다음에서 벗어나도록 할 수 있습니다. 임의의 방식으로 규정된 지침을 제공합니다. 아니면 단순히 전송을 보내는 손상된 사용자를 격리할 수도 있습니다. 그리고 메시지 수신. 사용자 i가 악의적이라는 사실을 자동으로 아는 사람은 아무도 없다는 점을 분명히 합시다. 대적이 그에게 취하는 행동으로 인해 나의 악의가 나타날 수도 있습니다. 그러나 이 강력한 적수는 • 무한한 계산 능력이 없으며 디지털 데이터를 성공적으로 위조할 수 없습니다. 가능성이 거의 없는 경우를 제외하고는 정직한 사용자의 서명입니다. 그리고• 정직한 사용자 간의 메시지 교환을 어떤 식으로든 방해할 수 없습니다. 게다가 정직한 사용자를 공격하는 그의 능력은 다음 가정 중 하나에 의해 제한됩니다. 정직이 대부분의 돈 우리는 HMM(Honest Majority of Money)의 연속체를 고려합니다. 가정: 즉, 음이 아닌 정수 k와 실수 h > 1/2에 대해, HHMk > h: 모든 라운드 r의 정직한 사용자는 전체 돈의 h보다 더 큰 부분을 소유했습니다. 라운드 r −k에서의 시스템. 논의. 모든 악의적인 사용자가 자신의 행동을 완벽하게 조정한다고 가정합니다(마치 통제된 것처럼). 단일 실체, 즉 적에 의한)는 다소 비관적인 가설입니다. 너무 완벽한 조화 많은 개인이 달성하기 어렵습니다. 아마도 조정은 별도의 그룹 내에서만 발생할 수 있습니다. 악의적인 플레이어. 하지만 악의적인 사용자의 조정 수준을 확신할 수 없기 때문에 즐길 수도 있고, 후회하는 것보다 안전한 것이 낫습니다. 공격자가 은밀하게, 동적으로, 즉각적으로 사용자를 손상시킬 수 있다고 가정하는 것도 비관적이다. 결국 현실적으로 사용자 작업을 완전히 제어하려면 시간이 좀 걸립니다. 예를 들어, HMMk > h라는 가정은 라운드(평균)가 구현되면 다음을 의미합니다. 그러면 1분 안에 해당 라운드의 돈 대부분이 정직한 손에 남게 됩니다. k = 120인 경우 최소 2시간, k = 10,000인 경우 최소 1주일. HMM 가정과 이전의 정직한 컴퓨팅 파워(Honest Majority of Computing Power) 가정은 컴퓨팅 능력을 돈으로 살 수 있다는 점에서 관련이 있습니다. 악의적인 사용자가 대부분의 돈을 소유하고 있다면 대부분의 컴퓨팅 능력을 얻을 수 있습니다. 2.7 커뮤니케이션 모델 우리는 메시지 전파, 즉 "P2P 가십"5을 유일한 수단으로 생각합니다. 의사소통. 임시 가정: 전체 네트워크에서 메시지가 적시에 전달됩니다. 에 대한 이 백서의 대부분에서는 전파된 모든 메시지가 거의 모든 정직한 사용자에게 전달된다고 가정합니다. 적시에. 우리는 네트워크를 다루는 섹션 10에서 이 가정을 제거할 것입니다. 자연적으로 발생하거나 적대적으로 유도된 파티션. (앞으로 살펴보겠지만, 우리는 단지 가정만 할 뿐입니다. 네트워크의 연결된 각 구성 요소 내에서 메시지를 적시에 전달합니다.) (전체 네트워크에서) 전파된 메시지의 적시 전달을 캡처하는 구체적인 방법 중 하나는 다음과 같습니다. 다음: 모든 도달 가능성 \(\rho\) > 95% 및 메시지 크기 \(\mu\) \(\in\)Z+에 대해 다음과 같은 \(\lambda\) \(\rho\),μ가 존재합니다. 정직한 사용자가 시간 t에 \(\mu\)바이트 메시지 m을 전파하면, 그런 다음 m은 t + \(\lambda\) \(\rho\),μ 시간까지 정직한 사용자의 적어도 일부 \(\rho\)에 도달합니다. 5기본적으로 Bitcoin에서와 같이 사용자가 메시지 m을 전파하면 모든 활성 사용자는 처음으로 m을 수신하고 무작위로 그리고 독립적으로 적절하게 적은 수의 활성 사용자인 "이웃"을 선택하여 m을 전달합니다. 아마도 그가 그들로부터 승인을 받을 때까지 말이죠. m의 전파는 사용자가 수신하지 않으면 종료됩니다. m 처음으로요.그러나 위의 속성은 다른 사용자/저장소/등에 의해 최신 blockchain을 얻기 위한 메커니즘을 명시적이고 별도로 구상하지 않고서는 우리의 Algorand 프로토콜을 지원할 수 없습니다. 실제로, 새로운 블록 Br을 생성하려면 적절한 검증자 세트가 적시에 라운드 r을 수신해야 할 뿐만 아니라 메시지뿐만 아니라 이전 라운드의 메시지도 포함하여 Br−1 및 기타 이전 라운드의 모든 메시지를 파악합니다. Br로 지불한 금액이 유효한지 확인하는 데 필요한 블록입니다. 다음 대신 가정이 성공합니다. MP(메시지 전파) 가정: 모든 \(\rho\) > 95% 및 μ \(\in\)Z+에 대해 \(\lambda\) \(\rho\),μ가 존재합니다. 따라서 모든 시간 t와 모든 \(\mu\)바이트 메시지 m은 t −\(\lambda\) \(\rho\),μ 이전에 정직한 사용자에 의해 전파되었습니다. m은 정직한 사용자의 적어도 일부 \(\rho\)에 의해 시간 t까지 수신됩니다. 프로토콜 Algorand '은 실제로 소수의 사용자(즉, 검증자)에게 각각 지시합니다. Algorand '의 라운드 단계에서 (작은) 규정된 크기의 별도 메시지를 전파하기 위해, 그리고 우리는 이러한 지침을 이행하는 데 필요한 시간을 제한해야 합니다. 우리는 국회의원을 풍부하게 함으로써 그렇게 합니다. 다음과 같이 가정합니다. 모든 n, \(\rho\) > 95% 및 \(\mu\) \(\in\)Z+에 대해 모든 시간 t 및 모든 \(\mu\) 바이트에 대해 다음과 같은 \(\lambda\)n,\(\rho\),μ가 존재합니다. 메시지 m1, . . . , mn, 각각은 t −\(\lambda\)n,\(\rho\),μ, m1, . . . , 백만 개가 수신되었습니다. 시간 t까지, 정직한 사용자의 적어도 일부 \(\rho\)만큼. 참고 • 위의 가정은 의도적으로 단순하지만 우리 논문에서 필요한 것보다 더 강력합니다.6 • 단순화를 위해 \(\rho\) = 1이라고 가정하므로 \(\rho\)에 대한 언급은 생략합니다. • 우리는 그가 MP의 가정을 위반하지 않는 한, 적대자가 모든 메시지의 전달을 완전히 제어합니다. 특히 솔직한 사람의 눈에 띄지 않게 사용자는 어느 정직한 플레이어가 어떤 메시지를 받을지 임의로 결정할 수 있습니다. 그가 원하는 메시지의 전달 속도를 임의로 가속화합니다.7
準備事項
2.1 暗号化プリミティブ 理想的なハッシュ。 効率的に計算可能な暗号関数 hash を使用します。 任意の長さの文字列を固定長のバイナリ文字列にマッピングします。長い伝統を受け継ぎ、私たちはモデルを作ります。 H はランダムな oracle であり、基本的には考えられる各文字列 s をランダムにマッピングする関数です。 選択した長さの独立して選択された (そして固定された) バイナリ文字列 H(s)。 この論文では、H の出力は 256 ビット長です。確かに、そのような長さは、 システムの効率性と、システムを安全にするのに十分な長さ。たとえば、H に衝突耐性を持たせたいとします。つまり、H(x) = H(y) となる 2 つの異なる文字列 x と y を見つけるのは難しいはずです。 H が 256 ビット長の出力を持つランダムな oracle である場合、そのような文字列のペアを見つけることは実際に 難しい。 (誕生日のパラドックスに頼ってランダムに試すと、2256/2 = 2128 が必要になります。 試練。) デジタル署名。 デジタル署名により、ユーザーは相互に情報を認証できます。 秘密鍵を一切共有せずに。 デジタル署名スキームは 3 つの高速な構成で構成されます。 アルゴリズム: 確率的鍵生成 G、署名アルゴリズム S、および検証アルゴリズム V。 十分に大きな整数であるセキュリティ パラメータ k が与えられると、ユーザー i は G を使用して次のペアを生成します。 k ビット鍵 (つまり、文字列): 「公開」鍵 pki と、対応する「秘密」署名鍵 Ski です。重要なのは、 公開鍵は、対応する秘密鍵を「裏切る」ことはありません。つまり、pki の知識があったとしても、いいえ 私以外の 1 人は、天文学的な時間未満でスキーを計算できます。 ユーザー i は、ski を使用してメッセージにデジタル署名します。考えられる各メッセージ (バイナリ文字列) m、i について、最初に hashes m を実行し、入力 H(m) と Ski に対してアルゴリズム S を実行して、k ビット文字列を生成します。 sigpki(m) \(\triangleq\) S(H(m)、スキー板) .3 3 H は衝突耐性があるため、1 つに署名することによって別の署名に「誤って署名」することは事実上不可能です。 メッセージm'。バイナリ文字列 sigpki(m) は、m (pki を基準とした) の i のデジタル署名と呼ばれ、次のようになります。 公開鍵 pki がコンテキストから明らかな場合は、より簡単に sigi(m) で表されます。 pki を知っている人は誰でも、i によって生成されたデジタル署名を検証するためにそれを使用できます。具体的には、 入力 (a) プレーヤー i の公開鍵 pki、(b) メッセージ m、および (c) 文字列 s、つまり i の主張 メッセージ m のデジタル署名に対して、検証アルゴリズム V は YES または NO を出力します。 デジタル署名スキームに必要なプロパティは次のとおりです。 1. 正当な署名は常に検証されます。s = sigi(m) の場合、V (pki, m, s) = Y ES;そして 2. デジタル署名は偽造が困難です。スキーの知識がなければ、そのような文字列を見つけるのに時間がかかります。 i によって署名されていないメッセージ m の場合、V (pki, m, s) = Y ES は天文学的な長さになります。 (Goldwasser、Micali、Rivest [17] の強力なセキュリティ要件に従って、これは当てはまります たとえ他のメッセージの署名を取得できたとしても。) したがって、他の人が自分に代わってメッセージに署名することを防ぐために、プレーヤー i は自分のメッセージを保持しなければなりません。 署名キー スキー シークレット (そのため「秘密キー」という用語)、および誰でもメッセージを検証できるようにするため 彼は署名していますが、私は彼の鍵 pki (そのため「公開鍵」という用語が使われています) を公開することに興味があります。 一般に、メッセージ m は、その署名 sigi(m) からは取得できません。実質的に取引するために 概念的に便利な「検索可能性」特性を満たすデジタル署名を使用します(つまり、 署名者とメッセージが署名から簡単に計算できることを保証します。 SIGpki(m) = (i, m, sigpki(m)) そして SIGi(m) = (i, m, sigi(m)) (pki がクリアの場合)。 ユニークなデジタル署名。 また、次を満たすデジタル署名スキーム (G、S、V ) も考慮します。 次の追加プロパティ。 3. 独自性。次のような文字列 pk'、m、s、s' を見つけるのは困難です。 s̸= s′ そして V (pk', m, s) = V (pk', m, s') = 1。 (一意性プロパティは、正当に生成されていない文字列 pk' にも当てはまります。 公開鍵。 ただし、特に、一意性のプロパティは、次のことを意味します。 公開鍵 pk と一致する秘密鍵 sk を計算するために鍵生成器 G を指定し、 したがって、SK は、2 つの異なるデジタルを見つけることも本質的に不可能であることを知っていました。 pk に関連する同じメッセージの署名。) 備考 • 固有の署名から検証可能なランダム関数まで。 デジタルと比較して 一意性プロパティを持つ署名スキーム、マッピング m \(\to\) H(sigi(m)) に関連付けられます。 考えられる各文字列 m、ランダムに選択された一意の 256 ビット文字列、およびこの正確性 マッピングは、署名 sigi(m) が与えられると証明できます。 つまり、本質的に一意性プロパティを満たす理想的な hashing およびデジタル署名スキームです。 導入されたように、検証可能なランダム関数の基本的な実装を提供します。 ミカリ、ラビン、ヴァダン [27]。 (元の実装は必然的により複雑でしたが、 なぜなら、彼らは理想的なhashingに依存していなかったからです。)• デジタル署名に対する 3 つの異なるニーズ。 Algorand では、ユーザーはデジタルに依存しています の署名 (1) i 自身の支払いを認証する。このアプリケーションでは、キーは「長期」(つまり、 長期間にわたって多くのメッセージに署名する)、通常の署名スキームから来ています。 (2) i がラウンド r のいくつかのステップで行動する資格があることを証明する資格情報を生成する。ここで、 キーは長期にわたる可能性がありますが、一意性プロパティを満たすスキームから取得する必要があります。 (3) i が行動する各ステップで送信するメッセージを認証する。 ここで、キーは 一時的 (つまり、最初の使用後に破棄される) ですが、通常の署名スキームに由来する可能性があります。 • 低コストの簡素化。簡単にするために、各ユーザー i が単一の長期キーを持つことを想定しています。したがって、そのようなキーは、一意性を持つ署名スキームから取得されなければなりません。 財産。このような単純さにより、計算コストは小さくなります。通常、実際、ユニークなデジタル 署名は、通常の署名よりも作成および検証に若干のコストがかかります。 2.2 理想的な公開台帳 Algorand は、理想的な公開台帳に基づいて、次の支払いシステムを模倣しようとしています。 1. 初期ステータス。お金は個々の公開鍵 (非公開で生成され、 ユーザーが所有します)。 pk1、. 。 。 、pkjが初期公開鍵であり、a1、. 。 。 、aj それぞれの 初期金額単位の場合、初期ステータスは次のようになります。 S0 = (pk1, a1), . 。 。 、 (pkj、aj) 、 それはシステム内の常識であると考えられています。 2. 支払い。 pk を現在 \(\geq\)0 の通貨単位を持つ公開鍵とし、pk' を別の公開鍵とします。 key、および a' は a 以下の非負の数です。したがって、(有効な) 支払い \(\wp\) はデジタルです。 pk を基準として、pk から pk' への a' 通貨単位の移動を指定する署名 いくつかの追加情報とともに。記号では、 \(\wp\)= SIGpk(pk, pk′, a′, I, H(I)), ここで、I は、有用ではあるが機密ではないとみなされる追加情報を表します (例: 時間) 情報および支払い識別子)、および機密とみなされる追加情報(例: 支払いの理由、場合によってはPKとPK'の所有者の身元など)。 pk (またはその所有者) を支払者、各 pk' (またはその所有者) を受取人、a' を受取人と呼びます。 お支払い金額\(\wp\)。 支払いによる無料参加。ユーザーはいつでも好きなときにシステムに参加できることに注意してください。 独自の公開鍵/秘密鍵ペアを生成します。したがって、以下に現れる公開鍵 pk' は、 上記の支払い\(\wp\)は、お金を「所有」したことのない新しく生成された公開鍵である可能性があります。 前に。 3. 魔法の台帳。理想化されたシステムでは、すべての支払いは有効であり、改ざん防止された状態で表示されます。 誰でも見られるように「空に掲載」された一連の支払いのリスト L 個: L = PAY 1、PAY 2、. 。 。 、各ブロック PAY r+1 は、ブロックの出現以降に行われたすべての支払いのセットで構成されます。 支払い r.理想的なシステムでは、一定 (または有限) 時間が経過すると、新しいブロックが表示されます。 議論。 • より一般的な支払いと未使用のトランザクション出力。 より一般的には、公開鍵の場合、 pk が金額 a を所有している場合、pk の有効な支払い\(\wp\)により金額 a' を転送できます。 1、a' 2、。 。 、、 それぞれキー pk' に 1、PK' 2、。 。 .、Pである限り じゃぁ j \(\leq\) a。 Bitcoin および同様のシステムでは、公開鍵 pk が所有するお金は別個に分離されます。 金額、および pk によって行われた支払い \(\wp\) は、そのような分離された金額 a を全額送金しなければなりません。 pk が a の a' < a の部分のみを別のキーに転送したい場合は、 別のキー (場合によっては pk 自体) への、未使用のトランザクション出力のバランス。 Algorand は、分離された量を持つキーでも機能します。ただし、そこに集中するためには、 Algorand には新しい側面があるため、よりシンプルな支払い形式に固執するほうが概念的には簡単です および単一の金額が関連付けられたキー。 • 現在のステータス。理想化されたスキームは、現在の状況に関する情報を直接提供しません。 システムのステータス (つまり、各公開鍵がどのくらいの通貨単位を持っているか)。この情報 マジックレジャーから推測可能です。 理想的なシステムでは、アクティブなユーザーが最新のステータス情報を継続的に保存および更新し、 そうしないと、最初から、または最後に作成したものから再構築する必要があります。 それを計算しました。 (このペーパーの次のバージョンでは、Algorand を拡張して、 ユーザーが現在のステータスを効率的に再構築できるようになります。) • セキュリティと「プライバシー」。 デジタル署名により、誰も支払いを偽造できないことが保証されます。 別のユーザー。支払い \(\wp\) では、公開キーと金額は隠されませんが、機密情報は隠されません。 情報は私です。実際、\(\wp\) には H(I) のみが表示され、H は理想的な hash 関数であるため、H(I) はランダムな 256 ビット値であるため、自分が以下よりも優れていたことを把握する方法はありません。 単に推測するだけです。それでも、私が何であるかを証明するために(たとえば、支払いの理由を証明するために)、 支払者は I を明らかにするだけでよい。明らかにされた I の正しさは、H(I) を計算することによって検証できる。 そして、結果の値を\(\wp\)の最後の項目と比較します。実際、H は衝突耐性があるため、 H(I) = H(I') となる 2 番目の値 I' を見つけるのは困難です。 2.3 基本的な概念と表記法 キー、ユーザー、所有者 特に指定がない限り、各公開キー (略して「キー」) は長期にわたり、一意性特性を持つデジタル署名スキームに関連付けられます。公開鍵 i が結合します すでにシステム内にある別の公開鍵 j が i に支払いを行うとき、システム。 色については、鍵を擬人化します。キー i を「彼」と呼び、私は正直である、送信すると言う ユーザーはキーと同義です。キーを区別したいとき 所有者を表す場合、それぞれ「デジタル キー」と「所有者」という用語を使用します。 許可のないシステムと許可されたシステム。 デジタルキーが無料であれば、システムはパーミッションレスです いつでも参加でき、所有者は複数のデジタルキーを所有できます。それ以外の場合は許可されています。ユニークな表現 Algorand の各オブジェクトには固有の表現があります。特に、 各集合 {(x, y, z, . . .) : x \(\in\)X, y \(\in\)Y, z \(\in\)Z, ... 。 .} は、事前に指定された方法で順序付けされます。例: first 辞書順に x に、次に y にというように。 同速度クロック グローバル クロックはありません。むしろ、各ユーザーが独自のクロックを持っています。ユーザークロック いかなる方法でも同期する必要はありません。ただし、それらはすべて同じ速度であると仮定します。 たとえば、ユーザー i の時計では午後 12 時ですが、時計によれば午後 2 時 30 分である可能性があります。 他のユーザー j の時計ですが、i の時計では 12:01 になるはずですが、i の時計では 2:31 になります。 Jの時計に。つまり、「1 分はどのユーザーにとっても同じ (十分に、本質的に同じ)」ということです。 ラウンド Algorand は、論理単位 r = 0、1、... で構成されます。 。 .、ラウンドと呼ばれます。 私たちはラウンドを示すために一貫して上付き文字を使用します。非数値量 Q であることを示すには (文字列、公開鍵、セット、デジタル署名など) はラウンド r を指します。単純に Qr と書きます。 Q が (数値として解釈可能なバイナリ文字列ではなく) 本物の数値である場合にのみ、 シンボル r が Q の指数として解釈されないように、Q(r) と書きます。 ラウンド r > 0 (の開始時) では、すべての公開鍵のセットは PKr で、システムのステータスは次のようになります。 シニア = n 私、a(r) 私、。 。 。 : i \(\in\)PKro 、 ここで、a(r) 私は は公開鍵 i に利用できる金額です。 PKr は次から推定できることに注意してください。 Sr であり、その Sr は各公開鍵 i の他のコンポーネントを指定することもできます。 ラウンド 0 の場合、PK0 は初期公開鍵のセット、S0 は初期ステータスです。 PK0 と S0 はシステムの常識であると想定されます。簡単にするために、ラウンド r の開始時は次のようになります。 PK1、. 。 。 、PKrおよびS1、. 。 。 、Sr. ラウンド r では、システムのステータスが Sr から Sr+1 に遷移します。象徴的には、 ラウンド r: Sr −→ Sr+1。 支払い Algorand では、ユーザーは継続的に支払いを行います (そして、その支払いを方法で広めます) セクション 2.7 で説明されています)。ユーザー i \(\in\)PKr の支払い \(\wp\) は、同じ形式とセマンティクスを持ちます。 理想的なシステムのように。つまり、 \(\wp\)= SIGi(i, i', a, I, H(I)) 。 支払い \(\wp\) は、(1) その金額が次の場合にラウンド r (略してラウンド R 支払い) で個別に有効になります。 a は a(r) 以下です i 、および (2) r' < r の場合、公式の給与セット PAY r' には表示されません。 (以下で説明するように、2 番目の条件は、\(\wp\) がまだ有効になっていないことを意味します。 i のラウンド r 支払いのセットは、その金額の合計が最大でも a(r) である場合、集合的に有効です。 私は。 給与セット ラウンド r ペイセット P は、各ユーザー i に対して次のようなラウンド r 支払いのセットです。 P の i のうち (おそらくなし) は、集合的に有効です。すべてのラウンド r のペイセットのセットは PAY(r) です。ラウンドR ペイセット P のスーパーセットがラウンド r ペイセットでない場合、ペイセット P は最大になります。 実際に、支払い \(\wp\) がラウンド \(\rho\) 、 \(\wp\)= SIGi(\(\rho\), i, i', a, I, H(I)) を指定することを提案します。 また、一部の固定非負整数 k については、[\(\rho\), \(\rho\) + k] の外側のどの丸でも有効ではありません。4 4これにより、\(\wp\)が「有効」になったかどうかのチェックが簡素化されます(つまり、何らかのペイセットが有効かどうかの判断が簡素化されます) PAY r には\(\wp\)が含まれます。 k = 0、\(\wp\)= SIGi(r, i, i′, a, I, H(I)) 、および \(\wp\)/\(\in\)PAY r の場合、i は \(\wp\) を再送信する必要があります。公的給与セット ラウンド r ごとに、Algorand が (後述する方法で) 公的に選択します。 単一の(おそらく空の)ペイセット、PAY r、ラウンドの公式ペイセット。 (本質的に、PAY r は 「実際に」起こったラウンドアール支払い。) 理想的なシステム (および Bitcoin) と同様、(1) 新しいユーザー j がシステムに入る唯一の方法 所定のラウンド r の公式給与セット PAY r に属する支払いの受取人となること。そして (2) PAY r は、現在のラウンド Sr のステータスから次のラウンド Sr+1 のステータスを決定します。 象徴的に言えば、 PAY r : Sr −→Sr+1。 具体的には、 1. ラウンド r + 1 の公開鍵のセット、PKr+1 は、PKr の和集合とすべての公開鍵のセットで構成されます。 PAY r の支払いで初めて表示される受取人キー。そして 2. 金額 a(r+1) 私は ユーザー i がラウンド r + 1 で所有するものは、ai(r) の合計です。 前回のラウンドで私が所有していた金額 (i ̸\(\in\)PKr の場合は 0)— と金額の合計 PAY r の支払いに従って i に支払われます。 まとめると、理想的なシステムと同様に、Sr+1 の各ステータスは以前の支払い履歴から推定できます。 支払い 0、. 。 。 、ペイr。 2.4 ブロックと実証済みのブロック Algorand0 では、ラウンド r に対応するブロック Br は以下を指定します。 r 自体。一連の支払い ラウンドr、PAY r;量 Qr (後述)、および前のブロック H(Br−1) の hash。 したがって、ある固定ブロック B0 から開始して、従来の blockchain が得られます。 B1 = (1, PAY 1, Q0, H(B0)), B2 = (2, PAY 2, Q1, H(B1)), B3 = (3, PAY 3, Q2, H(B2)), 。 。 。 Algorand では、ブロックの信頼性は実際には別の情報によって保証されます。 「ブロック証明書」CERT r。Br を証明済みブロック Br に変換します。したがって、マジックレジャーは、 実証済みのブロックのシーケンスによって実装されます。 B1、B2、. 。 。 ディスカッション これから説明するように、CERT r は、H(Br) のデジタル署名のセットで構成されています。 SV r のメンバーの大多数、およびそれらのメンバーのそれぞれが実際に所属していることの証明 SVrへ。もちろん、証明書 CERT r をブロック自体に含めることもできますが、 概念的には分離しておいたほうがすっきりします)。 Bitcoin では、各ブロックは特別なプロパティを満たす必要があります。つまり、「 暗号パズル」により、ブロック生成の計算量が増加し、フォークの両方が避けられなくなります。 そして珍しくありません。対照的に、Algorand の blockchain には 2 つの主な利点があります。 最小限の計算で済み、圧倒的に高い確率でフォークしません。各ブロック Bi は blockchain に入るとすぐに安全に最終的になります。2.5 許容可能な失敗確率 Algorand の安全性を分析するには、確率 F を指定します。 何かが間違っていることを受け入れる(たとえば、検証者セット SV r が正当な多数派を持たない)。 暗号化 hash 関数 H の出力長の場合と同様、F もパラメーターです。 しかし、この場合と同様に、より直観的に理解するために、F を具体的な値に設定すると便利であることがわかります。 Algorand では、同時に十分なセキュリティを享受することが確かに可能であるという事実の把握 そして十分な効率性。 F が必要に応じて設定できるパラメータであることを強調するために、最初に それぞれ設定した第2の実施形態 F = 10−12 そして F = 10−18 。 ディスカッション 10−12 は実際には 1 兆分の 1 未満であることに注意してください。 私たちのアプリケーションでは F の選択が適切です。 10−12 は確率ではないことを強調しましょう。 これにより、敵対者は誠実なユーザーの支払いを偽造することができます。すべての支払いはデジタルで行われます したがって、適切なデジタル署名が使用されている場合、支払いが偽造される可能性は次のとおりです。 10−12 よりもはるかに低く、実際には本質的に 0 です。私たちが喜んで許容する悪い出来事 確率 F では、Algorand の blockchain がフォークします。 F と 1 分間のラウンドでは、Algorand の blockchain でフォークが発生する頻度は低いと予想されます。 (およそ) 190 万年に 1 回。対照的に、Bitcoin では、フォークが頻繁に発生します。 より要求の厳しい人は、F をより低い値に設定する場合があります。この目的のために、第2の実施形態では、 F を 10−18 に設定することを検討します。なお、ブロックが毎秒生成されると仮定すると、1018 ビッグバンから現在まで、宇宙がこれまでにかかった推定秒数 時間。したがって、F = 10−18 の場合、ブロックが 1 秒以内に生成される場合、その経過時間は次のようになります。 宇宙にフォークが見えます。 2.6 敵対的モデル Algorand は、非常に敵対的なモデルでも安全になるように設計されています。説明しましょう。 正直なユーザーと悪意のあるユーザー ユーザーは、プロトコルの指示をすべて遵守する場合、誠実であると言えます。 メッセージの送受信が完全に可能です。ユーザーは悪意のあるユーザーです (例: Byzantine、 分散コンピューティングの用語)、規定された指示から任意に逸脱できる場合。 敵対者 敵対者は、色で擬人化された効率的な (技術的には多項式時間の) アルゴリズムであり、いつでも、望むユーザーを即座に悪意のあるものにすることができます (主題) 破壊できるユーザー数の上限のみ)。 敵対者は、すべての悪意のあるユーザーを完全に制御し、完全に調整します。彼はあらゆる行動を起こす すべてのメッセージの送受信を含め、ユーザーに代わって、ユーザーが本来の目的から逸脱できるようにすることができます。 決められた指示を恣意的な方法で行うこと。または、単に破損したユーザーが送信しているものを隔離することもできます。 そしてメッセージを受信しています。ユーザー i が悪意があることを他の誰も自動的に学習しないことを明確にしましょう。 ただし、i の悪意は、敵対者が彼にとらせた行動によって明らかになる可能性があります。 しかし、この強力な敵は、 • 無制限の計算能力を持たないため、デジタル暗号化をうまく偽造することができません。 無視できる可能性を除いて、正直なユーザーの署名。そして• 正直なユーザー間のメッセージ交換にいかなる形でも干渉することはできません。 さらに、正直なユーザーを攻撃する彼の能力は、次の仮定のいずれかによって制限されます。 正直にお金の大部分を占める Honest Majority of Money (HMM) の連続体を考慮します。 仮定: つまり、非負の整数 k および実数 h > 1/2 について、 HHMk > h: すべてのラウンドで正直なユーザーは、r で全資金のうち h より大きい割合を所有していました。 ラウンド r −k のシステム。 議論。 すべての悪意のあるユーザーが自分の行動を完全に調整していると仮定します (あたかも制御されているかのように) 単一の存在、つまり敵対者による)はかなり悲観的な仮説です。完璧なコーディネートも 多くの人にとって達成は困難です。おそらく調整は別々のグループ内でのみ行われます 悪意のあるプレイヤーの。ただし、悪意のあるユーザーの調整のレベルについては確信が持てないため、 楽しめるかも知れませんが、後悔するよりは安全を確保した方が良いでしょう。 敵対者が密かに、動的に、即座にユーザーを破壊できると仮定すると、 悲観的。結局のところ、現実的には、ユーザーの操作を完全に制御するには時間がかかるはずです。 HMMk > h という仮定は、たとえば、ラウンド (平均) が実装された場合に次のことを意味します。 つまり、1 分以内に、特定のラウンドの資金の大部分が正当な手に残ることになります。 k = 120 の場合は少なくとも 2 時間、k = 10,000 の場合は少なくとも 1 週間。 HMM の仮定と以前のコンピューティング能力の正直多数に注意してください。 計算能力はお金で買えるので、仮定は次のような意味で関連しています。 悪意のあるユーザーが資金の大部分を所有している場合、彼らはコンピューティング能力の大部分を手に入れることができます。 2.7 コミュニケーションモデル 私たちは、メッセージの伝播、つまり「ピアツーピアのゴシップ」5が唯一の手段であると想定しています。 コミュニケーション。 一時的な仮定: ネットワーク全体でのメッセージのタイムリーな配信。 のために この文書の大部分では、伝播されたすべてのメッセージがほぼすべての誠実なユーザーに届くと想定しています。 タイムリーに。この仮定は、ネットワークを扱うセクション 10 で削除します。 自然発生または敵対的に誘発されたパーティション。 (これから見ていきますが、私たちは仮定するだけです ネットワークの接続された各コンポーネント内でのメッセージのタイムリーな配信。) (ネットワーク全体で) 伝播されたメッセージのタイムリーな配信をキャプチャする具体的な方法の 1 つは次のとおりです。 以下: すべての到達可能性 \(\rho\) > 95% およびメッセージ サイズ \(\mu\) \(\in\)Z+ に対して、次のような \(\lambda\) \(\rho\),\(\mu\) が存在します。 正直なユーザーが時間 t にμバイトのメッセージ m を伝播すると、 そして、時間 t + \(\lambda\) \(\rho\),μ までに、m は正直なユーザーの少なくとも一部 \(\rho\) に到達します。 5本質的に、Bitcoin のように、ユーザーがメッセージ m を伝播すると、すべてのアクティブ ユーザー i が初めて m を受信します。 適切な少数のアクティブなユーザー、つまり「隣人」をランダムかつ独立して選択し、そのユーザーに m を転送します。 おそらく彼が彼らから承認を受け取るまで。 m の伝播は、ユーザーが受信しない場合に終了します。 初めてのメートル。ただし、上記のプロパティは、別のユーザー/デポジトリなどによって最新の blockchain を取得するメカニズムを明示的かつ個別に想定しない限り、Algorand プロトコルをサポートできません。 実際、新しいブロック Br を構築するには、適切な検証者のセットがタイムリーにラウンド R を受信する必要があるだけではありません。 メッセージだけでなく、Br-1 と他のすべての以前のメッセージを知るために、前のラウンドのメッセージも表示されます。 ブロック。Br での支払いが有効かどうかを判断するために必要です。 以下の 代わりに仮定で十分です。 メッセージ伝播 (MP) の仮定: すべての \(\rho\) > 95% および \(\mu\) \(\in\)Z+ に対して、 \(\lambda\) \(\rho\),\(\mu\) が存在します。 つまり、すべての時間 t と、t −\(\lambda\) \(\rho\),μ より前に正直なユーザーによって伝播されたすべての μ バイトのメッセージ m について、 m は、時刻 t までに、正直なユーザーの少なくとも一部 \(\rho\) によって受信されます。 プロトコル Algorand ' は、実際には少数のユーザー (つまり、 Algorand ' のラウンドの指定されたステップで、(小さい) 規定サイズの別個のメッセージを伝播します。 そして、これらの指示を実行するために必要な時間を制限する必要があります。 MPを充実させることでこれを実現します 以下のような仮定。 すべての n、\(\rho\) > 95%、および \(\mu\) \(\in\)Z+ に対して、すべての時間 t およびすべての \(\mu\) バイトについて、次のような \(\lambda\)n,\(\rho\),\(\mu\) が存在します。 メッセージm1、. 。 。 、mn、それぞれは、t−\(\lambda\)n、\(\rho\)、μ、m1、. 。 。 、mn が受信され、 時間 t までに、正直なユーザーの少なくとも一部 \(\rho\) によって。 注記 • 上記の仮定は意図的に単純ですが、本稿で必要以上に強力でもあります。6 • 簡単にするために、\(\rho\) = 1 と仮定するため、\(\rho\) についての言及は省略します。 • 私たちは、彼が MP の仮定に違反しない限り、敵対者は次のように悲観的に仮定します。 すべてのメッセージの配信を完全に制御します。特に正直者には気付かれずに ユーザー、敵対者は、どの正直なプレイヤーがどのメッセージをいつ受け取るかを任意に決定できます。 そして彼が望むあらゆるメッセージの配信を恣意的に加速させます。7
BA 프로토콜은 전통적인 환경에서 BA⋆
이미 강조했듯이 비잔틴 합의는 Algorand의 핵심 요소입니다. 실제로는 그것을 통해 Algorand이 포크의 영향을 받지 않는 BA 프로토콜을 사용합니다. 그러나 우리의 보안을 위해 강력한 적, Algorand은 새로운 플레이어 교체 가능성을 충족하는 BA 프로토콜에 의존해야 합니다. 제약. 또한 Algorand이 효율적이려면 이러한 BA 프로토콜이 매우 효율적이어야 합니다. BA 프로토콜은 이상적인 통신 모델, 동기식 완료를 위해 처음 정의되었습니다. 네트워크(SC 네트워크). 이러한 모델을 사용하면 BA 프로토콜을 더 간단하게 설계하고 분석할 수 있습니다. 6정직한 백분율 h와 허용 가능한 실패 확률 F가 주어지면 Algorand은 상한 N을 계산합니다. 한 단계의 최대 검증자 수까지. 따라서 MP 가정은 n \(\leq\)N에 대해서만 유지되면 됩니다. 또한, 언급한 바와 같이 MP 가정은 얼마나 많은 다른 메시지가 함께 전파될 수 있는지에 관계없이 유지됩니다. 엠제이. 그러나 앞으로 보게 되겠지만 Algorand 메시지는 본질적으로 겹치지 않는 시간에 전파됩니다. 단일 블록이 전파되거나 최대 N명의 검증자가 작은 블록(예: 200B)을 전파하는 간격입니다. 메시지. 따라서 우리는 MP 가정을 더 약하지만 더 복잡한 방식으로 다시 기술할 수 있습니다. 7예를 들어, 그는 정직한 플레이어가 보낸 메시지를 즉시 배울 수 있습니다. 따라서 악의적인 사용자 i'는 정직한 사용자 i와 동시에 메시지를 전파하도록 요청받은 경우 항상 자신의 메시지 m'을 선택할 수 있습니다. m이 실제로 i에 의해 전파된 메시지. 이 능력은 분산 컴퓨팅 용어로 돌진과 관련이 있습니다. 문학.따라서 이 섹션에서는 SC 네트워크를 위한 새로운 BA 프로토콜인 BA⋆를 소개하고 이를 무시합니다. 선수 교체 가능성 문제. 프로토콜 BA⋆는 별도의 가치에 대한 기여입니다. 실제로 이는 지금까지 알려진 SC 네트워크에 대한 가장 효율적인 암호화 BA 프로토콜입니다. Algorand 프로토콜 내에서 이를 사용하기 위해 BA⋆를 약간 수정하여 다른 사항을 설명합니다. 통신 모델 및 컨텍스트를 확인하세요. 단, 섹션 X에서 BA⋆가 어떻게 사용되는지 강조하세요. 실제 프로토콜 내에서 Algorand '. BA⋆가 운영되는 모델과 비잔틴 계약의 개념을 상기하는 것부터 시작합니다. 3.1 동기식 완전한 네트워크 및 일치하는 적 SC 네트워크에는 각 적분 시간 r = 1, 2, ...에서 똑딱거리는 공통 시계가 있습니다. . . 짝수 시간에 r을 클릭할 때마다 각 플레이어 i는 즉각적으로 동시에 단일 메시지를 보냅니다. 메시지 미스터 i,j(아마도 빈 메시지)를 자신을 포함한 각 플레이어 j에게 보냅니다. 각 씨 i,j가 수신됨 이때 플레이어 j가 보낸 사람 i의 신원과 함께 r + 1을 클릭합니다. 다시 말하지만, 통신 프로토콜에서 플레이어는 자신이 규정한 모든 사항을 따르면 정직합니다. 지시, 그리고 그렇지 않으면 악의적입니다. 모든 악의적인 플레이어는 완전히 통제되고 완벽하게 제어됩니다. 특히 다음 주소로 전달된 모든 메시지를 즉시 수신하는 대적에 의해 조정됩니다. 악의적인 플레이어가 보내는 메시지를 선택합니다. 대적은 이상한 순간에 클릭을 하면 원하는 정직한 사용자를 즉시 악의적인 사용자로 만들 수 있습니다. 그는 악의적인 플레이어의 수에 따라 가능한 상한선만 적용되기를 원합니다. 즉, 공격자는 "정직한 사용자 i가 이미 보낸 메시지를 방해할 수 없습니다". 평소대로 배달되었습니다. 대적은 또한 각 짝수 라운드에서 즉시 볼 수 있는 추가 능력을 가지고 있습니다. 현재 정직한 플레이어가 보내는 메시지와 이 정보를 즉시 사용하여 선택합니다. 악의적인 플레이어가 동시에 보내는 메시지는 틱입니다. 비고 • 적의 힘. 위의 설정은 매우 적대적입니다. 실제로 비잔틴 조약에서 문학에서는 많은 설정이 덜 적대적입니다. 그러나 좀 더 적대적인 설정이 있습니다. 또한 정직한 플레이어가 보낸 메시지를 본 후 적이 있는 것으로 간주되었습니다. 주어진 시간에 r을 클릭하면 네트워크에서 이러한 모든 메시지를 즉시 지울 수 있습니다. i가 손상되었습니다. 지금 악의적인 i가 보내는 메시지를 선택하고 r을 클릭하여 가져오세요. 평소대로 배달되었습니다. 대적의 예상되는 힘은 우리 환경에서 그가 가지고 있는 것과 일치합니다. • 물리적 추상화. 구상된 통신 모델은 보다 물리적인 모델을 추상화합니다. 여기서 각 플레이어 쌍(i,j)은 별도의 개인 통신 회선 li,j에 의해 연결됩니다. 즉, 누구도 전송된 메시지에 대한 정보를 주입하거나 방해하거나 얻을 수 없습니다. 리,제이. 적이 li,j에 접근할 수 있는 유일한 방법은 i 또는 j를 손상시키는 것입니다. • 개인정보 보호 및 인증. SC 네트워크에서는 메시지 개인 정보 보호 및 인증이 보장됩니다. 가정으로. 대조적으로, 메시지가 전파되는 우리의 통신 네트워크에서는 P2P에서는 디지털 서명으로 인증이 보장되며 개인 정보 보호는 존재하지 않습니다. 따라서 BA⋆프로토콜을 우리 설정에 채택하려면 교환된 각 메시지가 디지털 서명되어야 합니다. (보낸 상태를 추가로 식별합니다). 다행스럽게도 우리가 사용하는 BA 프로토콜은 Algorand에서 사용을 고려하세요. 메시지 개인 정보 보호가 필요하지 않습니다.3.2 비잔틴 계약의 개념 비잔틴 조약의 개념은 Pease Shostak과 Lamport [31]에 의해 도입되었습니다. 즉, 모든 초기값이 비트로 구성되는 경우입니다. 그래도 빨리 연장되서 임의의 초기값으로. (Fischer [16] 및 Chor and Dwork [10]의 설문조사를 참조하세요.) 프로토콜은 임의의 값을 의미합니다. 정의 3.1. 동기식 네트워크에서 P를 플레이어 세트가 공통인 n-플레이어 프로토콜이라고 가정합니다. 플레이어 간의 지식, t는 n \(\geq\)2t + 1인 양의 정수입니다. 우리는 P가 임의 값(각각 이진)(n, t)-건전성 \(\sigma\) \(\in\)(0, 1)을 갖는 비잔틴 합의 프로토콜 만약, 특수 기호 \(\bot\)(각각 V = {0, 1}에 대해)를 포함하지 않는 모든 값 세트 V에 대해 최대 t명의 플레이어가 악의적이고 모든 플레이어가 초기 값 vi \(\in\)V , 모든 정직한 플레이어 j는 확률 1로 정지하고 outi \(\in\)V \(\cup\){\(\bot\)} 값을 출력합니다. 적어도 \(\sigma\) 확률로 다음 두 조건을 만족시키려면: 1. 동의: 모든 정직한 플레이어 i에 대해 outi = out이 되는 \(\in\)V \(\cup\){\(\bot\)}가 존재합니다. 2. 일관성: 어떤 값 v \(\in\)V에 대해 모든 정직한 플레이어에 대해 vi = v이면 out = v입니다. out을 P의 출력이라고 하고, 각 outi를 플레이어 i의 출력이라고 합니다. 3.3 BA 표기법 # BA 프로토콜에서 플레이어는 주어진 메시지를 자신에게 보낸 플레이어 수를 계산해야 합니다. 주어진 단계. 따라서 전송될 수 있는 각 가능한 값 v에 대해
초
나(v) (또는 s가 지워진 경우 #i(v))는 단계 s에서 i가 v를 받은 플레이어 j의 수입니다. 플레이어 i가 각 플레이어 j로부터 정확히 하나의 메시지를 받는다는 것을 기억해 보세요. 플레이어는 n이고 모든 i와 s에 대해 P입니다. v #s i(v) = n. 3.4 바이너리 BA 프로토콜 BBA⋆ 이 섹션에서는 더 많은 것의 정직성에 의존하는 새로운 바이너리 BA 프로토콜인 BBA⋆를 제시합니다. 플레이어의 2/3보다 많고 매우 빠릅니다. 악의적인 플레이어가 무엇을 하든 상관없이 메인 루프를 실행할 때마다 플레이어는 확률 1/3로 동의하게 됩니다. 각 플레이어는 고유 서명을 충족하는 디지털 서명 체계의 공개 키를 가지고 있습니다. 재산. 이 프로토콜은 동기식 완전 네트워크에서 실행되도록 고안되었으므로 플레이어 i가 각 메시지에 서명해야 합니다. 디지털 서명은 3단계에서 충분히 공통된 임의 비트를 생성하는 데 사용됩니다. (Algorand에서, 디지털 서명은 다른 모든 메시지를 인증하는 데에도 사용됩니다.) 프로토콜에는 최소한의 설정이 필요합니다. 즉, 플레이어의 독립적인 공통 무작위 문자열 r입니다. 열쇠. (Algorand에서 r은 실제로 수량 Qr로 대체됩니다.) 프로토콜 BBA⋆는 플레이어가 부울 값을 반복적으로 교환하는 3단계 루프입니다. 다른 플레이어는 다른 시간에 이 루프를 종료할 수 있습니다. 플레이어 i가 전파를 통해 이 루프를 종료합니다. 어떤 단계에서는 특별한 값 0 또는 특별한 값 1을 지정하여 모든 플레이어에게 다음을 지시합니다. 이후의 모든 단계에서 그들은 각각 i로부터 0과 1을 받는 척합니다. (또는 다음과 같이 가정합니다.플레이어 j가 다른 플레이어 i로부터 받은 마지막 메시지는 비트 b였습니다. 그러면 어떤 단계에서든 그는 i로부터 어떤 메시지도 받지 못하고, j는 마치 내가 그에게 비트 b를 보낸 것처럼 행동합니다.) 프로토콜은 3단계 루프가 실행된 횟수를 나타내는 카운터 \(\gamma\)를 사용합니다. BBA⋆의 시작 부분에서는 \(\gamma\) = 0입니다. (\(\gamma\)를 전역 카운터라고 생각할 수도 있지만 실제로는 증가합니다. 루프가 실행될 때마다 각 개별 플레이어가 실행합니다.) n \(\geq\)3t + 1이 있으며, 여기서 t는 가능한 최대 악의적인 플레이어 수입니다. 바이너리 문자열 x는 이진 표현(앞에 0이 올 수 있음)이 x인 정수로 식별됩니다. lsb(x)는 x의 최하위 비트를 나타냅니다. 프로토콜 BBA⋆ (통신) Step 1. [Coin-Fixed-To-0 단계] 각 플레이어 i는 bi를 보냅니다. 1.1 #1의 경우 i (0) \(\geq\)2t + 1, 그러면 i는 bi = 0으로 설정하고 0을 보내고 outi = 0을 출력합니다. 그리고 정지. 1.2 #1의 경우 i (1) \(\geq\)2t + 1이면 i는 bi = 1로 설정됩니다. 1.3 그렇지 않으면 i는 bi = 0으로 설정합니다. (통신) Step 2. [Coin-Fixed-To-1 Step] 각 플레이어 i는 bi를 보냅니다. 2.1 #2의 경우 i (1) \(\geq\)2t + 1이면 i는 bi = 1로 설정됩니다. 1을 보냅니다. 출력 outi = 1, 그리고 정지. 2.2 #2의 경우 i (0) \(\geq\)2t + 1이면 bi = 0으로 설정합니다. 2.3 그렇지 않으면 i는 bi = 1로 설정합니다. (통신) Step 3. [코인 진짜 뒤집기 단계] 각 플레이어 i는 bi와 SIGi(r, \(\gamma\))를 보냅니다. 3.1 #3의 경우 i (0) \(\geq\)2t + 1이면 i는 bi = 0으로 설정됩니다. 3.2 #3의 경우 i (1) \(\geq\)2t + 1이면 i는 bi = 1로 설정됩니다. 3.3 그렇지 않으면 Si = {j \(\in\)N(이 단계 3에서 나에게 적절한 메시지를 보낸 사람) }이라고 하면, 나는 bi = c \(\triangleq\)lsb(minj\(\in\)Si H(SIGi(r, \(\gamma\))))를 설정합니다. \(\gamma\)i를 1만큼 증가시킵니다. 그리고 1단계로 돌아갑니다. 정리 3.1. n \(\geq\)3t + 1일 때마다 BBA⋆는 건전성 1의 이진 (n, t)-BA 프로토콜입니다. 정리 3.1의 증명은 [26]에 나와 있습니다. 우리 설정에 대한 적응 및 플레이어 교체 가능성 재산은 참신하다. 역사적 비고 확률적 이진 BA 프로토콜은 Ben-Or가 처음 제안했습니다. 비동기 설정 [7]. 프로토콜 BBA⋆는 공개 키 설정에 대한 새로운 적응입니다. Feldman 및 Micali의 바이너리 BA 프로토콜 [15]. 그들의 프로토콜은 예상대로 작동한 최초의 프로토콜이었습니다. 일정한 단계 수. 플레이어들이 직접 공통 코인을 구현하게 함으로써 작동했고, 외부의 신뢰할 수 있는 당사자 [32]를 통해 이를 구현한 Rabin이 제안한 개념입니다.3.5 단계적 합의와 프로토콜 GC 임의의 가치에 대해 비잔틴 합의보다 훨씬 약한 합의 개념을 떠올려 보겠습니다. 정의 3.2. P를 모든 플레이어 세트가 상식인 프로토콜로 설정하고 각 플레이어는 플레이어 나는 임의의 초기값 v'를 개인적으로 알고 있습니다. 나. n명의 플레이어가 실행될 때마다 P가 (n, t) 등급 합의 프로토콜이라고 말합니다. 그 중 대부분은 악의적이며 모든 정직한 플레이어는 가치 등급 쌍(vi, gi) 출력을 중단합니다. 여기서 gi \(\in\){0, 1, 2}는 다음 세 가지 조건을 충족합니다. 1. 모든 정직한 플레이어 i와 j에 대해 |gi −gj| \(\leq\)1. 2. 모든 정직한 플레이어 i와 j에 대해, gi, gj > 0 ⇒vi = vj. 3. 만약 v' 1 = \(\cdots\) = v' 어떤 값 v에 대해 n = v, 모든 정직한 플레이어 i에 대해 vi = v 및 gi = 2입니다. 역사적 기록 등급별 합의라는 개념은 단순히 등급별 합의 개념에서 파생된 것입니다. [15]에서 Feldman과 Micali가 십자군의 개념을 강화하여 제시한 방송 Dolev [12]에 의해 도입되고 Turpin and Coan [33].8에 의해 개선된 계약 [15]에서 저자는 3단계(n, t) 등급 방송 프로토콜인 gradecast도 제공했습니다. n \(\geq\)3t+1. n > 2t+1에 대한 보다 복잡한 (n, t) 등급 방송 프로토콜이 나중에 발견되었습니다. 작성자: Katz 및 Koo [19]. 다음 2단계 프로토콜 GC는 등급 분류의 마지막 두 단계로 구성됩니다. 표기법. 이 사실을 강조하고 섹션 4.1의 프로토콜 Algorand '의 단계를 일치시키기 위해 우리는 GC의 단계를 각각 2번과 3번으로 지정하세요. 프로토콜 GC 2단계. 내가 보내는 각 플레이어는 v'를 보냅니다. 나는 모든 플레이어에게. 3단계. 각 플레이어 i는 #2인 경우에만 문자열 x를 모든 플레이어에게 보냅니다. 나는 (x) \(\geq\)2t + 1입니다. 출력 결정. 각 플레이어 i는 다음과 같이 계산된 쌍 (vi, gi)을 출력합니다. • 일부 x에 대해 #3인 경우 i (x) \(\geq\)2t + 1이면 vi = x이고 gi = 2입니다. • 일부 x에 대해 #3인 경우 i (x) \(\geq\)t + 1이면 vi = x이고 gi = 1입니다. • 그렇지 않으면 vi = \(\bot\)이고 gi = 0입니다. 정리 3.2. n \(\geq\)3t + 1이면 GC는 (n, t) 등급 브로드캐스트 프로토콜입니다. 증명은 [15]의 프로토콜 등급 결정의 증명에서 바로 따르므로 생략됩니다.9 8 본질적으로 등급별 방송 프로토콜에서 (a) 모든 플레이어의 입력은 고유한 플레이어의 신원입니다. 추가적인 개인 입력으로 임의의 값 v를 갖는 플레이어, 송신자, 그리고 (b) 출력은 다음을 충족해야 합니다. 등급화된 합의의 동일한 속성 1과 2에 다음 속성 3'을 추가합니다. 보낸 사람이 정직하다면 vi = v이고 모든 정직한 플레이어에 대해 gi = 2 i. 9실제로 프로토콜의 1단계에서 발신자는 자신의 개인 값 v를 모든 플레이어에게 보내고 각 플레이어는 v′ i는 그가 1단계에서 보낸 사람으로부터 실제로 받은 값으로 구성됩니다.3.6 더 프로토콜 BA⋆ 이제 바이너리 BA 프로토콜 BBA⋆를 통해 임의 값 BA 프로토콜 BA⋆을 설명합니다. 등급 합의 프로토콜 GC. 아래에서 각 플레이어 i의 초기값은 v′입니다. 나. 프로토콜 BA⋆ 1단계와 2단계. 각 플레이어 i는 입력 v'에 대해 GC를 실행합니다. i, (vi, gi) 쌍을 계산합니다. 3단계, . . . 각 플레이어 i는 gi = 2이면 초기 입력 0, 그렇지 않으면 1로 BBA⋆를 실행합니다. 비트 outi를 계산하는 방법. 출력 결정. outi = 0이면 각 플레이어 i는 vi를 출력하고, 그렇지 않으면 \(\bot\)입니다. 정리 3.3. n \(\geq\)3t + 1일 때마다 BA⋆는 건전성 1의 (n, t)-BA 프로토콜입니다. 증거. 먼저 일관성을 증명한 다음 합의를 증명합니다. 일관성 증명. 어떤 값 v \(\in\)V , v′에 대해 가정합니다. i = v. 그러면 다음의 속성 3에 의해 등급 합의, GC 실행 후 모든 정직한 플레이어가 출력합니다(v, 2). 따라서 0은 BBA⋆ 실행이 끝나면 모든 정직한 플레이어의 초기 비트입니다. 따라서 계약에 따라 BA⋆ 실행이 끝나면 바이너리 비잔틴 계약의 속성, 모든 정직한 경우 outi = 0 플레이어. 이는 BA⋆에서 각 정직한 플레이어 i의 출력이 vi = v라는 것을 의미합니다. ✷ 계약 증명. BBA⋆는 바이너리 BA 프로토콜이므로 다음 중 하나를 수행합니다. (A) 모든 정직한 플레이어 i에 대해 outi = 1, 또는 (B) 모든 정직한 플레이어 i에 대해 outi = 0입니다. A의 경우 모든 정직한 플레이어는 BA⋆에서 \(\bot\)을 출력하므로 계약이 유지됩니다. 이제 사례 B를 살펴보겠습니다. 이 경우 BBA⋆ 실행 시 적어도 한 명의 정직한 플레이어 i의 초기 비트는 0입니다. (실제로 만약 모든 정직한 플레이어의 초기 비트는 1이었습니다. 그러면 BBA⋆의 일관성 속성에 따라 우리는 outj = 1 모든 정직한 j에 대해.) 따라서 GC 실행 후 i는 일부 정직한 j에 대해 쌍 (v, 2)를 출력합니다. 가치 v. 따라서 등급화된 합의의 속성 1에 따라 모든 정직한 플레이어 j에 대해 gj > 0입니다. 이에 따라 단계적 합의의 속성 2, vj = 모든 정직한 플레이어에 대한 v j. 이는 말미에 다음을 의미한다. BA⋆, 모든 정직한 플레이어 j는 v를 출력합니다. 따라서 B의 경우에도 일치가 유지됩니다. ✷ 일관성과 합의가 모두 유지되므로 BA⋆는 임의 값 BA 프로토콜입니다. 역사적 기록 Turpin과 Coan은 n \(\geq\)3t+1에 대해 모든 이진 (n, t)-BA가 프로토콜은 임의 값 (n, t)-BA 프로토콜로 변환될 수 있습니다. 임의 값 감소 등급별 합의를 통한 이진 비잔틴 합의에 대한 비잔틴 합의는 더욱 모듈화되고 더 깨끗하고 Algorand 프로토콜 Algorand '의 분석을 단순화합니다. Algorand에서 사용하기 위해 BA⋆ 일반화 Algorand은 모든 통신이 통신을 통해 이루어지는 경우에도 작동합니다. 험담. 그러나 전통적이고 친숙한 통신 네트워크에서 제시되지만, 선행 기술과 더 잘 비교하고 더 쉽게 이해할 수 있도록 프로토콜 BA⋆works 험담 네트워크에서도요. 실제로 Algorand의 상세한 실시예에서 우리는 그것을 제시할 것입니다. 험담 네트워크를 위해 직접. 또한 선수교체성을 만족시킨다는 점을 지적할 것이다. Algorand이 예상되는 매우 적대적인 모델에서 보안을 유지하는 데 중요한 속성입니다.
가십 통신 네트워크에서 작동하는 모든 BA 플레이어 교체 가능 프로토콜은 다음과 같습니다. 독창적인 Algorand 시스템 내에서 안전하게 사용됩니다. 특히 Micali와 Vaikunthanatan은 BA⋆를 확장하여 다수의 정직한 플레이어들과도 매우 효율적으로 작업할 수 있게 되었습니다. 그 프로토콜도 Algorand에서 사용될 수 있습니다.
従来の設定における BA プロトコル BA⋆
すでに強調したように、ビザンチン協定は Algorand の重要な要素です。確かに、それは通ります Algorand がフォークの影響を受けないような BA プロトコルの使用。ただし、私たちの攻撃に対して安全を確保するために、 強力な敵対者 Algorand は、新しいプレーヤーの置き換え可能性を満たす BA プロトコルに依存する必要があります 制約。さらに、Algorand を効率的にするには、そのような BA プロトコルが非常に効率的である必要があります。 BA プロトコルは、同期完全な理想的な通信モデルのために最初に定義されました。 ネットワーク (SC ネットワーク)。このようなモデルにより、BA プロトコルの設計と分析がより簡単になります。 6正直なパーセンテージ h と許容可能な失敗確率 F が与えられると、Algorand は上限 N を計算します。 ステップ内の検証者のメンバーの最大数まで。したがって、MP 仮定は n \(\leq\) N の場合にのみ成立する必要があります。 さらに、前述したように、MP の仮定は、他のメッセージがどれだけ多くても一緒に伝播される可能性があります。 mjさん。ただし、Algorand でわかるように、メッセージは基本的に重複しない時間で伝播されます。 間隔。その間、単一のブロックが伝播されるか、最大 N 個の検証者が小さなブロック (例: 200B) を伝播します。 メッセージ。したがって、MP の仮定をより弱い、しかしより複雑な方法で言い直すことができます。 7たとえば、彼は正直なプレイヤーが送信したメッセージをすぐに知ることができます。したがって、悪意のあるユーザー i' は、 正直なユーザー i と同時にメッセージを伝播するように求められますが、常に以下に基づいて自分のメッセージ m' を選択できます。 メッセージ m は実際に i によって伝播されます。この能力は、分散計算の用語で言えば、ラッシングに関連しています。 文学。したがって、このセクションでは、SC ネットワーク用の新しい BA プロトコル BA⋆ を導入し、 選手の入れ替え可能性の問題。プロトコル BA⋆ は別の値の貢献です。 実際、これは、これまでに知られている SC ネットワーク用の最も効率的な暗号化 BA プロトコルです。 Algorand プロトコル内で使用するには、異なるものを考慮して BA⋆を少し変更します。 通信モデルとコンテキスト。ただし、セクション X で、BA⋆がどのように使用されるかを強調するようにしてください。 実際のプロトコル Algorand 内。 まず、BA⋆が動作するモデルとビザンチン協定の概念を思い出すことから始めます。 3.1 同期の完全なネットワークと一致する敵対者 SC ネットワークには共通のクロックがあり、整数時間 r = 1、2、... ごとに時を刻みます。 。 。 偶数の時間に r をクリックするたびに、各プレーヤー i は単一のメッセージを瞬時に同時に送信します。 メッセージミスター i,j (おそらく空のメッセージ) を各プレイヤー j (自分自身を含む) に送信します。各氏 i、jが受信されます 同時に、プレイヤー j が送信者 i の身元とともに r + 1 をクリックします。 繰り返しますが、通信プロトコルでは、規定されたすべてに従えば、プレーヤーは正直です。 指示、それ以外の場合は悪意があります。すべての悪意のあるプレイヤーは完全に制御され、完璧に制御されます 敵対者によって調整され、特に、次の宛先のすべてのメッセージを即座に受信します。 悪意のあるプレーヤーを攻撃し、彼らが送信するメッセージを選択します。 敵対者は、悪意のある誠実なユーザーをいつでも、いつでもすぐにクリックさせることができます。 彼は、悪意のあるプレイヤーの数の可能な上限にのみ従うことを望んでいます。つまり、 敵対者は「正直なユーザー i によってすでに送信されたメッセージを妨害することはできません」。 通常通り配達されました。 敵対者は、各偶数ラウンドで瞬時に、 現在正直なプレイヤーが送信するメッセージを収集し、この情報を即座に使用して選択します。 悪意のあるプレイヤーが同時に送信するメッセージもチェックされます。 備考 • 敵対勢力。上記の設定は非常に敵対的です。実際、ビザンチン協定では 文学では、多くの設定がそれほど敵対的ではありません。ただし、さらに敵対的な設定もあります。 敵対者が、正直なプレイヤーから送信されたメッセージを見た後、私を攻撃する場合も考慮されます。 任意のタイミングで「r」をクリックすると、これらすべてのメッセージをネットワークから即座に消去できます。 破損した私は、r をクリックするときに悪意のある私が送信するメッセージを選択して、それらに送信してもらいます 通常通り配達されました。敵対者の予想される力は、私たちの設定で彼が持っているものと一致します。 • 物理的な抽象化。想定される通信モデルは、より物理的なモデルを抽象化したものです。 ここでは、プレーヤーの各ペア (i、j) が個別のプライベート通信回線 li、j によってリンクされます。 つまり、他の誰も、送信されたメッセージに関する情報を挿入したり、干渉したり、取得したりすることはできません。 リー、ジェイ。敵対者が li,j にアクセスする唯一の方法は、i または j を破壊することです。 • プライバシーと認証。 SC ネットワークでは、メッセージのプライバシーと認証が保証されます 仮定によります。対照的に、私たちの通信ネットワークでは、メッセージが伝播されます。 ピアツーピアでは、認証はデジタル署名によって保証され、プライバシーは存在しません。 したがって、プロトコル BA⋆を設定に採用するには、交換される各メッセージにデジタル署名が必要です (送信された状態をさらに特定します)。幸いなことに、私たちが提供する BA プロトコルは、 メッセージのプライバシーを必要としない Algorand での使用を検討してください。3.2 ビザンチン協定の概念 ビザンチン協定の概念は、ピーズ・ショスタクとランポート [31] によって導入されました。 バイナリの場合、つまり、すべての初期値がビットで構成される場合。しかし、すぐに延長されました 任意の初期値に設定します。 (Fischer [16] および Chor および Dwork [10] の調査を参照してください。) BA による プロトコルとは、任意の値のプロトコルを意味します。 定義 3.1.同期ネットワークでは、P を n プレーヤー プロトコルとし、そのプレーヤー セットは共通です。 t は、n \(\geq\) 2t + 1 となる正の整数です。 P は 任意の値 (それぞれバイナリ) (n, t) - 健全性 \(\sigma\) \(\in\)(0, 1) を持つビザンチン合意プロトコル 特殊記号 \(\bot\) を含まないすべての値 V のセットについて (それぞれ、V = {0, 1} の場合)、 最大でも t 人のプレイヤーが悪意を持っており、すべてのプレイヤーが 初期値 vi \(\in\)V 、すべての正直なプレイヤー j は確率 1 で停止し、outi \(\in\)V \(\cup\){\(\bot\)} の値を出力します。 少なくとも \(\sigma\) の確率で、次の 2 つの条件を満たすようにします。 1. 同意: すべての正直なプレイヤー i に対して outi = out となる out \(\in\)V \(\cup\){\(\bot\)} が存在します。 2. 一貫性: ある値 v \(\in\)V について、すべての正直なプレイヤーに対して vi = v の場合、out = v になります。 out を P の出力と呼び、各 outi をプレーヤー i の出力と呼びます。 3.3 BA 表記番号 BA プロトコルでは、プレイヤーは何人のプレイヤーが自分に特定のメッセージを送信したかを数える必要があります。 与えられたステップ。したがって、送信される可能性のある値 v ごとに、
s
i(v) (または、s がクリアの場合は単に #i(v)) は、i がステップ s で v を受け取ったプレイヤー j の数です。 プレーヤー i が各プレーヤー j からちょうど 1 つのメッセージを受信することを思い出してください。 プレイヤーが n の場合、すべての i と s に対して P v#s i(v) = n。 3.4 バイナリ BA プロトコル BBA⋆ このセクションでは、より多くの正直さに依存する新しいバイナリ BA プロトコル、BBA⋆ を紹介します。 プレイヤーの 3 分の 2 よりも多く、非常に高速です。悪意のあるプレイヤーが何をしようとも、 メインループが実行されるたびに、プレイヤーは確率 1/3 で一致します。 各プレーヤーは、一意の署名を満たすデジタル署名スキームの独自の公開鍵を持っています。 財産。このプロトコルは同期完全ネットワーク上で実行されることを目的としているため、 プレイヤーにメッセージのそれぞれに署名してもらう必要があります。 デジタル署名は、ステップ 3 で十分に共通なランダム ビットを生成するために使用されます。(Algorand では、 デジタル署名は、他のすべてのメッセージの認証にも同様に使用されます。) このプロトコルには最小限のセットアップが必要です。つまり、プレイヤーの意思とは独立した共通のランダム文字列 r です。 キー。 (Algorand では、r は実際には数量 Qr に置き換えられます。) プロトコル BBA⋆ は 3 ステップのループであり、プレイヤーはブール値を繰り返し交換し、 異なるプレイヤーが異なるタイミングでこのループを終了する可能性があります。プレイヤー i は伝播することでこのループを終了します。 あるステップで、特別な値 0 または特別な値 1 のいずれかが与えられ、それによってすべてのプレイヤーに次のように指示されます。 「ふり」すると、将来のすべてのステップで i からそれぞれ 0 と 1 を受け取ります。 (別の言い方: 仮定するプレーヤー j が別のプレーヤー i から受け取った最後のメッセージはビット b でした。その後、どの段階でも この場合、彼は i からメッセージを何も受け取らず、j はあたかも私が彼にビット b を送信したかのように動作します。) このプロトコルは、3 ステップのループが実行された回数を表すカウンター \(\gamma\) を使用します。 BBA⋆ の開始時、\(\gamma\) = 0。 (\(\gamma\) はグローバルカウンターと考えるかもしれませんが、実際には増加します) ループが実行されるたびに、各プレイヤーが実行します)。 n \(\geq\) 3t + 1 が存在します。ここで、t は悪意のあるプレーヤーの最大可能数です。バイナリ 文字列 x は、バイナリ表現 (先頭に 0 が付く可能性あり) が x である整数で識別されます。 lsb(x) は x の最下位ビットを示します。 プロトコルBBA⋆ (コミュニケーション) ステップ 1. [Coin-Fixed-To-0 Step] 各プレイヤー i は、bi を送信します。 1.1 #1の場合 i (0) \(\geq\)2t + 1 の場合、i は bi = 0 に設定し、0* を送信し、outi = 0 を出力します。 そして停止します。 1.2 #1 の場合 i (1) \(\geq\)2t + 1 の場合、i は bi = 1 に設定されます。 1.3 それ以外の場合、i は bi = 0 を設定します。 (コミュニケーション) ステップ 2. [Coin-Fixed-To-1 Step] 各プレイヤー i は、bi を送信します。 2.1 #2の場合 i (1) \(\geq\)2t + 1 の場合、i は bi = 1 に設定されます。 1∗ を送信します。 出力 outi = 1、 そして停止します。 2.2 #2の場合 i (0) \(\geq\)2t + 1 の場合、bi = 0 を設定します。 2.3 それ以外の場合、i は bi = 1 に設定されます。 (通信) ステップ 3. [コインを実際に投げるステップ] 各プレイヤー i は、bi と SIGi(r, \(\gamma\)) を送信します。 3.1 #3 の場合 i (0) \(\geq\)2t + 1 の場合、i は bi = 0 に設定されます。 3.2 #3 の場合 i (1) \(\geq\)2t + 1 の場合、i は bi = 1 に設定されます。 3.3 それ以外の場合、Si = {j \(\in\)N このステップ 3 で i に適切なメッセージを送信した人 } とすると、 i は bi = c \(\triangleq\)lsb(minj\(\in\)Si H(SIGi(r, \(\gamma\)))) を設定します。 \(\gamma\)i を 1 増加させます。そしてステップ1に戻ります。 定理3.1。 n \(\geq\)3t + 1 の場合、BBA⋆ は健全性 1 のバイナリ (n, t)-BA プロトコルです。 定理 3.1 の証明は [26] で与えられます。私たちの設定への適応性とプレーヤーの置き換え可能性 プロパティは斬新です。 歴史的発言 確率的バイナリ BA プロトコルは、Ben-Or によって最初に提案されました。 非同期設定 [7]。プロトコル BBA⋆ は、公開鍵設定に合わせて、 Feldman と Micali のバイナリ BA プロトコル [15]。彼らのプロトコルは、予想通りに機能したのは初めてでした。 一定のステップ数。プレイヤー自身が共通のコインを実装することで機能しましたが、 Rabin によって提案された概念で、外部の信頼できるパーティ [32] を通じて実装されました。3.5 段階的コンセンサスとプロトコル GC 任意の値について、ビザンチンの合意よりもはるかに弱い合意の概念を思い出してみましょう。 定義 3.2. P を、すべてのプレーヤーの集合が共通の知識であるプロトコルとします。 プレイヤー i は任意の初期値 v' を個人的に知っています 私。 n 人のプレイヤーによるすべての実行において、 そのほとんどが悪意のあるものであるため、すべての正直なプレイヤーは値とグレードのペア (vi、gi) の出力を停止します。 ここで、gi \(\in\){0, 1, 2} として、次の 3 つの条件を満たすようにします。 1. すべての正直なプレイヤー i と j に対して、 |gi −gj| \(\leq\)1。 2. すべての正直なプレイヤー i と j の場合、gi、gj > 0 ⇒vi = vj。 3. v'の場合 1 = \(\cdots\) = v' ある値 v については n = v、すべての正直なプレイヤー i については vi = v および gi = 2 となります。 歴史的メモ 段階的コンセンサスの概念は、単に段階的コンセンサスの概念から派生したものです。 十字軍の概念を強化することによって、[15] にフェルドマンとミカリによって提案された放送 Dolev [12] によって導入され、Turpin と Coan [33] によって洗練された合意。8 [15] では、著者らは、3 ステップ (n, t) で等級分けされたブロードキャスト プロトコル、グレードキャストも提供しました。 n≧3t+1。 n > 2t+1 のより複雑な (n, t) 段階ブロードキャスト プロトコルが後に発見されました。 カッツとクー [19] 著。 次の 2 ステップ プロトコル GC は、グレードキャストの最後の 2 ステップで構成されており、次のように表されます。 表記。この事実を強調し、セクション 4.1 のプロトコル Algorand の手順と一致させるために、次のようにします。 2 と 3 はそれぞれ GC のステップに名前を付けます。 プロトコル GC ステップ 2. 各プレイヤー i は v' を送信します プレイヤーの皆様へ。 ステップ 3. #2 の場合にのみ、各プレイヤー i がすべてのプレイヤーに文字列 x を送信します。 i (x) ≧ 2t + 1。 出力の決定。各プレーヤー i は、次のように計算されたペア (vi, gi) を出力します。 • ある x について #3 の場合 i (x) \(\geq\)2t + 1 の場合、vi = x および gi = 2 となります。 • ある x について #3 の場合 i (x) \(\geq\)t + 1 の場合、vi = x および gi = 1 となります。 • それ以外の場合、vi = \(\bot\)かつ gi = 0。 定理3.2。 n \(\geq\)3t + 1 の場合、GC は (n, t) 等級のブロードキャスト プロトコルです。 この証明は、[15] のプロトコル グレードキャストの証明の直後に続くため、省略されています。9 8 本質的に、段階的放送プロトコルでは、(a) すべてのプレーヤーの入力が、著名なプレーヤーの ID になります。 追加のプライベート入力として任意の値 v を持つ送信者であるプレーヤー、および (b) 出力は次の条件を満たす必要があります。 段階的コンセンサスの同じ特性 1 と 2 に加えて、次の特性 3': 送信者が正直であれば、vi = v、および すべての正直なプレイヤー i の場合、gi = 2。 9実際、彼らのプロトコルでは、ステップ 1 で、送信者は自分のプライベート値 v をすべてのプレーヤーに送信し、各プレーヤーに私が送信できるようにします。 v' i は、ステップ 1 で送信者から実際に受け取った値で構成されます。3.6 プロトコルBA⋆ ここで、バイナリ BA プロトコル BBA⋆ を介した任意値 BA プロトコル BA⋆ と、 段階的コンセンサス プロトコル GC。以下、各プレイヤー i の初期値は v' 私。 プロトコルBA⋆ ステップ 1 と 2。各プレーヤー i は、入力 v' で GC を実行します。 i、ペア (vi, gi) を計算するため。 ステップ3、. 。 。各プレイヤー i は、gi = 2 の場合は初期入力 0、それ以外の場合は 1 で BBA⋆ を実行します。 ビットoutiを計算するために。 出力の決定。各プレイヤー i は、outi = 0 の場合は vi を出力し、それ以外の場合は \(\bot\) を出力します。 定理3.3。 n \(\geq\)3t + 1 の場合、BA⋆ は健全性 1 の (n, t)-BA プロトコルです。 証拠。まず一貫性を証明し、次に一致を証明します。 一貫性の証明。ある値 v \(\in\)V 、 v' について仮定します。 i = v. 次に、次の性質 3 により、 段階的コンセンサス。GC の実行後、すべての正直なプレイヤーが (v, 2) を出力します。したがって、0は BBA⋆ の実行終了時のすべての正直なプレイヤーの最初のビット。したがって、本契約により、 バイナリ ビザンチン協定の特性、BA⋆ の実行終了時、すべての正直者に対して outi = 0 選手たち。これは、BA⋆ における各正直なプレイヤー i の出力が vi = v であることを意味します。 ✷ 同意の証明。 BBA⋆はバイナリBAプロトコルであるため、次のいずれかです。 (A) すべての正直なプレイヤー i に対して outi = 1、または (B) すべての正直なプレイヤー i に対して outi = 0。 ケース A では、すべての正直なプレイヤーが \(\bot\)in BA⋆ を出力するため、合意が成立します。ここでケース B を考えてみましょう。 この場合、BBA⋆ の実行では、少なくとも 1 人の正直なプレイヤー i の初期ビットは 0 です。 すべての正直なプレイヤーの初期ビットが 1 であった場合、BBA⋆ の Consistency プロパティにより、次のようになります。 すべての正直な j について outj = 1。) したがって、GC の実行後、i はいくつかのペア (v, 2) を出力します。 値 v。したがって、段階的コンセンサスの特性 1 により、すべての正直なプレイヤー j について gj > 0 となります。したがって、 段階的コンセンサスの特性 2、すべての正直なプレーヤーの vj = v j。これは、次のことを意味します。 BA⋆、すべての正直なプレイヤー j は v を出力します。したがって、合意はケース B にも当てはまります。 ✷ 一貫性と一致性の両方が成立するため、BA⋆は任意の値のBAプロトコルです。 歴史的メモ Turpin と Coan は、n \(\geq\)3t+1 の場合、任意の 2 値 (n, t)-BA が成り立つことを最初に示しました。 プロトコルは、任意の値の (n, t)-BA プロトコルに変換できます。リダクション任意値 段階的コンセンサスを介したビザンチン協定からバイナリビザンチン協定への移行は、よりモジュール化されており、 Algorand プロトコル Algorand ' の分析がよりクリーンになり、簡素化されます。 Algorand で使用するための BA⋆の一般化 Algorand は、すべての通信が経由の場合でも機能します。 うわさ話。ただし、従来の使い慣れた通信ネットワークで表示されているにもかかわらず、 従来技術との比較を容易にし、理解を容易にするため、プロトコル BA⋆works うわさ話ネットワークでも。実際、Algorand の詳細な実施形態では、それを提示します。 ゴシップネットワークに直接。また、プレーヤーの交換可能性を満たしていることも指摘します。 これは、想定される非常に敵対的なモデルで Algorand を安全にするために重要です。
うわさ通信ネットワークで動作する BA プレーヤーで置き換え可能なプロトコルはすべて、 本発明のAlgorandシステム内で安全に使用される。特にミカリとヴァイクンタナタン BA⋆は、単純に大多数の正直なプレイヤーに対しても非常に効率的に動作するように拡張しました。それ プロトコルも Algorand で使用できます。
Algorand의 두 가지 구현
논의된 바와 같이, 매우 높은 수준에서 Algorand 라운드는 이상적으로 다음과 같이 진행됩니다. 먼저 무작위로 선택된 사용자인 리더는 새로운 블록을 제안하고 유통시킵니다. (이 과정에는 처음에 다음이 포함됩니다. 몇 명의 잠재적인 리더를 선택한 다음 적어도 상당한 시간 동안 단일 공통 리더가 등장합니다.) 둘째, 무작위로 선택된 사용자 위원회가 선택됩니다. 리더가 제안한 블록에 대해 비잔틴 합의에 도달합니다. (이 과정에는 다음이 포함됩니다. BA 프로토콜의 각 단계는 별도로 선택된 위원회에 의해 운영됩니다.) 합의된 블록 그런 다음 위원회 구성원의 지정된 임계값(TH)에 따라 디지털 서명됩니다. 이러한 디지털 서명 모든 사람이 어느 블록이 새로운 블록인지 확신할 수 있도록 순환됩니다. (여기에는 서명자의 자격 증명을 사용하고 새 블록의 hash만 인증하여 모든 사람이 hash이 명확해지면 블록을 학습하는 것이 보장됩니다.) 다음 두 섹션에서는 Algorand, Algorand'의 두 가지 구현예를 제시합니다. 1 및 Algorand ' 2, 대부분의 정직한 사용자 가정 하에서 작동합니다. 섹션 8에서는 이러한 사항을 채택하는 방법을 보여줍니다. 정직한 다수의 돈 가정 하에서 작동하는 실시 예입니다. Algorand ' 1은 위원회 구성원의 2/3 이상이 정직하다고 가정합니다. 또한, Algorand ' 1, 비잔틴 합의에 도달하기 위한 단계 수는 적절하게 높은 수준으로 제한됩니다. 따라서 일정 시간 안에 압도적인 확률로 합의에 도달할 수 있도록 보장됩니다. 고정된 단계 수(그러나 잠재적으로 Algorand '의 단계보다 더 긴 시간이 필요할 수 있음) 2). 에서 마지막 단계에서 아직 합의에 이르지 못한 원격의 경우, 위원회는 다음 사항에 동의합니다. 항상 유효한 빈 블록입니다. Algorand ′ 2는 위원회의 정직한 구성원 수가 항상 그 수보다 많다고 생각합니다. 또는 고정된 임계값 tH와 동일합니다(압도적인 확률로 최소한 위원의 2/3가 정직합니다.) 게다가 Algorand ′ 2는 비잔틴 합의를 허용합니다. 임의의 단계 수로 도달할 수 있습니다(그러나 잠재적으로 Algorand '보다 짧은 시간 내에 가능). 1). 이러한 기본 실시예의 다양한 변형을 유도하는 것은 쉽습니다. 특히, 쉽기 때문에 Algorand ' 2, Algorand ' 수정 1 임의적으로 비잔틴 합의에 도달할 수 있도록 하기 위해 단계 수. 두 실시예 모두 다음과 같은 공통 핵심, 표기법, 개념 및 매개변수를 공유합니다. 4.1 공통 핵심 목표 이상적으로 각 라운드 r에 대해 Algorand은 다음 속성을 충족합니다. 1. 완벽한 정확성. 모든 정직한 사용자는 동일한 블록 Br에 동의합니다. 2. 완전성 1. 확률 1일 때 Br의 페이세트 PAY r은 최대이다.10 10지불 세트는 유효한 지불을 포함하도록 정의되고 정직한 사용자는 유효한 지불만 수행하도록 정의되므로 최대 PAY r에는 모든 정직한 사용자의 "현재 미결제" 지불이 포함되어 있습니다.물론 완벽한 정확성을 보장하는 것만으로는 쉽지 않습니다. 모든 사람은 항상 공식을 선택합니다. Payset PAY r이 비어 있어야 합니다. 하지만 이 경우 시스템의 완전성은 0이 됩니다. 불행하게도, 완벽한 정확성과 완전성을 모두 보장하는 것은 1 악의적인 존재 앞에서는 쉽지 않습니다. 사용자. Algorand에서는 보다 현실적인 목표를 채택합니다. 비공식적으로 h를 백분율로 나타내면 정직한 사용자의 h > 2/3, Algorand의 목표는 다음과 같습니다. 압도적인 확률로 h에 가까운 완벽한 정확성과 완전성을 보장합니다. 완전성보다 정확성에 우선권을 두는 것이 합리적인 선택인 것 같습니다. 한 라운드는 다음 라운드에서 처리될 수 있지만 가능하면 포크를 피해야 합니다. 비잔틴 협정 주도 완벽한 정확성은 다음과 같이 보장될 수 있습니다. 처음에는 라운드 r에서 각 사용자 i는 자신의 후보 블록 Br을 구성합니다. i , 그러면 모든 사용자가 비잔틴에 도달합니다. 하나의 후보 블록에 대한 합의. 소개에 따라 사용된 BA 프로토콜에는 다음이 필요합니다. 2/3의 정직한 다수이며 플레이어를 교체할 수 있습니다. 각 단계는 소규모로 실행될 수 있습니다. 내부 변수를 공유하지 않는 무작위로 선택된 검증자 세트입니다. 불행하게도 이 접근 방식은 완전성을 보장하지 않습니다. 그 후보가 그렇거든요. 정직한 사용자의 블록은 서로 완전히 다를 가능성이 높습니다. 따라서 궁극적으로 합의된 블록은 항상 최대 지불 세트가 아닌 블록일 수 있습니다. 사실, 항상 그럴 수도 있습니다. 빈 블록 B\(\varepsilon\), 즉 페이세트가 비어 있는 블록입니다. 기본적으로 비어 있는 것이 좋습니다. Algorand '는 다음과 같이 이러한 완전성 문제를 피합니다. 먼저 라운드 r의 리더인 \(\ell\)r이 선택됩니다. 그런 다음 \(\ell\)r은 자신의 후보 블록인 Br을 전파합니다. \(\ell\)r. 마지막으로 사용자는 블록에 대한 합의에 도달합니다. 그들은 실제로 \(\ell\)r로부터 받습니다. 왜냐하면 \(\ell\)r이 정직할 때마다 완벽한 정확성과 완전성이 있기 때문입니다. 1 둘 다 보유, Algorand '는 \(\ell\)r이 h에 가까운 확률로 정직하다는 것을 보장합니다. (리더가 되면 악의적인 경우, 합의된 블록이 빈 페이세트를 갖는 블록인지 여부는 신경 쓰지 않습니다. 결국, 악의적인 리더 \(\ell\)r은 항상 악의적으로 Br을 선택할 수 있습니다. \(\ell\)r은 빈 블록이 되고 솔직히 말해서 이를 전파하여 정직한 사용자가 빈 블록에 동의하도록 강요합니다.) 리더 선정 Algorand에서 r번째 블록은 Br = (r, PAY r, Qr, H(Br−1)) 형식입니다. 서론에서 이미 언급한 바와 같이, 수량 Qr−1은 다음과 같이 조심스럽게 구성됩니다. 본질적으로 우리의 매우 강력한 적에 의해 조작될 수 없습니다. (이 섹션의 뒷부분에서 우리는 이것이 왜 그런지에 대한 직관을 제공하십시오.) 라운드 r이 시작될 때 모든 사용자는 blockchain 지금까지 B0, . . . , Br−1로부터 그들은 모든 이전 라운드의 사용자 집합을 추론합니다. 는 PK1, . . . , PKr-1. 라운드 r의 잠재적 리더는 다음과 같은 사용자 i입니다. .H SIGi r, 1, Qr−1 \(\leq\)p . 설명해 보겠습니다. 수량 Qr−1은 블록 Br−1의 일부이므로 기본 서명 방식은 고유성 속성인 SIGi를 만족합니다. r, 1, Qr−1 고유한 이진 문자열입니다. i와 r에 연관되어 있습니다. 따라서 H는 임의의 oracle이므로 H SIGi r, 1, Qr−1 랜덤 256비트입니다 i와 r에 고유하게 연결된 긴 문자열입니다. 기호 “.” H 앞에 SIGi r, 1, Qr−1 은 소수점(우리의 경우 이진수)이므로 ri \(\triangleq\).H가 됩니다. SIGi r, 1, Qr−1 의 이진 확장입니다. i와 r에 고유하게 연결된 0과 1 사이의 임의의 256비트 숫자입니다. 따라서 확률은 ri는 p보다 작거나 같음은 본질적으로 p입니다. (우리의 잠재적 리더 선택 메커니즘은 다음과 같습니다. Micali와 Rivest [28]의 소액 결제 방식에서 영감을 받았습니다.) 확률 p는 압도적인(즉, 1 −F) 확률로 적어도 하나가 되도록 선택됩니다. 잠재적 검증자는 정직합니다. (사실이라면 p는 가장 작은 확률로 선택됩니다.)내가 자신의 서명을 계산할 수 있는 유일한 사람이기 때문에 그 사람만이 할 수 있다는 점에 유의하십시오. 그가 1차 잠재적 검증자인지 여부를 판단합니다. 그러나 자신의 자격 증명을 공개함으로써, \(\sigma\)r 나는 \(\triangleq\)SIGi r, 1, Qr−1 , 나는 누구에게나 라운드 r의 잠재적인 검증자임을 증명할 수 있습니다. 리더 \(\ell\)r은 hashed 자격 증명이 다음보다 작은 잠재적 리더로 정의됩니다. hashed 다른 모든 잠재적 리더 j의 자격 증명: 즉, H(\(\sigma\)r,s \(\ell\)r ) \(\leq\)H(\(\sigma\)r,s j). 악의적인 \(\ell\)r은 자신의 자격 증명을 공개하지 않을 수 있으므로 라운드 r의 올바른 리더는 결코 알려지지 않았으며, 가능성이 없는 관계를 제외하고 \(\ell\)r은 실제로 라운드 r의 유일한 리더입니다. 마지막으로 중요한 세부 사항을 살펴보겠습니다. 사용자 i는 잠재적인 리더가 될 수 있습니다. 리더) 라운드 r은 그가 최소한 k 라운드 동안 시스템에 속한 경우에만 해당됩니다. 이는 다음을 보장합니다. Qr 및 모든 미래 Q-양의 조작 불가능성. 실제로 잠재적인 리더 중 한 명은 실제로 Qr을 결정합니다. 검증인 선택 라운드 r의 각 단계 s > 1은 소규모 검증자 집합 SV r,s에 의해 실행됩니다. 다시 말하면, 각 검증자 i \(\in\)SV r,s는 이미 시스템 k 라운드에 참여한 사용자 중에서 무작위로 선택됩니다. r 앞에, 그리고 다시 특수 수량 Qr−1을 통해. 구체적으로, i \(\in\)PKr−k는 SV r,s의 검증자입니다. .H SIGi r, s, Qr−1 \(\leq\)p′ . 다시 한 번 말씀드리지만, 그가 SV r,s에 속해 있는지는 오직 저만이 알고 있습니다. 하지만 만약 그렇다면, 그는 다음과 같이 증명할 수 있습니다. 자신의 자격 증명 \(\sigma\)r,s를 표시함 나 \(\triangleq\)H(SIGi r, s, Qr−1 ). 검증자 i \(\in\)SV r,s는 mr,s라는 메시지를 보냅니다. 나, 에서 라운드 r의 단계 s, 이 메시지에는 그의 자격 증명 \(\sigma\)r,s가 포함됩니다. i, 검증자를 활성화하기 위해 Mr,s를 인식하는 중첩 단계 나 합법적인 단계 메시지입니다. 확률 p'는 SV r,s에서 #good이 다음의 수임을 보장하도록 선택됩니다. 정직한 사용자와 #bad 악의적인 사용자의 수가 압도적인 확률로 다음과 같습니다 두 가지 조건이 성립합니다. 실시예 Algorand '의 경우 1: (1) #좋음 > 2 \(\cdot\) #나쁨 그리고 (2) #good + 4 \(\cdot\) #bad < 2n, 여기서 n은 SV r,s의 예상 카디널리티입니다. 실시예 Algorand '의 경우 2: (1) #좋음 > tH 및 (2) #good + 2#bad < 2tH, 여기서 tH는 지정된 임계값입니다. 이러한 조건은 충분히 높은 확률로 (a) BA의 마지막 단계에서 프로토콜에 따르면, 새로운 블록 Br에 디지털 서명을 할 수 있는 정직한 플레이어가 적어도 일정 수만큼 있을 것입니다. (b) 라운드당 하나의 블록만이 필요한 수의 서명을 가질 수 있으며, (c) 사용된 BA 프로토콜은 (각 단계에서) 필요한 2/3의 정직한 다수를 갖습니다. 블록 생성 명확화 라운드 R 리더 \(\ell\)r이 정직하다면 해당 블록은 형태이다 브르 = r, PAY r, SIG\(\ell\)r Qr−1 , H Br−1 , 여기서 페이세트 PAY r은 최대입니다. (모든 지불 세트는 정의상 집합적으로 유효하다는 점을 기억하십시오.) 그렇지 않은 경우(즉, \(\ell\)r이 악의적인 경우) Br은 다음 두 가지 가능한 형식 중 하나를 갖습니다. 브르 = r, PAY r, SIGi Qr−1 , H Br−1 그리고 브롬 = 브롬 \(\varepsilon\) \(\triangleq\) r, \(\emptyset\), Qr−1, H Br−1 .첫 번째 형식에서 PAY r은 (필수적으로 최대가 아닌) 지불 세트이고 PAY r = \(\emptyset\)일 수 있습니다. 그리고 나는 라운드 r의 잠재적 리더. (단, 제가 리더는 아닐 수도 있습니다. 만약에 이런 일이 실제로 일어날 수도 있습니다. \(\ell\)r은 자신의 자격을 비밀로 유지하고 자신을 드러내지 않습니다.) 두 번째 형태는 BA 프로토콜의 라운드-R 실행에서 모든 정직한 플레이어가 빈 블록 Br인 기본값을 출력합니다. 우리 응용 프로그램에서는 \(\varepsilon\)입니다. (정의에 따르면 가능한 BA 프로토콜의 출력에는 일반적으로 \(\bot\)로 표시되는 기본값이 포함됩니다. 섹션 3.2를 참조하세요.) 두 경우 모두 페이세트가 비어 있지만 Br = r, \(\emptyset\), SIGi Qr−1 , H Br−1 그리고 브롬 \(\varepsilon\)은 구문적으로 다른 블록이며 두 가지 다른 상황에서 발생합니다. BA 프로토콜 실행이 원활하게 진행되었습니다.”, “프로그램에서 문제가 발생했습니다. BA 프로토콜이며 기본값이 출력되었습니다.” 이제 Algorand'의 라운드 r에서 블록 Br의 생성이 어떻게 진행되는지 직관적으로 설명해보자. 첫 번째 단계에서 각 적격 플레이어, 즉 각 플레이어 i \(\in\)PKr−k는 그가 잠재적인 선수인지 확인합니다. 리더. 만약 그렇다면, 그가 지금까지 본 모든 지불금을 사용하여 나에게 질문을 합니다. 현재 blockchain, B0, . . . , Br−1, 최대 지불 세트 PAY r을 비밀리에 준비하기 위해 나 , 그리고 비밀리에 후보 블록 Br =을 조립합니다. r, 지불 r 나, SIGi Qr−1 , H Br−1 . 즉, 그는 뿐만 아니라 Br에 포함 i는 두 번째 구성 요소로서 방금 준비된 지불 세트일 뿐만 아니라 세 번째 구성 요소로서 마지막 블록 Br−1의 세 번째 구성 요소인 Qr−1의 자신의 서명입니다. 마침내 그는 자신의 것을 전파했다. round-r-step-1 메시지, Mr,1 (a) 그의 후보 블록 Br을 포함하는 i i, (b) 그의 적절한 서명 그의 후보 블록(즉, Br의 hash 서명) i, 그리고 (c) 그 자신의 자격증명 \(\sigma\)r,1 나, 증명해 그는 실제로 라운드 r의 잠재적인 검증자입니다. (정직한 사람이 메시지를 전달할 때까지, Mr,1 나는, 적들은 내가 어떤 사람인지 전혀 모른다. 잠재적 검증자. 그가 정직하고 잠재적인 지도자를 타락시키고자 한다면 대적도 그렇게 할 수 있습니다. 무작위로 정직한 플레이어를 부패시킵니다. 하지만 일단 그가 Mr를 만나면,1 i , i의 자격 증명이 포함되어 있으므로 적은 나를 부패시킬 수 있다는 것을 알고 있고 부패시킬 수 있지만 Mr,1을 막을 수는 없습니다. i 에서 바이러스로 전파됩니다. 시스템의 모든 사용자에게 도달합니다.) 두 번째 단계에서 선택된 각 검증자 j \(\in\)SV r,2는 라운드의 리더를 식별하려고 시도합니다. 구체적으로 j는 1단계 자격 증명 \(\sigma\)r,1을 사용합니다. 나는1, . . . , \(\sigma\)r,1 in , 적절한 1단계 메시지 mr,1에 포함되어 있음 나 그는 받았다; hashes 모두, 즉 H를 계산합니다. \(\sigma\)r,1 i1 , . . . , H \(\sigma\)r,1 안으로 ; 자격증을 찾고, \(\sigma\)r,1 \(\ell\)j , hash은 사전순으로 최소값입니다. \(\ell\)r을 고려한다. j가 라운드 r의 리더가 됩니다. 고려되는 각 크리덴셜은 Qr-1의 디지털 서명이며 SIGi라는 점을 기억하세요. r, 1, Qr−1 이다 i와 Qr−1에 의해 고유하게 결정되며, H는 무작위 oracle이므로 각 H(SIGi r, 1, Qr−1 라운드 r의 각 잠재적 리더 i에 고유한 임의의 256비트 긴 문자열입니다. 이것으로부터 우리는 256비트 문자열 Qr−1 자체가 무작위적이고 독립적이라면 다음과 같이 결론을 내릴 수 있습니다. 그러면 라운드 r의 모든 잠재적 리더의 hashed 자격 증명이 선택됩니다. 사실, 모두 잠재적인 리더는 잘 정의되어 있으며 그들의 자격 증명도 마찬가지입니다(실제로 계산되었거나 아닙니다). 또한, 라운드 r의 잠재적 리더 집합은 라운드 사용자의 무작위 하위 집합입니다. r −k, 그리고 정직한 잠재적 리더인 나는 항상 그의 메시지를 적절하게 구성하고 전파합니다. 나 , 여기에는 i의 자격 증명이 포함되어 있습니다. 따라서 정직한 사용자의 비율은 h이므로, 어떤 경우에도 악의적인 잠재적 리더가 할 수 있는 최소한의 조치(예: 자신의 자격 증명을 공개하거나 숨기는 것) hashed 잠재적 리더 자격 증명은 모든 사람이 반드시 식별하는 정직한 사용자에게 속합니다. 라운드 r의 리더 \(\ell\)r이 되는 것입니다. 따라서 256비트 문자열 Qr−1 자체가 무작위이고 독립적으로 선택됨, 확률이 정확히 h (a) 리더 \(\ell\)r이 정직하고 (b) 모두에 대해 \(\ell\)j = \(\ell\)r 정직한 2단계 검증자 j. 실제로 hashed 자격 증명은 무작위로 선택되지만 Qr−1에 따라 달라집니다.무작위로 독립적으로 선택되지 않습니다. 그러나 우리는 분석을 통해 Qr−1이 라운드의 리더가 확률적으로 정직하다는 것을 보장할 만큼 충분히 조작 불가능합니다. h′는 h에 충분히 가깝습니다. 즉, h′ > h2(1 + h −h2)입니다. 예를 들어, h = 80%이면 h′ > .7424입니다. 라운드의 리더를 식별한 후(리더가 정직할 때 올바르게 수행), 2단계 검증자의 임무는 자신이 믿는 바를 초기값으로 사용하여 BA 실행을 시작하는 것입니다. 리더의 블록이 될 것입니다. 실제로 필요한 의사소통의 양을 최소화하기 위해, 검증자 j \(\in\)SV r,2는 입력 값 v′을 사용하지 않습니다. j를 비잔틴 프로토콜로 변경하고, 해당 블록 Bj를 그는 실제로 \(\ell\)j(사용자 j가 리더라고 믿는)로부터 받았지만 리더이지만 해당 블록의 hash, 즉 v′ j = H(Bi). 따라서 BA 프로토콜이 종료되면 검증자는 마지막 단계에서는 원하는 round-r 블록 Br을 계산하지 않고 계산합니다(인증 및 전파) H(Br). 따라서 H(Br)는 충분히 많은 검증자들에 의해 디지털 서명되기 때문에 BA 프로토콜의 마지막 단계에서 시스템의 사용자는 H(Br)가 새로운 프로토콜의 hash임을 깨닫게 됩니다. 블록. 그러나 실행이 상당히 비동기적이므로 검색(또는 대기)해야 합니다. Br 자체를 차단합니다. 프로토콜은 적의 공격에 관계없이 실제로 사용할 수 있도록 보장합니다. 할 수도 있습니다. 비동기성과 타이밍 Algorand ' 1 및 Algorand ' 2는 상당한 정도의 비동기성을 가지고 있습니다. 이는 공격자가 메시지 전달 일정을 정하는 데 큰 권한을 갖고 있기 때문입니다. 전파. 또한, 라운드의 총 단계 수에 제한이 있는지 여부가 있습니다. 실제로 수행된 단계 수에 따라 차이가 발생합니다. 그는 B0의 인증서를 알게 되자마자 . . . , Br−1, 사용자 i가 Qr−1을 계산하고 작업을 시작합니다. r 라운드에서는 그가 잠재적인 리더인지, 아니면 r 라운드의 일부 단계에서 검증자인지 확인합니다. 논의된 비동기성에 비추어 단계에서 행동해야 한다고 가정하면 나는 다양한 방법에 의존합니다. 행동하기 전에 충분한 정보를 갖고 있는지 확인하는 전략입니다. 예를 들어, 그는 검증자로부터 최소한 주어진 수의 메시지를 받기를 기다릴 수 있습니다. 이전 단계로 진행하거나, 그가 메시지를 충분히 받을 수 있도록 충분한 시간을 기다리세요. 이전 단계의 많은 검증자가 있습니다. Seed Qr과 Look-Back 매개변수 k 이상적으로 Qr의 양은 다음과 같아야 합니다. 무작위적이고 독립적이지만, 인간이 충분히 조작할 수 없는 것으로도 충분합니다. 대적. 얼핏 보면 H와 일치하는 Qr−1을 선택할 수 있습니다. 지불 r−1 , 따라서 다음을 피하십시오 Br−1에 Qr−1을 명시적으로 지정합니다. 그러나 기본 분석에 따르면 악의적인 사용자는 이 선택 메커니즘을 활용하십시오.11 몇 가지 추가 노력을 통해 수많은 다른 방법이 있음을 알 수 있습니다. 11우리는 r-1 라운드의 시작점에 있습니다. 따라서 Qr−2 = PAY r−2는 공개적으로 알려지며, 공격자는 비공개로 진행됩니다. 자신이 통제하는 잠재적인 리더가 누구인지 알고 있습니다. 공격자가 사용자의 10%를 통제한다고 가정하고, 매우 높은 확률로 악의적인 사용자 w가 라운드 r -1의 잠재적 리더가 됩니다. 즉, H SIGw r−2, 1, Qr−2 규모가 너무 작아서 정직하고 잠재적인 리더가 실제로 리더가 될 가능성은 거의 없습니다. 라운드 r −1의 리더. (우리는 비밀 암호화 분류 메커니즘을 통해 잠재적인 리더를 선택하므로 대적은 정직한 잠재적 지도자가 누구인지 모릅니다.) 따라서 대적은 부러워할 만한 입장에 있습니다. PAY'를 원하는 페이셋을 선택하는 위치로 설정하고, 이를 라운드 r-1의 공식 페이셋으로 설정합니다. 그러나, 그는 더 많은 일을 할 수 있습니다. 그는 또한 높은 확률로 () 그의 악의적인 사용자 중 한 명이 리더가 되도록 보장할 수 있습니다. PAY r이 무엇인지 자유롭게 선택할 수 있도록 라운드 r에도 적용됩니다. (등등. 적어도 한동안은, 즉, 이러한 확률이 높은 사건이 실제로 발생하는 한.) ()를 보장하기 위해 공격자는 다음과 같이 행동합니다. 지불하자' 라운드 r -1에 대해 적이 선호하는 페이세트가 됩니다. 그런 다음 그는 H(PAY ′)를 계산하고 일부에 대해 다음을 확인합니다. 이미 악의적인 플레이어 z, SIGz(r, 1, H(PAY'))는 특히 작습니다. 확률 z는 라운드 r의 리더가 될 것입니다. 만약 그렇다면, 그는 w에게 자신의 후보 블록을 선택하라고 지시합니다.전통적인 블록 수량을 기반으로 한 대안은 공격자가 쉽게 악용하여 다음을 보장할 수 있습니다. 악의적인 리더가 매우 빈번하다는 것입니다. 대신에 우리는 우리 브랜드를 구체적이고 귀납적으로 정의합니다. 새로운 수량 Qr은 적에 의해 조작 불가능하다는 것을 증명할 수 있습니다. 즉, Br이 빈 블록이 아닌 경우 Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r)이고, 그렇지 않은 경우 Qr \(\triangleq\)H(Qr−1, r)입니다. 이러한 Qr 구성이 작동하는 이유에 대한 직관은 다음과 같습니다. 잠시 동안 다음과 같이 가정하십시오. Qr−1은 실제로 무작위로 독립적으로 선택됩니다. 그렇다면 Qr도 그럴까요? \(\ell\)r이 정직할 때 대답은 (대략적으로) 그렇습니다. 그렇기 때문에 그렇습니다 H(SIG\(\ell\)r( \(\cdot\) ), r) : {0, 1}256 −→{0, 1}256 무작위 함수입니다. 그러나 \(\ell\)r이 악의적인 경우 Qr은 더 이상 Qr−1에서 일관적으로 정의되지 않습니다. 그리고 \(\ell\)r. Qr에는 최소한 두 개의 별도 값이 있습니다. 하나는 계속해서 Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r)이고, 다른 하나는 H(Qr−1,r)입니다. 먼저 두 번째 선택은 다소 임의적이지만, 두 번째 선택은 절대적으로 필수입니다. 그 이유는 악의적인 \(\ell\)r이 항상 다음과 같은 원인이 될 수 있기 때문입니다. 두 번째 단계의 정직한 검증자는 전혀 다른 후보 블록을 받게 됩니다.12 일단 이 경우 BA 프로토콜을 통해 블록이 최종적으로 합의되었는지 확인하는 것은 쉽습니다. 라운드 r은 기본 라운드가 될 것이므로 누구의 디지털 서명인 Qr−1도 포함하지 않습니다. 하지만 시스템은 계속되어야 하며 이를 위해서는 r 라운드의 리더가 필요합니다. 이 리더가 자동으로 공개적으로 선택되면 대적은 그를 사소하게 타락시킬 것입니다. 이전에 선택한 경우 동일한 프로세스를 통해 Qr−1은 \(\ell\)r보다 다시 r+1 라운드의 리더가 됩니다. 우리는 특별히 제안합니다 동일한 비밀 암호화 정렬 메커니즘을 사용하지만 새로운 Q-수량에 적용됩니다. H(Qr−1,r). 이 수량을 H의 출력으로 함으로써 출력이 무작위임을 보장합니다. H의 두 번째 입력으로 r을 포함하고 H의 다른 모든 사용에는 하나 또는 3개 이상의 입력이 있습니다. 그러한 Qr이 독립적으로 선택됨을 "보장"합니다. 다시 말하지만, 대체 Qr의 특정 선택 중요하지 않습니다. \(\ell\)r이 Qr에 대해 두 가지 선택권을 갖고 있으므로 확률을 두 배로 늘릴 수 있다는 것이 중요합니다. 또 다른 악의적인 사용자를 다음 리더로 삼는 것입니다. 악의적인 \(\ell\)r을 제어하는 적에게는 Qr에 대한 옵션이 훨씬 더 많을 수 있습니다. 예를 들어, x, y, z가 라운드 r의 세 명의 악의적인 잠재적 리더라고 가정해 보겠습니다. H \(\sigma\)r,1 엑스 < H \(\sigma\)r,1 와이 < H \(\sigma\)r,1 z 그리고 H \(\sigma\)r,1 z 특히 작습니다. 즉, 너무 작아서 H가 발생할 가능성이 높습니다. \(\sigma\)r,1 z 이다 모든 정직한 잠재적 리더의 hashed 자격 증명 중 더 작은 것입니다. 그런 다음 x에게 자신을 숨기라고 요청하여 자격 증명을 사용하면 적군은 y가 라운드 r -1의 리더가 될 가능성이 높습니다. 이 이는 그가 Qr에 대한 또 다른 옵션, 즉 SIGy를 가지고 있음을 의미합니다. Qr−1 . 마찬가지로, 적도 z가 라운드 r −1의 리더가 되도록 x와 y 모두에게 자격 증명을 보류하도록 요청하세요. Qr에 대한 또 다른 옵션인 SIGz를 얻습니다. Qr−1 . 물론, 이러한 옵션과 기타 옵션 각각은 실패할 확률이 0이 아닙니다. 공격자는 정직한 잠재적 사용자의 디지털 서명의 hash을 예측할 수 없습니다. Br−1 나 = (r −1, PAY ′, H(Br−2). 그렇지 않으면 그는 계속해서 새로운 지불을 생성할 두 명의 다른 악의적인 사용자 x와 y를 갖게 됩니다. \(\wp\)′, 일부 악의적인 사용자 z(또는 일부 고정 사용자 z)에 대해 H(SIGz (PAY ′ \(\cup\){\(\wp\)}))가 될 때까지 하나에서 다른 것으로 특히 작습니다. 이 실험은 매우 빨리 중단됩니다. 그리고 그럴 때 상대방은 w에게 프로포즈를 요청합니다. 후보 블록 Br−1 나 = (r −1, PAY ′ \(\cup\){\(\wp\)}, H(Br−2). 12예를 들어, 단순하게(그러나 극단적으로) 표현하자면, “두 번째 단계의 시간이 거의 만료될 때”, \(\ell\)r은 각 사용자에게 다른 후보 블록 Bi를 직접 이메일로 보냅니다. i. 이렇게 하면 2단계 검증자가 누구든지 완전히 다른 블록을 받게 될 것입니다.조심스러운 마르코프 체인과 같은 분석은 공격자가 어떤 옵션을 선택하든 상관없다는 것을 보여줍니다. 라운드 r -1에서 만들기 위해 시스템에 새로운 사용자를 주입할 수 없는 한 그는 사용자를 줄일 수 없습니다. 정직한 사용자가 h보다 훨씬 낮은 r + 40 라운드의 리더가 될 확률입니다. 이것이 이유이다 우리는 라운드 r의 잠재적 리더가 이미 라운드 r -k에 존재하는 사용자여야 한다고 요구합니다. 이는 r −k 라운드에서 적이 다음과 같은 확률을 크게 변경할 수 없도록 보장하는 방법입니다. 정직한 사용자가 라운드 r의 리더가 됩니다. 실제로 어떤 사용자를 추가하더라도 시스템에서 r -k부터 r까지의 라운드에서 그들은 잠재적인 리더가 될 자격이 없습니다. 리더) 라운드 r. 따라서 되돌아보기 매개변수 k는 궁극적으로 보안 매개변수입니다. (하지만, 섹션 7에서 살펴보겠지만 이는 일종의 "편의 매개변수"일 수도 있습니다.) 임시 열쇠 우리 프로토콜의 실행은 다음을 제외하고는 포크를 생성할 수 없지만 무시할 수 있는 확률로, 공격자는 합법적인 블록 이후에 r번째 블록에서 포크를 생성할 수 있습니다. 블록 r이 생성되었습니다. 대략적으로 Br이 생성되면 공격자는 각 단계의 검증자가 누구인지 알게 됩니다. 라운드 r은 입니다. 따라서 그는 그들 모두를 부패시키고 새로운 블록을 인증하도록 강요할 수 있습니다. 에프 브르. 이 가짜 블록은 합법적인 블록 이후에만 전파될 수 있으므로, 주의를 기울이는 것은 속지 않을 것입니다.13 그럼에도 불구하고, f Br은 구문론적으로 정확할 것이며 우리는 제조되는 것을 방지하고 싶습니다. 우리는 새로운 규칙을 통해 그렇게 합니다. 본질적으로 검증자의 구성원은 단계 s의 SV r,s를 설정합니다. 라운드 r에서는 임시 공개 키 pkr,s를 사용합니다. 나 메시지에 디지털 서명을 합니다. 이러한 키는 일회용이며 해당 비밀 키는 skr,s입니다. 나 한번 사용되면 폐기됩니다. 이렇게 하면 검증인이 나중에 부패한 경우, 적대자는 그가 원래 서명하지 않은 다른 항목에 서명하도록 강요할 수 없습니다. 당연히 우리는 공격자가 새로운 키 g를 계산하는 것이 불가능하다는 것을 보장해야 합니다. 홍보, 초 나 그리고 단계 s에서 사용하는 것이 검증자 i \(\in\)SV r,s의 올바른 임시 키임을 정직한 사용자에게 설득합니다. 4.2 표기법, 개념 및 매개변수의 공통 요약 표기법 • r \(\geq\)0: 현재 라운드 수. • s \(\geq\)1: 라운드 r의 현재 단계 번호. • Br: r 라운드에서 생성된 블록입니다. • PKr: r 라운드가 끝날 때와 r 라운드가 시작될 때의 공개 키 집합입니다. • Sr: 라운드 r -1 종료 시 및 라운드 r.14 시작 시 시스템 상태 • PAY r: Br에 포함된 페이세트입니다. • \(\ell\)r: 라운드 R 리더. \(\ell\)r은 라운드 r의 페이세트 PAY r을 선택합니다(그리고 다음 Qr을 결정합니다). • Qr: 라운드 r의 시드, 라운드 r의 끝에서 생성되는 수량(즉, 이진 문자열) 라운드 r + 1에 대한 검증자를 선택하는 데 사용됩니다. Qr은 블록의 페이세트와 독립적입니다. \(\ell\)r로 조작할 수 없습니다. 13주요 TV 네트워크의 뉴스 앵커를 부패시키고 오늘 뉴스 영화를 제작 및 방송하는 것을 고려하십시오. 클린턴 장관이 지난 대선에서 승리한 모습을 보여줍니다. 우리 대부분은 그것을 사기로 인식할 것입니다. 하지만 혼수상태에서 벗어나는 사람은 속을 수도 있습니다. 14동기적이지 않은 시스템에서는 "라운드 r의 끝 -1"과 "라운드 r의 시작"이라는 개념이 주의 깊게 정의할 필요가 있다. 수학적으로 PKr과 Sr은 초기 상태 S0과 블록에서 계산됩니다. B1, . . . , Br-1.• SV r,s: 라운드 r의 단계 s에 대해 선택된 검증자 세트입니다. • SV r: 라운드 r을 위해 선택된 검증자 세트, SV r = \(\cup\)s\(\geq\)1SV r,s. • MSV r,s 및 HSV r,s: 각각 악의적인 검증자 집합과 정직한 검증자 집합 SV r,s에서. MSV r,s \(\cup\)HSV r,s = SV r,s 및 MSV r,s ∩HSV r,s = \(\emptyset\). • n1 \(\in\)Z+ 및 n \(\in\)Z+: 각각 각 SV에서 예상되는 잠재적 리더 수 r,1, s > 1인 경우 각 SV r,s에서 예상되는 검증자 수입니다. n1 << n에 주목하세요. SV r,1에는 최소한 한 명의 정직하고 정직한 구성원이 필요하기 때문입니다. s > 1인 경우 각 SV r,s의 정직한 구성원 대다수. • h \(\in\)(0, 1): 2/3보다 큰 상수. h는 시스템의 정직성 비율입니다. 즉, 사용된 가정에 따라 각 PKr에서 정직한 사용자 또는 정직한 돈의 비율은 다음과 같습니다. 적어도 h. • H: 무작위 oracle로 모델링된 암호화 hash 함수입니다. • \(\bot\): H의 출력과 동일한 길이의 특수 문자열입니다. • F \(\in\)(0, 1): 허용되는 오류 확률을 지정하는 매개변수입니다. 확률 \(\leq\)F는 다음과 같습니다. "무시할 수 있는" 것으로 간주되고 확률 \(\geq\)1 −F는 "압도적인" 것으로 간주됩니다. • ph \(\in\)(0, 1): 라운드 r의 리더인 \(\ell\)r이 정직할 확률입니다. 이상적으로는 ph = h입니다. 와 공격자의 존재 여부에 따라 ph 값이 분석에서 결정됩니다. • k \(\in\)Z+: 되돌아보기 매개변수. 즉, 라운드 r −k는 라운드 r에 대한 검증자가 다음과 같은 위치에 있습니다. 즉, SV r \(\subseteq\)PKr−k.15에서 선택됨 • p1 \(\in\)(0, 1): 라운드 r의 첫 번째 단계에서 라운드 r −k의 사용자는 SV r,1에 속하도록 선택됩니다. 확률 p1 \(\triangleq\) n1 |P Kr−k|. • p \(\in\)(0, 1): 라운드 r의 각 단계 s > 1에 대해 라운드 r −k의 사용자는 SV r,s에 속하도록 선택됩니다. 확률 p \(\triangleq\) 엔 |P Kr−k|. • CERT r: Br에 대한 인증서입니다. 이는 적절한 검증자로부터 나온 H(Br)의 tH 서명 세트입니다. 라운드 r. • Br \(\triangleq\)(Br, CERT r)은 검증된 블록입니다. 내가 Br을 아는 사용자는 그가 입증된 블록의 두 부분을 모두 소유하고 성공적으로 검증한 경우입니다. 다른 사용자에게 표시되는 CERT r은 다를 수 있습니다. • τr i : 사용자 i가 Br을 알고 있는 (현지) 시간입니다. Algorand 프로토콜에서 각 사용자는 자신의 나만의 시계. 서로 다른 사용자의 시계를 동기화할 필요는 없지만 속도는 동일해야 합니다. 분석 목적으로만 기준 시계를 고려하고 플레이어의 그와 관련된 시간. • \(\alpha\)r,s 나 그리고 \(\beta\)r,s i : 각각 사용자 i가 단계 s의 실행을 시작하고 종료하는 (로컬) 시간입니다. 라운드 r. • Λ 및 \(\lambda\): 본질적으로 각각 1단계 및 \(\lambda\)를 실행하는 데 필요한 시간의 상한입니다. Algorand 프로토콜의 다른 단계에 필요한 시간. 매개변수 Λ는 단일 1MB 블록을 전파하는 데 걸리는 시간의 상한입니다. (우리 표기법에서는 Λ = \(\lambda\) \(\rho\),1MB. 단순화를 위해 \(\rho\) = 1로 설정하고 블록은 최대 1MB 길이로 선택하면 Λ = \(\lambda\)1,1,1MB가 됩니다.) 15엄밀히 말하면 “r −k”는 “max{0, r −k}”이어야 합니다.매개변수 \(\lambda\)는 단계 s > 1에서 검증자당 하나의 작은 메시지를 전파하는 데 걸리는 시간의 상한입니다. (Bitcoin에서와 같이 32B 키가 있는 타원 곡선 서명을 사용하면 검증자 메시지의 길이는 200B입니다. 따라서 표기법에서는 \(\lambda\) = \(\lambda\)n,\(\rho\),200B입니다.) Λ = O(\(\lambda\))라고 가정합니다. 개념 • 검증인 선택. 각 라운드 r 및 단계 s > 1에 대해 SV r,s \(\triangleq\){i \(\in\)PKr−k: .H(SIGi(r, s, Qr−1)) \(\leq\)p}. 각각 사용자 i \(\in\)PKr−k는 자신의 장기 키를 사용하여 자신의 서명을 개인적으로 계산하고 i \(\in\)SV r,s인지 아닌지. i \(\in\)SV r,s이면 SIGi(r, s, Qr−1)은 i의 (r, s) 자격 증명이며 간략하게 표시됩니다. \(\sigma\)r,s에 의해 나. 라운드 r의 첫 번째 단계에서는 SV r,1 및 \(\sigma\)r,1 나 p는 p1으로 대체되어 유사하게 정의됩니다. 는 SV r,1의 검증자는 잠재적인 리더입니다. • 리더 선택. 사용자 i \(\in\)SV r,1은 H(\(\sigma\)r,1인 경우) \(\ell\)r로 표시되는 라운드 r의 리더입니다. i ) \(\leq\)H(\(\sigma\)r,1 j) 모든 잠재력에 대해 리더 j \(\in\)SV r,1. 두 플레이어의 자격 증명의 hashes를 비교할 때마다 가능성은 희박합니다. 동점인 경우 프로토콜은 항상 사전순으로 동점을 끊습니다(장기 공개). ) 잠재적 지도자의 열쇠. 정의에 따르면 플레이어 \(\ell\)r의 크리덴셜 값 hash도 전체 사용자 중 가장 작습니다. PKr-k. 잠재적인 리더는 자신이 리더인지 아닌지 개인적으로 결정할 수 없습니다. 다른 잠재적 리더의 자격 증명을 보지 않고. hash 값은 무작위로 균일하므로 SV r,1이 비어 있지 않으면 \(\ell\)r은 항상 존재하며 적어도 h의 확률로 정직합니다. 매개변수 n1은 다음을 보장할 만큼 충분히 큽니다. SV r,1은 압도적인 확률로 비어 있지 않습니다. • 블록 구조. 비어 있지 않은 블록은 Br = (r, PAY r, SIG\(\ell\)r(Qr−1), H(Br−1)) 형식이며, 빈 블록은 Br 형태이다 Ϋ = (r, \(\emptyset\), Qr−1, H(Br−1)). 비어 있지 않은 블록에는 지불이 발생하지 않는 경우에도 여전히 빈 페이세트 PAY r이 포함될 수 있습니다. 이번 라운드 또는 리더가 악의적인 경우. 그러나 비어 있지 않은 블록은 \(\ell\)r, 그의 자격 증명 \(\sigma\)r,1 \(\ell\)r과 SIG\(\ell\)r(Qr−1)은 모두 적시에 공개되었습니다. 프로토콜은 다음을 보장합니다. 즉, 리더가 정직하다면 블록은 압도적인 확률로 비어 있지 않을 것입니다. • 시드 Qr. Br이 비어 있지 않으면 Qr \(\triangleq\)H(SIG\(\ell\)r(Qr−1), r)이고, 그렇지 않으면 Qr \(\triangleq\)H(Qr−1, r)입니다. 매개변수 • 다양한 매개변수 간의 관계. — 라운드 r의 검증자와 잠재적 리더는 PKr-k의 사용자 중에서 선택됩니다. 여기서 k는 상대가 r −k −1 라운드에서 다시 Qr−1을 예측할 수 없도록 선택됩니다. F보다 확률이 더 높습니다. 그렇지 않으면 악의적인 사용자를 유입시킬 수 있습니다. 라운드 r -k에 대해, 이들 모두는 라운드 r에서 잠재적인 리더/검증자가 될 것입니다.
원하는 일부 단계에 대해 SV r에 악의적인 리더 또는 악의적인 다수가 있는 경우 그. — 각 라운드 r의 1단계에서는 압도적인 확률로 SV r,1̸= \(\emptyset\)이 되도록 n1이 선택됩니다. • 중요한 매개변수의 예시 선택. — H의 출력 길이는 256비트입니다. — h = 80%, n1 = 35. — Λ = 1분, \(\lambda\) = 10초. • 프로토콜 초기화. 프로토콜은 r = 0으로 시간 0에서 시작합니다. "B-1" 또는 "CERT-1"이 존재하지 않으므로, 구문론적으로 B−1은 Q−1을 지정하는 세 번째 구성 요소가 있는 공개 매개변수이며 모든 사용자는 시간 0에서 B−1을 알고 있습니다.
Algorand の 2 つの実施形態
説明したように、非常に高いレベルで、Algorand のラウンドは理想的には次のように進行します。まず、ランダムに 選ばれたユーザー、つまりリーダーが新しいブロックを提案し、回覧します。 (このプロセスには最初に 潜在的なリーダーを数人選び、少なくともかなりの時間は、 単一の共通リーダーが出現します。) 次に、ランダムに選択されたユーザーの委員会が選択され、 指導者が提案したブロックに関してビザンチン合意に達する。 (このプロセスには次のことが含まれます) BA プロトコルの各ステップは、個別に選択された委員会によって実行されます。) 合意されたブロック その後、委員会メンバーの指定されたしきい値 (TH) によってデジタル署名されます。これらのデジタル署名 が回覧されるため、どれが新しいブロックであるかが全員に保証されます。 (これには、 署名者の資格情報を確認し、新しいブロックの hash だけを認証して、全員が hash が明確になると、ブロックを学習することが保証されます。) 次の 2 つのセクションでは、Algorand、Algorand の 2 つの実施形態を示します。 1 と Algorand 」 2、 それは大多数の正直なユーザーの想定の下で動作します。セクション 8 では、これらを採用する方法を示します。 実施形態は、金銭の正直な多数派の仮定の下で機能する。 Algorand 」 1 は、委員会メンバーの 3 分の 2 以上が正直であることのみを想定しています。さらに、 Algorand 」 1、ビザンチン合意に達するためのステップ数は適切な上限に制限されている そのため、短期間で圧倒的な確率で合意に達することが保証されます。 固定ステップ数 (ただし、Algorand のステップよりも時間がかかる可能性があります) 2)。で 最後の段階までにまだ合意に達していないリモートケースでは、委員会は次の点で合意する。 空のブロック。常に有効です。 Algorand 」 2 は、委員会の誠実なメンバーの数が常に 2 よりも多いことを想定しています。 または固定しきい値 tH に等しい (これにより、圧倒的な確率で、少なくとも 委員会メンバーの 2/3 は正直です)。さらに、Algorand 」 2 ビザンチン協定により、 任意のステップ数で到達します (ただし、Algorand よりも短い時間で到達する可能性があります) 1)。 これらの基本的な実施形態の多くの変形を導き出すことは容易である。特に、次のことを考えると簡単です。 Algorand 」 2、Algorand を変更します 1 任意の方法でビザンチン協定に達することができるようにするため ステップ数。 両方の実施形態は、以下の共通のコア、表記法、概念、およびパラメータを共有する。 4.1 共通のコア 目的 理想的には、各ラウンド r について、Algorand は次の特性を満たします。 1. 完璧な正しさ。すべての正直なユーザーは同じブロック Br に同意します。 2. 完全性 1. 確率 1 では、Br のペイセット、PAY r は最大になります。10 10 ペイセットは有効な支払いを含むように定義されており、正直なユーザーは有効な支払いのみを行うように定義されているため、 PAY r には、すべての誠実なユーザーの「現在未払い」の支払いが含まれます。もちろん、完全な正しさを保証するだけでは簡単ではありません。誰もが常に公式を選択します。 ペイセット PAY r を空にします。ただし、この場合、システムの完全性は 0 になります。残念ながら、 完全な正確性と完全性の両方を保証すること 1 は、悪意のあるものが存在する場合には容易ではありません。 ユーザー。したがって、Algorand はより現実的な目標を採用しています。非公式に、h をパーセンテージを表すものとします。 正直なユーザーの割合、h > 2/3、Algorand の目標は 圧倒的な確率で、h に近い完全な正確性と完全性を保証します。 完全性よりも正確さを優先するのは合理的な選択であるように思えます。支払いは次の方法で処理されません。 あるラウンドは次のラウンドで処理できますが、可能であればフォークは避けるべきです。 主導されたビザンチン協定 完全な正確性は次のように保証されます。初めに ラウンド r では、各ユーザー i が自分の候補ブロック Br を構築します。 i 、その後、すべてのユーザーが Byzantine に到達します 1 つの候補ブロックについての合意。紹介のとおり、採用されている BA プロトコルには次のものが必要です。 2/3 の正直な多数派であり、プレーヤーは交代可能です。その各ステップは小規模で実行できます。 内部変数を共有しない、ランダムに選択された検証者のセット。 残念ながら、このアプローチには完全性の保証はありません。それはそうです、なぜなら候補者は 正直なユーザーのブロックは、おそらく互いにまったく異なります。したがって、最終的には、 合意されたブロックは、常に最大ではないペイセットを持つブロックである可能性があります。実際には、常にそうである可能性があります。 空のブロック、B\(\varepsilon\)、つまりペイセットが空のブロック。デフォルトの空のものでも構いません。 Algorand ' は、次のようにこの完全性の問題を回避します。まず、ラウンド r のリーダー \(\ell\)r を選択します。 次に、\(\ell\)r は自身の候補ブロック Br を伝播します。 \(\ell\)r.最終的にユーザーはブロックについて合意に達します 実際には\(\ell\)rから受け取ります。なぜなら、\(\ell\)r が正直であるときはいつでも、完全な正確性と完全性が保たれるからです。 1 両方が成り立つ場合、 Algorand ' は、\(\ell\)r が h に近い確率で正直であることを保証します。 (リーダーがいるとき 悪意がある場合、合意されたブロックが空のペイセットを持つブロックであるかどうかは気にしません。結局のところ、 悪意のあるリーダー\(\ell\)r は常に悪意を持って Br を選択する可能性があります \(\ell\)r を空のブロックにして、正直に言うと それを伝播させて、正直なユーザーに空のブロックへの同意を強制します。) リーダーの選択 Algorand では、r 番目のブロックは Br = (r, PAY r, Qr, H(Br−1) の形式になります。 冒頭ですでに述べたように、量 Qr−1 は次のように注意深く構築されます。 私たちの非常に強力な敵によって本質的に操作することはできません。 (このセクションの後半で、 これが当てはまる理由については、直感的に理解してください。) ラウンド r の開始時に、すべてのユーザーは次のことを知っています。 blockchain これまでのところ、B0、. 。 。 , Br−1、そこから彼らは前のすべてのラウンドのユーザーのセットを推定します。 は、PK1、 です。 。 。 、PKr−1。ラウンド r の潜在的なリーダーは、次のようなユーザー i です。 .H シギ r、1、Qr−1 \(\leq\)p 。 説明しましょう。 量 Qr−1 はブロック Br−1 の一部であるため、その基礎となることに注意してください。 署名スキームは一意性プロパティ SIGi を満たします r、1、Qr−1 一意のバイナリ文字列です i と r に関連付けられます。したがって、H はランダムな oracle であるため、H シギ r、1、Qr−1 はランダムな 256 ビットです i と r に一意に関連付けられた長い文字列。記号「。」 Hさんの前で シギ r、1、Qr−1 です 小数点 (この場合は 2 進数)、つまり ri \(\triangleq\).H シギ r、1、Qr−1 のバイナリ展開です i と r に一意に関連付けられた 0 から 1 までの 256 ビットのランダムな数。したがって、その確率は、 ri が p 以下であることは、本質的に p です。 (私たちの潜在的なリーダーの選択メカニズムは、 Micali と Rivest [28] の少額決済スキームからインスピレーションを得たものです。) 確率 p は、圧倒的な (つまり 1 −F) 確率で、少なくとも 1 つの確率が得られるように選択されます。 潜在的な検証者は正直です。 (実際であれば、p はそのような確率が最小になるように選択されます。)i は自分自身の署名を計算できる唯一の人であるため、i だけが実行できることに注意してください。 彼がラウンド 1 の潜在的な検証者であるかどうかを判断します。ただし、彼自身の資格を明らかにすることで、 \(\sigma\)r 私\(\triangleq\)SIGi r、1、Qr−1 、私はラウンド r の潜在的な検証者であることを誰にでも証明できます。 リーダー \(\ell\)r は、hash された資格情報が、 他のすべての潜在的なリーダー j の hashed 資格情報: つまり、H(\(\sigma\)r,s \(\ell\)r ) \(\leq\)H(\(\sigma\)r,s j)。 悪意のある\(\ell\)r は自分の資格情報を明らかにしない可能性があるため、ラウンド r の正しいリーダーは、 決して知られることはなく、ありそうもない関係を除けば、\(\ell\)r がラウンド r の唯一のリーダーであることは確かです。 最後に、最後に重要な詳細を取り上げましょう。ユーザー i は潜在的なリーダーになる可能性があります (したがって、 ラウンド r のリーダー)は、彼が少なくとも k ラウンドの間システムに属していた場合に限ります。これにより保証されます Qr と将来のすべての Q 量の操作不可能性。実際、潜在的なリーダーの一人は、 実際にQrを決定します。 検証者の選択 ラウンド r の各ステップ s > 1 は、小さな検証者のセット SV r,s によって実行されます。 繰り返しますが、各検証者 i \(\in\)SV r,s は、システム k ラウンドに既に参加しているユーザーの中からランダムに選択されます。 r の前に、そして再び特殊量 Qr−1 を介して。具体的には、次の場合、i \(\in\)PKr−k は SV r,s の検証子です。 .H シギ r、s、Qr−1 \(\leq\)p' 。 もう一度言いますが、彼がSV r,sに属しているかどうかは私だけが知っていますが、もしこれが事実である場合、彼は次のようにしてそれを証明できるでしょう。 彼の資格 \(\sigma\)r,s を提示する 私は \(\triangleq\)H(シギ r、s、Qr−1 )。検証者 i \(\in\)SV r,s がメッセージ mr,s を送信します。 私は、で ラウンド r のステップ s、このメッセージには彼の資格情報 \(\sigma\)r,s が含まれます i 、検証者を有効にするため 次のステップで、ミスターのことを認識します。 私は は正当なステップメッセージです。 確率 p' は、SV r,s において #good を 正直なユーザーと #bad 悪意のあるユーザーの数では、圧倒的な確率で次のような結果になります。 という2つの条件が成立します。 実施形態 Algorand の場合 1: (1) #良い > 2 \(\cdot\) #悪い および (2) #good + 4 \(\cdot\) #bad < 2n、n は SV r,s の予想されるカーディナリティです。 実施形態 Algorand の場合 2: (1) #good > thH および (2) #good + 2#bad < 2tH、ここで tH は指定されたしきい値です。 これらの条件は、十分に高い確率で、(a) BA の最後のステップで、 プロトコルに従うと、新しいブロック Br にデジタル署名する正直なプレイヤーが少なくとも一定数存在します。 (b) 必要な数の署名を持つことができるのはラウンドごとに 1 つのブロックのみ、および (c) 使用される BA プロトコルは(各ステップで)必要な 2/3 の正直な過半数を持っています。 ブロック生成の明確化 ラウンド r リーダー \(\ell\)r が正直であれば、対応するブロックは という形です Br = r、PAY r、SIG\(\ell\)r Qr−1 、H Br−1 、 ここで、ペイセット PAY r は最大です。 (すべてのペイセットは、定義上、集合的に有効であることを思い出してください。) それ以外の場合 (つまり、\(\ell\)r が悪意のある場合)、Br は次の 2 つの可能な形式のいずれかになります。 Br = r、ペイ、r、SIGi Qr−1 、H Br−1 そして Br = Br \(\varepsilon\) \(\triangleq\) r、\(\emptyset\)、Qr−1、H Br−1 。最初の形式では、PAY r は (必ずしも最大ではない) ペイセットであり、PAY r = \(\emptyset\) となる可能性があります。そして私は ラウンドrのリーダー候補。 (ただし、私はリーダーではないかもしれません。) \(\ell\)r は自分の資格を秘密にし、自分自身を明らかにしません。) 2 番目の形式は、BA プロトコルのラウンド R 実行において、すべての正直なプレイヤーが デフォルト値、つまり空のブロック Br を出力します。 私たちのアプリケーションでは\(\varepsilon\)です。 (定義上、可能性があるのは、 BA プロトコルの出力には、一般に \(\bot\) で示されるデフォルト値が含まれます。セクション 3.2 を参照してください。) どちらの場合もペイセットは空ですが、Br = r、\(\emptyset\)、SIGi Qr−1 、H Br−1 そしてBr \(\varepsilon\) は構文的に異なるブロックであり、2 つの異なる状況で発生します。それぞれ、「すべて」 BA プロトコルの実行は十分にスムーズに進みました」、および「プロトコルで何か問題が発生しました」 BAプロトコルであり、デフォルト値が出力されました。」 ここで、 Algorand ' のラウンド r でブロック Br の生成がどのように進行するかを直感的に説明しましょう。 最初のステップでは、各適格なプレーヤー、つまり各プレーヤー i \(\in\)PKr−k が、自分が潜在的なプレーヤーであるかどうかを確認します。 リーダー。これが事実である場合、私は、彼がこれまでに見たすべての支払いを使用して尋ねられます。 現在のblockchain、B0、. 。 。 , Br−1、最大支払いセット PAY r を密かに準備します。 私は、そして密かに 候補ブロック Br = を組み立てます。 r、支払いr 私、シギ Qr−1 、H Br−1 。つまり、彼はそうするだけでなく、 Brに含める i 、その 2 番目のコンポーネントとして、準備されたばかりのペイセットですが、また、その 3 番目のコンポーネントとして、 最後のブロック Br-1 の 3 番目のコンポーネントである Qr-1 の彼自身の署名。最後に、彼は自分の考えを広めます。 ラウンド R ステップ 1 メッセージ、mr,1 i 、これには (a) 彼の候補ブロック Br が含まれます。 i 、(b) 彼の適切な署名 彼の候補者ブロックの署名 (つまり、Br の hash の署名) i 、および (c) 彼自身の資格情報 \(\sigma\)r,1 私は証明します 彼が確かにラウンド R の潜在的な検証者であることを。 (正直な私がメッセージを提出するまで注意してください、mr,1 私、敵対者は私が 潜在的な検証者。彼が正直な潜在的な指導者を堕落させたいのであれば、敵対者も同様にそうするかもしれない。 腐敗したランダムな正直なプレイヤー。しかし、ひとたびミスター1を見ると、 i には i の資格情報が含まれているため、 敵対者は i を破壊することを知っており、破壊する可能性がありますが、mr,1 を防ぐことはできません。 i はウイルスによって伝播され、から システム内のすべてのユーザーに到達します。) 2 番目のステップでは、選択された各検証者 j \(\in\)SV r,2 がラウンドのリーダーを識別しようとします。 具体的には、j はステップ 1 の資格情報 \(\sigma\)r,1 を取得します。 i1、. 。 。 、\(\sigma\)r,1 に、適切なステップ 1 メッセージ mr,1 に含まれています 私は 彼は受け取りました。 hashes、つまり H を計算します \(\sigma\)r,1 i1 、。 。 。 、H \(\sigma\)r,1 で ;資格情報を見つけて、 \(\sigma\)r,1 \(\ell\)j 、その hash は辞書編集上最小です。 \(\ell\)rを考慮します j がラウンド r のリーダーになります。 考慮される各資格情報は Qr-1 のデジタル署名であることを思い出してください。 r、1、Qr−1 です i と Qr−1 によって一意に決定され、H はランダム oracle であるため、各 H(SIGi r、1、Qr−1 は、ラウンド r の潜在的な各リーダー i に固有のランダムな 256 ビット長の文字列です。 このことから、256 ビット文字列 Qr−1 自体がランダムかつ独立して存在する場合、次のように結論付けることができます。 選択されると、ラウンド r の潜在的なリーダー全員の hash された資格情報が取得されます。実際、すべて 潜在的なリーダーは明確に定義されており、その資格情報(実際に計算されたものであるかどうかにかかわらず)も同様です。 ではありません)。さらに、ラウンド r の潜在的なリーダーのセットは、ラウンドのユーザーのランダムなサブセットです。 r −k、そして誠実な潜在的なリーダーである私は、常に彼のメッセージを適切に構築し、広めます、mr 私、 これには i の資格情報が含まれています。したがって、正直なユーザーの割合は h であるため、 悪意のある潜在的なリーダーが行う可能性があるもの (例: 自分の資格情報を明らかにしたり隠したり)、最低限の hashed 潜在的リーダー資格情報は誠実なユーザーに属し、必然的に全員が識別します ラウンドrのリーダー\(\ell\)rになる。したがって、256 ビット文字列 Qr−1 自体がランダムであり、 独立に選択され、確率は正確に h (a) リーダー \(\ell\)r は正直であり、(b) リーダー \(\ell\)r はすべてのリーダー \(\ell\)j = \(\ell\)r 正直なステップ 2 検証者 j. 実際には、hash された資格情報はランダムに選択されますが、Qr-1 に依存します。無作為かつ独立して選択されたものではありません。ただし、分析では Qr−1 が ラウンドのリーダーが確率に対して誠実であることを保証するために十分に操作不可能である h' は h に十分に近い、つまり h' > h2(1 + h −h2) です。たとえば、h = 80% の場合、h' > .7424 になります。 ラウンドのリーダーを特定したら (リーダーが正直であれば、これは正しく行われます)、 ステップ 2 検証者のタスクは、彼らが信じているものを初期値として使用して BA の実行を開始することです。 リーダーのブロックになります。実は、必要な通信量を最小限に抑えるために、 検証者 j \(\in\)SV r,2 は、入力値 v' として使用しません。 j をビザンチン プロトコルに変換するブロック Bj 彼は実際に \(\ell\)j (ユーザー j がリーダーであると信じている) から受け取りましたが、リーダーではありますが、 そのブロックの hash、つまり v' j = H(Bi)。したがって、BA プロトコルが終了すると、検証者は 最後のステップでは、目的のラウンド r ブロック Br を計算するのではなく、計算 (認証と 伝播) H(Br)。したがって、H(Br) は十分に多くの検証者によってデジタル署名されているため、 BA プロトコルの最後のステップで、システム内のユーザーは、H(Br) が新しいプロトコルの hash であることに気づきます。 ブロック。ただし、実行は完全に非同期なので、取得する (または待機する) 必要もあります。 Br 自体をブロックします。敵対者が何であれ、プロトコルによって実際に利用可能であることが保証されます。 できるかもしれない。 非同期とタイミング Algorand 」 1 と Algorand 」 2 にはかなりの程度の非同期性があります。 これは、敵対者がメッセージの配信スケジュールを大幅に自由に設定できるためです。 伝播した。さらに、ラウンド内の総ステップ数に上限があるかどうかに関係なく、 分散は、実際に実行されたステップ数によって決まります。 B0 の証明書を知るとすぐに、. 。 。 、Br−1、ユーザー i が Qr−1 を計算し、作業を開始します。 ラウンド r で、彼が潜在的なリーダーであるか、ラウンド r のいくつかのステップで検証者であるかをチェックします。 議論された非同期性を考慮して、ステップ s で行動しなければならないと仮定すると、さまざまな依存します。 行動する前に十分な情報を確実に得られるようにするための戦略。 たとえば、彼は、検証者から少なくとも指定された数のメッセージを受信するのを待つかもしれません。 前のステップに進むか、メッセージが十分に受信されることを確認するために十分な時間を待ちます。 前のステップの多くの検証者。 シード Qr とルックバック パラメータ k 理想的には、Qr の量は次のとおりであることを思い出してください。 ランダムで独立していますが、それらは十分に操作不可能であれば十分です。 敵対者。 一見すると、H と一致するように Qr−1 を選択できます。 PAY r−1 したがって、次のことは避けてください。 Br-1 で Qr-1 を明示的に指定します。ただし、基本的な分析により、悪意のあるユーザーが この選択メカニズムを利用してください。11 追加の努力により、他の無数の 11ラウンド r −1 の開始点にいます。したがって、Qr−2 = PAY r−2 は公に知られており、敵対者は非公開です。 彼がコントロールする潜在的なリーダーが誰であるかを知っています。 敵対者がユーザーの 10% を制御していると仮定します。 非常に高い確率で、悪意のあるユーザー w がラウンド r -1 の潜在的なリーダーである可能性があります。つまり、次のように仮定します H SIGw r−2、1、Qr−2 非常に小さいため、誠実な潜在的なリーダーが実際にリーダーになる可能性は非常に低いです。 ラウンド r −1 のリーダー。 (私たちは秘密の暗号による選別メカニズムを介して潜在的なリーダーを選択しているため、 敵対者は、誠実な潜在的リーダーが誰であるかを知りません。) したがって、敵対者は、うらやましい状況にいます。 彼が望むペイセット PAY を選択し、それをラウンド r -1 の正式なペイセットにするという立場です。ただし、 彼はもっとできるよ。また、高い確率で () 悪意のあるユーザーの 1 人がリーダーになることを保証することもできます。 また、ラウンド r も選択できるため、PAY r を自由に選択できます。 (など。少なくともしばらくの間は、つまり、 これらの高確率のイベントが実際に発生する限り。) () を保証するために、敵対者は次のように動作します。支払わせてください」 は、敵対者がラウンド r −1 に好むペイセットになります。次に、H(PAY ') を計算し、次のことを確認します。 すでに悪意のあるプレイヤー z、SIGz(r, 1, H(PAY ')) は特に小さい、つまり、非常に高い 確率 z がラウンド r のリーダーになります。この場合、彼は w に、候補となるブロックを選択するように指示します。従来のブロック量に基づく代替案は、敵対者によって簡単に悪用されて、 悪意のあるリーダーが非常に頻繁に存在すること。代わりに、具体的かつ帰納的にブランドを定義します。 新しい量 Qr を生成して、敵対者によって操作できないことを証明できるようにします。つまり、 Br が空ブロックでない場合は Qr \(\triangleq\) H(SIG\(\ell\)r(Qr−1), r)、そうでない場合は Qr \(\triangleq\) H(Qr−1, r)。 Qr のこの構造が機能する理由の直感は次のとおりです。ちょっと考えてみましょう Qr−1 は真にランダムかつ独立して選択されます。では、Qrもそうなるのでしょうか? \(\ell\)r が正直であれば、 答えは(大まかに言えば)はいです。これはそうなので、 H(SIG\(\ell\)r(・), r) : {0, 1}256 −→{0, 1}256 はランダム関数です。しかし、\(\ell\)r が悪意のある場合、Qr は Qr−1 から一義的に定義されなくなります。 そして\(\ell\)r。 Qr には少なくとも 2 つの個別の値があります。 1 は引き続き Qr \(\triangleq\) H(SIG\(\ell\)r(Qr−1), r)、 もう 1 つは H(Qr−1, r) です。まず、2 番目の選択は多少恣意的ではありますが、 2番目の選択は絶対に必須です。その理由は、悪意のある\(\ell\)r が常に原因となる可能性があるためです。 第 2 ステップの誠実な検証者が受け取る、まったく異なる候補ブロック。12 この場合、ブロックが BA プロトコルを通じて最終的に合意されたことを確認するのは簡単です。 丸め r はデフォルトのものになるため、Qr−1 の誰のデジタル署名も含まれません。でも システムは継続しなければならず、そのためにはラウンド r のリーダーが必要です。このリーダーが自動的に そして公然と選ばれれば、敵対者は彼を簡単に堕落させるだろう。前回で選択した場合 同じプロセスを経て Qr−1 になると、\(\ell\)r が再びラウンド r+1 のリーダーになります。私たちが具体的に提案するのは、 同じ秘密の暗号ソートメカニズムを使用しますが、新しい Q 数量に適用されます。 H(Qr−1, r)。この量を H の出力にすることで、出力がランダムであることが保証されます。 そして、H の 2 番目の入力として r を含めることにより、H の他のすべての使用には 1 つまたは 3 つ以上の入力があります。 そのような Qr が独立して選択されることを「保証」します。繰り返しになりますが、代替 Qr の具体的な選択 それは問題ではありません。重要なのは、\(\ell\)r には Qr の選択肢が 2 つあるため、チャンスが 2 倍になるということです。 別の悪意のあるユーザーを次のリーダーとして迎えます。 悪意のある\(\ell\)r を制御する敵対者にとって、Qr のオプションはさらに多くなる可能性があります。 たとえば、x、y、z をラウンド r の 3 人の悪意のある潜在的なリーダーであるとします。 H \(\sigma\)r,1 \(\times\) < H \(\sigma\)r,1 y < H \(\sigma\)r,1 z そしてH \(\sigma\)r,1 z 特に小さいです。つまり、非常に小さいため、H が発生する可能性が十分にあります。 \(\sigma\)r,1 z です すべての誠実な潜在的リーダーの hash された資格情報のうちの小さいもの。次に、x に自分の名前を隠すように依頼することで、 資格情報を考慮すると、敵対者は y をラウンド r −1 のリーダーにする可能性が高くなります。これ これは、彼が Qr に対して別のオプション、つまり SIGy を持っていることを意味します。 Qr−1 。同様に、敵対者は、 z がラウンド r −1 のリーダーになるように、x と y の両方に資格情報を保留するよう依頼します。 そして、Qr の別のオプション、つまり SIGz を取得します。 Qr−1 。 ただし、もちろん、これらのオプションやその他のオプションはそれぞれ失敗する可能性がゼロではありません。 敵対者は、誠実な潜在的なユーザーのデジタル署名の hash を予測できません。 Br−1 私は = (r −1, PAY ’, H(Br−2)。そうでない場合、彼は他の 2 人の悪意のあるユーザー x と y に新しい支払いを生成し続けます。 \(\wp\)' は、ある悪意のあるユーザー z (または一部の固定ユーザー z) にとって、H (SIGz (PAY ' \(\cup\){\(\wp\)})) になるまで、一方から他方へと続きます。 特に小さいです。この実験はすぐに終了します。そして、それが行われると、敵対者はwに提案するように頼みます 候補ブロック Br−1 私は = (r −1, PAY ′ \(\cup\){\(\wp\)}, H(Br−2)。 12たとえば、(極端ですが)単純にするために、「第 2 ステップの時間が切れそうになったとき」、\(\ell\)r は次のようにすることができます。 異なる候補ブロック Bi を各ユーザーに直接電子メールで送信します。このようにして、ステップ 2 の検証者が誰であっても、 まったく異なるブロックを受信することになります。マルコフ連鎖のような注意深く分析すると、敵対者がどのようなオプションを選択しても、 ラウンド r −1 で行うには、システムに新しいユーザーを注入できない限り、 正直なユーザーがラウンド r + 40 のリーダーになる確率は h をはるかに下回ります。これが理由です これは、ラウンド r の潜在的なリーダーがラウンド r −k にすでに存在するユーザーであることを要求します。 これは、ラウンド r −k で敵対者が確率を大幅に変更できないことを保証する方法です。 正直なユーザーがラウンド r のリーダーになります。実際、どんなユーザーを追加しても、 ラウンド r −k から r までのシステムでは、彼らは潜在的なリーダーになる資格がありません (さらに、 ラウンドRのリーダー)したがって、ルックバック パラメータ k は最終的にはセキュリティ パラメータになります。 (とはいえ、 セクション 7 で説明するように、これは一種の「便宜パラメータ」である場合もあります。) 一時的なキー プロトコルの実行ではフォークを生成できませんが、次の場合を除きます。 無視できる確率ですが、敵対者は正当なブロックの後の r 番目のブロックでフォークを生成する可能性があります。 ブロックrが生成されました。 おおよそ、Br が生成されると、敵対者は各ステップの検証者が誰であるかを学習します。 ラウンドrはあります。したがって、彼はそれらすべてを破損し、新しいブロックを認証するよう義務付けることができます f Br.この偽のブロックは正規のブロックの後にのみ伝播される可能性があるため、 注意を払うことはだまされないでしょう。13 それにもかかわらず、f Br は構文的に正しいでしょうし、 製造を阻止したい。 これは新しいルールによって行われます。基本的に、ステップ s の検証者セット SV r,s のメンバーは、 ラウンド r では一時的な公開鍵 pkr,s を使用します 私は メッセージにデジタル署名するためです。これらのキーは 1 回のみ使用され、対応する秘密キー skr,s です。 私は 一度使用すると破壊されます。このように、検証者が 後で破損した場合、敵対者は最初に署名していないものに署名を強制することはできません。 当然のことながら、敵対者が新しいキー g を計算できないようにする必要があります。 広報 私は そして、それがステップ s で使用する検証者 i \(\in\)SV r,s の一時的な鍵であることを正直なユーザーに納得させます。 4.2 表記法、概念、パラメータの一般的な概要 表記法 • r \(\geq\)0: 現在のラウンド番号。 • s \(\geq\)1: ラウンド r の現在のステップ番号。 • Br: ラウンド r で生成されたブロック。 • PKr: ラウンド r -1 の終了時およびラウンド r の開始時までの公開鍵のセット。 • Sr: ラウンド r -1 の終了時およびラウンド r.14 の開始時までのシステムの状態。 • PAY r: Br に含まれるペイセット。 • \(\ell\)r: ラウンド R リーダー。 \(\ell\)r はラウンド r のペイセット PAY r を選択します (そして次の Qr を決定します)。 • Qr: ラウンド r のシード、ラウンド r の終了時に生成される数量 (つまり、バイナリ文字列) ラウンド r + 1 の検証者を選択するために使用されます。Qr はブロック内のペイセットから独立しています。 \(\ell\)r では操作できません。 13 大手テレビネットワークのニュースキャスターを汚職し、今日ニュース映画を制作して放送することを検討してください。 前回の大統領選挙でクリントン長官が勝利したことを示している。 私たちのほとんどはそれがデマだと認識するでしょう。 でも 昏睡状態から抜け出した人は騙されるかもしれない。 14 非同期システムでは、「ラウンド r の終わり -1」と「ラウンド r の始まり」の概念 慎重に定義する必要があります。数学的には、PKr と Sr は初期ステータス S0 とブロックから計算されます。 B1、. 。 。 、Br−1。• SV r,s: ラウンド r のステップ s に対して選択された検証者のセット。 • SV r: ラウンド r で選択された検証者のセット、SV r = \(\cup\)s\(\geq\)1SV r,s。 • MSV r,s と HSV r,s: それぞれ、悪意のある検証者のセットと誠実な検証者のセット SV r、sで。 MSV r,s \(\cup\)HSV r,s = SV r,s および MSV r,s ∩HSV r,s = \(\emptyset\)。 • n1 \(\in\)Z+ および n \(\in\)Z+: それぞれ、各 SV の潜在的なリーダーの予想数 r,1、 s > 1 の場合、各 SV r,s 内の検証者の予想数。 SV r,1 には少なくとも 1 つの正直な正直なメンバーが必要なので、n1 << n であることに注意してください。 各 SV の正直なメンバーの大多数は、s > 1 の場合、r,s になります。 • h \(\in\)(0, 1): 2/3 より大きい定数。 h はシステム内の正直率です。つまり、 使用される仮定に応じて、各 PKr における正直なユーザーまたは正直なお金の割合は次のようになります。 少なくともh。 • H: ランダムな oracle としてモデル化された暗号化 hash 関数。 • \(\bot\): H の出力と同じ長さの特殊な文字列。 • F \(\in\)(0, 1): 許容されるエラー確率を指定するパラメータ。 確率 \(\leq\)F は、 確率は「無視できる」とみなされ、確率 \(\geq\)1 −F は「圧倒的」とみなされます。 • ph \(\in\)(0, 1): ラウンド r のリーダー \(\ell\)r が正直である確率。理想的には ph = h です。と 敵対者の存在、ph の値は分析で決定されます。 • k \(\in\)Z+: ルックバック パラメータ。つまり、ラウンド r −k は、ラウンド r の検証者が存在する場所です。 から選択されます。つまり、SV r \(\subseteq\)PKr−k.15 • p1 \(\in\)(0, 1): ラウンド r の最初のステップでは、ラウンド r −k のユーザーが SV r,1 に属するように選択されます。 確率 p1 \(\triangleq\) n1 |P Kr−k|。 • p \(\in\)(0, 1): ラウンド r の各ステップ s > 1 に対して、ラウンド r −k のユーザーが SV r,s に属するように選択されます。 確率 p \(\triangleq\) n |P Kr−k|。 • CERT r: Br の証明書。これは、適切な検証者からの H(Br) の署名のセットです。 ラウンドR。 • Br \(\triangleq\)(Br, CERT r) is a proven block. ユーザー i は、証明されたブロックの両方の部分を所有している (そして検証に成功している) 場合、Br を知っています。 異なるユーザーによって表示される CERT r は異なる場合があることに注意してください。 • τr i : ユーザー i が Br を知っている (ローカル) 時刻。 Algorand プロトコルでは、各ユーザーは自分の 自分の時計。異なるユーザーの時計を同期する必要はありませんが、速度は同じである必要があります。 分析の目的のみで、基準クロックを考慮し、プレーヤーのパフォーマンスを測定します。 それに関連する回。 • \(\alpha\)r,s 私は と\(\beta\)r、s i : ユーザー i がステップ s の実行を開始および終了したそれぞれの (ローカル) 時刻 ラウンドR。 • Λ と \(\lambda\): 基本的に、それぞれステップ 1 とステップ 1 を実行するのに必要な時間の上限です。 Algorand プロトコルの他のステップに必要な時間。 パラメータ Λ は、単一の 1MB ブロックを伝播する時間の上限を設定します。 (私たちの表記では、 Λ = \(\lambda\) \(\rho\)、1MB。簡単にするために \(\rho\) = 1 に設定し、ブロックは 最大でも 1MB の長さになるように選択すると、Λ = \(\lambda\)1,1,1MB となります)。 15厳密に言えば、「r −k」は「max{0, r −k}」となるはずです。パラメータ \(\lambda\) は、ステップ s > 1 で検証者ごとに 1 つの小さなメッセージを伝播する時間の上限を設定します。 (Bitcoin のように、32B の鍵を持つ楕円曲線署名を使用すると、検証者メッセージの長さは 200B になります。 したがって、私たちの表記では、\(\lambda\) = \(\lambda\)n,\(\rho\),200B となります。) Λ = O(\(\lambda\)) と仮定します。 概念 • 検証者の選択。 各ラウンド r およびステップ s > 1 について、SV r,s \(\triangleq\){i \(\in\)PKr−k : .H(SIGi(r, s, Qr−1)) \(\leq\)p}。それぞれ ユーザー i \(\in\)PKr−k は、長期鍵を使用して自分の署名を非公開で計算し、次のいずれかを決定します。 i \(\in\)SV r,s かどうか。 i \(\in\)SV r,s の場合、SIGi(r, s, Qr−1) は i の (r, s)-資格情報であり、簡潔に表されます。 \(\sigma\)r,sによる 私は。 ラウンド r の最初のステップでは、SV r,1 と \(\sigma\)r,1 私は も同様に定義されますが、p は p1 に置き換えられます。の SV r,1 の検証者は潜在的なリーダーです。 • リーダーの選択。 H(\(\sigma\)r,1 の場合、ユーザー i \(\in\)SV r,1 はラウンド r のリーダーであり、\(\ell\)r で示されます) i ) \(\leq\)H(\(\sigma\)r,1 j ) あらゆる可能性に対して リーダー j \(\in\)SV r,1。 2 人のプレーヤーの資格情報の hash が比較されるたびに、ありそうもないことですが、 同点の場合、プロトコルは辞書順に常に関係を解消します (長期公開) ) 潜在的なリーダーの鍵。 定義により、プレイヤー\(\ell\)r の認証情報の hash 値も、すべてのユーザーの中で最小です。 PKr-k。潜在的なリーダーは、自分がリーダーであるかどうかを個人的に決定することはできないことに注意してください。 他の潜在的なリーダーの資格情報を見ることなく。 hash の値はランダムに一様であるため、SV r,1 が空でない場合、\(\ell\)r は常に存在し、 少なくとも h の確率で正直です。パラメータ n1 は、それぞれの SV r,1 は圧倒的な確率で空ではありません。 • ブロック構造。 空でないブロックは Br = (r, PAY r, SIG\(\ell\)r(Qr−1), H(Br−1)) の形式で、空のブロックは Br の形式です ϫ = (r, \(\emptyset\), Qr−1, H(Br−1))。 支払いが発生しない場合、空ではないブロックには空のペイセット PAY r が含まれる可能性があることに注意してください。 このラウンド、またはリーダーが悪意がある場合。ただし、空ではないブロックは、 \(\ell\)r、彼の資格 \(\sigma\)r,1 \(\ell\)r と SIG\(\ell\)r(Qr−1) はすべてタイムリーに明らかにされました。プロトコルは保証します つまり、リーダーが正直であれば、圧倒的な確率でブロックは空ではなくなるでしょう。 • シード Qr. Br が空でない場合は、Qr \(\triangleq\) H(SIG\(\ell\)r(Qr−1), r)、それ以外の場合は、Qr \(\triangleq\) H(Qr−1, r) です。 パラメータ • さまざまなパラメータ間の関係。 — ラウンド r の検証者と潜在的なリーダーは PKr-k のユーザーから選択されます。 ここで、k は、敵対者がラウンド r −k −1 で Qr−1 を予測できないように選択されます。 F よりも確率が高い: そうしないと、彼は悪意のあるユーザーを紹介することができます ラウンド r -k では、全員がラウンド r の潜在的なリーダー/検証者となり、成功します。
SV の中に悪意のあるリーダーまたは悪意のある多数派がいて、彼らが望むいくつかのステップを実行する 彼。 — 各ラウンド r のステップ 1 では、圧倒的な確率で SV r,1 ̸= \(\emptyset\) となるように n1 が選択されます。 • 重要なパラメータの選択例。 — H の出力は 256 ビット長です。 — h = 80%、n1 = 35。 — Λ = 1 分、\(\lambda\) = 10 秒。 • プロトコルの初期化。 プロトコルは、r = 0 の時刻 0 に開始されます。「B-1」または「CERT -1」が存在しないため、 構文的には、B-1 はパブリック パラメータであり、その 3 番目のコンポーネントは Q-1 とすべてのユーザーを指定します。 時間 0 での B−1 がわかっています。
Algorand '
1 이 섹션에서는 다음 가정 하에 작동하는 Algorand ' 버전을 구성합니다. 정직한 다수의 사용자 가정: 각 PKr의 사용자 중 2/3 이상이 정직합니다. 섹션 8에서는 위의 가정을 원하는 정직한 다수로 대체하는 방법을 보여줍니다. 돈 가정. 5.1 추가 표기법 및 매개변수 표기법 • m \(\in\)Z+: 바이너리 BA 프로토콜의 최대 단계 수, 3의 배수. • Lr \(\leq\)m/3: 1을 확인하는 데 필요한 베르누이 시행 횟수를 나타내는 무작위 변수, 각 시행이 확률 ph로 1일 때 2이며 최대 m/3 시도가 있습니다. 모든 시도가 실패하면 Lr \(\triangleq\)m/3. Lr은 블록 Br을 생성하는 데 필요한 시간의 상한을 설정하는 데 사용됩니다. • tH = 2n 3 + 1: 프로토콜 종료 조건에 필요한 서명 수입니다. • CERT r: Br에 대한 인증서입니다. 이는 적절한 검증자로부터 나온 H(Br)의 tH 서명 세트입니다. 라운드 r. 매개변수 • 다양한 매개변수 간의 관계. — 라운드 r의 각 단계 s > 1에 대해 압도적인 확률로 n이 선택됩니다. |HSV r,s| > 2|MSV r,s| 그리고 |HSV r,s| + 4|MSV r,s| <2n. h 값이 1에 가까울수록 n은 더 작아야 합니다. 특히, 우리는 (변종 of) 원하는 조건이 압도적인 확률로 유지되도록 Chernoffbounds. — m은 압도적인 확률로 Lr < m/3이 되도록 선택됩니다. • 중요한 매개변수의 예시 선택. — F = 10−12. — n \(\approx\)1500, k = 40 및 m = 180.5.2 Algorand '에서 임시 키 구현 1 이미 언급했듯이 검증자 i \(\in\)SV r,s가 자신의 메시지 mr,s에 디지털 서명을 하기를 바랍니다. 나 단계의 임시 공개 키 pkr,s에 상대적인 라운드 r의 s i , 임시 비밀 키 skr을 사용하여 나 그 그는 사용 후 즉시 파괴합니다. 따라서 우리는 모든 사용자가 다음을 수행할 수 있도록 하는 효율적인 방법이 필요합니다. pkr,s를 확인하세요. 나 은 실제로 mr,s의 i 서명을 확인하는 데 사용되는 열쇠입니다. 나. 우리는 (최선을 다해) 그렇게 합니다. 우리가 아는 한) 신원 기반 서명 체계의 새로운 사용. 높은 수준에서 이러한 체계에서 중앙 기관 A는 공개 마스터 키 PMK를 생성합니다. 그리고 해당 비밀 마스터 키인 SMK. 플레이어 U의 신원 U가 주어지면 A는 다음을 계산합니다. 공개 키 U와 관련된 비밀 서명 키 skU인 SMK를 통해 개인적으로 skU를 다음 사용자에게 제공합니다. U. (실제로 신원 기반 디지털 서명 체계에서 사용자 U의 공개 키는 U 자체입니다!) 이런 식으로 A가 활성화하려는 사용자의 비밀 키를 계산한 후 SMK를 파괴하면 디지털 서명을 생성하고 계산된 비밀 키를 보관하지 않는 경우 U는 유일한 사람입니다. 공개 키 U를 기준으로 메시지에 디지털 방식으로 서명할 수 있습니다. 따라서 "U의 이름"을 아는 사람은 누구나 자동으로 U의 공개 키를 알고 있으므로 U의 서명을 확인할 수 있습니다(아마도 공개 마스터 키 PMK). 우리의 응용 프로그램에서 권한 A는 사용자 i이고 가능한 모든 사용자 집합 U는 다음과 일치합니다. 예를 들어 S = {i}\(\times\){r′,… . . , r′ +106}\(\times\){1, . . . , m+3}, 여기서 r′은 주어진 것입니다. 라운드, m + 3은 라운드 내에서 발생할 수 있는 단계 수의 상한입니다. 이 방법, pkr, s 나 \(\triangleq\)(i, r, s), 모든 사람이 i의 서명 SIGr,s를 볼 수 있도록 pkr,s 나 (미스터, s 나) 할 수 있어, 압도적으로 확률, r'에 이어 처음 백만 라운드 r에 대해 즉시 검증합니다. 즉, i는 먼저 PMK와 SMK를 생성합니다. 그리고 그는 PMK가 나의 주인임을 공개한다 모든 라운드 r \(\in\)[r′, r′ + 106]에 대한 공개 키이며 SMK를 사용하여 비밀을 개인적으로 생성하고 저장합니다. 키 skr,s 나 각 트리플(i, r, s) \(\in\)S에 대해. 이 작업이 완료되면 그는 SMK를 파괴합니다. 만약 그가 그렇지 않다고 판단한다면 SV r,s의 일부라면 skr,s를 떠나도 됩니다. 나 혼자 (프로토콜에서는 그가 인증을 요구하지 않기 때문에 라운드 r의 단계 s에 있는 모든 메시지) 그렇지 않으면 먼저 skr,s를 사용합니다. 나 그의 메시지에 디지털 서명을 하려고 나 , 그리고 그런 다음 skr,s를 파괴합니다. 나. 그가 처음 시스템에 들어갈 때 그의 첫 번째 공개 마스터 키를 공개할 수 있다는 점에 유의하세요. 즉, i를 시스템으로 가져오는 동일한 지불(라운드 r' 또는 r'에 가까운 라운드)은 또한 i의 요청에 따라 모든 라운드 r \(\in\)[r′, r′ + 106]에 대한 i의 공개 마스터 키가 PMK임을 지정합니다. 예를 들어 다음과 같습니다. (PMK, [r', r' + 106]) 형식의 쌍을 포함합니다. 또한 m + 3은 라운드의 최대 단계 수이므로 라운드가 다음과 같이 가정됩니다. 1분이면 생성된 임시 키는 거의 2년 동안 보관됩니다. 동시에 시간이 지나면 이 임시 비밀 키를 생성하는 데 너무 오래 걸리지 않을 것입니다. 타원 곡선 기반 사용 32B 키가 있는 시스템에서는 각 비밀 키가 몇 마이크로초 안에 계산됩니다. 따라서 m + 3 = 180이면, 그러면 1억 8천만 개의 비밀 키를 모두 1시간 이내에 계산할 수 있습니다. 현재 라운드가 r' + 106에 가까워지면 다음 백만 라운드를 처리하기 위해 i 새로운 (PMK', SMK') 쌍을 생성하고 다음 임시 키 보관이 무엇인지 알려줍니다. —예를 들어 — SIGi(PMK′, [r′ + 106 + 1, r′ + 2 \(\cdot\) 106 + 1])를 사용하면 새 블록을 입력하거나 별도의 "거래" 또는 결제의 일부인 추가 정보로 표시됩니다. 그렇게 함으로써, 다음에는 PMK'를 사용하여 나의 임시 서명을 확인해야 한다고 모든 사람에게 알립니다. 백만 라운드. 등. (이 기본 접근 방식에 따라 임시 키를 구현하지 않고 임시 키를 구현하는 다른 방법도 있습니다. 신원 기반 서명을 사용하는 것은 확실히 가능합니다. 예를 들어 Merkle trees를 통해.16) 16이 방법에서는 공개-비밀 키 쌍(pkr,s)을 생성합니다. 나, skr, s 나 )의 각 라운드 단계 쌍(r, s)에 대해임시 키를 구현하는 다른 방법(예: Merkle trees)도 가능합니다. 5.3 Algorand '의 단계 일치 BA⋆의 것과 1 우리가 말했듯이 Algorand ′의 라운드 1에는 최대 m + 3개의 단계가 있습니다. 1단계. 이 단계에서 각 잠재적 리더 i는 자신의 후보 블록 Br을 계산하고 전파합니다. 나 , 자신의 자격증명 \(\sigma\)r,1과 함께 나. 이 자격 증명은 i를 명시적으로 식별한다는 점을 기억하세요. 이는 \(\sigma\)r,1이기 때문에 그렇습니다. 나 \(\triangleq\)SIGi(r, 1, Qr−1). 잠재적 검증자 i는 또한 메시지의 일부로 H(Br)라는 적절한 디지털 서명을 전파합니다. 나). 지불이나 자격 증명을 다루지 않는 i의 이 서명은 그의 임시 공개와 관련이 있습니다. 키 pkr,1 i : 즉, 그는 sigpkr을 전파합니다.1 나는 (H(Br 나)). Br을 전파하는 대신 우리의 규칙을 고려하여 나 및 sigpkr,1 나는 (H(Br i)), 그는 그럴 수도 있었어 전파된 SIGpkr,1 나는 (H(Br 나)). 그러나 우리의 분석에서는 다음에 대한 명시적인 접근 권한이 필요합니다. sigpkr,1 나는 (H(Br 나)). Steps 2. 이 단계에서 각 검증자 i는 \(\ell\)r을 설정합니다. 나는 hashed 자격을 갖춘 잠재적인 리더가 되고 싶습니다 는 가장 작고, Br 나는 \(\ell\)r이 제안한 블록이 될 것입니다 나. 효율성을 위해 우리는 Br에 직접적으로 동의하기보다는 H(Br)에 동의하고 싶다는 메시지를 전파합니다. BA⋆의 첫 번째 단계에서 초기 값 v'로 전파됨 나는 = H(Br 나). 즉, 그는 v'를 전파한다 나, 물론 일시적으로 서명한 후에요. (즉, 오른쪽 임시 항목을 기준으로 서명한 후 공개 키(이 경우 pkr,2) i .) 물론 나도 자신의 자격 증명을 전송합니다. BA⋆의 첫 번째 단계는 등급 합의 프로토콜 GC의 첫 번째 단계로 구성되므로, Step Algorand '의 2는 GC의 첫 번째 단계에 해당합니다. 단계 3. 이 단계에서 각 검증자 i \(\in\)SV r,2는 BA⋆의 두 번째 단계를 실행합니다. 즉, 그는 다음을 보낸다. 그가 GC의 두 번째 단계에서 보냈을 것과 동일한 메시지입니다. 다시 말하지만, 내 메시지는 임시적입니다. 서명하고 본인의 증명서를 첨부합니다. (이제부터 검증인이라는 말은 생략하겠습니다. 그의 메시지에 일시적으로 서명하고 그의 자격 증명도 전파합니다.) 4단계. 이 단계에서 모든 검증자 i \(\in\)SV r,4는 GC의 출력(vi, gi)을 계산하고 일시적으로 BA⋆의 세 번째 단계, 즉 BBA⋆의 첫 번째 단계, gi = 2이면 초기 비트가 0이고 그렇지 않으면 1입니다. 단계 s = 5, . . . , m + 2. 이러한 단계에 도달한 경우 BA⋆의 단계 s-1에 해당하므로 다음과 같습니다. BBA⋆의 s-3단계. 우리의 전파 모델은 충분히 비동기적이므로 가능성을 고려해야 합니다. 그러한 단계 s의 중간에 검증자 i \(\in\)SV r,s는 그를 증명하는 정보에 의해 도달됩니다. 해당 블록 Br은 이미 선택되었습니다. 이 경우, i는 자신의 라운드 r 실행을 중지합니다. Algorand ', 라운드(r + 1) 명령어 실행을 시작합니다. {r′, . . . , r' + 106} \(\times\) {1, . . . , m + 3}. 그런 다음 그는 이러한 공개 키를 정식 방식으로 주문하고 j번째 공개 키를 저장합니다. Merkle tree의 j번째 리프에 키를 입력하고 그가 공개한 루트 값 Ri를 계산합니다. 그가 서명하고 싶을 때 키 pkr,s와 관련된 메시지 나 , 저는 실제 서명뿐만 아니라 pkr,s에 대한 인증 경로도 제공합니다. 나 리에 비해 이 인증 경로는 pkr,s도 증명합니다. 나 j번째 리프에 저장된다. 나머지 세부사항을 쉽게 채울 수 있습니다.따라서 검증자의 명령 i \(\in\)SV r,s에 해당하는 명령 외에 BBA⋆의 s-3단계에는 BBA⋆의 실행이 이전에 중단되었는지 확인하는 것이 포함됩니다. 단계 S′. BBA⋆ 정지는 Coin-Fixed-to-0 단계 또는 Coin-Fixed-1 단계에서만 정지할 수 있으므로, 지침은 다음을 구별합니다. A (종료 조건 0): s′ −2 ‚0 mod 3, 또는 B (엔딩 조건 1): s′ −2 ‚1 mod 3. 실제로 A의 경우 블록 Br은 비어 있지 않으므로 추가 명령이 필요합니다. 적절한 인증서 CERT r과 함께 Br을 제대로 재구성하는지 확인하세요. B의 경우, 블록 Br은 비어 있으므로 i는 Br = Br로 설정하라는 지시를 받습니다. \(\varepsilon\) = (r, \(\emptyset\), H(Qr−1, r), H(Br−1)), CERT r을 계산합니다. 단계 s를 실행하는 동안 블록 Br이 이미 가지고 있다는 증거를 볼 수 없다면 생성된 다음 BBA⋆의 s-3 단계에서 보낸 것과 동일한 메시지를 보냅니다. 단계 m + 3. 단계 m + 3 동안 i \(\in\)SV r,m+3에서 블록 Br이 이미 생성된 것으로 확인되면 이전 단계 s'를 수행한 다음 위에서 설명한 대로 진행합니다. 그렇지 않으면 BBA⋆의 m단계에서 보냈을 것과 동일한 메시지를 보내는 대신, 나는 자신이 보유한 정보를 기반으로 Br과 그에 상응하는 값을 계산하도록 지시했습니다. CERT r을 인증합니다. 실제로 라운드의 총 단계 수에 대해 m + 3만큼 상한이 적용된다는 점을 기억하세요. 5.4 실제 프로토콜 라운드 r의 각 단계 s에서 검증자 i \(\in\)SV r,s는 장기 공개-비밀 키 쌍을 사용한다는 점을 기억하세요. 그의 자격 증명 \(\sigma\)r,s를 생성하기 위해 나 \(\triangleq\)SIGi(r, s, Qr−1) 및 SIGi Qr−1 s = 1인 경우. 검증자 i 그의 임시 비밀 키 skr,s를 사용합니다. 나 그의 (r, s) 메시지에 서명하려면 mr,s 나. 단순화를 위해 r과 s가 다음과 같을 때 확실히, sigpkr,s 대신 esigi(x)를 씁니다. i (x)는 i의 값에 대한 적절한 임시 서명을 나타냅니다. 라운드 r의 단계 s에서 x를 입력하고 SIGpkr,s 대신 ESIGi(x)를 작성합니다. i(x)는 (i, x, esigi(x))를 나타냅니다. 1단계: 블록 제안 모든 사용자 i \(\in\)PKr−k에 대한 지침: 사용자 i는 다음과 같이 라운드 r의 1단계를 시작합니다. Br-1을 알고 있습니다. • 사용자 i는 Br−1의 세 번째 구성 요소에서 Qr−1을 계산하고 i \(\in\)SV r,1 또는 아닙니다. • i /\(\in\)SV r,1이면 i는 1단계 실행을 즉시 중지합니다. • i \(\in\)SV r,1, 즉 i가 잠재적 리더라면 그는 라운드 R 지불액을 수집합니다. 지금까지 그에게 전파되어 최대 지불 세트 PAY r을 계산합니다. 나는 그들에게서. 다음으로 그는 그의 "후보 블록"Br을 계산합니다. 나는 = (r, 지불 r i , SIGi(Qr−1), H(Br−1)). 마침내 그는 계산한다. 메시지 씨,1 나 = (Br i , Esigi(H(Br i )), \(\sigma\)r,1 i), 그의 임시 비밀 키 skr을 파괴합니다.1 나 , 그리고 나서 Mr,1을 전파합니다. 나.주목. 실제로 1단계의 전역 실행을 단축하려면 (r, 1)- 메시지는 선택적으로 전파됩니다. 즉, 시스템의 모든 사용자 i에 대해 첫 번째 (r, 1)에 대해 그가 받은 메시지를 성공적으로 확인하면17 플레이어 i는 평소대로 이를 전파합니다. 모든 기타 (r, 1) - 플레이어 i가 수신하고 성공적으로 확인한 메시지는 hash인 경우에만 전파합니다. 포함된 자격 증명의 값은 포함된 자격 증명의 hash 값 중에서 가장 작습니다. 모든 (r, 1) 메시지에서 그는 지금까지 수신하고 성공적으로 검증했습니다. 게다가 제안한 대로 Georgios Vlachos에 따르면 각 잠재적 리더 i도 자신의 자격 증명 \(\sigma\)r,1을 전파하는 것이 유용합니다. 나 별도로: 이러한 작은 메시지는 블록보다 빠르게 이동하여 mr,1의 적시 전파를 보장합니다. j's 포함된 자격 증명은 작은 hash 값을 갖고, 큰 hash 값을 갖는 자격 증명을 만듭니다. 빨리 사라져라. 2단계: 단계적 합의 프로토콜 GC의 첫 번째 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 2단계를 시작합니다. Br-1을 알고 있습니다. • 사용자 i는 Br−1의 세 번째 구성 요소에서 Qr−1을 계산하고 i \(\in\)SV r,2 또는 아닙니다. • i /\(\in\)SV r,2이면 i는 2단계 실행을 즉시 중지합니다. • i \(\in\)SV r,2이면 t2 \(\triangleq\) \(\lambda\) + Λ 시간을 기다린 후 i는 다음과 같이 작동합니다. 1. 그는 H(\(\sigma\)r,1)를 만족하는 사용자 \(\ell\)를 찾았습니다. \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) 모든 자격 증명에 대해 \(\sigma\)r,1 j 그 일부는 그가 지금까지 수신한 성공적으로 검증된 (r, 1) 메시지입니다. 2. 그가 \(\ell\)a로부터 유효한 메시지 mr,1을 받았다면 \(\ell\) = (Br \(\ell\), 대략\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),b 그런 다음 i가 설정합니다. v′ 나는 \(\triangleq\)H(Br \(\ell\)); 그렇지 않으면 나는 v'를 설정한다 나는 \(\triangleq\) \(\bot\). 3. 나는 mr,2라는 메시지를 계산합니다. 나 \(\triangleq\)(ESIGi(v′ 나), \(\sigma\)r,2 i ),c는 자신의 임시 비밀 키를 파기합니다. skr,2 i , 그런 다음 mr,2를 전파합니다. 나. a본질적으로 사용자 i는 라운드 r의 리더가 사용자 \(\ell\)임을 개인적으로 결정합니다. b다시 말하지만, 플레이어 \(\ell\)의 서명과 hashes는 모두 성공적으로 검증되었으며 PAY r \(\ell\)in Br \(\ell\)는 다음에 대한 유효한 지불 세트입니다. 라운드 r — PAY r인지 확인하지는 않지만 \(\ell\)는 \(\ell\)또는 \(\ell\)에 대해 최대값입니다. c메시지 Mr,2 나 플레이어 i가 v'를 고려한다는 신호 나는 다음 블록의 hash이 되거나 다음 블록을 고려합니다. 블록이 비어 있습니다. 17즉, 모든 서명이 정확하고 블록과 해당 hash이 모두 유효합니다. 비록 제가 확인하지는 않았지만 포함된 페이세트가 제안자에게 최대인지 여부.
3단계: GC의 두 번째 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 3단계를 시작합니다. Br-1을 알고 있습니다. • 사용자 i는 Br−1의 세 번째 구성 요소에서 Qr−1을 계산하고 i \(\in\)SV r,3 또는 아닙니다. • i /\(\in\)SV r,3이면 i는 3단계 실행을 즉시 중지합니다. • i \(\in\)SV r,3이면 t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ 시간만큼 기다린 후 i는 다음과 같이 작동합니다. 1. 모든 유효한 메시지 중에서 mr,2를 만족하는 v′ ̸= \(\bot\)값이 존재하는 경우 j 그가 받았고, 그 중 2/3 이상이 (ESIGj(v′), \(\sigma\)r,2 j), 모순 없이,a 그런 다음 그는 mr,3이라는 메시지를 계산합니다. 나 \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 나). 그렇지 않으면 그는 mr,3을 계산합니다. 나 \(\triangleq\) (ESIGi(\(\bot\)), \(\sigma\)r,3 나). 2. 나는 그의 임시 비밀 키 skr을 파괴합니다.3 i, 그런 다음 mr,3을 전파합니다. 나. a즉, 그는 각각 ESIGj(v′)와 다른 ESIGj(v′′)를 포함하는 두 개의 유효한 메시지를 수신하지 못했습니다. j 선수로부터. 나중에 정의되는 종료 조건을 제외하고 여기서부터, 정직한 플레이어가 특정 형식의 메시지를 원할 경우 서로 모순되는 메시지는 계산되지 않거나 유효한 것으로 간주되지 않습니다.4단계: GC의 출력과 BBA의 첫 번째 단계⋆ 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 4단계를 시작합니다. Br-1을 알고 있습니다. • 사용자 i는 Br−1의 세 번째 구성 요소에서 Qr−1을 계산하고 i \(\in\)SV r,4 또는 아닙니다. • i /\(\in\)SV r,4이면 i는 4단계 실행을 즉시 중지합니다. • i \(\in\)SV r,4이면 t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ 시간을 기다린 후 i는 다음과 같이 작동합니다. 1. 그는 GC의 출력인 vi와 gi를 다음과 같이 계산합니다. (a) 모든 유효한 메시지 중에서 mr,3을 만족하는 v′ ̸= \(\bot\)값이 존재한다면, j 그는 가지고 있다 수신된 결과 중 2/3 이상이 (ESIGj(v′), \(\sigma\)r,3 형식입니다. j ) 그런 다음 그는 설정합니다. vi \(\triangleq\)v′ 및 gi \(\triangleq\)2. (b) 그렇지 않은 경우, 모든 유효한 메시지 중에서 v′ ̸= \(\bot\) 값이 존재하는 경우 씨,3 j 그는 그 중 1/3 이상이 다음 형식을 받았습니다. (ESIGj(v′), \(\sigma\)r,3 j), 그런 다음 그는 vi \(\triangleq\)v′ 및 gi \(\triangleq\)1.a를 설정합니다. (c) 그렇지 않으면 그는 vi \(\triangleq\)H(Br τ ) 및 gi \(\triangleq\)0. 2. 그는 BBA⋆의 입력인 bi를 다음과 같이 계산합니다. gi = 2이면 bi \(\triangleq\)0이고, 그렇지 않으면 bi \(\triangleq\)1입니다. 3. 그는 mr,4라는 메시지를 계산합니다. 나 \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i), 그의 일시적인 것을 파괴한다 비밀키 skr,4 i , 그런 다음 mr,4를 전파합니다. 나. a경우 (b)의 v′가 존재한다면 고유해야 함을 증명할 수 있습니다.
단계 s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ‚0 mod 3: BBA⋆의 코인 고정-0 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 단계 s를 시작합니다. Br-1을 알고 있습니다. • 사용자 i는 Br−1의 세 번째 구성 요소에서 Qr−1을 계산하고 i \(\in\)SV r,s인지 확인합니다. • i /\(\in\)SV r,s이면 i는 자신의 Step s 실행을 즉시 중지합니다. • i \(\in\)SV r,s이면 그는 다음과 같이 행동합니다. – 그는 ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ 시간이 지날 때까지 기다립니다. – 종료 조건 0: 대기 중 어느 시점에나 다음과 같은 경우가 발생합니다. 문자열 v ̸= \(\bot\) 그리고 다음과 같은 단계 s′ (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 pho mod 3 — 즉, s′ 단계는 Coin-Fixed-To-0 단계입니다. (b) 나는 적어도 tH를 받았다 = 2n 3 + 1 유효한 메시지 mr,s′−1 j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ), 및 (c) 나는 유효한 메시지를 받았습니다. Mr,1 j = (Br j,esigj(H(Br j )), \(\sigma\)r,1 j ) v = H(Br) j ), 그런 다음 나는 자신의 Step s 실행(실제로는 r 라운드 실행)을 즉시 중지합니다. 무엇이든 전파하는 것; Br = Br로 설정 j ; 자신의 CERT r을 메시지 세트로 설정합니다. 씨,s′−1 j 하위 단계 (b).b – 종료 조건 1: 그러한 대기 중 어느 시점에라도 다음이 존재하는 경우 단계 s' 그렇게 (a') 6 \(\leq\)s' \(\leq\)s, s' −2 pho1 mod 3 — 즉, 단계 s'는 Coin-Fixed-To-1 단계이고, (b') 나는 적어도 tH개의 유효한 메시지 mr,s'-1을 수신했습니다. j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),c 그런 다음 나는 자신의 Step s 실행(실제로는 r 라운드 실행)을 즉시 중지합니다. 무엇이든 전파하는 것; Br = Br로 설정 ? ; 자신의 CERT r을 메시지 세트로 설정합니다. 씨,s′−1 j 하위 단계 (b'). – 그렇지 않으면 대기가 끝나면 사용자 i는 다음을 수행합니다. 그는 vi를 모든 유효한 구성 요소의 두 번째 구성 요소에서 vj의 과반수 투표로 설정합니다. 씨,s−1 j ’ 그는 받았습니다. 그는 다음과 같이 bi를 계산합니다. 유효한 모든 mr,s−1의 2/3 이상이면 j 그가 받은 형식은 다음과 같습니다. (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 bi \(\triangleq\)0을 설정합니다. 그렇지 않고 유효한 모든 mr,s−1의 2/3 이상이면 j 그가 받은 형식은 다음과 같습니다. (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 bi \(\triangleq\)1을 설정합니다. 그렇지 않으면 bi \(\triangleq\)0을 설정합니다. 그는 mr,s라는 메시지를 계산합니다. 나 \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i), 그의 일시적인 것을 파괴한다 비밀 키 skr,s i , 그런 다음 mr,s를 전파합니다. 나. a 플레이어 i가 1에 서명한 j로부터 메시지를 받은 경우에도 플레이어 j로부터의 메시지는 계산됩니다. 종료 조건 1과 유사합니다. 분석에서 볼 수 있듯이 이는 모든 정직한 사용자가 알 수 있도록 수행됩니다. Br은 서로 시간 \(\lambda\) 내에 있습니다. b사용자 i는 이제 Br과 자신의 라운드 r 완료를 알고 있습니다. 그는 여전히 일반 사용자로서 메시지 전파를 돕고 있지만 (r, s) 검증자로서 전파를 시작하지 않습니다. 특히 그는 자신의 모든 메시지를 전파하는 데 도움을 주었습니다. CERT r은 우리 프로토콜에 충분합니다. 또한 바이너리 BA 프로토콜에 대해 bi \(\triangleq\)0을 설정해야 하지만 bi 어쨌든 이 경우에는 필요하지 않습니다. 향후 모든 지침에 대해서도 유사합니다. c이 경우 vj가 무엇인지는 중요하지 않습니다.단계 s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ל1 mod 3: BBA⋆의 동전 고정 1 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 단계 s를 시작합니다. Br-1을 알고 있습니다. • 사용자 i는 Br−1의 세 번째 구성 요소에서 Qr−1을 계산하고 i \(\in\)SV r,s 또는 아닙니다. • i /\(\in\)SV r,s이면 i는 자신의 Step s 실행을 즉시 중지합니다. • i \(\in\)SV r,s이면 그는 다음을 수행합니다. – 그는 ts \(\triangleq\)(2s −3)\(\lambda\) + Λ 시간이 지날 때까지 기다립니다. – 종료 조건 0: Coin-Fixed-To-0 단계와 동일한 지침입니다. - 종료 조건 1 : Coin-Fixed-To-0 단계와 동일한 지침입니다. – 그렇지 않으면 대기가 끝나면 사용자 i는 다음을 수행합니다. 그는 vi를 모든 유효한 구성 요소의 두 번째 구성 요소에서 vj의 과반수 투표로 설정합니다. 씨,s−1 j ’ 그는 받았습니다. 그는 다음과 같이 bi를 계산합니다. 유효한 모든 mr,s−1의 2/3 이상이면 j 그가 받은 형식은 다음과 같습니다. (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 bi \(\triangleq\)0을 설정합니다. 그렇지 않고 유효한 모든 mr,s−1의 2/3 이상이면 j 그가 받은 형식은 다음과 같습니다. (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 bi \(\triangleq\)1을 설정합니다. 그렇지 않으면 bi \(\triangleq\)1을 설정합니다. 그는 mr,s라는 메시지를 계산합니다. 나 \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i), 그의 일시적인 것을 파괴한다 비밀 키 skr,s i , 그런 다음 mr,s를 전파합니다. 나.
단계 s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ל2 mod 3: BBA⋆의 동전 뒤집기 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 단계 s를 시작합니다. Br-1을 알고 있습니다. • 사용자 i는 Br−1의 세 번째 구성 요소에서 Qr−1을 계산하고 i \(\in\)SV r,s 또는 아닙니다. • i /\(\in\)SV r,s이면 i는 자신의 Step s 실행을 즉시 중지합니다. • i \(\in\)SV r,s이면 그는 다음을 수행합니다. – 그는 ts \(\triangleq\)(2s −3)\(\lambda\) + Λ 시간이 지날 때까지 기다립니다. – 종료 조건 0: Coin-Fixed-To-0 단계와 동일한 지침입니다. - 종료 조건 1 : Coin-Fixed-To-0 단계와 동일한 지침입니다. – 그렇지 않으면 대기가 끝나면 사용자 i는 다음을 수행합니다. 그는 vi를 모든 유효한 구성 요소의 두 번째 구성 요소에서 vj의 과반수 투표로 설정합니다. 씨,s−1 j ’ 그는 받았습니다. 그는 다음과 같이 bi를 계산합니다. 유효한 모든 mr,s−1의 2/3 이상이면 j 그가 받은 형식은 다음과 같습니다. (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 bi \(\triangleq\)0을 설정합니다. 그렇지 않고 유효한 모든 mr,s−1의 2/3 이상이면 j 그가 받은 형식은 다음과 같습니다. (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 bi \(\triangleq\)1을 설정합니다. 그렇지 않으면, SV r,s−1 나 그가 유효한 정보를 받은 (r, s -1)-검증자의 집합이 됩니다. 메시지 Mr,s−1 j . 그는 bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 나 H(\(\sigma\)r,s−1 j )). 그는 mr,s라는 메시지를 계산합니다. 나 \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i), 그의 일시적인 것을 파괴한다 비밀 키 skr,s i , 그런 다음 mr,s를 전파합니다. 나.
m + 3단계: BBA⋆a의 마지막 단계 모든 사용자 i \(\in\)PKr−k에 대한 지침: 사용자 i는 다음과 같이 자신의 라운드 r 단계 m + 3을 시작합니다. Br-1을 알고 있습니다. • 사용자 i는 Br−1의 세 번째 구성 요소에서 Qr−1을 계산하고 i \(\in\)SV r,m+3 또는 아닙니다. • i /\(\in\)SV r,m+3이면 i는 자신의 단계 m + 3 실행을 즉시 중지합니다. • i \(\in\)SV r,m+3이면 그는 다음을 수행합니다. – 그는 tm+3 \(\triangleq\)tm+2 + 2\(\lambda\) = (2m + 3)\(\lambda\) + Λ 시간이 지날 때까지 기다립니다. – 종료 조건 0: Coin-Fixed-To-0 단계와 동일한 지침입니다. - 종료 조건 1 : Coin-Fixed-To-0 단계와 동일한 지침입니다. – 그렇지 않으면 대기가 끝나면 사용자 i는 다음을 수행합니다. 그는 아웃i \(\triangleq\)1 및 Br \(\triangleq\)Br을 설정합니다. ? 그는 mr,m+3이라는 메시지를 계산합니다. 나 = (ESIGi(outi), ESIGi(H(Br)), \(\sigma\)r,m+3 나 ), 그의 것을 파괴한다 임시 비밀 키 skr,m+3 나 , 그런 다음 mr,m+3을 전파합니다. 나 Br.b를 인증하기 위해 a압도적인 확률로 BBA⋆이 단계 전에 종료되었으며 완전성을 위해 이 단계를 지정합니다. m + 3단계의 bA 인증서에는 ESIGi(outi)가 포함될 필요가 없습니다. 통일성을 위해서만 포함합니다. 이제 인증서는 생성된 단계에 상관없이 동일한 형식을 갖습니다.비검증자에 의한 Round-r 블록 재구성 시스템의 모든 사용자 i를 위한 지침: 사용자 i는 자신이 아는 즉시 자신의 라운드 r을 시작합니다. Br−1이며, 다음과 같이 블록 정보를 기다립니다. – 그러한 대기 중 어느 시점에서나 문자열 v와 단계 s'가 존재하는 경우 그 (a) 5 \(\leq\)s′ \(\leq\)m + 3, s′ −2 ‚0 mod 3, (b) 나는 적어도 tH개의 유효한 메시지 mr,s'-1을 수신했습니다. j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ) 및 (c) 나는 유효한 메시지를 받았습니다. Mr,1 j = (Br j,esigj(H(Br j )), \(\sigma\)r,1 j ) v = H(Br) j ), 그러면 나는 그 자신의 라운드 r 실행을 즉시 중단합니다. Br = Br로 설정 j; 자신의 CERT r을 설정합니다. 메시지 집합 mr,s′−1 j 하위 단계 (b). – 그러한 대기 중 어느 시점에서든 다음과 같은 단계가 존재하는 경우 (a') 6 \(\leq\)s' \(\leq\)m + 3, s' −2 ‚1 mod 3, 그리고 (b') 나는 적어도 tH개의 유효한 메시지 mr,s'-1을 수신했습니다. j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ), 그러면 나는 그 자신의 라운드 r 실행을 즉시 중단합니다. Br = Br로 설정 ?; 자신의 CERT r을 설정합니다. 메시지 집합 mr,s′−1 j 하위 단계 (b'). – 그러한 대기 중에 어느 시점에서든 내가 적어도 tH개의 유효한 메시지를 받은 경우 미스터,엠+3 j = (ESIGj(1), ESIGj(H(Br Ϋ )), \(\sigma\)r,m+3 j ) 그런 다음 나는 그 자신의 라운드 r 실행을 중지합니다. 즉시 Br = Br로 설정됩니다. ϫ , 자신의 CERT r을 메시지 세트 mr,m+3으로 설정합니다. j 1인용 및 H(Br ? ). 5.5 Algorand 분석 1 분석에 사용된 각 라운드 r \(\geq\)0에 대해 다음 표기법을 소개합니다. • T r을 첫 번째 정직한 사용자가 Br-1을 아는 시간으로 설정합니다. • Ir+1을 간격 [T r+1, T r+1 + \(\lambda\)]로 설정합니다. 프로토콜 초기화에 의해 T 0 = 0이라는 점에 유의하십시오. 각 s \(\geq\)1 및 i \(\in\)SV r,s에 대해 다음을 기억하세요. \(\alpha\)r,s 나 그리고 \(\beta\)r,s 나 는 각각 플레이어 i의 단계 s의 시작 시간과 종료 시간입니다. 더욱이, 각 2 \(\leq\)s \(\leq\)m + 3에 대해 ts = (2s −3)\(\lambda\) + Λ임을 기억하세요. 또한 I0 \(\triangleq\){0} 및 t1 \(\triangleq\)0이라고 둡니다. 마지막으로, Lr \(\leq\)m/3은 베르누이 시행 횟수를 나타내는 확률변수라는 점을 기억하세요. 각 시도가 확률 ph로 1일 때 1을 확인하는 데 필요합니다. 2이며 최대 m/3 시도가 있습니다. 만약 모두 Lr \(\triangleq\)m/3이면 시도가 실패합니다. 분석에서 계산 시간은 실제로 필요한 시간에 비해 무시할 수 있으므로 무시합니다. 메시지를 전파하기 위해. 어쨌든 약간 더 큰 \(\lambda\)와 Λ를 사용하면 계산 시간이 분석에 직접 포함됩니다. 아래 진술의 대부분은 “압도적이다. 확률'을 의미하며, 분석에서 이 사실을 반복적으로 강조하지 않을 수도 있습니다.5.6 주요 정리 정리 5.1. 다음 속성은 각 라운드 r \(\geq\)0에 대해 압도적인 확률로 유지됩니다. 1. 모든 정직한 사용자는 동일한 블록에 동의합니다. 2. 리더 \(\ell\)r이 정직할 때 블록 Br은 \(\ell\)r에 의해 생성되고 Br에는 최대 페이세트가 포함됩니다. 시간 \(\alpha\)r,1까지 \(\ell\)r이 수신함 \(\ell\)r , T r+1 \(\leq\)T r + 8\(\lambda\) + Λ 그리고 모든 정직한 사용자는 그 당시에 Br을 알고 있습니다. 간격 Ir+1. 3. 리더 \(\ell\)r이 악의적일 때, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ이고 모든 정직한 사용자는 Br을 알고 있습니다. Ir+1 시간 간격에서. 4. Lr에 대한 ph = h2(1 + h −h2)이고 리더 \(\ell\)r은 적어도 ph 확률로 정직합니다. 우리의 주요 정리를 증명하기 전에 두 가지 사항을 언급하겠습니다. 비고. • 블록 생성 및 실제 지연 시간. 블록 Br을 생성하는 시간은 T r+1 −T r로 정의됩니다. 즉, 일부 정직한 사용자가 Br을 처음 배우는 시점과 Br을 처음으로 학습한 시점 간의 차이로 정의됩니다. 정직한 사용자가 처음으로 Br−1을 배웠을 때입니다. 라운드 R 리더가 정직할 때, 재산 2는 우리의 주요 정리는 Br을 생성하는 정확한 시간이 무슨 일이 있어도 8\(\lambda\) + Λ 시간임을 보장합니다. h > 2/3의 정확한 값은 다음과 같습니다. 리더가 악의적인 경우 속성 3은 다음을 의미합니다. Br을 생성하는 데 예상되는 시간의 상한은 ( 12 ph + 10)\(\lambda\) + Λ, 다시 한 번 정확함에 관계없이 그러나 Br이 생성되는 데 예상되는 시간은 h의 정확한 값에 따라 달라집니다. 실제로 속성 4에 따르면 ph = h2(1 + h −h2)이고 리더는 적어도 확률적으로 정직합니다. ph, 따라서 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\) + Λ). 예를 들어, h = 80%이면 E[T r+1 −T r] \(\leq\)12.7\(\lambda\) + Λ입니다. • \(\lambda\) 대 Λ. Algorand ' 단계에서 검증자가 보낸 메시지의 크기가 지배적이라는 점에 유의하세요. 디지털 서명 키의 길이는 고정되어 있을 수 있습니다. 사용자가 엄청납니다. 또한 s > 1인 모든 단계에서 동일한 예상 검증자 수 n이 있다는 점에 유의하세요. 사용자 수가 100K, 100M, 100M이든 상관없이 사용할 수 있습니다. 이는 n이 단독으로 있기 때문에 그렇습니다. h와 F에 따라 달라집니다. 따라서 비밀 키 길이를 갑자기 늘려야 하는 경우를 제외하고, \(\lambda\) 값은 사용자 수가 얼마나 많든 상관없이 동일하게 유지되어야 합니다. 예측 가능한 미래. 대조적으로, 모든 거래율의 경우 거래 수는 거래 수에 따라 증가합니다. 사용자. 따라서 모든 새로운 거래를 적시에 처리하려면 블록의 크기가 같아야 합니다. 또한 사용자 수에 따라 성장하여 Λ도 성장합니다. 따라서 장기적으로 우리는 \(\lambda\) << Λ. 따라서 \(\lambda\)에 대해서는 더 큰 계수를 갖는 것이 적절하며, 실제로 계수는 Λ의 경우 1입니다. 정리 증명 5.1. 귀납법으로 속성 1-3을 증명합니다. 라운드 r −1 동안 유지된다고 가정합니다. (일반성을 잃지 않고 r = 0일 때 "round -1" 동안 자동으로 유지됩니다), 우리는 이를 다음과 같이 증명합니다. 라운드 r. 18실제로, E[T r+1 −T r] \(\leq\)(6E[Lr] + 10)\(\lambda\) + Λ = (6 \(\cdot\) 2 ph + 10) \(\lambda\) + Λ = ( 12 ph + 10) \(\lambda\) + Λ.Br−1은 귀납적 가설에 의해 고유하게 정의되므로 집합 SV r,s는 고유하게 정의됩니다. 라운드 r의 각 단계 s에 대해. n1을 선택하면 SV r,1̸= \(\emptyset\)가 압도적인 확률로 발생합니다. 우리는 지금 섹션 5.7과 5.8에서 증명된 다음 두 가지 기본정리를 기술하십시오. 도입 과정 전반에 걸쳐 두 보조정리의 증명에서 0라운드에 대한 분석은 귀납적 단계와 거의 동일합니다. 그리고 차이점이 발생할 때 이를 강조하겠습니다. 보조정리 5.2. [완전성 정리] 속성 1~3을 가정하면 라운드 r−1에 대해 유지됩니다. \(\ell\)r은 솔직하고 압도적인 확률로, • 모든 정직한 사용자는 \(\ell\)r에 의해 생성되고 최대값을 포함하는 동일한 블록 Br에 동의합니다. 시간 \(\alpha\)r까지 \(\ell\)r만큼 수신된 페이세트,1 \(\ell\)r \(\in\)Ir; 그리고 • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ이고 모든 정직한 사용자는 Ir+1 시간 간격에서 Br을 알고 있습니다. 보조정리 5.3. [건전성 정리] 속성 1~3을 가정하면 라운드 r −1에 대해 유지됩니다. \(\ell\)r은 악의적이며, 압도적인 확률로 모든 정직한 사용자가 동일한 블록 Br, T r+1 \(\leq\)에 동의합니다. T r + (6Lr + 10)\(\lambda\) + Λ이고 모든 정직한 사용자는 Ir+1 시간 간격에서 Br을 알고 있습니다. 속성 1-3은 Lemmas 5.2와 5.3을 r = 0과 유도 단계에 적용하여 유지됩니다. 마지막으로, 우리는 속성 4를 섹션 5.9에서 증명된 다음 보조정리로 다시 기술합니다. 보조정리 5.4. r 이전의 각 라운드에 대해 속성 1-3이 주어지면 Lr에 대한 ph = h2(1 + h −h2)이고 리더 \(\ell\)r은 적어도 ph 확률로 정직합니다. 위의 세 가지 정리를 결합하면 정리 5.1이 성립됩니다. ■ 아래의 보조 정리는 귀납법을 고려할 때 라운드 r에 대한 몇 가지 중요한 속성을 나타냅니다. 가설이며, 위의 세 가지 보조정리의 증명에 사용될 것입니다. 보조정리 5.5. 속성 1-3이 라운드 r −1에 대해 유지된다고 가정합니다. 라운드 r의 각 단계 s \(\geq\)1에 대해 각 정직한 검증자 i \(\in\)HSV r,s, 우리는 다음을 얻습니다. (a) \(\alpha\)r,s 나 \(\in\)Ir; (b) 플레이어 i가 ts만큼 기다린 경우, \(\beta\)r,s 나 r > 0인 경우 \(\in\)[T r + ts, T r + \(\lambda\) + ts] \(\beta\)r,s 나 = ts(r = 0); 그리고 (c) 플레이어 i가 ts 시간 동안 기다린 경우 \(\beta\)r,s 시간만큼 기다렸습니다. 나, 그 사람은 모든 메시지를 받았어요 모든 단계 s′ < s에 대해 모든 정직한 검증자 j \(\in\)HSV r,s′에 의해 전송됩니다. 게다가, 각 단계 s \(\geq\)3에 대해 우리는 다음을 얻습니다. (d) 두 개의 서로 다른 플레이어 i, i′ \(\in\)SV r,s와 동일한 두 개의 서로 다른 값 v, v′가 존재하지 않습니다. 두 플레이어 모두 전체 시간의 2/3가 넘는 시간 ts를 기다렸습니다. 유효한 메시지 mr,s−1 j 내가 받은 선수는 v와 계약했고, 유효한 모든 선수의 2/3 이상이 메시지 mr,s−1 j i' 선수가 v'와 계약했습니다. 증거. 속성 (a)는 플레이어 i가 Br−1을 알고 있기 때문에 귀납적 가설로부터 직접적으로 따릅니다. Ir 시간 간격을 두고 즉시 자신의 발걸음을 시작합니다. 속성 (b)는 (a)에서 직접 따릅니다. 플레이어 나는 행동하기 전에 ts의 시간을 기다렸습니다. \(\beta\)r,s 나 = \(\alpha\)r,s 나 + TS. \(\alpha\)r,s에 주목하세요. 나 = 0 r = 0. 이제 속성 (c)를 증명합니다. s = 2이면 속성 (b)에 따라 모든 검증자 j \(\in\)HSV r,1에 대해 다음을 얻습니다. \(\beta\)r,s 나 = \(\alpha\)r,s 나 + ts \(\geq\)T r + ts = T r + \(\lambda\) + Λ \(\geq\) \(\beta\)r,1 j + Λ.각 검증자 j \(\in\)HSV r,1은 시간 \(\beta\)r,1에 메시지를 보내기 때문에 j 그 메시지는 모두에게 정직하게 전해졌어 최대 Λ 시간, 시간별 \(\beta\)r,s의 사용자 나 플레이어 i는 모든 검증자가 보낸 메시지를 받았습니다. 원하는 대로 HSV r,1을 선택합니다. s > 2이면 ts = ts−1 + 2\(\lambda\)입니다. 속성(b)에 따라 모든 단계 s′ < s 및 모든 검증자 j \(\in\)HSV r,s′에 대해, \(\beta\)r,s 나 = \(\alpha\)r,s 나 + 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\). 각 검증자 j \(\in\)HSV r,s′는 시간 \(\beta\)r,s′에 메시지를 보내기 때문에 j 그 메시지는 모두에게 정직하게 전해졌어 최대 \(\lambda\) 시간, 시간 \(\beta\)r,s의 사용자 나 플레이어 i는 모든 정직한 검증자가 보낸 모든 메시지를 받았습니다. 모든 s' < s에 대해 HSV r,s'에서. 따라서 속성 (c)가 성립합니다. 마지막으로 속성 (d)를 증명합니다. 검증자 j \(\in\)SV r,s−1은 최대 두 가지에 서명합니다. 임시 비밀 키를 사용하는 s -1 단계: 출력과 동일한 길이의 값 vj hash 함수 및 s −1 \(\geq\)4인 경우 비트 bj \(\in\){0, 1}. 그렇기 때문에 보조정리의 진술에서 우리는 v와 v′의 길이가 동일해야 합니다. 많은 검증자가 hash 값에 모두 서명했을 수 있습니다. v 및 비트 b, 따라서 둘 다 2/3 임계값을 통과합니다. 모순을 위해 원하는 검증자 i, i'와 값 v, v'가 존재한다고 가정합니다. MSV r,s−1의 일부 악의적인 검증자는 v와 v'에 모두 서명했을 수 있지만 각각은 정직합니다. HSV r,s−1의 검증자는 최대 하나에 서명했습니다. 속성 (c)에 따라 i와 i'는 모두 수신되었습니다. HSV r,s−1의 모든 정직한 검증자가 보낸 모든 메시지. HSV r,s−1(v)를 v, MSV r,s−1에 서명한 정직한 (r, s −1) 검증자의 집합이라고 가정합니다. 나 세트 i가 유효한 메시지를 수신한 악의적인 (r,s-1)-검증자 및 MSV r,s-1 나 (v) MSV r,s−1의 하위 집합 나 나는 누구로부터 유효한 메시지 서명을 받았습니까? v. 요구 사항에 따라 나와 v, 우리는 비율 \(\triangleq\)|HSV r,s−1(v)| + |MSV r,s−1 나 (v)| |HSV r,s−1| + |MSV r,s−1 나 |
2 3. (1) 우리는 처음으로 보여줍니다 |MSV r,s−1 나 (v)| \(\leq\)|HSV r,s−1(v)|. (2) 다르게 가정하면, 매개변수 간의 관계로 인해 압도적인 확률로 |HSV r,s−1| > 2|MSV r,s−1| \(\geq\)2|MSV r,s−1 나 |따라서 비율 < |HSV r,s−1(v)| + |MSV r,s−1 나 (v)| 3|MSV r,s−1 나 | < 2|MSV r,s−1 나 (v)| 3|MSV r,s−1 나 | \(\leq\)2 3, 모순되는 불평등 1. 다음으로, 불평등 1에 의해 우리는 2|HSV r,s−1| + 2|MSV r,s−1 나 | < 3|HSV r,s−1(v)| + 3|MSV r,s−1 나 (v)| \(\leq\) 3|HSV r,s−1(v)| + 2|MSV r,s−1 나 | + |MSV r,s−1 나 (v)|. 불평등 2와 결합하면, 2|HSV r,s−1| < 3|HSV r,s−1(v)| + |MSV r,s−1 나 (v)| \(\leq\)4|HSV r,s−1(v)|, 이는 다음을 의미한다 |HSV r,s−1(v)| > 1 2|HSV r,s−1|.마찬가지로, i'와 v'에 대한 요구 사항에 따라 다음과 같습니다. |HSV r,s−1(v′)| > 1 2|HSV r,s−1|. 정직한 검증자 j \(\in\)HSV r,s−1은 그의 임시 비밀 키 skr,s−1을 파괴하므로 j 전파하기 전에 그의 메시지에 따르면, 공격자는 j가 서명하지 않은 값에 대해 j의 서명을 위조할 수 없습니다. j가 검증자임을 학습합니다. 따라서 위의 두 부등식은 |HSV r,s−1| \(\geq\)|HSV r,s−1(v)| + |HSV r,s−1(v′)| > |HSV r,s−1|, 모순입니다. 따라서 원하는 i, i', v, v'는 존재하지 않으며, 재산 (d)가 보유됩니다. ■ 5.7 완전성 정리 보조정리 5.2. [완전성 정리, 다시 설명] 속성 1-3을 가정하면 라운드 r−1에 대해 유지됩니다. 리더 \(\ell\)r은 정직하고, 압도적인 확률로, • 모든 정직한 사용자는 \(\ell\)r에 의해 생성되고 최대값을 포함하는 동일한 블록 Br에 동의합니다. 시간 \(\alpha\)r까지 \(\ell\)r만큼 수신된 페이세트,1 \(\ell\)r \(\in\)Ir; 그리고 • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ이고 모든 정직한 사용자는 Ir+1 시간 간격에서 Br을 알고 있습니다. 증거. 귀납적 가설과 Lemma 5.5에 의해 각 단계 s와 검증자 i \(\in\)HSV r,s에 대해, \(\alpha\)r,s 나 \(\in\)이르. 아래에서는 프로토콜을 단계별로 분석합니다. 1단계. 정의에 따르면 모든 정직한 검증자 i \(\in\)HSV r,1은 원하는 메시지 mr,1을 전파합니다. 나 ~에 시간 \(\beta\)r,1 나 =\(\alpha\)r,1 나, 어디 있어?1 나 = (Br i , Esigi(H(Br i )), \(\sigma\)r,1 나), 브르 나는 = (r, 지불 r i , SIGi(Qr−1), H(Br−1)), 그리고 돈을 지불하세요 나는 \(\alpha\)r,1까지 내가 본 모든 지불 중에서 최대 지불 세트입니다. 나. 2단계. 정직한 검증자 i \(\in\)HSV r,2를 임의로 수정합니다. Lemma 5.5에 따르면 플레이어 i가 완료되면 시간 \(\beta\)r,2에서 대기 중 나 =\(\alpha\)r,2 나 + t2, 그는 HSV r,1의 검증자가 보낸 모든 메시지를 받았습니다. 씨,1 \(\ell\)r . \(\ell\)r의 정의에 따르면, PKr−k에는 자격 증명이 hash인 다른 플레이어가 존재하지 않습니다. 값이 H(\(\sigma\)r,1보다 작음) \(\ell\)r). 물론, 대적은 H(\(\sigma\)r,1 \(\ell\)r ) 매우 작지만 그 때쯤에는 플레이어 \(\ell\)r이 자신의 임시 키와 mr,1 메시지를 파기했습니다. \(\ell\)r 전파되었습니다. 따라서 검증자 i는 자신의 리더를 플레이어 \(\ell\)r로 설정합니다. 따라서 시간 \(\beta\)r,2에서 나 , 검증자 i가 Mr,2를 전파합니다. 나 = (ESIGi(v′ 나), \(\sigma\)r,2 i ), 여기서 v' 나는 = H(Br \(\ell\)r). r = 0일 때 유일한 차이점은 그게 \(\beta\)r,2인가요? 나 = t2가 아닌 범위에 속합니다. 향후 단계에 대해서도 비슷한 말을 할 수 있으며 우리는 다시는 강조하지 않겠습니다. 3단계. 정직한 검증자 i \(\in\)HSV r,3을 임의로 수정합니다. Lemma 5.5에 따르면 플레이어 i가 완료되면 시간 \(\beta\)r,3에서 대기 중 나 =\(\alpha\)r,3 나 + t3, 그는 HSV r,2의 검증자가 보낸 모든 메시지를 받았습니다. 매개변수 간의 관계로 보면 압도적인 확률 |HSV r,2| > 2|MSVr,2|. 더욱이 정직한 검증자는 모순되는 메시지에 서명하지 않을 것이며, 대적은 정직한 검증자가 해당 내용을 파기한 후에는 정직한 검증자의 서명을 위조할 수 없습니다. 임시 비밀 키. 따라서 내가 받은 모든 유효한 (r, 2) 메시지 중 2/3 이상이 다음에서 온 것입니다. 정직한 검증자이며 mr,2 형식입니다. j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,2 j), 모순이 없습니다. 따라서 시간 \(\beta\)r,3에 나 플레이어 i가 Mr,3을 전파합니다. 나 = (ESIGi(v′), \(\sigma\)r,3 i ), 여기서 v' = H(Br \(\ell\)r).4단계. 정직한 검증자 i \(\in\)HSV r,4를 임의로 수정합니다. Lemma 5.5에 의해 플레이어 i는 모든 것을 받았습니다. HSV r,3의 검증자가 시간 \(\beta\)r,4에서 대기를 마쳤을 때 보낸 메시지 나 =\(\alpha\)r,4 나 + t4. 유사하다 3단계, 내가 받은 모든 유효한 (r, 3) 메시지의 2/3 이상이 정직한 검증자로부터 온 것이며 Mr,3 형식의 j = (ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,3 j). 따라서 플레이어 i는 vi = H(Br)로 설정합니다. \(\ell\)r), gi = 2, bi = 0. 시간 \(\beta\)r,4 나 =\(\alpha\)r,4 나 +t4 그는 전파한다 씨,4 나 = (ESIGi(0), ESIGi(H(Br \(\ell\)r)), \(\sigma\)r,4 나). 5단계. 정직한 검증자 i \(\in\)HSV r,5를 임의로 수정합니다. Lemma 5.5에 따르면 플레이어는 다음과 같습니다. \(\alpha\)r,5 시간까지 기다렸다면 검증자가 보낸 모든 메시지를 HSV r,4에서 수신했습니다. 나 +t5. 참고하세요 |HSV r,4| \(\geq\)tH.19 또한 HSV r,4의 모든 검증자는 H(Br에 서명했습니다. \(\ell\)r). |MSV r,4| < tH, v′ ̸= H(Br은 존재하지 않습니다. \(\ell\)r) tH가 서명했을 수도 있음 SV r,4의 검증자(반드시 악의적일 수 있음)이므로 플레이어 i는 그가 완료하기 전에 멈추지 않습니다. 유효한 메시지를 받았습니다. Mr,4 j = (ESIGj(0), ESIGj(H(Br \(\ell\)r)), \(\sigma\)r,4 j). T를 다음과 같은 시간으로 설정합니다. 후자의 사건이 발생합니다. 이러한 메시지 중 일부는 악의적인 플레이어가 보낸 것일 수도 있지만 |MSV r,4| < thH, 그 중 적어도 하나는 HSV r,4의 정직한 검증자로부터 왔으며 시간이 지난 후에 전송됩니다. T r +t4. 따라서 T \(\geq\)T r +t4 > T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\)r +Λ, 그리고 시간이 지나면 T 플레이어 i도 수신합니다. 메시지 씨,1 \(\ell\)r . 프로토콜의 구성에 따라 플레이어 i는 시간 \(\beta\)r,5에서 중지됩니다. 나 = T 없이 무엇이든 전파하는 것; Br = Br로 설정 \(\ell\)r; 그리고 자신의 CERT r을 (r, 4)-메시지 세트로 설정합니다. 0과 H(Br \(\ell\)r) 받은 것입니다. 단계 s > 5. 마찬가지로, 모든 단계 s > 5와 검증자 i \(\in\)HSV r,s에 대해 플레이어 i는 \(\alpha\)r,s 시간까지 기다렸다면 검증자가 보낸 모든 메시지를 HSV r,4에서 수신했습니다. 나 + TS. 의해 동일한 분석으로, 플레이어 i는 아무것도 전파하지 않고 정지하며 Br = Br로 설정됩니다. \(\ell\)r (그리고 자신의 설정 CERT r이 적절합니다). 물론 악성 검증자는 멈추지 않고 임의적으로 전파할 수도 있습니다. 메시지가 있지만 |MSV r,s| < tH, 유도에 의해 다른 v'는 tH 검증자에 의해 서명될 수 없습니다. 모든 4단계 \(\leq\)s' < s에서 정직한 검증자는 유효한 tH를 받았기 때문에 중지합니다. (r, 4)-0 및 H(Br에 대한 메시지 \(\ell\)r). Round-r 블록의 재구성. 5단계의 분석은 일반적인 정직성에 적용됩니다. 사용자 i는 거의 변화가 없습니다. 실제로, 플레이어 i는 Ir 간격에서 자신의 라운드 r을 시작하고 H(Br에 대한 tH 유효한 (r, 4) 메시지를 수신한 경우에만 시간 T에서 중지합니다. \(\ell\)r). 또 왜냐하면 그 메시지 중 적어도 하나는 정직한 검증자로부터 온 것이며 T r + t4 시간 후에 전송됩니다. 플레이어 i는 Mr,1도 받았습니다. \(\ell\)r은 시간 T만큼입니다. 따라서 그는 Br = Br로 설정합니다. 적절한 CERT r을 사용하여 \(\ell\)r. 모든 정직한 사용자가 Ir+1 시간 간격 내에 라운드 r을 완료한다는 것을 보여주는 것만 남았습니다. 5단계의 분석에 따르면 모든 정직한 검증자 i \(\in\)HSV r,5는 \(\alpha\)r,5 이전에 Br을 알고 있습니다. 나 + t5 \(\leq\) T r + \(\lambda\) + t5 = T r + 8\(\lambda\) + Λ. T r+1은 최초의 정직한 사용자 ir이 Br을 아는 시간이므로 다음과 같습니다. T r+1 \(\leq\)T r + 8\(\lambda\) + Λ 원하는대로. 더욱이 ir 플레이어가 Br을 알고 있다면 그는 이미 메시지를 전파하는 데 도움을 준 것입니다. 그의 CERT r. 이러한 모든 메시지는 \(\lambda\) 시간 내에 모든 정직한 사용자에게 수신됩니다. 19 엄밀히 말하면 이러한 일은 매우 높은 확률로 발생하지만 반드시 압도적인 것은 아닙니다. 그러나 이 확률은 프로토콜의 실행 시간에 약간 영향을 미치지만 정확성에는 영향을 미치지 않습니다. h = 80%일 때, |HSV r,4| 확률이 1 −10−8인 \(\geq\)tH. 이 이벤트가 발생하지 않으면 프로토콜은 다른 이벤트로 계속됩니다. 3단계. 두 단계에서 이것이 발생하지 않을 확률은 무시할 수 있으므로 프로토콜은 8단계에서 완료됩니다. 그렇다면 필요한 단계 수는 거의 5개입니다.ir 플레이어는 이를 전파한 최초의 플레이어였습니다. 게다가 위의 분석에 따르면 T r+1 \(\geq\)T r + t4 \(\geq\) \(\beta\)r,1 \(\ell\)r + Λ, 따라서 모든 정직한 사용자는 mr,1을 받았습니다. \(\ell\)r 시간 T r+1 + \(\lambda\). 따라서, 모든 정직한 사용자는 Ir+1 = [T r+1, T r+1 + \(\lambda\)] 시간 간격에서 Br을 알고 있습니다. 마지막으로, r = 0인 경우 실제로 T 1 \(\leq\)t4 + \(\lambda\) = 6\(\lambda\) + Λ가 됩니다. 모든 것을 하나로 결합하여, Lemma 5.2가 유지됩니다. ■ 5.8 건전성 정리 보조정리 5.3. [건전성 정리, 다시 설명] 속성 1-3을 가정하면 라운드 r −1에 대해 유지됩니다. 리더 \(\ell\)r은 악의적이며 압도적인 확률로 모든 정직한 사용자가 동일한 블록에 동의합니다. Br, T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ 그리고 모든 정직한 사용자는 Ir+1 시간 간격에서 Br을 알고 있습니다. 증거. 우리는 프로토콜의 두 부분인 GC와 BBA⋆를 별도로 고려합니다. GC. 귀납적 가설과 Lemma 5.5에 따라 모든 단계 s \(\in\){2, 3, 4} 및 모든 정직한 단계에 대해 검증자 i \(\in\)HSV r,s, 플레이어 i가 시간 \(\beta\)r,s에 행동할 때 나 = \(\alpha\)r,s 나 + ts, 그는 보낸 모든 메시지를 받았습니다 s' < s 단계의 모든 정직한 검증자에 의해 수행됩니다. 4단계에서는 두 가지 가능한 경우를 구별합니다. 사례 1. 검증자가 없음 i \(\in\)HSV r,4는 gi = 2로 설정합니다. 이 경우 정의에 따르면 모든 검증자 i \(\in\)HSV r,4에 대해 bi = 1입니다. 즉, 그들은 다음으로 시작합니다. 바이너리 BA 프로토콜에서 1에 대한 합의. 그들은 vi에 대해 합의하지 않았을 수도 있습니다. 그러나 바이너리 BA에서 볼 수 있듯이 이것은 중요하지 않습니다. 사례 2. gˆi = 2인 검증자 ˆi \(\in\)HSV r,4가 존재합니다. 이 경우에 우리는 다음을 보여줍니다. (1) 모든 i \(\in\)HSV r,4에 대해 gi \(\geq\)1, (2) 모든 i \(\in\)HSV r,4에 대해 vi = v'를 만족하는 값 v'가 존재하고, (3) 유효한 메시지가 존재합니다. mr,1 \(\ell\) v' = H(Br을 만족하는 일부 검증기 \(\ell\) \(\in\)SV r,1로부터 \(\ell\)). 실제로 플레이어 ˆi는 정직하고 gˆi = 2로 설정했기 때문에 모든 유효한 메시지의 2/3 이상이 mr,3입니다. j 그는 동일한 값 v′ ̸= \(\bot\)에 대해 수신했으며 vˆi = v′로 설정했습니다. Lemma 5.5의 속성 (d)에 따르면 다른 정직한 (r, 4) 검증자 i에 대해서는 그 이상일 수 없습니다. 모든 유효한 메시지의 2/3보다 mr,3 j i′가 받은 값은 v′′̸=v′와 같습니다. 따라서 i가 gi = 2로 설정하면 i도 v'에 대해 > 2/3 다수를 보았고 설정되어야 합니다. vi = v′, 원하는 대로. 이제 gi < 2인 임의의 검증기 i \(\in\)HSV r,4를 고려해 보겠습니다. 속성 분석과 유사합니다. (d) Lemma 5.5에서 플레이어 ˆi는 v'에 대해 > 2/3 다수를 보았기 때문에 1보다 더 많습니다. 2|HSV r,3| 정직한 (r, 3)-검증자는 v'에 서명했습니다. 왜냐하면 나는 정직한 (r, 3) 검증자로부터 모든 메시지를 받았기 때문입니다. 시간 \(\beta\)r,4 나 =\(\alpha\)r,4 나 + t4, 그는 특히 1개 이상을 받았습니다. 2|HSV r,3| 그들로부터의 메시지 v'에 대해. 왜냐하면 |HSV r,3| > 2|MSV r,3|, 나는 v′에 대해 > 1/3 다수를 보았습니다. 이에 따라 플레이어 i는 gi = 1로 설정하고 속성 (1)이 유지됩니다. 플레이어 i는 반드시 vi = v′로 설정해야 합니까? 다음과 같은 다른 값 v′′ ̸= \(\bot\)이 존재한다고 가정합니다. 플레이어 i는 또한 v′′에 대해 > 1/3 다수를 보았습니다. 해당 메시지 중 일부는 악의적인 메시지일 수 있습니다. 그러나 그들 중 적어도 한 명은 정직한 검증자 j \(\in\)HSV r,3에게서 왔습니다: 실제로, 왜냐하면 |HSV r,3| > 2|MSV r,3| 그리고 나는 악성 그룹인 HSV r,3으로부터 모든 메시지를 받았습니다. 내가 유효한 (r, 3) 메시지를 받은 검증자는 모든 유효한 메시지의 < 1/3에 해당합니다. 그 사람이 받은 메시지.정의에 따르면 플레이어 j는 모든 유효한 (r, 2) 메시지 중에서 v''에 대해 > 2/3 다수를 보았어야 합니다. 그는 받았습니다. 그러나 우리는 이미 다른 정직한 (r, 3) 검증자들이 본 것을 가지고 있습니다. v'에 대한 2/3 다수(v'에 서명했기 때문). Lemma 5.5의 속성 (d)에 따르면 이는 불가능합니다. 발생하며 그러한 값 v''는 존재하지 않습니다. 따라서 플레이어 i는 vi = v′를 원하는 대로 설정해야 합니다. 재산(2)이 보유됩니다. 마지막으로, 일부 정직한 (r, 3) 검증자는 v'에 대해 > 2/3 다수를 보았으며 일부(실제로는 절반 이상의 정직한 (r, 2) 검증자들이 v'에 서명하고 그들의 메시지를 전파했습니다. 프로토콜을 구성함으로써 정직한 (r, 2) 검증자는 유효한 메시지 미스터, 1 \(\ell\) 일부 플레이어의 \(\ell\) \(\in\)SV r,1 v' = H(Br \(\ell\))이므로 성질 (3)이 성립한다. BBA⋆. 우리는 다시 두 가지 경우를 구별합니다. 사례 1. 모든 검증자 i \(\in\)HSV r,4는 bi = 1입니다. 이는 GC의 사례 1 이후에 발생합니다. |MSV r,4| < tH, 이 경우 SV r,5에는 검증자가 없습니다. 비트 0에 대한 유효한 (r,4) 메시지를 수집하거나 생성할 수 있습니다. 따라서 HSV r,5에는 정직한 검증자가 없습니다. 비어 있지 않은 블록을 알고 있기 때문에 멈출 것입니다. 더욱이, 비트 1에 대해 적어도 tH개의 유효한 (r, 4)-메시지가 있지만, s' = 5는 다음을 만족하지 않습니다. s′ −2 ė1 mod 3, 따라서 HSV r,5의 정직한 검증자는 Br = Br을 알고 있기 때문에 중지하지 않을 것입니다. ? 대신 모든 검증자 i \(\in\)HSV r,5는 시간 \(\beta\)r,5에 작동합니다. 나 =\(\alpha\)r,5 나 + t5, 그가 모든 것을 받았을 때까지 Lemma 5.5에 따라 HSV r,4에서 보낸 메시지입니다. 따라서 플레이어 i는 1에 대해 > 2/3 다수를 보았습니다. bi = 1로 설정합니다. Coin-Fixed-To-1 단계인 6단계에서는 s' = 5가 s' −2 pho mod 3을 만족하지만, 비트 0에 대한 유효한 (r, 4) 메시지가 존재하지 않으므로 HSV r,6의 검증자는 중지되지 않습니다. 그는 비어 있지 않은 블록을 알고 있습니다. 그러나 s' = 6인 경우 s' −2 =1 mod 3이 존재합니다. |HSV r,5| \(\geq\)tH 유효(r, 5) - HSV r,5의 비트 1에 대한 메시지. 모든 검증자 i \(\in\)HSV r,6에 대해 Lemma 5.5를 따르고 시간 \(\alpha\)r,6 이전에 나 + t6 플레이어 i HSV r,5로부터 모든 메시지를 수신했으므로 아무 것도 전파하지 않고 중지하고 설정합니다. 브롬 = 브롬 ? 그의 CERT r은 tH 유효한 (r, 5) 메시지 mr,5의 집합입니다. j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j) 그가 멈출 때 그에게 받았습니다. 다음으로, 플레이어 i가 s > 6 단계의 정직한 검증자이거나 일반적이고 정직한 사용자(즉, 비검증자). Lemma 5.2의 증명과 유사하게 플레이어 i는 Br = Br을 설정합니다. ث 그리고 자신의 것을 설정합니다 CERT r은 tH 유효한 (r, 5)-메시지 mr,5의 집합입니다. j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j) 그는 받았습니다. 마지막으로 Lemma 5.2와 유사합니다. Tr+1 \(\leq\) 분 i\(\in\)HSV r,6 \(\alpha\)r,6 나 + t6 \(\leq\)T r + \(\lambda\) + t6 = T r + 10\(\lambda\) + Λ, 그리고 모든 정직한 사용자는 Ir+1 시간 간격에서 Br을 알고 있습니다. 왜냐하면 첫 번째 정직한 사용자 i는 Br이 자신의 CERT r에서 (r, 5) 메시지를 전파하는 데 도움을 주었다는 것을 알고 있습니다. 사례 2. bˆi = 0인 검증자 ˆi \(\in\)HSV r,4가 존재합니다. 이는 GC의 사례 2 다음에 발생하며 더 복잡한 경우입니다. GC 분석에 따르면, 이 경우에는 유효한 메시지 mr,1이 존재합니다. \(\ell\) vi = H(Br \(\ell\)) 모든 i \(\in\)HSV r,4에 대해. 참고 HSV r,4의 검증자는 Bi에 대해 합의하지 않을 수 있습니다. 임의의 단계 s \(\in\){5, . . . , m + 3} 및 검증자 i \(\in\)HSV r,s, Lemma 5.5 플레이어에 의해 i는 HSV r,4 \(\cup\) \(\cdots\) \(\cup\)HSV r,s−1에서 모든 정직한 검증자가 보낸 모든 메시지를 받았습니다. 시간 동안.이제 다음 사건 E를 고려합니다. 첫 번째로 다음과 같은 단계 s\(\geq\)5가 존재합니다. 바이너리 BA의 시간, 일부 플레이어 i\(\in\)SV r,s(악의적이든 정직하든)는 중지되어야 합니다. 아무것도 전파하지 않고. 우리는 "멈춰야 한다"라는 표현을 사용하여 플레이어가 i 악의적인 경우 프로토콜에 따라 중지해서는 안 되는 척할 수 있으며 적이 선택한 메시지를 전파합니다. 또한 프로토콜을 구성함으로써 다음 중 하나를 수행할 수 있습니다. (E.a) i는 최소한 tH개의 유효한 메시지 mr,s′-1을 수집하거나 생성할 수 있습니다. j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ) 동일한 v 및 s′에 대해, 5 \(\leq\)s′ \(\leq\)s및 s′ −2 ל0 mod 3; 또는 (E.b) i는 적어도 tH개의 유효한 메시지 mr,s′-1을 수집하거나 생성할 수 있습니다. j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ) 동일한 s′에 대해 6 \(\leq\)s′ \(\leq\)s및 s′ −2 ‚1 mod 3입니다. 정직한 (r, s′ −1) 메시지는 모든 정직한 (r, s′) 검증자가 수신하기 전에 수신되기 때문입니다. 단계 s'에서 대기가 완료되고, 적대자는 늦어도 단계 s'에서 모든 것을 수신하기 때문에 정직한 사용자라면 일반성을 잃지 않고 s′ = s이고 플레이어 i는 악의적입니다. 참고하세요 우리는 유효한 블록의 hash이 되기 위해 E.a의 v 값을 요구하지 않았습니다. 분석에서 v = H(Br \(\ell\)) 이 하위 이벤트에서. 아래에서는 먼저 사건 E에 따른 사례 2를 분석한 다음 s의 값이 본질적으로 다음과 같다는 것을 보여줍니다. Lr에 따라 분배됨(따라서 이벤트 E는 단계 m + 3 이전에 압도적으로 발생함) 매개변수의 관계가 주어진 확률). 우선, 임의의 단계 5 \(\leq\)s < s에 대해, 모든 정직한 검증자 i \(\in\)HSV r,s는 ts 시간을 기다렸다가 vi를 투표의 과반수 투표로 설정했습니다. 유효한 (r, s−1)-그가 받은 메시지. 플레이어 i는 모든 정직한 (r, s−1) 메시지를 수신했기 때문에 HSV r,4의 모든 정직한 검증자는 Lemma 5.5에 따라 H(Br)에 서명했습니다. \(\ell\)) 다음의 경우 GC의 2, 이후 |HSV r,s−1| > 2|MSV r,s−1| 각 s에 대해 유도에 의해 우리는 그 플레이어 i를 갖게 됩니다. 설정했습니다 vi = H(Br \(\ell\)). 전파하지 않고 멈추지 않는 모든 정직한 검증자 i \(\in\)HSV r,s에 대해서도 마찬가지입니다. 무엇이든. 이제 우리는 단계 s를 고려하고 4개의 하위 사례를 구별합니다. 사례 2.1.a. 사건 E.a가 발생하고 i′ \(\in\)HSV r,s를 수행해야 하는 정직한 검증자가 존재합니다. 또한 아무것도 전파하지 않고 중지합니다. 이 경우 s−2 pho 0 mod 3이 있고 단계 s는 Coin-Fixed-To-0 단계입니다. 작성자: 정의에 따르면, 플레이어 i'는 최소한 다음 형식의 tH개의 유효한 (r, s−1) 메시지를 수신했습니다. (ESIGj(0), ESIGj(v), \(\sigma\)r,s−1 j ). HSV r,s−1의 모든 검증자는 H(Br)에 서명했기 때문에 \(\ell\)) 그리고 |MSV r,s−1| < tH, v = H(Br \(\ell\)). 적어도 tH −|MSV r,s−1| 0과 v에 대해 i'가 수신한 (r, s−1)-메시지 중 \(\geq\)1개 T r +ts−1 \(\geq\)T r +t4 \(\geq\)T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 이후 HSV r,s−1의 검증자에 의해 전송됩니다. \(\ell\) +Λ, i' 플레이어가 Mr,1을 받았습니다. \(\ell\) 그가 (r, s−1)-메시지를 수신할 때까지. 따라서 플레이어 i'는 아무것도 전파하지 않고 중지됩니다. Br = Br로 설정 \(\ell\); 자신의 CERT r을 그가 수신한 0과 v에 대한 유효한 (r, s−1) 메시지 세트. 다음으로 우리는 다른 검증자 i \(\in\)HSV r,s가 Br = Br로 중지되었음을 보여줍니다. \(\ell\) 또는 bi = 0으로 설정하고 (ESIGi(0), ESIGi(H(Br)을 전파했습니다. \(\ell\))), \(\sigma\)r,s 나). 실제로 Step s 때문에 일부 검증자가 아무것도 전파하지 않고 중지해야 하는 첫 번째 경우입니다. tH (r, s' −1)-검증자가 1에 서명하도록 s' −2 pho1 mod 3인 단계 s' < s가 존재합니다. 따라서 HSV r,s의 검증자는 Br = Br에서 중지되지 않습니다. ?더욱이, 모든 정직한 검증자들은 {4, 5, . . . , s−1}은 H(Br에 서명했습니다. \(\ell\)) 그렇죠 tH (r, s' −1)-검증자가 서명한 단계 s' \(\leq\)s with s' −2 ל0 mod 3이 존재하지 않습니다. 일부 v′′ ̸= H(Br \(\ell\)) —실제로, |MSV r,s′−1| < tH. 따라서 HSV r,s의 검증자는 중지되지 않습니다. Br ̸= Br Ϋ 및 Br ̸= Br \(\ell\). 즉, 플레이어 i \(\in\)HSV r,s가 무엇이든 전파하려면 Br = Br을 설정해야 합니다. \(\ell\). 플레이어 i \(\in\)HSV r,s가 시간 ts를 기다리고 시간에 메시지를 전파한 경우 \(\beta\)r,s 나 = \(\alpha\)r,s 나 + ts, 그는 HSV r,s−1로부터 모든 메시지를 받았습니다. tH −|MSV r,s−1| 그 중 0과 v에 대한 것입니다. 내가 1에 대해 2/3 이상의 다수를 본 경우, 그는 1개에 대해 2(tH −|MSV r,s−1|) 이상의 유효한 (r, s−1) 메시지를 확인했습니다. 2tH −3|MSV r,s−1|보다 그 중 정직한 (r, s−1) 검증자로부터 나온 것입니다. 그러나 이는 다음을 의미합니다. |HSV r,s−1| \(\geq\)tH−|MSV r,s−1|+2tH−3|MSV r,s−1| > 2n−4|MSV r,s−1|, 모순됨 그 사실 |HSV r,s−1| + 4|MSV r,s−1| <2n, 이는 매개변수의 관계에서 비롯됩니다. 따라서 > 2/3이 표시되지 않습니다. 1이 다수이고 Step s가 Coin-Fixed-To-0 단계이기 때문에 bi = 0으로 설정합니다. 우리가 가지고 있는 것처럼 본, vi = H(Br \(\ell\)). 따라서 i는 (ESIGi(0), ESIGi(H(Br)을 전파합니다. \(\ell\))), \(\sigma\)r,s i) 우리가 원했던 대로 쇼. 단계 s+ 1의 경우, 플레이어 i'가 자신의 CERT r에서 메시지를 전파하는 데 도움을 주었기 때문입니다. 시간 또는 그 이전 \(\alpha\)r,s 나' + ts, HSV r,s+1의 모든 정직한 검증자는 최소한 tH 유효(r, s−1) - 비트 0 및 값 H(Br에 대한 메시지 \(\ell\)) 작업이 완료되거나 완료되기 전 기다리고 있습니다. 게다가 HSV r,s+1의 검증자는 (r, s−1)-을 수신하기 전에는 멈추지 않을 것입니다. 메시지, 왜냐하면 비트 1에 대한 다른 tH 유효한 (r, s′ -1) 메시지가 존재하지 않기 때문입니다. s′ −2 ל1 mod 3 및 6 \(\leq\)s′ \(\leq\)s+ 1, 단계 s의 정의에 따라. 특히, 스텝 s+ 1 자체는 Coin-Fixed-To-1 단계이지만 HSV r,s의 정직한 검증자는 전파되지 않았습니다. 1에 대한 메시지 및 |MSV r,s| < tH. 따라서 HSV r,s+1의 모든 정직한 검증자는 아무 것도 전파하지 않고 중지하고 Br = 브르 \(\ell\): 이전과 마찬가지로 mr,1을 받았습니다. \(\ell\) 그들이 원하는 (r, s−1)-메시지를 받기 전에.20 향후 단계의 모든 정직한 검증자와 일반적으로 모든 정직한 사용자에 대해서도 마찬가지입니다. 특히 다들 Br = Br인거 아시죠? Ir+1 시간 간격 내에서 \(\ell\)이고 T r+1 \(\leq\) \(\alpha\)r,s 나' + ts\(\leq\)T r + \(\lambda\) + ts. 사례 2.1.b. 이벤트 E.b가 발생하고 i′ \(\in\)HSV r,s를 수행해야 하는 정직한 검증자가 존재합니다. 또한 아무것도 전파하지 않고 중지합니다. 이 경우 s−2 pho1 mod 3이 있고 단계 s는 Coin-Fixed-To-1 단계입니다. 분석 Case 2.1.a와 유사하며 많은 세부 사항이 생략되었습니다. 20만약 \(\ell\)이 악의적이라면 그는 Mr,1을 보낼 수도 있습니다. \(\ell\) 일부 정직한 사용자/검증자는 Mr,1을 받지 못했기를 바랍니다. \(\ell\) 아직 그들이 원하는 인증서를 받았을 때. 그러나 검증자 ˆi \(\in\)HSV r,4는 bˆi = 0 및 vˆi = H(Br)로 설정했기 때문에 \(\ell\))와 같이 정직한 검증자의 절반 이상이 i \(\in\)HSV r,3이 되기 전에 vi = H(Br \(\ell\)). 이는 더 많은 것을 의미합니다. 정직한 검증자의 절반 이상이 i \(\in\)HSV r,2 vi = H(Br로 설정했습니다. \(\ell\)), 그리고 그 (r, 2)-검증자는 모두 mr,1을 받았습니다. \(\ell\). 다음과 같이 공격자는 검증자와 비검증자를 구별할 수 없으며, mr,1의 전파를 목표로 삼을 수 없습니다. \(\ell\) (r, 2)-검증자에게 비검증자가 볼 수 없도록 말이죠. 실제로 높은 확률로 절반 이상 (또는 좋은 상수 분수) 모든 정직한 사용자가 Mr,1을 본 경우 \(\ell\) 자신의 라운드 r이 시작될 때부터 t2를 기다린 후. 이제부터, mr,1에 필요한 시간 \(\lambda\)' \(\ell\) 나머지 정직한 사용자에게 도달하는 것은 Λ보다 훨씬 작으며 단순화를 위해 우리는 그렇게 하지 않습니다. 분석에 적어보세요. 4\(\lambda\) \(\geq\) \(\lambda\)'이면 분석은 아무런 변화 없이 진행됩니다. 4단계가 끝날 때까지 모든 정직한 사용자라면 Mr,1을 받았을 것입니다. \(\ell\). 블록의 크기가 거대해지고 4\(\lambda\) < \(\lambda\)'이면 3단계와 4단계에서, 프로토콜은 각 검증자에게 2\(\lambda\)가 아닌 \(\lambda\)'/2를 기다리도록 요청할 수 있으며 분석은 계속 유지됩니다.이전과 마찬가지로 플레이어 i'는 최소한 다음 형식의 tH 유효한 (r, s−1) 메시지를 수신해야 합니다. (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ). 다시 s의 정의에 따르면 단계가 존재하지 않습니다. 5 \(\leq\)s′ < swith s′ −2 ל0 mod 3, 여기서 적어도 tH (r, s′ −1) 검증자는 0과 0을 서명했습니다. 동일한 v. 따라서 플레이어 i'는 아무것도 전파하지 않고 중지됩니다. Br = Br로 설정 ?; 그리고 세트 자신의 CERT r은 그가 수신한 비트 1에 대한 유효한 (r, s−1) 메시지 세트가 됩니다. 더욱이, 다른 검증자 i \(\in\)HSV r,s는 Br = Br로 중지되었습니다. ϫ , 또는 bi =로 설정됨 1이고 전파됨(ESIGi(1), ESIGi(vi), \(\sigma\)r,s 나 ). 플레이어 i'가 전파하는 데 도움을 주었기 때문에 시간 \(\alpha\)r,s에 따른 CERT r의 (r, s−1)-메시지 나' + ts, 다시 한번 모든 정직한 검증자들 HSV r,s+1 아무것도 전파하지 않고 정지하고 Br = Br로 설정 ? . 마찬가지로 모두 정직하다. 사용자는 Br = Br을 알고 있습니다. τ 시간 간격 Ir+1 내에서 그리고 T r+1 \(\leq\) \(\alpha\)r,s 나' + ts\(\leq\)T r + \(\lambda\) + ts. 사례 2.2.a. 사건 E.a가 발생하고 정직한 검증자가 존재하지 않습니다. i' \(\in\)HSV r,swho 또한 아무것도 전파하지 않고 중지해야 합니다. 이 경우 플레이어 i는 유효한 CERT r을 가질 수 있습니다. i원하는 tH로 구성됨 (r, s−1)-공격자가 수집하거나 생성할 수 있는 메시지입니다. 그러나 악의적인 검증자는 해당 메시지를 전파하는 데 도움을 주지 않을 수 있으므로 정직한 메시지가 있다고 결론을 내릴 수 없습니다. 사용자는 \(\lambda\) 시간 내에 이를 받게 됩니다. 실제로 |MSV r,s−1| 그 중 메시지의 출처는 다음과 같습니다. 메시지를 전혀 전파하지 않고 전송만 하는 악의적인 (r, s−1) 검증자 s단계에서 악의적인 검증자에게 전달됩니다. 사례 2.1.a와 유사하게 여기에는 s−2 =0 mod 3이 있고 단계 s는 Coin-Fixed-To-0 단계입니다. 그리고 CERT r의 (r, s−1)-메시지 i는 비트 0이고 v = H(Br \(\ell\)). 사실 다 정직해요 (r, s−1)-검증자는 v에 서명하므로 공격자는 유효한 (r, s−1)-메시지를 생성할 수 없습니다. 다른 v′에 대해. 더욱이, 모든 정직한 (r, s) 검증자는 ts 시간을 기다렸으며 > 2/3 다수를 보지 못했습니다. 비트 1의 경우 |HSV r,s−1| 때문에 다시 발생합니다. + 4|MSV r,s−1| <2n. 따라서 모든 정직한 검증자는 i \(\in\)HSV r,s는 bi = 0, vi = H(Br로 설정됩니다. \(\ell\)) 다수결로 mr,s를 전파합니다. 나 = (ESIGi(0), ESIGi(H(Br \(\ell\))), \(\sigma\)r,s 나 ) 시간 \(\alpha\)r,s에 나 + ts. 이제 s+ 1 단계(Coin-Fixed-To-1 단계)의 정직한 검증자를 고려해보세요. 만약 공격자는 실제로 CERT r에서 메시지를 보냅니다. i그들 중 일부에게 중지하고 사례 2.1.a와 유사하게 모든 정직한 사용자는 Br = Br을 알고 있습니다. \(\ell\)시간 간격 내 Ir+1 및 T r+1 \(\leq\)T r + \(\lambda\) + ts+1. 그렇지 않으면 s+1 단계의 모든 정직한 검증자는 0과 s에 대한 모든 (r, s) 메시지를 수신했습니다. H(Br \(\ell\)) 대기 시간 ts+1 이후 HSV r,s에서, 이는 > 2/3 다수로 이어집니다. 왜냐하면 |HSV r,s| > 2|MSV r,s|. 따라서 HSV r,s+1의 모든 검증자는 메시지를 다음과 같이 전파합니다. 0과 H(Br \(\ell\)) 이에 따라. HSV r,s+1의 검증자는 Br = Br로 끝나지 않습니다. \(\ell\), 단계 s+ 1은 Coin-Fixed-To-0 단계가 아니기 때문입니다. 이제 Step s+2(Coin-Genuinely-Flipped 단계)의 정직한 검증자를 고려해보세요. 적이 CERT r로 메시지를 보내는 경우 나는 그 중 일부에게 말을 걸고 멈추게 만듭니다. 다시 한번 모든 정직한 사용자는 Br = Br을 알고 있습니다. Ir+1 시간 간격 내에서 \(\ell\)이고 T r+1 \(\leq\)T r + \(\lambda\) + ts+2.그렇지 않으면 s+ 2단계의 모든 정직한 검증자는 다음에 대한 모든 (r, s+ 1)-메시지를 수신했습니다. 0과 H(Br \(\ell\)) 대기 시간 ts+2 이후 HSV r,s+1에서 발생하며 이는 > 2/3 다수로 이어집니다. 따라서 그들 모두는 0과 H(Br에 대한 메시지를 전파합니다. \(\ell\)) 따라서: 그들은 그렇습니다 이 경우에는 "동전 뒤집기"가 아닙니다. 다시 말하지만 전파 없이는 멈추지 않습니다. 단계 s+ 2는 Coin-Fixed-To-0 단계가 아니기 때문입니다. 마지막으로, s+3 단계(또 다른 Coin-Fixed-To-0 단계)의 정직한 검증자의 경우, 그 중 0과 H(Br에 대해 최소한 tH개의 유효한 메시지를 수신했을 것입니다. \(\ell\)) HSV s+2에서, 그들이 정말로 기다리는 시간이 있다면 ts+3. 따라서 적이 메시지를 보내든 안 보내든 CERT r에서 i 그들 중 누구에게나, HSV r,s+3의 모든 검증자는 Br = Br로 중지됩니다. \(\ell\), 없음 무엇이든 전파합니다. 적이 어떻게 행동하는지에 따라 그들 중 일부는 CERT r의 (r, s−1) 메시지로 구성된 자체 CERT r i, 그리고 다른 사람들은 (r, s+ 2) 메시지로 구성된 자체 CERT r입니다. 어쨌든 모든 정직한 사용자는 Br = Br 알아요 Ir+1 시간 간격 내에서 \(\ell\)이고 T r+1 \(\leq\)T r + \(\lambda\) + ts+3. 사례 2.2.b. 사건 E.b가 발생하고 정직한 검증자가 존재하지 않습니다. i′ \(\in\)HSV r,swho 또한 아무것도 전파하지 않고 중지해야 합니다. 이 사례의 분석은 사례 2.1.b 및 사례 2.2.a의 분석과 유사하므로 세부 사항이 많습니다. 생략되었습니다. 특히 CERT r i는 원하는 tH (r, s−1) 메시지로 구성됩니다. 공격자가 수집하거나 생성할 수 있는 비트 1의 경우 s−2 =1 mod 3, 단계 s는 Coin-Fixed-To-1 단계 및 정직한 (r, s) 검증자는 0에 대해 > 2/3 다수를 볼 수 없었습니다. 따라서 모든 검증자 i \(\in\)HSV r,s는 bi = 1로 설정하고 mr,s를 전파합니다. 나 = (ESIGi(1), ESIGi(vi), \(\sigma\)r,s 나 ) 시간 \(\alpha\)r,s에 나 + ts. 사례 2.2.a와 유사하게 최대 3단계가 더 추가됩니다(즉, 프로토콜 또 다른 Coin-Fixed-To-1 단계인 s+3 단계에 도달합니다. 모든 정직한 사용자는 Br = Br임을 알고 있습니다. ? Ir+1 시간 간격 내에서. 더욱이, T r+1은 \(\leq\)T r+\(\lambda\)+ts+1 또는 \(\leq\)T r+\(\lambda\)+ts+2일 수 있습니다. 또는 \(\leq\)T r + \(\lambda\) + ts+3, 정직한 검증자가 처음으로 중지할 수 있는 시간에 따라 다름 전파하지 않고. 네 가지 하위 사례를 결합하면 모든 정직한 사용자가 시간 간격 내에 Br을 알 수 있습니다. Ir+1, 와 사례 2.1.a 및 2.1.b에서 T r+1 \(\leq\)T r + \(\lambda\) + ts, 및 사례 2.2.a 및 2.2.b에서는 T r+1 \(\leq\)T r + \(\lambda\) + ts+3입니다. 상한 s에 남아 있으므로 케이스 2의 경우 T r+1이 됩니다. Coin-Genuinely-Flipped 단계가 실제로 프로토콜에서 실행되는 경우가 많습니다. 즉, 일부 정직한 검증자는 실제로 동전을 던졌습니다. 특히, Coin-Genuinely-Flipped step s′(즉, 7 \(\leq\)s′ \(\leq\)m + 2 및 s′ −2 ל2 mod 3), \(\ell\)′ \(\triangleq\)arg minj\(\in\)SV r,s′−1 H(\(\sigma\)r,s′−1 j ). 지금은 s′ < s라고 가정하겠습니다. 그렇지 않으면 이전에 따르면 정직한 검증자는 실제로 단계 s'에서 동전을 던지지 않기 때문입니다. 토론. SV r,s′−1의 정의에 따르면 \(\ell\)′의 크리덴셜의 hash 값도 다음 중 가장 작습니다. PKr-k의 모든 사용자. hash 함수는 임의의 oracle이므로 이상적으로 플레이어 \(\ell\)'는 정직합니다. 확률은 적어도 h입니다. 나중에 보여주겠지만, 적이 최선을 다해 예측하려고 해도 무작위 oracle을 출력하고 확률을 기울이면 플레이어 \(\ell\)'는 여전히 확률에 정직합니다.적어도 ph = h2(1 + h −h2)입니다. 아래에서는 실제로 그런 일이 일어나는 경우를 고려합니다. \(\ell\)' \(\in\)HSV r,s'−1. 모든 정직한 검증자 i \(\in\)HSV r,s′는 HSV r,s′−1로부터 모든 메시지를 다음과 같이 수신했습니다. 시간 \(\alpha\)r,s′ 나 + t'. 플레이어 i가 동전을 던져야 하는 경우(즉, 그는 2/3 이상의 과반수를 보지 못했습니다) 동일한 비트 b \(\in\){0, 1}), 그런 다음 그는 bi = lsb(H(\(\sigma\)r,s′−1)을 설정합니다. \(\ell\)′ )). 또 다른 정직한 사람이 있다면 검증자 i′ \(\in\)HSV r,s′ 비트 b \(\in\){0, 1}에 대해 > 2/3 다수를 확인한 다음 Property에 의해 (d) Lemma 5.5의 경우, HSV r,s'의 정직한 검증자는 잠시 동안 > 2/3 다수를 차지했을 것입니다. b'̸=b. lsb(H(\(\sigma\)r,s′−1 \(\ell\)′ )) = b 확률 1/2, HSV r,s'의 모든 정직한 검증자는 도달 확률이 1/2인 b에 대한 합의입니다. 물론, 그러한 검증자 i'가 존재하지 않는다면, 모든 HSV r,s′의 정직한 검증자는 lsb(H(\(\sigma\)r,s′−1) 비트에 동의합니다. \(\ell\)′ )) 확률은 1입니다. \(\ell\)' \(\in\)HSV r,s'−1에 대한 확률을 결합하면 HSV r,s'의 정직한 검증자는 최소 ph 확률로 비트 b \(\in\){0, 1}에 대해 합의에 도달 2 = h2(1+h−h2) 2 . 더욱이, 이전과 같이 다수결 투표를 통해 HSV r,s'의 모든 정직한 검증자는 vi 세트를 갖습니다. H(Br \(\ell\)). 따라서 단계 s'에서 b에 대한 합의가 이루어지면 T r+1은 다음과 같습니다. \(\leq\)T r + \(\lambda\) + ts′+1 또는 \(\leq\)T r + \(\lambda\) + ts′+2 중 하나, 사례 2.1.a 및 2.1.b의 분석에 따라 b = 0인지 b = 1인지에 따라 달라집니다. 에서 특히, 더 이상 코인 정품 뒤집기 단계가 실행되지 않습니다. 이러한 단계는 여전히 자신이 검증자인지 확인하고 기다리지만 확인하지 못한 채 모두 중지됩니다. 무엇이든 전파합니다. 따라서 Step s 이전에 Coin-GenuinelyFlipped 단계가 실행되는 횟수는 랜덤변수 Lr에 따라 분포됩니다. 스텝을 놔두는 것' 프로토콜 구성에 따라 Lr에 따라 코인이 진짜로 뒤집힌 마지막 단계가 됩니다. 우리는 s' = 4 + 3Lr. 적이 T r+1을 지연시키려는 경우 언제 단계 s가 발생해야 합니까? 가능? 우리는 대적이 Lr의 실현을 미리 알고 있다고 가정할 수도 있습니다. 만약에 s> s′ 그렇다면 그것은 쓸모가 없습니다. 왜냐하면 정직한 검증자들은 이미 합의에 도달했기 때문입니다. 단계 S′. 확실히 이 경우 s는 b = 0인지 여부에 따라 s′ +1 또는 s′ +2가 될 것입니다. 또는 b = 1입니다. 그러나 이것은 실제로 Cases 2.1.a 및 2.1.b이고 결과 T r+1은 정확히 다음과 같습니다. 그 경우와 마찬가지다. 더 정확하게는, T r+1 \(\leq\)T r + \(\lambda\) + ts\(\leq\)T r + \(\lambda\) + ts′+2. s< s′ −3 즉, s가 마지막 두 번째 동전 진짜 뒤집기 단계 이전에 있는 경우 다음과 같이 됩니다. 사례 2.2.a 및 2.2.b 분석, T r+1 \(\leq\)T r + \(\lambda\) + ts+3 < T r + \(\lambda\) + ts′. 즉, 적대자는 실제로 Br에 대한 합의가 더 빠르게 이루어지도록 만들고 있습니다. s= s′ −2 또는 s′ −1인 경우 - 즉, Coin-Fixed-To-0 단계 또는 Coin-Fixed-To-1 단계입니다. 단계 s' 직전 - 네 가지 하위 사례를 분석하여 정직한 검증자가 단계 s'는 더 이상 동전을 뒤집을 수 없습니다. 왜냐하면 동전이 전파되지 않고 멈추었기 때문입니다. 또는 동일한 비트에 대해 > 2/3 다수를 보였습니다. b. 그러므로 우리는 T r+1 \(\leq\)T r + \(\lambda\) + ts+3 \(\leq\)T r + \(\lambda\) + ts′+2.요약하면, s가 무엇이든 관계없이 우리는 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\) + Λ, 우리가 보여주고 싶었던 것처럼. 최악의 경우는 s= s′ −1이고 사례 2.2.b가 발생하는 경우입니다. 바이너리 BA 프로토콜의 사례 1과 2를 결합하면 Lemma 5.3이 유지됩니다. ■ 5.9 씨앗Qr의 안전성과 정직한 리더의 확률 이제 Lemma 5.4를 증명해야 합니다. 라운드 r의 검증자는 PKr-k에서 가져오고 수량 Qr−1에 따라 선택됩니다. 룩백 매개변수 k를 도입한 이유 r -k 라운드에서 공격자가 새로운 악의적인 사용자를 추가할 수 있는지 확인하는 것입니다. PKr−k에 대해서는 무시할 수 있는 확률을 제외하고 Qr−1의 양을 예측할 수 없습니다. 참고 hash 함수는 무작위 oracle이며 Qr−1은 라운드 r에 대한 검증자를 선택할 때 입력 중 하나입니다. 따라서 아무리 악의적인 사용자가 PKr-k에 추가되더라도 공격자의 입장에서는 각각 그들 중 하나는 필요한 확률 p(또는 1단계의 경우 p1). 보다 정확하게는 다음과 같은 정리가 있습니다. 보조정리 5.6. k = O(log1/2 F)로 각 라운드 r에 대해 압도적인 확률로 적 라운드 r −k에서 Qr−1을 무작위 oracle에 쿼리하지 않았습니다. 증거. 인덕션으로 진행합니다. 각 라운드 \(\gamma\) < r에 대해 공격자가 쿼리하지 않았다고 가정합니다. Q\(\gamma\)−1에서 무작위 oracle 라운드 \(\gamma\) −k로 돌아갑니다.21 다음과 같은 정신적 게임을 생각해 보세요. 적군은 r −k 라운드에서 Qr−1을 예측하려고 합니다. 각 라운드의 1단계에서 \(\gamma\) = r −k, . . . , r −1, 무작위로 쿼리되지 않은 특정 Q\(\gamma\)−1이 주어지면 oracle, hash 값 H(SIGi(\(\gamma\), 1, Q\(\gamma\)−1))에 따라 플레이어 i \(\in\)PK\(\gamma\)−k를 정렬하여 점점 더 PK\(\gamma\)−k에 대한 무작위 순열을 얻습니다. 정의에 따르면 리더 \(\ell\) \(\gamma\)는 순열의 첫 번째 사용자이고 확률 h가 정직합니다. 또한, PK\(\gamma\)−k가 큰 경우 임의의 정수 x \(\geq\)1에 대해 순열의 첫 번째 x 사용자가 모두 악의적이지만 (x + 1)st가 정직한 것은 (1 −h)xh입니다. \(\ell\) \(\gamma\)가 정직하다면 Q\(\gamma\) = H(SIG\(\ell\) \(\gamma\)(Q\(\gamma\)−1), \(\gamma\))입니다. 상대방은 서명을 위조할 수 없기 때문에 \(\ell\) \(\gamma\)의 Q\(\gamma\)는 적의 관점에서 무작위로 균일하게 분포되며, 기하급수적으로 작은 확률로 22는 r -k 라운드에서 H에 쿼리되지 않았습니다. 이후 각각 Q\(\gamma\)+1, Q\(\gamma\)+2, . . . , Qr−1은 각각 Q\(\gamma\), Q\(\gamma\)+1, ...을 사용한 H의 출력입니다. . . , Qr−2를 입력 중 하나로, 그들은 모두 적에게 무작위로 보이며 적수는 Qr-1을 H에 쿼리할 수 없었을 것입니다. 라운드 r - k. 따라서, 상대방이 라운드에서 좋은 확률로 Qr−1을 예측할 수 있는 유일한 경우입니다. r−k는 모든 리더 \(\ell\)r−k, . . . , \(\ell\)r−1은 악성입니다. 다시 라운드 \(\gamma\) \(\in\){r−k 를 고려해보세요. . . , r−1} 그리고 해당 hash 값에 의해 유도된 PK\(\gamma\)−k에 대한 무작위 순열. 어떤 사람들에게는 x \(\geq\)2, 순열의 첫 번째 x −1 사용자는 모두 악의적이고 x번째 사용자는 정직합니다. 적대자는 Q\(\gamma\)에 대해 x개의 가능한 선택을 갖습니다. H(SIGi(Q\(\gamma\)−1, \(\gamma\))) 형식 중 하나입니다. 여기서 i는 다음 중 하나입니다. 21 k는 작은 정수이므로 일반성을 잃지 않고 프로토콜의 처음 k 라운드가 실행된다고 가정할 수 있습니다. 안전한 환경에서 귀납적 가설은 해당 라운드 동안 유지됩니다. 22즉, H의 출력 길이는 지수적입니다. 이 확률은 F보다 훨씬 작습니다.플레이어 i를 실제로 라운드 \(\gamma\)의 리더로 만들어 최초의 x−1 악의적 사용자; 또는 H(Q\(\gamma\)−1, \(\gamma\)) B\(\gamma\) = B\(\gamma\) 강제 ? . 그렇지 않으면 라운드 \(\gamma\)의 리더가 순열의 첫 번째 정직한 사용자가 됩니다. 그리고 Qr−1은 적에게 예측할 수 없게 됩니다. 위 Q\(\gamma\)의 x 옵션 중 적이 추구해야 하는 것은 무엇입니까? 적을 돕기 위해 이 질문에 대답하세요. 멘탈 게임에서 우리는 실제로 그를 실제보다 더 강력하게 만듭니다. 는 다음과 같습니다. 우선, 실제로 공격자는 정직한 사용자의 hash을 계산할 수 없습니다. 따라서 서명은 각 Q\(\gamma\)에 대해 처음에 악의적인 사용자의 수 x(Q\(\gamma\))를 결정할 수 없습니다. Q\(\gamma\)에 의해 유도된 라운드 \(\gamma\) + 1의 무작위 순열. 정신 게임에서 우리는 그에게 숫자 x(Q\(\gamma\))는 무료입니다. 두 번째로, 실제로는 순열에 첫 번째 x 사용자가 있습니다. 악의적이라고 해서 반드시 모두가 리더가 될 수 있다는 의미는 아닙니다. 왜냐하면 hash 서명 값도 p1보다 작아야 합니다. 우리는 정신적인 제약을 무시했습니다. 게임을 통해 적에게 더 많은 이점을 제공합니다. 멘탈 게임에서 ˆQ\(\gamma\)로 표시되는 적에 대한 최적의 옵션은 다음과 같다는 것을 쉽게 알 수 있습니다. 무작위 시작 시 가장 긴 일련의 악의적인 사용자를 생성하는 것입니다. 라운드 \(\gamma\) + 1의 순열. 실제로 특정 Q\(\gamma\)가 주어지면 프로토콜은 Q\(\gamma\)−1에 의존하지 않습니다. 더 이상 공격자는 라운드 \(\gamma\) + 1의 새로운 순열에만 집중할 수 있습니다. 처음에는 악의적인 사용자 수에 대해 동일한 분포를 나타냅니다. 이에 따라 각 라운드마다 \(\gamma\), 위에서 언급한 ˆQ\(\gamma\)는 그에게 Q\(\gamma\)+1에 대한 가장 많은 수의 옵션을 제공하므로 다음을 최대화합니다. 연속된 리더가 모두 악의적일 확률. 따라서 멘탈 게임에서 적군은 r −k 라운드의 마르코프 체인을 따릅니다. 상태 공간이 {0} \(\cup\){x : x \(\geq\)2}인 상태에서 r −1을 반올림합니다. 상태 0은 현재 라운드 \(\gamma\)에서 무작위 순열의 첫 번째 사용자는 정직하므로 공격자는 실패합니다. Qr-1을 예측하는 게임; 그리고 각 상태 x \(\geq\)2는 첫 번째 x −1 사용자가 순열은 악의적이고 x번째는 정직하므로 공격자는 Q\(\gamma\)에 대해 x개의 옵션을 갖습니다. 는 전이 확률 P(x, y)는 다음과 같습니다. • y \(\geq\)2인 경우 P(0, 0) = 1이고 P(0, y) = 0입니다. 즉, 대적은 첫 번째 게임에서 실패합니다. 순열의 사용자는 정직해집니다. • P(x, 0) = hx(x \(\geq\)2인 경우). 즉, 확률 hx를 사용하면 모든 x개의 무작위 순열은 다음과 같습니다. 첫 번째 사용자는 정직하므로 대적자는 다음 라운드에서 게임에 실패합니다. • 임의의 x \(\geq\)2 및 y \(\geq\)2에 대해 P(x, y)는 x 임의 순열 중에서 다음과 같은 확률입니다. 초기에 악의적인 사용자의 가장 긴 시퀀스인 Q\(\gamma\)의 x 옵션에 의해 유도됩니다. 그 중 일부는 y −1이므로, 적대자는 다음 라운드에서 Q\(\gamma\)+1에 대해 y개의 옵션을 갖습니다. 즉, 피(x, y) = y−1 X 나는=0 (1 -h)ih !x - y−2 X 나는=0 (1 -h)ih !x = (1 −(1 −h)y)x −(1 −(1 −h)y−1)x. 상태 0은 전이 행렬 P의 고유한 흡수 상태이고 다른 모든 상태는 x는 0이 될 양의 확률을 갖습니다. 우리는 숫자 k의 상한을 정하는 데 관심이 있습니다. Markov Chain이 압도적인 확률로 0으로 수렴하는 데 필요한 라운드: 즉, 아니요 체인이 어떤 상태에서 시작되는지가 중요하며, 적이 게임에서 패배할 확률이 압도적입니다. r −k 라운드에서 Qr−1을 예측하는 데 실패합니다. 두 라운드 후에 전이 행렬 P(2) \(\triangleq\)P \(\cdot\) P를 고려하십시오. P(2)(0, 0) = 1임을 쉽게 알 수 있습니다. 그리고 임의의 x \(\geq\)2에 대해 P(2)(0, x) = 0입니다. 임의의 x \(\geq\)2 및 y \(\geq\)2에 대해 P(0, y) = 0이므로 다음과 같습니다. 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).̅h \(\triangleq\)1 −h라고 하면 다음과 같습니다. P(x, y) = (1 −̅hy)x −(1 −̅hy−1)x 그리고 P(2)(x,y) = X z\(\geq\)2 [(1 −̅hz)x −(1 −̅hz−1)x][(1 −̅hy)z −(1 −̅hy−1)z]. 아래에서는 P(2)(x,y)의 극한을 계산합니다. P(x,y) h가 1이 되면, 즉 ̅h는 0이 됩니다. P(x, y)에서 ̅h의 차수는 ̅hy−1이고 계수 x가 있습니다. 따라서, 임 h \(\to\) 1 P(2)(x,y) 피(x, y) = 임 ̅h \(\to\) 0 P(2)(x,y) 피(x, y) = 임 ̅h \(\to\) 0 P(2)(x,y) x̅hy−1 + O(̅hy) = 임 ̅h \(\to\) 0 피 z\(\geq\)2[x̅hz−1 + O(̅hz)][z̅hy−1 + O(̅hy)] x̅hy−1 + O(̅hy) = 임 ̅h \(\to\) 0 2x̅ + O(́hy+1) x̅hy−1 + O(̅hy) = 임 ̅h \(\to\) 0 2xy x̅hy−1 = lim ̅h \(\to\) 0 2́h = 0. h가 1,23에 충분히 가까울 때 우리는 P(2)(x,y) 피(x, y) \(\leq\)1 2 x \(\geq\)2 및 y \(\geq\)2에 대해. 유도에 의해 k > 2인 경우 P(k) \(\triangleq\)P k는 다음과 같습니다. • P(k)(0, 0) = 1, P(k)(0, x) = 0(x \(\geq\)2인 경우), 그리고 • x \(\geq\)2 및 y \(\geq\)2에 대해, P(k)(x, y) = P(k−1)(x, 0)P(0, y) + 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 . P(x, y) \(\leq\)1이므로 1−log2 F 라운드 후에 임의의 상태 y \(\geq\)2로의 전환 확률은 무시할 수 있습니다. 임의의 상태 x \(\geq\)2로 시작합니다. 그러한 상태가 많이 있지만, 다음을 쉽게 알 수 있습니다. 임 y→+무한대 피(x, y) P(x, y + 1) = 임 y→+무한대 (1 −̅hy)x −(1 −̅hy−1)x (1 −̅hy+1)x −(1 −̅hy)x = 임 y→+무한대 ̅hy−1 −̅hy ̅hy −̅hy+1 = 1 ̅h = 1 1 - 시간. 따라서 전이 행렬 P의 각 행 x는 비율에 따라 기하학적 수열로 감소합니다. 1 1−h > 2 y가 충분히 크면 P(k)에도 동일하게 적용됩니다. 따라서 k가 충분히 크지만 여전히 log1/2 F, P 순서로 y\(\geq\)2 P (k)(x, y) < F(x \(\geq\)2인 경우). 즉, 압도적인 확률로 적군은 게임에서 패하고 r −k 라운드에서 Qr−1을 예측하지 못합니다. h \(\in\)(2/3, 1]의 경우, 더 많은 복잡한 분석을 통해 1/2보다 약간 큰 상수 C가 존재한다는 것을 알 수 있습니다. k = O(logC \(\cdot\) F)를 취합니다. 따라서 Lemma 5.6이 성립합니다. ■ 보조정리 5.4. (다시 설명) r 이전의 각 라운드에 대해 속성 1–3이 주어지면 Lr에 대한 ph = h2(1 + h −h2), 그리고 리더 \(\ell\)r은 적어도 ph 확률로 정직합니다. 23예를 들어, 특정 매개변수 선택에 의해 제안된 대로 h = 80%입니다.
증거. Lemma 5.6에 따르면, 공격자는 다음을 제외하고 r −k 라운드에서 Qr−1을 다시 예측할 수 없습니다. 무시할 수 있는 확률. 이는 정직한 리더가 나올 확률이 h라는 것을 의미하지 않습니다. 각 라운드. 실제로 Qr−1이 주어지면 초기에 얼마나 많은 악의적인 사용자가 있는지에 따라 달라집니다. PKr-k의 무작위 순열에서, 공격자는 Qr에 대해 둘 이상의 옵션을 가질 수 있습니다. 따라서 라운드 r + 1에서 악의적인 리더의 확률을 높일 수 있습니다. 다시 우리는 그에게 분석을 단순화하기 위해 Lemma 5.6에서와 같이 몇 가지 비현실적인 이점이 있습니다. 그러나 라운드 r -k에서 적대자가 H에게 쿼리하지 않은 각 Qr-1에 대해 다음과 같습니다. 임의의 x \(\geq\)1, 확률 (1 −h)x−1h로 첫 번째 정직한 사용자가 결과 x 위치에 나타납니다. PKr−k의 무작위 순열. x = 1일 때 r + 1 라운드에서 정직한 리더가 나올 확률은 다음과 같습니다. 과연 ㅎ; x = 2일 때, 적대자는 Qr에 대해 두 가지 옵션을 가지며 결과 확률은 다음과 같습니다. h2. 이 두 가지 경우를 고려해야만 라운드에서 정직한 리더가 나올 가능성이 있습니다. r + 1은 원하는 대로 적어도 h \(\cdot\) h + (1 −h)h \(\cdot\) h2 = h2(1 + h −h2)입니다. 위의 확률은 라운드 r −k에서 프로토콜의 무작위성만 고려한다는 점에 유의하세요. r을 반올림합니다. 0라운드부터 r라운드까지 모든 무작위성을 고려하면 Qr−1은 다음과 같습니다. 적에게 예측하기가 더욱 어렵고 라운드 r + 1에서 정직한 리더가 나올 확률은 다음과 같습니다. 최소 h2(1 + h −h2). r + 1을 r로 대체하고 모든 것을 한 라운드 뒤로 이동시킵니다. 리더 \(\ell\)r 원하는 대로 적어도 h2(1 + h −h2)의 확률로 정직합니다. 마찬가지로, 각 코인 진짜 뒤집기 단계에서 해당 단계의 "리더", 즉 검증자 SV r에서 크리덴셜의 hash 값이 가장 작은 확률은 적어도 h2(1 + h-h2). 따라서 Lr 및 Lemma 5.4에 대한 ph = h2(1 + h −h2)가 유지됩니다. ■
Algorand 」
1 このセクションでは、次の仮定の下で動作する Algorand ' のバージョンを構築します。 ユーザーの正直な大多数の仮定: 各 PKr のユーザーの 2/3 以上が正直です。 セクション 8 では、上記の仮定を望ましい正直多数派に置き換える方法を示します。 お金の仮定。 5.1 追加の表記とパラメータ 表記法 • m \(\in\)Z+: バイナリ BA プロトコルの最大ステップ数、3 の倍数。 • Lr \(\leq\)m/3: 1 を確認するために必要なベルヌーイ試行回数を表す確率変数。 各試行が確率 ph で 1 の場合 2、最大でも m/3 のトライアルが存在します。すべての試行が失敗した場合、 Lr\(\triangleq\)m/3。 Lr は、ブロック Br の生成に必要な時間の上限を設定するために使用されます。 • tH = 2n 3 + 1: プロトコルの終了条件で必要な署名の数。 • CERT r: Br の証明書。これは、適切な検証者からの H(Br) の署名のセットです。 ラウンドR。 パラメータ • さまざまなパラメータ間の関係。 — ラウンド r の各ステップ s > 1 に対して、圧倒的な確率で次のように n が選択されます。 |HSV r,s| > 2|MSV r,s| そして |HSV r,s| + 4|MSV r,s| < 2n。 h の値が 1 に近づくほど、n を小さくする必要があります。特に、(バリアントを使用します) of) チェルノフは、圧倒的な確率で望ましい条件が確実に成立するように努めます。 — m は、圧倒的な確率で Lr < m/3 となるように選択されます。 • 重要なパラメータの選択例。 — F = 10−12。 — n \(\approx\)1500、k = 40、m = 180。5.2 Algorand での一時キーの実装 1 すでに述べたように、検証者 i \(\in\)SV r,s が自分のメッセージ mr,s にデジタル署名することを望みます。 私は ステップの ラウンド r の s、一時公開鍵 pkr,s に関連 i 、一時秘密鍵 skr,s を使用 私は それ 彼は使用後すぐに破壊します。したがって、すべてのユーザーが確実に pkr を確認する 私は 確かに、i 氏の署名を検証するために使用する鍵です 私は。私たちは、(最善を尽くして)これを行います。 私たちの知識では) ID ベースの署名スキームの新しい使用法。 このようなスキームでは、高いレベルで、中央機関 A が公開マスター キー PMK を生成します。 および対応する秘密マスターキー SMK。プレイヤー U の ID U が与えられると、A は次のように計算します。 SMK を介して、公開鍵 U に関連する秘密署名鍵 skU を使用し、skU を非公開で提供します。 U. (実際、アイデンティティベースのデジタル署名方式では、ユーザー U の公開鍵は U そのものです!) このようにして、A が有効にしたいユーザーの秘密鍵を計算した後に SMK を破棄した場合、 デジタル署名を生成し、計算された秘密鍵を保持しない場合、U だけが 公開鍵 U に関連してメッセージにデジタル署名できます。したがって、「U の名前」を知っている人は誰でも、 は自動的に U の公開鍵を認識するため、U の署名を検証できます (おそらく、 公開マスターキー PMK)。 私たちのアプリケーションでは、権限 A はユーザー i であり、すべての可能なユーザーのセット U は次と一致します。 —たとえば— S = {i}\(\times\){r', . . のラウンドステップペア (r, s) 。 。 、r'+106}\(\times\){1、. 。 。 , m+3}、ここで r' は与えられた値です ラウンド、m + 3 はラウンド内で発生する可能性のあるステップ数の上限です。これ 方法、pkr、s 私は \(\triangleq\)(i, r, s) なので、i の署名 SIGr,s がすべての人に表示されます。 PKR、S 私(さん、さん) 私は)できる、圧倒的に 確率を評価するには、r' に続く最初の 100 万ラウンド r について直ちに検証します。 言い換えれば、最初に PMK と SMK を生成します。そして、PMKがiのマスターであることを公表します。 任意のラウンド r \(\in\)[r', r' + 106] の公開鍵を作成し、SMK を使用して秘密を非公開で作成および保存します キー クローナ 私は 各トリプル (i, r, s) \(\in\)S について。これが完了すると、彼はSMKを破壊します。彼がそうでないと判断した場合 SV r,s の一部である場合、skr,s を離れることができます 私は 単独で (プロトコルでは認証する必要がないため) ラウンド r のステップ s の任意のメッセージ)。それ以外の場合は、最初に skr,s を使用します 私は 彼のメッセージにデジタル署名します、さん 私、そして その後、skr,s を破壊します 私は。 彼が最初にシステムに入ったときに、彼の最初の公開マスターキーを公開できることに注意してください。つまり、 i をシステムに導入するのと同じ支払い\(\wp\) (ラウンド r' または r' に近いラウンド) も可能性があります。 i の要求に応じて、任意のラウンド r \(\in\)[r', r' + 106] に対する i の公開マスター鍵が PMK であることを指定します。たとえば、次のようにします。 (PMK, [r', r' + 106]) という形式のペアを含みます。 また、m + 3 がラウンド内の最大ステップ数であるため、ラウンドが 所要時間は 1 分ですが、このようにして作成された一時キーの隠し場所は、ほぼ 2 年間持続します。同時に これらの一時的な秘密鍵の生成にはそれほど時間はかかりません。楕円曲線ベースの使用 32B の鍵を備えたシステムでは、各秘密鍵は数マイクロ秒で計算されます。したがって、m + 3 = 180 の場合、 そうすれば、1 億 8,000 万個の秘密鍵すべてを 1 時間以内に計算できます。 現在のラウンドが r' + 106 に近づくと、次の 100 万ラウンドを処理するために、i 新しい (PMK'、SMK') ペアを生成し、次の一時キーの隠し場所を通知します。 —たとえば— SIGi(PMK', [r' + 106 + 1, r' + 2 \(\cdot\) 106 + 1]) を新しいブロックに入力させると、 別個の「トランザクション」として、または支払いの一部である追加情報として。そうすることで、 i は全員に、次回の i の一時的な署名を検証するために PMK' を使用する必要があることを通知します。 百万ラウンド。等々。 (この基本的なアプローチに従って、一時キーを実装するための他の方法も存在することに注意してください。 ID ベースの署名を使用することは確かに可能です。たとえば、Merkle trees 経由。16) 16このメソッドでは、公開秘密鍵ペア (pkr,s) を生成します。 私、クロース 私は ) —たとえば—の各ラウンドステップペア (r, s) について一時キーを実装する他の方法も確かに可能です (Merkle trees など)。 5.3 Algorand のステップと一致する 1 BA⋆のものと 先ほども言いましたが、Algorand のラウンドです 1 には最大でも m + 3 ステップがあります。 ステップ 1. このステップでは、各潜在的なリーダー i が候補ブロック Br を計算して伝播します。 私、 彼自身の資格情報 \(\sigma\)r,1 とともに 私は。 この資格情報は i を明示的に識別することを思い出してください。 \(\sigma\)r,1 であるため、これは当てはまります。 私は \(\triangleq\)SIGi(r, 1, Qr−1)。 潜在的な検証者 i は、メッセージの一部として、H(Br 私)。 支払いや資格情報を扱うものではなく、i のこの署名は彼の一時的な公開に関連しています。 キー pkr、1 i : つまり、彼は sigpkr,1 を伝播します。 i (H(Br 私))。 私たちの慣例を考慮すると、Br を広めるのではなく、 私は そして sigpkr,1 i (H(Br 私))、彼はそうすることができたでしょう 伝播された SIGpkr,1 i (H(Br 私))。 ただし、分析では、明示的にアクセスする必要があります。 sigpkr,1 i (H(Br 私))。 ステップ 2. このステップでは、各検証者 i が \(\ell\)r を設定します 私は、hash された資格を持つ潜在的なリーダーになります が最小で、Br i は \(\ell\)r によって提案されたブロックになります 私は。効率化のため、 Br に直接同意するのではなく、H(Br) に同意したい、私は彼が持つであろうメッセージを広めます BA⋆の最初のステップで初期値v'で伝播される i = H(Br 私)。つまり、彼は v' を伝播します。 私、 もちろん、一時的に署名した後です。 (つまり、右の一時的なものに対して相対的に署名した後、 公開鍵、この場合は pkr,2 です i .) もちろん、私も自分の資格情報を送信します。 BA⋆の最初のステップは段階的コンセンサスプロトコルGCの最初のステップで構成されているため、 Algorand ' の 2 は GC の最初のステップに対応します。 ステップ 3. このステップでは、各検証者 i \(\in\)SV r,2 が BA⋆ の 2 番目のステップを実行します。つまり、彼は GC の 2 番目のステップで送信するのと同じメッセージです。繰り返しますが、i のメッセージは儚いものです 署名され、i の資格証明書が添付されています。 (以降、検証者とは言うのは省略します) 彼のメッセージに一時的に署名し、彼の資格を広めます。) ステップ 4. このステップでは、すべての検証者 i \(\in\)SV r,4 が GC (vi, gi) の出力を計算し、一時的に BA⋆ の 3 番目のステップで送信したのと同じメッセージに署名して送信します。 BBA⋆ の最初のステップ。gi = 2 の場合は初期ビット 0、それ以外の場合は 1。 ステップ s = 5、. 。 。 , m + 2。そのようなステップに到達した場合、BA⋆ のステップ s −1 に対応するため、次のようになります。 BBA⋆のステップs−3。 私たちの伝播モデルは十分に非同期であるため、次の可能性を考慮する必要があります。 そのようなステップ s の途中で、検証者 i \(\in\)SV r,s が、検証者 i \(\in\)SV r,s を証明する情報に到達するとします。 そのブロック Br はすでに選択されています。この場合、私は自分自身のラウンド r の実行を停止します。 Algorand '、round-(r + 1) 命令の実行を開始します。 {r'、. 。 。 , r' + 106} \(\times\) {1, . 。 。 、m+3}。 次に、これらの公開鍵を正規の方法で注文し、j 番目の公開鍵を保存します。 Merkle tree の j 番目の葉のキーを入力し、ルート値 Ri を計算し、それを公開します。彼がサインしたいとき キー pkr,s に関連するメッセージ 私は 、実際の署名だけでなく、pkr,s の認証パスも提供します。 私は リに対して。この認証パスは pkr,s を証明することにも注意してください。 私は j 番目のリーフに格納されます。残りの部分は、 詳細を簡単に入力できます。したがって、検証者 i \(\in\)SV r,s の命令は、対応する命令に加えて、 BBA⋆ のステップ -3 まで、BBA⋆ の実行が前の時点で停止したかどうかのチェックが含まれます。 ステップs'。 BBA⋆が停止できるのは、コインが0に固定されたステップまたはコインが1に固定されたステップのみであるため、 命令は、 A (終了条件 0): s′ −2 ≡0 mod 3、または B (終了条件 1): s′ −2 ≡1 mod 3. 実際、ケース A では、ブロック Br は空ではないため、追加の命令が必要です。 i が適切な証明書 CERT r とともに Br を適切に再構築していることを確認します。ケースBの場合、 ブロック Br は空であるため、i は Br = Br を設定するように指示されます。 \(\varepsilon\) = (r, \(\emptyset\), H(Qr−1, r), H(Br−1)), そして CERT r を計算します。 ステップ s の実行中に、ブロック Br が既に存在するという証拠が見つからない場合、 が生成された後、BBA⋆ のステップ s -3 で送信したのと同じメッセージを送信します。 ステップ m + 3。ステップ m + 3 中に、i \(\in\)SV r,m+3 でブロック Br がすでに生成されていることがわかる場合、 前のステップ s' がある場合は、上で説明したとおりに進みます。 それ以外の場合、BBA⋆ のステップ m で送信するのと同じメッセージを送信するのではなく、i は 所有する情報に基づいて、Br とそれに対応するものを計算するよう指示されました。 証明書 CERT r. 実際、ラウンドの合計ステップ数の上限を m + 3 としたことを思い出してください。 5.4 実際のプロトコル ラウンド r の各ステップ s で、検証者 i \(\in\)SV r,s が長期公開秘密鍵ペアを使用することを思い出してください。 彼の資格情報 \(\sigma\)r,s を生成する 私は \(\triangleq\)SIGi(r, s, Qr−1)、および SIGi Qr−1 s = 1 の場合。検証者 i 一時的な秘密鍵 skr,s を使用します 私は 彼の (r, s)-メッセージに署名する 私は。簡単にするために、r と s が 明らかに、sigpkr,s ではなく esigi(x) と書きます。 i (x) は、i の値の適切な一時的な署名を示します ラウンド r のステップ s で x を使用し、SIGpkr,s の代わりに ESIGi(x) を書き込みます。 i (x) は (i, x, esigi(x)) を表します。 ステップ 1: 提案をブロックする すべてのユーザー i \(\in\)PKr−k への指示: ユーザー i は、ラウンド r の自分のステップ 1 をすぐに開始します。 Br−1を知っています。 • ユーザー i は Br−1 の 3 番目の成分から Qr−1 を計算し、i \(\in\)SV r,1 かどうかを確認します。 そうではありません。 • i /\(\in\)SV r,1 の場合、i はステップ 1 の実行を直ちに停止します。 • i \(\in\)SV r,1 の場合、つまり i が潜在的なリーダーである場合、彼は次のラウンド R の支払いを回収します。 これまでに彼に伝播され、最大の給与セット PAY r を計算します。 私は彼らから。次に、彼は、 彼の「候補ブロック」Br を計算します。 i = (r, PAY r i 、SIGi(Qr−1)、H(Br−1))。最後に、彼は計算します メッセージミスター1 私は = (Br i , エシギ(H(Br i))、\(\sigma\)r,1 i )、彼の一時的な秘密鍵 skr を破壊します、1 私、そしてそれから mr,1 を伝播します 私は。述べる。 実際には、ステップ 1 の全体的な実行を短縮するには、(r, 1)- メッセージは選択的に伝播されます。 つまり、システム内のすべてのユーザー i について、最初の (r, 1)- プレイヤー i は、これまでに受信して検証に成功したメッセージを、いつものように伝播します。すべての人にとって、 プレイヤー i が受信して検証に成功した other (r, 1)-メッセージは、hash の場合にのみ伝播します。 含まれる資格情報の値は、含まれる資格情報の hash 値の中で最小です これまでに彼が受信し、検証に成功したすべての (r, 1)-メッセージにおいて。さらに、提案されているように、 Georgios Vlachos によると、各潜在的なリーダー i も自分の資格 \(\sigma\)r,1 を伝播することが有益です。 私は 個別に: これらの小さなメッセージはブロックよりも速く送信され、mr,1 のタイムリーな伝播が保証されます。 jさん ここで、含まれる認証情報は小さい hash 値を持ち、それらは大きい hash 値を持ちます。 すぐに消えます。 ステップ 2: 段階的コンセンサス プロトコル GC の最初のステップ すべてのユーザー i \(\in\)PKr−k への指示: ユーザー i は、ラウンド r の自分のステップ 2 をすぐに開始します。 Br−1を知っています。 • ユーザー i は Br−1 の 3 番目の成分から Qr−1 を計算し、i \(\in\)SV r,2 かどうかを確認します。 そうではありません。 • i /\(\in\)SV r,2 の場合、i はステップ 2 の実行を直ちに停止します。 • i \(\in\)SV r,2 の場合、時間 t2 \(\triangleq\) \(\lambda\) + Λ だけ待機した後、i は次のように動作します。 1. 彼は、H(\(\sigma\)r,1 となるようなユーザー \(\ell\) を見つけます。 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) すべての資格情報 \(\sigma\)r,1 について j の一部です 彼がこれまでに受信した、検証に成功した (r, 1)-メッセージ。 2. 彼が \(\ell\) から有効なメッセージを受け取った場合 mr,1 \(\ell\) = (Br \(\ell\)、esig\(\ell\)(H(Br \(\ell\)))、\(\sigma\)r,1 \(\ell\)),b then i を設定します v' i\(\triangleq\)H(Br \(\ell\));それ以外の場合は v' を設定します 私は\(\triangleq\) \(\bot\)です。 3. 私はメッセージ mr,2 を計算します 私は \(\triangleq\)(ESIG(v' i)、\(\sigma\)r,2 i ),c は一時的な秘密鍵を破壊します 2クローナ i 、そして mr,2 を伝播します 私は。 a基本的に、ユーザー i は、ラウンド r のリーダーがユーザー \(\ell\) であることを非公開で決定します。 b 繰り返しますが、プレイヤー \(\ell\) の署名と hashes はすべて正常に検証され、支払いが完了します。 \(\ell\)in Br \(\ell\)は有効な給与セットです ラウンド r — ただし、PAY r かどうかはチェックしません \(\ell\)が\(\ell\)の最大値かどうか。 cメッセージ mr,2 私は プレイヤー i が v' とみなす信号 i は次のブロックの hash であるか、次のブロックであるとみなします。 ブロックを空にします。 17つまり、すべての署名が正しく、ブロックとその hash の両方が有効です。ただし、チェックはしていません。 含まれる給与セットが提案者にとって最大であるかどうか。
ステップ 3: GC の 2 番目のステップ すべてのユーザー i \(\in\)PKr−k への指示: ユーザー i は、ラウンド r の自分のステップ 3 をすぐに開始します。 Br−1を知っています。 • ユーザー i は Br−1 の 3 番目の成分から Qr−1 を計算し、i \(\in\)SV r,3 かどうかを確認します。 そうではありません。 • i /\(\in\)SV r,3 の場合、i はステップ 3 の実行を直ちに停止します。 • i \(\in\)SV r,3 の場合、t3 \(\triangleq\) t2 + 2\(\lambda\) = 3\(\lambda\) + Λ だけ待機した後、i は次のように動作します。 1. すべての有効なメッセージ mr,2 のような値 v' ̸= \(\bot\)が存在する場合 j 彼が受け取ったのは、 それらの 2/3 以上は次の形式です (ESIGj(v'), \(\sigma\)r,2 j ) 矛盾なく、a 次に、メッセージ mr,3 を計算します。 私は \(\triangleq\)(ESIGi(v'), \(\sigma\)r,3 私)。それ以外の場合は、mr,3 を計算します。 私は \(\triangleq\) (ESIGi(\(\bot\)), \(\sigma\)r,3 私)。 2. 私は彼の一時的な秘密鍵 skr を破壊します、3 i 、そして mr,3 を伝播します 私は。 aつまり、ESIGj(v') と異なる ESIGj(v') をそれぞれ含む 2 つの有効なメッセージを受信していません。 選手Jよりこことここから、後で定義される終了条件を除いて、正直なプレイヤーはいつでも 特定の形式のメッセージが必要ですが、互いに矛盾するメッセージは決してカウントされず、有効とは見なされません。ステップ 4: GC の出力と BBA の最初のステップ⋆ すべてのユーザー i \(\in\)PKr−k への指示: ユーザー i は、ラウンド r の自分のステップ 4 をすぐに開始します。 Br−1を知っています。 • ユーザー i は Br−1 の 3 番目の成分から Qr−1 を計算し、i \(\in\)SV r,4 かどうかを確認します。 そうではありません。 • i /\(\in\)SV r,4 の場合、i はステップ 4 の実行を直ちに停止します。 • i \(\in\)SV r,4 の場合、t4 \(\triangleq\) t3 + 2\(\lambda\) = 5\(\lambda\) + Λ だけ待機した後、i は次のように動作します。 1. 次のように、GC の出力である vi と gi を計算します。 (a) すべての有効なメッセージ mr,3 の中に、次のような値 v' ̸= \(\bot\)が存在する場合 j 彼は持っています 受信すると、そのうちの 2/3 以上が (ESIGj(v'), \(\sigma\)r,3 j )、その後、彼は設定します vi \(\triangleq\) v ' および gi \(\triangleq\) 2。 (b) それ以外の場合、すべての有効なメッセージの中に、次のような値 v' ̸= \(\bot\)が存在する場合 さん、3 j 彼が受け取ったもののうち、1/3 以上は次の形式です (ESIGj(v'), \(\sigma\)r,3 j)、その後 彼は vi \(\triangleq\) v ' および gi \(\triangleq\) 1.a を設定します。 (c) それ以外の場合、vi \(\triangleq\)H(Br ϫ ) および gi \(\triangleq\) 0。 2. 次のように、BBA⋆ の入力である bi を計算します。 gi = 2 の場合は bi \(\triangleq\) 0、それ以外の場合は bi \(\triangleq\) 1。 3. 彼はメッセージ mr,4 を計算します。 私は \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i )、彼の一時的なものを破壊します 秘密鍵 SKR,4 i 、そして mr,4 を伝播します 私は。 a ケース (b) の v' が存在する場合、それは一意でなければならないことが証明できます。
ステップ s, 5 \(\leq\) s \(\leq\) m + 2, s −2 ≡0 mod 3: BBA⋆ のコイン固定の 0 ステップ すべてのユーザー i \(\in\)PKr−k への命令: ユーザー i は、ラウンド r の自分のステップ s をすぐに開始します。 Br−1を知っています。 • ユーザー i は、Br−1 の 3 番目の成分から Qr−1 を計算し、i \(\in\)SV r,s かどうかを確認します。 • i /\(\in\)SV r,s の場合、i はステップ s の実行を直ちに停止します。 • i \(\in\)SV r,s の場合、彼は次のように動作します。 – 時間 ts \(\triangleq\) ts−1 + 2\(\lambda\) = (2s −3)\(\lambda\) + Λ が経過するまで待ちます。 – 終了条件 0: この待機中および任意の時点で、 文字列 v ̸= \(\bot\)および次のようなステップ s' (a) 5 \(\leq\) s' \(\leq\) s, s' −2 ≡0 mod 3 —つまり、ステップ s' は Coin-Fixed-To-0 ステップです。 (b) 私は少なくとも tH を受け取りました = 2n 3 + 1 個の有効なメッセージ mr,s′−1 j = (ESIGj(0), ESIGj(v)、\(\sigma\)r,s′−1 j )、a、そして (c) 私は有効なメッセージ mr,1 を受信しました j = (Br j , esigj(H(Br j ))、\(\sigma\)r,1 j ) v = H(Br j)、 次に、私はステップ s (実際にはラウンド r) の実行をすぐに停止します。 何かを広めること。 Br = Br を設定します j ;そして、自分自身の CERT r をメッセージのセットとして設定します。 ミスター、s'−1 j サブステップ (b).b – 終了条件 1: 待機中および任意の時点で、 次のようなステップ s' (a’) 6 \(\leq\)s’ \(\leq\) s, s’ −2 ≡1 mod 3 —つまり、ステップ s’ は Coin-Fixed-To-1 ステップであり、 (b’) i は少なくとも tH 個の有効なメッセージ mr,s’−1 を受信しました j = (ESIGj(1)、ESIGj(vj)、 \(\sigma\)r,s′−1 j )、c 次に、私はステップ s (実際にはラウンド r) の実行をすぐに停止します。 何かを広めること。 Br = Br を設定します  ̄ ;そして、自分自身の CERT r をメッセージのセットとして設定します。 ミスター、s'−1 j サブステップ(b’)の。 – それ以外の場合、待機の終了時にユーザー i は次の操作を行います。 彼は、すべての有効なコンポーネントの 2 番目のコンポーネントにおける vj の多数決として vi を設定します。 さん、s−1 j を彼は受け取りました。 彼は次のように bi を計算します。 すべての有効な mr,s−1 の 2/3 を超える場合 j 彼が受け取ったのは次のような形式です (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j )、次に、bi \(\triangleq\) 0 を設定します。 それ以外の場合、すべての有効な mr,s−1 の 2/3 を超える場合 j 彼が受け取ったのは次のような形式です (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j )、次に、bi \(\triangleq\) 1 を設定します。 それ以外の場合は、bi \(\triangleq\) 0 を設定します。 彼はメッセージを計算します。 私は \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i )、彼の一時的なものを破壊します 秘密鍵 SKR,S i 、そして mr,s を伝播します 私は。 aプレーヤー j からのそのようなメッセージは、プレーヤー i が 1 に署名する j からメッセージを受信した場合でもカウントされます。 終了条件 1 についても同様です。分析で示されているように、これはすべての正直なユーザーが確実に知っているようにするために行われます。 Br は互いに時間 \(\lambda\) 以内にあります。 b ユーザー i は、Br と彼自身のラウンド フィニッシュを知りました。彼は今でも一般ユーザーとしてメッセージの伝達に貢献していますが、 (r, s)-verifier として伝播を開始しません。特に、彼はすべてのメッセージを広めるのに貢献しました。 CERT r。このプロトコルにはこれで十分です。バイナリ BA プロトコルに対しても bi \(\triangleq\) 0 を設定する必要があることに注意してください。 とにかくこの場合は必要ありません。今後のすべての指示についても同様のことが起こります。 c この場合、vj が何であるかは関係ありません。ステップ s, 6 \(\leq\) s \(\leq\) m + 2, s −2 ≡1 mod 3: BBA のコイン固定 To-1 ステップ⋆ すべてのユーザー i \(\in\)PKr−k への命令: ユーザー i は、ラウンド r の自分のステップ s をすぐに開始します。 Br−1を知っています。 • ユーザー i は Br−1 の 3 番目の成分から Qr−1 を計算し、i \(\in\)SV r,s かどうかを確認します。 そうではありません。 • i /\(\in\)SV r,s の場合、i はステップ s の実行を直ちに停止します。 • i \(\in\)SV r,s の場合、次のことを行います。 – 時間 ts \(\triangleq\)(2s −3)\(\lambda\) + Λ が経過するまで待ちます。 – 終了条件 0: Coin-Fixed-To-0 ステップと同じ手順。 – 終了条件 1: Coin-Fixed-To-0 ステップと同じ手順。 – それ以外の場合、待機の終了時にユーザー i は次の操作を行います。 彼は、すべての有効なコンポーネントの 2 番目のコンポーネントにおける vj の多数決として vi を設定します。 さん、s−1 j を彼は受け取りました。 彼は次のように bi を計算します。 すべての有効な mr,s−1 の 2/3 を超える場合 j 彼が受け取ったのは次のような形式です (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j )、次に、bi \(\triangleq\) 0 を設定します。 それ以外の場合、すべての有効な mr,s−1 の 2/3 を超える場合 j 彼が受け取ったのは次のような形式です (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j )、次に、bi \(\triangleq\) 1 を設定します。 それ以外の場合は、bi \(\triangleq\) 1 を設定します。 彼はメッセージを計算します。 私は \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i )、彼の一時的なものを破壊します 秘密鍵 SKR,S i 、そして mr,s を伝播します 私は。
ステップ s, 7 \(\leq\) s \(\leq\) m + 2, s −2 ≡2 mod 3: BBA の本物のコイン投げステップ⋆ すべてのユーザー i \(\in\)PKr−k への命令: ユーザー i は、ラウンド r の自分のステップ s をすぐに開始します。 Br−1を知っています。 • ユーザー i は Br−1 の 3 番目の成分から Qr−1 を計算し、i \(\in\)SV r,s かどうかを確認します。 そうではありません。 • i /\(\in\)SV r,s の場合、i はステップ s の実行を直ちに停止します。 • i \(\in\)SV r,s の場合、次のことを行います。 – 時間 ts \(\triangleq\)(2s −3)\(\lambda\) + Λ が経過するまで待ちます。 – 終了条件 0: Coin-Fixed-To-0 ステップと同じ手順。 – 終了条件 1: Coin-Fixed-To-0 ステップと同じ手順。 – それ以外の場合、待機の終了時にユーザー i は次の操作を行います。 彼は、すべての有効なコンポーネントの 2 番目のコンポーネントにおける vj の多数決として vi を設定します。 さん、s−1 j を彼は受け取りました。 彼は次のように bi を計算します。 すべての有効な mr,s−1 の 2/3 を超える場合 j 彼が受け取ったのは次のような形式です (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j )、次に、bi \(\triangleq\) 0 を設定します。 それ以外の場合、すべての有効な mr,s−1 の 2/3 を超える場合 j 彼が受け取ったのは次のような形式です (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j )、次に、bi \(\triangleq\) 1 を設定します。 それ以外の場合は、SV r,s−1 とします。 私は 彼が有効な情報を受け取った (r, s −1)-検証者の集合である メッセージ ミスター、s−1 j 。彼は bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 私は H(\(\sigma\)r,s−1 j ))。 彼はメッセージを計算します。 私は \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i )、彼の一時的なものを破壊します 秘密鍵 SKR,S i 、そして mr,s を伝播します 私は。
ステップ m + 3: BBA⋆a の最後のステップ すべてのユーザー i \(\in\)PKr−k への命令: ユーザー i は、ラウンド r の自分のステップ m + 3 をすぐに開始します。 Br−1を知っています。 • ユーザー i は Br−1 の 3 番目の成分から Qr−1 を計算し、i \(\in\)SV r,m+3 かどうかを確認します。 そうではありません。 • i /\(\in\)SV r,m+3 の場合、i はステップ m + 3 の実行をすぐに停止します。 • i \(\in\)SV r,m+3 の場合、次の操作を行います。 – 時間 tm+3 \(\triangleq\) tm+2 + 2\(\lambda\) = (2m + 3)\(\lambda\) + Λ が経過するまで待ちます。 – 終了条件 0: Coin-Fixed-To-0 ステップと同じ手順。 – 終了条件 1: Coin-Fixed-To-0 ステップと同じ手順。 – それ以外の場合、待機の終了時にユーザー i は次の操作を行います。 彼は、i \(\triangleq\) 1 および Br \(\triangleq\) Br を設定します。 ああ。 彼はメッセージ mr,m+3 を計算します 私は = (ESIGi(outi), ESIGi(H(Br)), \(\sigma\)r,m+3 私は )、彼のものを破壊します 一時的な秘密鍵 skr,m+3 私は 、そして mr,m+3 を伝播します。 私は Br.bを証明する a圧倒的な確率で BBA⋆ はこのステップの前に終了しているため、完全を期すためにこのステップを指定します。 bステップ m + 3 の証明書には ESIGi(outi) が含まれている必要はありません。統一性を高めるためだけにこれを含めます。 証明書は、生成されるステップに関係なく、統一された形式を持つようになりました。非検証者による Round-r ブロックの再構築 システム内のすべてのユーザー i に対する指示: ユーザー i は、知ったらすぐに自分のラウンド r を開始します。 Br-1 を実行し、次のようにブロック情報を待ちます。 – そのような待機中および任意の時点で、そのような文字列 v とステップ s' が存在する場合 それ (a) 5 \(\leq\) s′ \(\leq\) m + 3、s′ −2 ≡0 mod 3、 (b) i は少なくとも tH 個の有効なメッセージ mr,s'−1 を受信しました j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j )、そして (c) 私は有効なメッセージ mr,1 を受信しました j = (Br j , esigj(H(Br j ))、\(\sigma\)r,1 j ) v = H(Br j)、 その後、私は彼自身のラウンド r の実行をすぐに停止します。 Br = Br を設定します j;そして自分自身の CERT r を設定します メッセージのセット mr,s'−1 j サブステップ(b)の。 – そのような待機中および任意の時点で、次のようなステップ s' が存在する場合、 (a’) 6 \(\leq\) s’ \(\leq\) m + 3、s’ −2 ≡1 mod 3、および (b’) i は少なくとも tH 個の有効なメッセージ mr,s’−1 を受信しました j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j )、 その後、私は彼自身のラウンド r の実行をすぐに停止します。 Br = Br を設定します っ;そして自分自身の CERT r を設定します メッセージのセット mr,s'−1 j サブステップ(b’)の。 – そのような待機中および任意の時点で、少なくとも tH 個の有効なメッセージを受信した場合 さん、m+3 j = (ESIGj(1), ESIGj(H(Br ϫ ))、\(\sigma\)r,m+3 j )、その後、私は彼自身のラウンド r の実行を停止します。 すぐに、Br = Br と設定します。 iq は、自分自身の CERT r をメッセージのセット mr,m+3 に設定します。 j 1人分 と H(Br )。 5.5 Algorand の分析 1 解析で使用される各ラウンド r \(\geq\)0 に次の表記法を導入します。 • 最初に正直なユーザーが Br-1 を知った時刻を T r とします。 • Ir+1 を区間 [T r+1, T r+1 + \(\lambda\)] とします。 プロトコルの初期化により、T 0 = 0 になることに注意してください。各 s \(\geq\)1 および i \(\in\)SV r,s について、次のことを思い出してください。 \(\alpha\)r,s 私は と\(\beta\)r、s 私は はそれぞれプレイヤー i のステップ s の開始時間と終了時間です。さらに、 各 2 \(\leq\) s \(\leq\) m + 3 について、ts = (2s −3)\(\lambda\) + Λ であることを思い出してください。さらに、I0 \(\triangleq\) {0} および t1 \(\triangleq\) 0 とします。 最後に、Lr \(\leq\) m/3 はベルヌーイ試行回数を表す確率変数であることを思い出してください。 各試行が確率 ph で 1 である場合、1 を確認するために必要 2、最大でも m/3 のトライアルが存在します。もしすべてなら 試行が失敗すると、Lr \(\triangleq\) m/3 になります。 実際、必要な時間に比べれば計算時間は無視できるため、分析では計算時間を無視します。 メッセージを伝播します。いずれの場合も、少し大きな \(\lambda\) と Λ を使用することで、計算時間を短縮できます。 分析に直接組み込むことができます。以下のステートメントのほとんどは、「圧倒的な そして、分析においてこの事実を繰り返し強調することはないかもしれません。5.6 主定理 定理5.1。次の特性は、各ラウンド r \(\geq\)0 で圧倒的な確率で当てはまります。 1. すべての正直なユーザーが同じブロック Br に同意します。 2. リーダー \(\ell\)r が正直である場合、ブロック Br は \(\ell\)r によって生成され、Br には最大のペイセットが含まれます 時間\(\alpha\)r,1までに\(\ell\)rが受信 \(\ell\)r , T r+1 \(\leq\)T r + 8\(\lambda\) + Λ そして正直なユーザーは皆、当時の Br を知っています。 間隔 Ir+1。 3. リーダー \(\ell\)r が悪意のある場合、T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ となり、すべての正直なユーザーは Br を知っています。 時間間隔 Ir+1 で。 4. Lr に対して ph = h2(1 + h −h2) であり、リーダー \(\ell\)r は少なくとも ph の確率で正直です。 私たちの主定理を証明する前に、2 つの点について述べておきます。 備考。 • ブロック生成と真のレイテンシー。ブロック Br を生成する時間は、T r+1 -T r と定義されます。 つまり、正直なユーザーが初めて Br を学習したときと、 正直なユーザーが初めて Br-1 を学習するとき。ラウンドリーダーが正直であれば、プロパティ 2 主定理により、Br を生成する正確な時間は、何があっても 8\(\lambda\) + Λ 時間であることが保証されます。 h の正確な値は 2/3 を超える場合があります。リーダーが悪意のある場合、特性 3 は、 Br の生成にかかる予想時間の上限は ( 12 ph + 10)\(\lambda\) + Λ、やはり正確さは関係ありません h.18 の値 ただし、Br が生成されるまでの予想時間は、h の正確な値によって異なります。 実際、性質 4 より、ph = h2(1 + h −h2) であり、リーダーは少なくとも確率に関しては正直です。 ph、したがって E[T r+1 −T r] \(\leq\)h2(1 + h −h2) \(\cdot\) (8\(\lambda\) + Λ) + (1 −h2(1 + h −h2))(( 12 h2(1 + h −h2) + 10)\(\lambda\) + Λ)。 たとえば、h = 80% の場合、E[T r+1 −T r] \(\leq\)12.7\(\lambda\) + Λ となります。 • \(\lambda\) 対 Λ。ステップ Algorand ' で検証者によって送信されるメッセージのサイズが支配的であることに注意してください。 デジタル署名キーの長さによって決まります。デジタル署名キーの数が増えても、その長さは固定されたままにすることができます。 ユーザーは膨大です。また、どのステップ s > 1 でも、検証者の期待数 n は同じであることに注意してください。 ユーザー数が 100K、100M、または 100M のいずれであっても使用できます。これは単に n だけであるため、そうなります。 したがって、秘密鍵の長さを突然増やす必要がない限り、次のようになります。 \(\lambda\) の値は、ユーザーの数がどれほど多くても同じままである必要があります。 予見可能な未来。 対照的に、どのトランザクション レートでも、トランザクション数はトランザクション数に応じて増加します。 ユーザー。したがって、すべての新しいトランザクションをタイムリーに処理するには、ブロックのサイズが次のとおりである必要があります。 ユーザーの数とともに成長するため、Λ も成長します。したがって、長期的には、次のようにする必要があります。 \(\lambda\) << Λ。したがって、\(\lambda\) の係数を大きくするのが適切であり、実際には係数 Λの場合は1の。 定理5.1の証明。性質 1 ~ 3 を帰納法によって証明します: ラウンド r −1 に当てはまると仮定します。 (一般性を失うことなく、r = 0 の場合、これらは自動的に「round -1」に当てはまります)、これらを証明します。 ラウンドR。 18確かに、E[T r+1 −T r] \(\leq\)(6E[Lr] + 10)\(\lambda\) + Λ = (6 \(\cdot\) 2 ph + 10)\(\lambda\) + Λ = ( 12 ph + 10) \(\lambda\) + Λ。Br-1 は帰納的仮説によって一意に定義されるため、集合 SV r,s は一意に定義されます。 ラウンド r の各ステップ s に対して。 n1 の選択により、圧倒的な確率で SV r,1 ̸= \(\emptyset\) となります。私たちは今 セクション 5.7 と 5.8 で証明された次の 2 つの補題を述べます。導入中も導入中も 2 つの補題の証明、ラウンド 0 の分析は帰納的ステップとほぼ同じです。 違いが生じた場合には、それを強調します。 補助定理 5.2. [完全性補題] リーダーがラウンド r−1 でプロパティ 1 ~ 3 が保持されると仮定します。 \(\ell\)rは正直で、圧倒的な確率で、 • すべての正直なユーザーは、\(\ell\)r によって生成され、最大値を含む同じブロック Br に同意します。 時間 \(\alpha\)r,1 までに \(\ell\)r が受け取った給与セット \(\ell\)r \(\in\)Ir;そして • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ であり、すべての正直なユーザーは時間間隔 Ir+1 における Br を知っています。 補助定理 5.3. [健全性補題] リーダーがラウンド r −1 に対してプロパティ 1 ~ 3 が成立すると仮定すると、 \(\ell\)r は悪意があり、圧倒的な確率で、すべての正直なユーザーが同じブロック Br、T r+1 \(\leq\) に同意します T r + (6Lr + 10)\(\lambda\) + Λ とすべての正直なユーザーは、時間間隔 Ir+1 における Br を知っています。 プロパティ 1 ~ 3 は、補助定理 5.2 および 5.3 を r = 0 および帰納ステップに適用することによって成立します。最後に、 セクション 5.9 で証明されたプロパティ 4 を次の補題として言い換えます。 補題 5.4. r の前の各ラウンドのプロパティ 1 ~ 3 が与えられると、Lr については ph = h2(1 + h −h2)、 リーダー\(\ell\)r は少なくとも ph の確率で正直です。 上記の 3 つの補題を組み合わせると、定理 5.1 が成り立ちます。 ■ 以下の補題は、帰納法を考慮した場合の丸め r に関するいくつかの重要な性質を述べています。 仮説であり、上記の 3 つの補題の証明に使用されます。 補題 5.5。特性 1 ~ 3 がラウンド r −1 に当てはまると仮定します。ラウンド r の各ステップ s \(\geq\)1 および それぞれの正直な検証者 i \(\in\)HSV r,s は、 (a) \(\alpha\)r,s 私は \(\in\)Ir; (b) プレイヤー i が時間 ts 待った場合、\(\beta\)r,s 私は \(\in\)[T r + ts, T r + \(\lambda\) + ts] (r > 0 の場合) \(\beta\)r,s 私は = ts (r = 0);そして (c) プレイヤー i が時間 ts 待った場合、時間 \(\beta\)r,s までに 私、彼はすべてのメッセージを受け取りました すべてのステップ s' < s について、すべての正直な検証者 j \(\in\)HSV r,s' によって送信されます。 さらに、各ステップ s \(\geq\)3 について、次のようになります。 (d) 2 人の異なるプレイヤー i、i' \(\in\)SV r,s と、同じプレイヤーの 2 つの異なる値 v、v' は存在しません。 両方のプレーヤーがすべての時間の 2/3 を超える時間 ts を待機したような長さ 有効なメッセージ mr,s−1 j 私が受け取った選手は v にサインしており、有効な選手全員の 2/3 以上がサインしています。 メッセージ mr,s−1 j プレーヤー i' が v' と契約したことを受け取ります。 証拠。プレーヤー i は Br−1 を知っているため、特性 (a) は帰納的仮説から直接得られます。 時間間隔 Ir を設定し、すぐに自分のステップを開始します。プロパティ (b) は (a) から直接得られます。 プレイヤー i は行動する前に ts 時間待機しました、\(\beta\)r,s 私は = \(\alpha\)r,s 私は +ts. \(\alpha\)r,s に注意してください。 私は = 0 r = 0。 ここで性質 (c) を証明します。 s = 2 の場合、プロパティ (b) により、すべての検証者 j \(\in\)HSV r,1 について次のようになります。 \(\beta\)r,s 私は = \(\alpha\)r,s 私は + ts \(\geq\)T r + ts = T r + \(\lambda\) + Λ \(\geq\) \(\beta\)r,1 j +Λ。各検証者 j \(\in\)HSV r,1 は時刻 \(\beta\)r,1 にメッセージを送信するため、 j そしてメッセージはすべての正直者に届きます ユーザー数は最大 Λ 時間、時間別 \(\beta\)r,s 私は プレイヤー i は、すべての検証者によって送信されたメッセージを受信しました。 必要に応じて、HSV r,1。 s > 2 の場合、ts = ts−1 + 2\(\lambda\)。プロパティ (b) により、すべてのステップ s' < s およびすべての検証者 j \(\in\)HSV r,s' に対して、 \(\beta\)r,s 私は = \(\alpha\)r,s 私は + ts \(\geq\)T r + ts = T r + ts−1 + 2\(\lambda\) \(\geq\)T r + ts′ + 2\(\lambda\) = T r + \(\lambda\) + ts′ + \(\lambda\) ≧\(\beta\)r,s′ j + \(\lambda\)。 各検証者 j \(\in\)HSV r,s' は時刻 \(\beta\)r,s' にメッセージを送信するため、 j そしてメッセージはすべての正直者に届きます 最大 \(\lambda\) 時間のユーザー数、時間 \(\beta\)r,s ごと 私は プレイヤー i はすべての正直な検証者から送信されたすべてのメッセージを受信しました HSV では、すべての s' < s に対して r,s'。したがって、性質(c)が成り立つ。 最後に、性質 (d) を証明します。検証者 j \(\in\)SV r,s−1 は、次の中で最大 2 つのものに署名することに注意してください。 一時的な秘密鍵を使用したステップ s −1: の出力と同じ長さの値 vj hash 関数、および s −1 \(\geq\)4 の場合、ビット bj \(\in\){0, 1}。だからこそ、補題のステートメントでは v と v' は同じ長さである必要があります。多くの検証者は両方の hash 値に署名している可能性があります。 v とビット b なので、両方とも 2/3 しきい値を通過します。 矛盾を避けるために、目的の検証子 i、i' と値 v、v' が存在すると仮定します。 MSV r,s-1 内の悪意のある検証者の中には v と v' の両方に署名している可能性があることに注意してください。 HSV r,s-1 の検証者は、それらのうちの 1 つまでに署名しました。プロパティ (c) により、i と i' は両方とも受信しました HSV r,s-1 内のすべての正直な検証者によって送信されたすべてのメッセージ。 HSV r,s−1(v) を、v に署名した正直な (r, s −1) 検証者のセットとする、MSV r,s−1 私は セット i が有効なメッセージを受信した悪意のある (r, s −1) 検証者の数と MSV r,s−1 私は (v) MSV r,s−1 のサブセット 私は 誰から有効なメッセージ署名を受信したか v. の要件による i と v は、 比 \(\triangleq\)|HSV r,s−1(v)| + |MSV r,s−1 私は (v)| |HSV r,s−1| + |MSV r,s−1 私は |
2 3. (1) まずはお見せします |MSV r,s−1 私は (v)| \(\leq\)|HSV r,s−1(v)|。 (2) そうでないと仮定すると、パラメータ間の関係から圧倒的な確率で |HSV r,s−1| > 2|MSV r,s−1| \(\geq\)2|MSV r,s−1 私は | したがって、 比 < |HSV r,s−1(v)| + |MSV r,s−1 私は (v)| 3|MSV r,s−1 私は | < 2|MSV r,s−1 私は (v)| 3|MSV r,s−1 私は | \(\leq\)2 3、 矛盾1。 次に、不等式 1 により、次のようになります。 2|HSV r,s−1| + 2|MSV r,s−1 私は | < 3|HSV r,s−1(v)| + 3|MSV r,s−1 私は (v)| \(\leq\) 3|HSV r,s−1(v)| + 2|MSV r,s−1 私は | + |MSV r,s−1 私は (v)|。 不等式2と組み合わせると、 2|HSV r,s−1| < 3|HSV r,s−1(v)| + |MSV r,s−1 私は (v)| \(\leq\)4|HSV r,s−1(v)|, それは意味します |HSV r,s−1(v)| > 1 2|HSV r,s−1|。同様に、i' と v' の要件により、次のようになります。 |HSV r,s−1(v')| > 1 2|HSV r,s−1|。 正直な検証者 j \(\in\)HSV r,s−1 は一時的な秘密鍵 skr,s−1 を破壊するので、 j 伝播する前に 彼のメッセージによれば、敵対者は、j が署名していない値に対する j の署名を偽造することはできません。 j が検証者であることを学習します。したがって、上記の 2 つの不等式は |HSV r,s−1| を意味します。 ≧|HSV r,s−1(v)| + |HSV r,s−1(v')| > |HSV r,s−1|、矛盾しています。したがって、目的の i、i'、v、v' は存在せず、 性質(d)が成り立つ。 ■ 5.7 完全性の補題 補助定理 5.2. [完全性補題、再掲] ラウンド r−1 に対してプロパティ 1 ~ 3 が成立すると仮定すると、 リーダー\(\ell\)rは正直で、圧倒的な確率で、 • すべての正直なユーザーは、\(\ell\)r によって生成され、最大値を含む同じブロック Br に同意します。 時間 \(\alpha\)r,1 までに \(\ell\)r が受け取った給与セット \(\ell\)r \(\in\)Ir;そして • T r+1 \(\leq\)T r + 8\(\lambda\) + Λ であり、すべての正直なユーザーは時間間隔 Ir+1 における Br を知っています。 証拠。帰納的仮説と補題 5.5 により、各ステップ s と検証者 i \(\in\)HSV r,s に対して、 \(\alpha\)r,s 私は \(\in\)Ir.以下では、プロトコルを段階的に分析します。 ステップ1. 定義により、すべての正直な検証者 i \(\in\)HSV r,1 は、目的のメッセージ mr,1 を伝播します。 私は で 時間 \(\beta\)r,1 私は = \(\alpha\)r,1 私、ここで、mr,1 私は = (Br i , エシギ(H(Br i))、\(\sigma\)r,1 i)、Br i = (r, PAY r i , SIGi(Qr−1), H(Br−1)), そして支払ってください i は、時間 \(\alpha\)r,1 までに確認されたすべての支払いの中で最大の支払いセットです。 私は。 ステップ2。 正直な検証者 i \(\in\)HSV r,2 を任意に修正します。補題 5.5 により、プレイヤー i が終了したとき 時間 \(\beta\)r,2 で待機中 私は = \(\alpha\)r,2 私は + t2、彼は HSV r,1 の検証者によって送信されたすべてのメッセージを受信しました。 さん、1 \(\ell\)r 。 \(\ell\)r の定義によれば、資格情報が hash である他のプレイヤーは PKr-k に存在しません。 値が H(\(\sigma\)r,1 より小さい) \(\ell\)r)。もちろん、敵対者は H(\(\sigma\)r,1 \(\ell\)r) は非常に小さいですが、その時までにプレイヤー \(\ell\)r は一時的な鍵とメッセージ mr,1 を破壊しています。 \(\ell\)r が伝播されてきました。したがって、検証者 i は自分のリーダーをプレイヤー \(\ell\)r に設定します。したがって、時刻 \(\beta\)r,2 では、 私、 検証者 i が mr,2 を伝播します 私は = (ESIG(v' i)、\(\sigma\)r,2 i )、ここで v' i = H(Br \(\ell\)r)。 r = 0の場合、唯一の違いは それは\(\beta\)r,2ですか 私は = t2 の範囲内にあるのではなく。今後のステップについても同様のことが言えます。 それらを再び強調することはありません。 ステップ3。 正直な検証者 i \(\in\)HSV r,3 を任意に修正します。補題 5.5 により、プレイヤー i が終了したとき 時間 \(\beta\)r,3 で待機中 私は = \(\alpha\)r,3 私は + t3、彼は HSV r,2 の検証者によって送信されたすべてのメッセージを受信しました。 パラメータ間の関係により、圧倒的な確率で |HSV r,2| > 2|MSV r,2|。さらに、誠実な検証者は矛盾するメッセージに署名することはありません。 正直な検証者が対応する署名を破棄した後は、その署名を偽造することはできない 一時的な秘密鍵。したがって、私が受信したすべての有効な (r, 2)-メッセージの 2/3 以上は、 正直な検証者、形式は mr,2 j = (ESIGj(H(Br \(\ell\)r))、\(\sigma\)r,2 j )、矛盾はありません。 したがって、時刻 \(\beta\)r,3 では、 私は プレイヤー i が mr,3 を伝播します 私は = (ESIGi(v'), \(\sigma\)r,3 i )、ここで v' = H(Br \(\ell\)r)。ステップ4。 正直な検証者 i \(\in\)HSV r,4 を任意に修正します。補題 5.5 により、プレイヤー i はすべてを受け取りました 検証者が時間 \(\beta\)r,4 で待機し終えたときに、HSV r,3 の検証者によって送信されるメッセージ 私は = \(\alpha\)r,4 私は +t4。に似ている ステップ 3、私が受け取ったすべての有効な (r, 3)-メッセージの 2/3 以上は誠実な検証者からのものであり、 mr,3 という形式の j = (ESIGj(H(Br \(\ell\)r))、\(\sigma\)r,3 j)。 したがって、プレイヤー i は vi = H(Br \(\ell\)r)、gi = 2、bi = 0。時刻 \(\beta\)r,4 私は = \(\alpha\)r,4 私は +t4 彼は伝播します ミスター、4 私は = (ESIGi(0), ESIGi(H(Br \(\ell\)r))、\(\sigma\)r,4 私)。 ステップ5。 正直な検証者 i \(\in\)HSV r,5 を任意に修正します。 補題 5.5 によれば、プレーヤーは次のようになります。 時間 \(\alpha\)r,5 まで待っていれば、検証者によって送信されたすべてのメッセージを HSV r,4 で受信しました 私は +t5。注意してください |HSV r,4| \(\geq\)tH.19 また、HSV r,4 のすべての検証者が H(Br \(\ell\)r)。 |MSV r,4| として< tH、v′ ̸= H(Br \(\ell\)r) tH によって署名された可能性があります SV r,4 の検証者 (必然的に悪意のある人物) なので、プレイヤー i は、完了する前に停止しません。 有効なメッセージを受信しました mr,4 j = (ESIGj(0), ESIGj(H(Br \(\ell\)r))、\(\sigma\)r,4 j)。 T を次の時刻とします。 後者の出来事が起こります。これらのメッセージの一部は悪意のあるプレーヤーからのものである可能性がありますが、 |MSV r,4| < tH、少なくとも 1 つは HSV r,4 の誠実な検証者からのものであり、時間が経過してから送信されます T r +t4。したがって、T \(\geq\)T r +t4 > T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 \(\ell\)r +Λ、そしてやがて T プレイヤーも受け取りました メッセージミスター1 \(\ell\)r 。プロトコルの構築により、プレイヤー i は時刻 \(\beta\)r,5 で停止します。 私は = T なし 何かを広めること。 Br = Br を設定します \(\ell\)r;そして、自分自身の CERT r を (r, 4)-メッセージのセットに設定します。 0 と H(Br \(\ell\)r) 彼が受け取ったもの。 ステップ s > 5。 同様に、任意のステップ s > 5 および任意の検証者 i \(\in\)HSV r,s について、プレイヤー i は次のようになります。 時間 \(\alpha\)r,s まで待っていれば、検証者によって送信されたすべてのメッセージを HSV r,4 で受信しました 私は +ts.によって 同じ分析、プレーヤー i は何も伝播せずに停止し、Br = Br に設定します。 \(\ell\)r (そして自分自身の設定 CERT を適切に実行します)。もちろん、悪意のある検証者は止まらず、任意の情報を伝播する可能性があります。 メッセージですが、 |MSV r,s| のため< tH、帰納法により、検証者は他の v' に署名できません どのステップでも 4 \(\leq\) s' < s であるため、正直な検証者は有効な tH を受け取ったためにのみ停止します。 (r, 4)-0 および H(Br のメッセージ) \(\ell\)r)。 Round-rブロックの再建。 ステップ 5 の分析は、一般的な正直者に適用されます。 ユーザー i はほとんど変更ありません。実際、プレーヤー i は、インターバル Ir で自分のラウンド r を開始し、 H(Br への有効な (r, 4) メッセージを tH 回受信したときのみ、時刻 T に停止します。 \(\ell\)r)。またまただから これらのメッセージの少なくとも 1 つは正直な検証者からのものであり、時間 T r + t4 の後に送信され、プレイヤー i は Mr.1も受け取りました \(\ell\)r を時間 T で計算します。したがって、Br = Br と設定します。 \(\ell\)r を適切な CERT r と照合します。 すべての正直なユーザーが時間間隔 Ir+1 内にラウンド r を終了することを示すだけです。 ステップ 5 の分析により、すべての正直な検証者 i \(\in\)HSV r,5 は、\(\alpha\)r,5 以降の Br を知っています。 私は +t5≦ T r + \(\lambda\) + t5 = T r + 8\(\lambda\) + Λ。 T r+1 は、最初に正直なユーザー ir が Br を知っている時間であるため、次のようになります。 T r+1 \(\leq\)T r + 8\(\lambda\) + Λ 希望どおりに。さらに、プレイヤー ir が Br を知っているとき、彼はすでにメッセージの伝播に協力しています。 彼の CERT r.これらのメッセージはすべて、たとえ 19厳密に言えば、これは非常に高い確率で起こりますが、必ずしも圧倒的ではありません。 ただし、これは 確率はプロトコルの実行時間にわずかに影響しますが、その正確さには影響しません。 h = 80% の場合、 |HSV r,4|確率 1 −10−8 で \(\geq\)tH。このイベントが発生しない場合、プロトコルは別のイベントで続行されます。 3ステップ。これが 2 つのステップで発生しない確率は無視できるため、プロトコルはステップ 8 で終了します。 したがって、必要なステップ数はほぼ 5 であることが予想されます。プレイヤー ir は、それらを広めた最初のプレイヤーでした。さらに、上記の分析に従って、 T r+1 ≧T r + t4 ≧\(\beta\)r,1 \(\ell\)r + Λ、したがって、すべての正直なユーザーは mr,1 を受け取ります \(\ell\)r は時間 T r+1 + \(\lambda\) で計算されます。したがって、 すべての正直なユーザーは、時間間隔 Ir+1 = [T r+1, T r+1 + \(\lambda\)] における Br を知っています。 最後に、r = 0 の場合、実際には T 1 \(\leq\) t4 + \(\lambda\) = 6\(\lambda\) + Λ になります。すべてを組み合わせて、 補題 5.2 が成り立ちます。 ■ 5.8 健全性の補題 補助定理 5.3. [健全性補題、再掲] ラウンド r −1 に対してプロパティ 1 ~ 3 が成立すると仮定すると、 リーダー\(\ell\)r は悪意があり、圧倒的な確率で、すべての正直なユーザーが同じブロックに同意します Br、T r+1 \(\leq\)T r + (6Lr + 10)\(\lambda\) + Λ、そしてすべての正直なユーザーは、時間間隔 Ir+1 における Br を知っています。 証拠。プロトコルの 2 つの部分、GC と BBA⋆ を別々に検討します。 GC。 帰納的仮説と補題 5.5 により、任意のステップ s \(\in\){2, 3, 4} および任意の正直な 検証者 i \(\in\)HSV r,s、プレイヤー i が時刻 \(\beta\)r,s に行動するとき 私は = \(\alpha\)r,s 私は + ts、彼は送信されたすべてのメッセージを受信しました ステップ s' < s のすべての正直な検証者による。ステップ 4 では、考えられる 2 つのケースを区別します。 ケース 1. 検証者なし i \(\in\)HSV r,4 は gi = 2 を設定します。 この場合、定義により、すべての検証者 i \(\in\)HSV r,4 に対して bi = 1 となります。つまり、で始まります。 バイナリ BA プロトコルの 1 に関する合意。 vi に関して合意が得られていない可能性がありますが、 しかし、バイナリ BA でわかるように、これは問題ではありません。 ケース 2. g^i = 2 となる検証器 ^i \(\in\)HSV r,4 が存在します。 この場合、次のことを示します。 (1) すべての i \(\in\)HSV r,4 について gi \(\geq\)1、 (2) すべての i \(\in\)HSV r,4 に対して、vi = v' となる値 v' が存在します。 (3) 有効なメッセージ mr,1 が存在します。 \(\ell\) ある検証者 \(\ell\) \(\in\)SV r,1 から、v' = H(Br \(\ell\))。 実際、プレイヤー ^i は正直であり、g ^i = 2 に設定しているため、すべての有効なメッセージの 2/3 以上が mr,3 です。 j 彼が受け取った値は同じ値 v′ ̸= \(\bot\) であり、v^i = v′ と設定しました。 補助定理 5.5 の性質 (d) によれば、他の正直な (r, 4) 検証者 i にとって、それ以上のことはあり得ません。 すべての有効なメッセージの 2/3 よりも少ない mr,3 j i' が受け取った値は、同じ値 v'' ̸= v' です。 したがって、i が gi = 2 と設定した場合、i は v' についても > 2/3 多数派を確認し、設定する必要があります。 必要に応じて、vi = v'。 ここで、gi < 2 の任意の検証器 i \(\in\)HSV r,4 を考えます。プロパティの分析と同様です。 (d) 補助定理 5.5 の場合、プレイヤー ^i は v' に対して 2/3 を超える過半数を獲得しているため、1 を超えています。 2|HSV r,3|正直な (r, 3)-検証者は v' に署名しました。なぜなら、私は正直な (r, 3) 検証者によってすべてのメッセージを受信しているからです。 時間 \(\beta\)r,4 私は = \(\alpha\)r,4 私は + t4、彼は特に 1 つ以上を受け取りました 2|HSV r,3|彼らからのメッセージ v'の場合。なぜなら |HSV r,3| > 2|MSV r,3|、i は v' の > 1/3 過半数を確認しました。したがって、プレイヤーは、 i は gi = 1 を設定し、プロパティ (1) が成立します。 プレイヤー i は必ず vi = v' を設定しますか?次のような異なる値 v'''' ̸= \(\bot\)が存在すると仮定します。 プレーヤー i も、v'' の 1/3 以上の過半数を確認しました。これらのメッセージの一部は悪意のあるものからのものである可能性があります 検証者ですが、そのうちの少なくとも 1 つは誠実な検証者からのものです j \(\in\)HSV r,3: 確かに、なぜなら |HSV r,3| > 2|MSV r,3|そして私は HSV r,3 からのすべてのメッセージを受信しました。 有効な (r, 3) メッセージを受け取った検証者の数は、有効なメッセージ全体の 1/3 未満です。 彼が受け取ったメッセージ。定義により、プレイヤー j は、すべての有効な (r, 2)-メッセージのうち v'' の 2/3 を超える過半数を見た必要があります。 彼は受け取りました。ただし、他の誠実な (r, 3) 検証者がすでに確認していることはわかっています。 v' の 2/3 多数派 (v' に署名したため)。補助定理 5.5 の性質 (d) により、これはできません。 このような値 v'' は存在しません。したがって、プレイヤー i は必要に応じて vi = v' を設定する必要があります。 そして、性質(2)が成り立つ。 最後に、一部の正直な (r, 3) 検証者が v' に対して 2/3 以上の多数派を認めたことを考慮すると、一部の (実際には、 正直な (r, 2) 検証者の半数以上が v' に署名し、メッセージを広めました。 プロトコルの構築により、これらの正直な (r, 2) 検証者は有効な メッセージミスター1 \(\ell\) あるプレイヤーから \(\ell\) \(\in\)SV r,1 with v′ = H(Br \(\ell\))であるため、性質(3)が成り立ちます。 BBA⋆。 ここでも 2 つの場合を区別します。 ケース 1. すべての検証者 i \(\in\)HSV r,4 は bi = 1 を持ちます。 これは GC のケース 1 に続いて発生します。 |MSV r,4| として< tH、この場合、SV r,5 にはベリファイアがありません ビット 0 の有効な (r, 4) メッセージを収集または生成できません。したがって、HSV r,5 には正直な検証者は存在しません。 Br は空ではないブロックを知っているので停止するでしょう。 さらに、ビット 1 には少なくとも tH 個の有効な (r, 4) メッセージがありますが、s' = 5 は満たされません。 s′ −2 ≡1 mod 3 であるため、HSV r,5 の正直な検証者は、Br = Br を知っているので停止することはありません。 ああ。 代わりに、すべての検証者 i \(\in\)HSV r,5 は時間 \(\beta\)r,5 に動作します。 私は = \(\alpha\)r,5 私は + t5、いつまでに彼はすべてを受け取ります Lemma 5.5 に従って HSV r,4 によって送信されるメッセージ。したがって、プレイヤー i は 2/3 を超える過半数を 1 で見たことになります。 そして、bi = 1 を設定します。 Coin-Fixed-To-1 ステップであるステップ 6 では、s' = 5 は s' −2 ≡0 mod 3 を満たしますが、 ビット 0 の有効な (r, 4) メッセージは存在しないため、HSV r,6 のベリファイアは停止しません。 彼は空ではないブロックを知っています。ただし、s′ = 6 の場合、s′ −2 ≡1 mod 3 が存在します。 |HSV r,5| \(\geq\)tH 有効 (r, 5) - HSV r,5 からのビット 1 のメッセージ。 すべての検証者 i \(\in\)HSV r,6 について、補題 5.5 に従って、時刻 \(\alpha\)r,6 またはそれ以前 私は + t6 プレイヤー i HSV r,5 からすべてのメッセージを受信したため、何も伝播せずに停止し、セットします Br = Br ああ。彼の CERT r は、有効な (r, 5)-メッセージ mr,5 のセットです。 j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j) 彼が立ち止まったときに彼が受け取りました。 次に、プレイヤー i をステップ s > 6 の正直な検証者、または一般的な正直なユーザー (つまり、 非検証者)。補題 5.2 の証明と同様に、プレイヤー i は Br = Br を設定します。 ë と自分自身を設定します CERT r は、tH 有効な (r, 5)-メッセージ mr,5 のセットになります j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,5 j ) 彼は持っています 受け取りました。 最後に、補題 5.2 と同様に、 T r+1 \(\leq\) 分 i\(\in\)HSV r,6 \(\alpha\)r,6 私は + t6 \(\leq\)T r + \(\lambda\) + t6 = T r + 10\(\lambda\) + Λ、 そして、すべての正直なユーザーは、Ir+1 の時間間隔で Br を知っています。なぜなら、最初の正直なユーザーは、 Br が彼の CERT r で (r, 5)-メッセージの普及に貢献したことを知っています。 ケース 2. b^i = 0 の検証器 ^i \(\in\)HSV r,4 が存在します。 これは GC のケース 2 に続いて発生し、より複雑なケースです。 GCの分析により、 この場合、有効なメッセージ mr,1 が存在します。 \(\ell\) vi = H(Br \(\ell\)) すべての i \(\in\)HSV r,4 について。注記 HSV r,4 の検証者は、BI について合意していない可能性があります。 任意のステップ s \(\in\){5, . 。 。 , m + 3} および検証者 i \(\in\)HSV r,s、補題 5.5 プレーヤーによると、私は次のようになります。 待っていれば、HSV r,4 \(\cup\) \(\cdots\) \(\cup\)HSV r,s−1 のすべての正直な検証者によって送信されたすべてのメッセージを受信しました 時間のためにts。ここで次のイベント E を考えます。次のようなステップ s∗\(\geq\)5 が存在します。 バイナリ BA の時間、一部のプレイヤー i∗\(\in\)SV r,s∗ (悪意のあるプレイヤーか正直なプレイヤーか) を停止する必要があります。 何も伝播せずに。 「停止すべき」という言葉を使って、プレイヤー i∗ が次のような場合に、 悪意がある場合、プロトコルに従って停止すべきではないふりをする可能性があります。 敵対者が選択したメッセージを伝播します。 また、プロトコルの構築により、 (E.a) i∗ は少なくとも tH 個の有効なメッセージ mr,s'−1 を収集または生成できます j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ) 同じ v と s' に対して、5 \(\leq\) s' \(\leq\) s∗ および s' −2 ≡0 mod 3 です。または (E.b) i∗ は少なくとも tH 個の有効なメッセージ mr,s'−1 を収集または生成できます j = (ESIGj(1)、ESIGj(vj)、 \(\sigma\)r,s′−1 j ) 同じ s' に対して、6 \(\leq\) s' \(\leq\) s∗ および s' −2 ≡1 mod 3 です。 なぜなら、正直な (r, s' -1) メッセージは、すべての正直な (r, s') 検証者によって受信される前に、 ステップ s' で待機が完了し、敵対者は遅くとも 正直なユーザーの場合、一般性を失うことなく、s′ = s∗ となり、プレイヤー i∗ は悪意があります。注意してください E.a の値 v が有効なブロックの hash である必要はありませんでした。 解析では、v = H(Br \(\ell\))のサブイベントです。 以下では、まずイベント E に続くケース 2 を分析し、次に s∗ の値が本質的に次のとおりであることを示します。 Lr に応じて分散されます (したがって、イベント E は圧倒的なステップ m + 3 の前に発生します) パラメータの関係を考慮した確率)。まず、任意のステップ 5 \(\leq\) s < s∗ について、 すべての正直な検証者 i \(\in\)HSV r,s は時間 ts を待機し、vi を多数決に設定します。 彼が受信した有効な (r, s−1) メッセージ。プレイヤー i はすべての正直な (r, s−1)-メッセージを受信しているため HSV r,4 のすべての正直な検証者が H(Br \(\ell\))以下の場合 GC の 2、および |HSV r,s−1| 以降> 2|MSV r,s−1|各 s について、帰納法により、そのプレイヤー i が得られます。 設定しました vi = H(Br \(\ell\))。 同じことが、伝播せずに止まらないすべての正直な検証者 i \(\in\)HSV r,s∗にも当てはまります 何でも。ここで、ステップ s を検討し、4 つのサブケースを区別します。 ケース 2.1.a。イベント E.a が発生し、誠実な検証者 i' \(\in\)HSV r,s∗ が存在します。 また、何も伝播せずに停止します。 この場合、s∗−2 ≡0 mod 3 があり、ステップ s∗ は Coin-Fixed-To-0 ステップです。 によって 定義では、プレイヤー i' は次の形式の有効な (r, s∗−1) メッセージを少なくとも tH 受信しました。 (ESIGj(0), ESIGj(v), \(\sigma\)r,s∗−1 j )。 HSV r,s∗−1 のすべての検証者が H(Br \(\ell\))と |MSV r,s∗−1| < tH、v = H(Br \(\ell\))。 少なくとも tH −|MSV r,s∗−1| なので\(\geq\)1 個の (r, s∗−1)-メッセージが 0 および v に対して i' によって受信される 時間 T r +ts∗−1 \(\geq\)T r +t4 \(\geq\)T r +\(\lambda\)+Λ \(\geq\) \(\beta\)r,1 の後に、検証者によって HSV r,s∗−1 で送信されます。 \(\ell\) +Λ、 プレイヤー i は mr,1 を受け取りました \(\ell\) 彼がそれらの (r, s∗−1)-メッセージを受信するまでに。したがって、プレーヤー i' は何も伝播せずに停止します。 Br = Br を設定します \(\ell\);そして自分自身の CERT r を 彼が受信した 0 と v に対する有効な (r, s∗−1) メッセージのセット。 次に、他の検証子 i \(\in\)HSV r,s∗ が Br = Br で停止していることを示します。 \(\ell\)、または bi = 0 に設定され、伝播されました (ESIGi(0), ESIGi(H(Br \(\ell\)))、\(\sigma\)r,s 私)。確かに、ステップ s∗ なので、 一部の検証者が何も伝播せずに停止する必要があるのは初めてですが、そのようなことはありません tH (r, s' -1) 検証者が 1 に署名するように、s' −2 ≡1 mod 3 であるステップ s' < s∗ が存在します。 したがって、HSV r,s∗ では Br = Br で停止する検証子はありません。 ああ。さらに、ステップ{4、5、...のすべての正直な検証者と同様に、 。 。 , s∗−1} は H(Br \(\ell\))、あります tH (r, s' -1) 検証者が署名したようなステップ s' \(\leq\) s∗ with s' −2 ≡0 mod 3 は存在しない いくつかの v''̸= H(Br \(\ell\)) —確かに、|MSV r,s'−1| < tH.したがって、HSV r,s∗ のベリファイアは停止しません Br ̸= Br で iq および Br ̸= Br \(\ell\)。つまり、プレイヤー i \(\in\)HSV r,s∗ が何もせずに停止した場合、 何かを宣伝する場合、彼は Br = Br と設定したに違いありません \(\ell\)。 プレイヤー i \(\in\)HSV r,s∗ が時間 ts∗ 待機し、時間にメッセージを伝播した場合 \(\beta\)r,s∗ 私は = \(\alpha\)r,s∗ 私は + ts∗、彼は HSV r,s∗−1 からのすべてのメッセージを受信しました。 tH −|MSV r,s∗−1|そのうちの 0 と v です。 私が 2/3 以上の 1 の過半数を見た場合、彼は 1 に対して 2(tH −|MSV r,s∗−1|) 個以上の有効な (r, s∗−1)-メッセージを確認しました。 2tH −3|MSV r,s∗−1| よりそのうちの 1 つは正直な (r, s∗−1) 検証者からのものです。ただし、これが意味するのは、 |HSV r,s∗−1| \(\geq\)tH−|MSV r,s∗−1|+2tH−3|MSV r,s∗−1| > 2n−4|MSV r,s∗−1|、矛盾しています という事実 |HSV r,s∗−1| + 4|MSV r,s∗−1| < 2n、 これはパラメータの関係から得られます。したがって、2/3 を超えるものは表示されません。 過半数は 1 であり、ステップ s∗ は Coin-Fixed-To-0 ステップであるため、bi = 0 と設定します。私たちが持っているように 見られるように、vi = H(Br \(\ell\))。したがって、 i は (ESIGi(0), ESIGi(H(Br \(\ell\)))、\(\sigma\)r,s 私)私たちが望んでいたように ショー。 ステップ s∗+ 1 の場合、プレーヤー i' が CERT r 内のメッセージの伝播に協力したため、 時刻\(\alpha\)r,s∗ またはそれ以前 私は + ts∗、HSV r,s∗+1 のすべての正直な検証者は少なくとも tH 有効 (r, s∗−1) - ビット 0 および値 H(Br \(\ell\)) 完了時または完了前 待っています。さらに、HSV r,s∗+1 の検証者は (r, s∗−1)- を受信する前に停止しません。 メッセージ。ビット 1 には他に有効な (r, s' -1) メッセージが存在しないためです。 ステップ s∗ の定義により、s′ −2 ≡1 mod 3 および 6 \(\leq\) s′ \(\leq\) s∗+ 1 となります。特にステップ s∗+ 1 自体は Coin-Fixed-To-1 ステップですが、HSV r,s∗ には正直な検証者が伝播していません 1 のメッセージ、および |MSV r,s∗| < tH. したがって、HSV r,s∗+1 のすべての正直な検証者は何も伝播せずに停止し、Br = と設定します。 Br \(\ell\): 以前と同様に、彼らは mr,1 を受け取りました \(\ell\) 必要な (r, s∗−1)-メッセージを受信する前に。20 同じことが、今後のステップでのすべての正直な検証者と、一般のすべての正直なユーザーにも言えます。 特に、彼らは皆、Br = Br を知っています。 時間間隔 Ir+1 内で \(\ell\) および T r+1 \(\leq\) \(\alpha\)r,s∗ 私は + ts∗\(\leq\)T r + \(\lambda\) + ts∗。 ケース 2.1.b.イベント E.b が発生し、誠実な検証者 i' \(\in\)HSV r,s∗ が存在します。 また、何も伝播せずに停止します。 この場合、s∗−2 ≡1 mod 3 があり、ステップ s∗ は Coin-Fixed-To-1 ステップです。分析 これはケース 2.1.a に似ており、多くの詳細が省略されています。 20もし\(\ell\)が悪意があるなら、彼はミスター1を送り出すかもしれない \(\ell\) 一部の正直なユーザー/検証者が mr,1 を受け取っていないことを願って、遅くなりました。 \(\ell\) まだ 希望する証明書を受け取ったとき。ただし、検証者 ^ i \(\in\)HSV r,4 は b ^ i = 0 および v ^ i = H(Br \(\ell\))として、 正直な検証者 i \(\in\)HSV r,3 の半数以上が vi = H(Br \(\ell\))。これはさらに多くのことを意味します 正直な検証者 i \(\in\)HSV r,2 の半数以上が vi = H(Br \(\ell\))、それらの (r, 2)-検証者は全員 mr,1 を受け取りました \(\ell\)。として 敵対者は検証者と非検証者を区別できず、mr,1 の伝播をターゲットにすることはできません。 \(\ell\) (r, 2)-検証者へ 非検証者に見られることなく。実際、高い確率で、半分以上 (またはかなりの定数) すべての正直なユーザーのうち 1 人が mr を見たことがあります \(\ell\) 自分のラウンドの開始から t2 待った後、r.ここからは、 mr,1 に必要な時間 \(\lambda\)' \(\ell\) 残りの正直なユーザーに到達するのに必要な量は Λ よりもはるかに小さいため、簡略化するために、 それを分析に書き出します。 4\(\lambda\) \(\geq\) \(\lambda\)' の場合、解析は何も変更せずに完了します。ステップ 4 の終わりまでに、すべての 正直なユーザーは m,1 を受け取ったでしょう \(\ell\)。ブロックのサイズが巨大になり、4\(\lambda\) < \(\lambda\)' になった場合、ステップ 3 と 4 で、 プロトコルは各検証者に 2\(\lambda\) ではなく \(\lambda\)'/2 を待つよう要求することができ、分析は継続します。前と同様に、プレーヤー i' は、次の形式の少なくとも tH 個の有効な (r, s∗−1)-メッセージを受信している必要があります。 (ESIGj(1), ESIGj(vj), \(\sigma\)r,s∗−1 j )。再び s∗ の定義により、ステップは存在しません。 5 \(\leq\) s′ < s∗ with s′ −2 ≡0 mod 3、ここで少なくとも tH (r, s′ −1) 検証者は 0 に署名しており、 同じ v. したがって、プレーヤー i' は何も伝播せずに停止します。 Br = Br を設定します っ;とセット 彼自身の CERT r は、彼が受信したビット 1 の有効な (r, s∗−1) メッセージのセットになります。 さらに、他の検証器 i \(\in\)HSV r,s∗ は Br = Br で停止しているか、 iq 、または bi = を設定しました 1 と伝播 (ESIGi(1)、ESIGi(vi)、\(\sigma\)r,s∗ 私は )。プレイヤーi'が普及に協力してくれたので 彼の CERT r の (r, s∗−1)-メッセージ (時間 \(\alpha\)r,s∗) 私は + ts∗、ここでもすべての正直な検証者 HSV r,s∗+1 は何も伝播せずに停止し、Br = Br に設定します ァ 。同様に、すべて正直です ユーザーは Br = Br を知っています ϫ 時間間隔 Ir+1 内および T r+1 \(\leq\) \(\alpha\)r,s∗ 私は + ts∗\(\leq\)T r + \(\lambda\) + ts∗。 ケース 2.2.a。イベント E.a が発生し、正直な検証者 i' \(\in\)HSV r,s∗who が存在しない 何も伝播せずに停止する必要もあります。 この場合、プレーヤー i∗ は有効な CERT r を持っている可能性があることに注意してください。 i は希望する tH から成ります (r, s∗−1)-敵対者が収集または生成できるメッセージ。ただし、悪意のある 検証者はそれらのメッセージの伝播に協力しない可能性があるため、正直なメッセージが正しいと結論付けることはできません。 ユーザーは時間 \(\lambda\) 以内にそれらを受け取ります。実際、 |MSV r,s∗−1|そのうちのメッセージは次からのものである可能性があります 悪意のある (r, s∗−1) 検証者。メッセージをまったく伝播せず、ただ送信するだけです。 ステップ s∗ で悪意のある検証者にそれらを送信します。 ケース 2.1.a と同様に、ここでは s∗−2 ≡0 mod 3 があり、ステップ s∗ は Coin-Fixed-To-0 ステップです。 および CERT r の (r, s∗−1)-メッセージ i∗はビット0、v = H(Br \(\ell\))。確かに、みんな正直です (r, s∗−1)-検証者は v に署名するため、敵対者は tH 個の有効な (r, s∗−1)-メッセージを生成できません 異なる v' について。 さらに、すべての正直な (r, s∗) 検証者は時間 ts∗ を待機しましたが、過半数の 2/3 を超えていないことがわかります。 ビット 1 についても、 |HSV r,s∗−1| であるため、 + 4|MSV r,s∗−1| < 2n。したがって、すべての正直な検証者は、 i \(\in\)HSV r,s∗bi = 0、vi = H(Br \(\ell\)) を多数決で決定し、mr,s∗ を伝播します 私は = (ESIGi(0)、ESIGi(H(Br \(\ell\)))、\(\sigma\)r,s∗ 私は ) 時刻 \(\alpha\)r,s∗ 私は +ts∗. ここで、ステップ s∗+ 1 (Coin-Fixed-To-1 ステップ) の正直な検証者を考えてみましょう。もし 攻撃者は実際に CERT r でメッセージを送信します それらの一部にi∗して、それらを引き起こします 停止します。ケース 2.1.a と同様に、すべての正直なユーザーは Br = Br を知っています。 時間間隔内で\(\ell\) Ir+1と T r+1 \(\leq\)T r + \(\lambda\) + ts∗+1。 それ以外の場合、ステップ s∗+1 のすべての正直な検証者は、0 と 0 に対するすべての (r, s∗)-メッセージを受信しています。 H(Br \(\ell\)) 待機時間 ts∗+1 後の HSV r,s∗ から、2/3 を超える過半数が得られます。 |HSV r,s∗| > 2|MSV r,s∗|。したがって、HSV r,s∗+1 のすべての検証者はメッセージを伝播します。 0 と H(Br \(\ell\))に応じて。 HSV r,s∗+1 の検証子は Br = Br で停止しないことに注意してください。 \(\ell\)、 ステップ s∗+ 1 は Coin-Fixed-To-0 ステップではないためです。 ここで、ステップ s∗+2 (コインを本物に投げたステップ) の正直な検証者を考えてみましょう。 攻撃者が CERT r でメッセージを送信した場合 それらの一部にi∗して、それらを停止させます。 もう一度言いますが、すべての正直なユーザーは Br = Br を知っています。 時間間隔 Ir+1 内で \(\ell\) および T r+1 \(\leq\)T r + \(\lambda\) + ts∗+2。それ以外の場合、ステップ s∗+ 2 のすべての正直な検証者は、次のすべての (r, s∗+ 1)-メッセージを受信しています。 0 と H(Br \(\ell\)) 待機時間 ts∗+2 後の HSV r,s∗+1 から、> 2/3 過半数になります。 したがって、それらはすべて 0 と H(Br \(\ell\)) したがって、彼らはそうします この場合、「コインを投げる」のではありません。繰り返しますが、それらは伝播せずに停止しないことに注意してください。 ステップ s∗+ 2 は Coin-Fixed-To-0 ステップではないためです。 最後に、ステップ s∗+3 (これも Coin-Fixed To-0 ステップです) の正直な検証者の場合、すべて そのうちの 0 と H(Br \(\ell\)) HSV s∗+2 より、 本当に待ち時間 ts∗+3 の場合。したがって、攻撃者がメッセージを送信するかどうかに関係なく、 CERTrで それらのいずれに対しても、HSV r,s∗+3 のすべての検証者は Br = Br で停止します。 \(\ell\)なし 何でも広める。敵対者がどのように行動するかに応じて、その一部は CERT r 内の (r, s∗−1)-メッセージで構成される独自の CERT r i∗、その他は それらの (r, s∗+ 2) メッセージで構成される独自の CERT r。いずれにせよ、誠実なユーザーの皆様 Br = Br を知っています 時間間隔 Ir+1 内で \(\ell\) および T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3。 ケース 2.2.b.イベント E.b が発生し、正直な検証者 i' \(\in\)HSV r,s∗who が存在しない 何も伝播せずに停止する必要もあります。 このケースの分析はケース 2.1.b およびケース 2.2.a の分析と似ているため、多くの詳細が説明されています。 は省略されています。特に、CERT r i∗は tH 個の必要な (r, s∗−1) メッセージで構成されます 敵対者が収集または生成できるビット 1 の場合、s∗−2 ≡1 mod 3、ステップ s∗ は Coin-Fixed-To-1 ステップでは、正直な (r, s∗) 検証者は 2/3 以上の 0 の多数派を確認できませんでした。 したがって、すべての検証者 i \(\in\)HSV r,s∗ は bi = 1 を設定し、mr,s∗ を伝播します。 私は = (ESIGi(1), ESIGi(vi), \(\sigma\)r,s∗ 私は ) 時刻 \(\alpha\)r,s∗ 私は +ts∗.ケース 2.2.a と同様に、さらに最大 3 つのステップ(つまり、プロトコル ステップ s∗+3 に達すると、これは別の Coin-Fixed-To-1 ステップです)、すべての正直なユーザーは Br = Br を知っています。 ああ 時間間隔 Ir+1 内。さらに、T r+1 は、\(\leq\)T r+\(\lambda\)+ts∗+1、または\(\leq\)T r+\(\lambda\)+ts∗+2 であってもよく、 または \(\leq\)T r + \(\lambda\) + ts∗+3、正直な検証者が最初に停止できるのがいつかに応じて 伝播せずに。 4 つのサブケースを組み合わせると、すべての正直なユーザーが時間間隔内で Br を知っていることがわかります。 Ir+1、付き T r+1 \(\leq\)T r + \(\lambda\) + ts∗ (ケース 2.1.a および 2.1.b)、および ケース 2.2.a および 2.2.b では、T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3。 ケース 2 では、上限 s∗、したがって T r+1 に残りますが、これを行うには、次の方法が考えられます。 多くの場合、コインを本物に投げたステップがプロトコル内で実際に実行されます。 正直な検証者の中には、実際にコインを投げた人もいます。 特に、コインを本物に投げたステップ s' を任意に固定します (つまり、7 \(\leq\) s' \(\leq\) m + 2、および s′ −2 ≡2 mod 3) とし、\(\ell\)′ \(\triangleq\)arg minj\(\in\)SV r,s′−1 H(\(\sigma\)r,s′−1 j )。今のところ、s' < s∗ と仮定しましょう。 それ以外の場合は、前に示したように、正直な検証者はステップ s で実際にコインを投げることはできないからです。 議論。 SV r,s'-1 の定義により、\(\ell\)' の資格情報の hash 値も次の中で最小になります。 PKr-k のすべてのユーザ。 hash 関数はランダムな oracle であるため、理想的にはプレイヤー \(\ell\)′ は次のように正直になります。 少なくとも h の確率。後で示すように、たとえ敵対者が最善を尽くして予測しようとしても、 ランダム oracle を出力して確率を傾けても、プレイヤー \(\ell\)′ は依然として確率に対して正直です少なくとも ph = h2(1 + h −h2)。以下では、それが実際に起こる場合を考えます。 \(\ell\)′\(\in\)HSV r,s′−1。 すべての正直な検証者 i \(\in\)HSV r,s' は、HSV r,s'-1 からのすべてのメッセージを次のように受信していることに注意してください。 時間\(\alpha\)r,s' 私は +ts'。 プレーヤー i がコインを投げる必要がある場合 (つまり、プレーヤー i が 2/3 を超える過半数を見ていない場合) 同じビット b \(\in\){0, 1}) の場合、bi = lsb(H(\(\sigma\)r,s′−1) と設定します。 \(\ell\)’ ))。他に正直な人がいるなら 検証者 i' \(\in\)HSV r,s' ビット b \(\in\){0, 1} について 2/3 を超える多数派を確認し、プロパティによって 補助定理 5.5 の (d)、HSV r,s' の正直な検証者は、しばらくの間 2/3 を超える多数派を確認できなかったでしょう。 b' ̸= b。 lsb(H(\(\sigma\)r,s′−1 \(\ell\)’ )) = b 確率 1/2、HSV r,s' 内のすべての正直な検証者が到達 b については確率 1/2 で一致します。もちろん、そのような検証者 i' が存在しない場合、すべて HSV r,s' の正直な検証者はビット lsb(H(\(\sigma\)r,s'−1 \(\ell\)’ )) 確率 1。 \(\ell\)′ \(\in\)HSV r,s′−1 の確率を組み合わせると、HSV r,s′ における正直な検証者は次のようになります。 少なくとも ph 以上の確率でビット b \(\in\){0, 1} について合意に達する 2 = h2(1+h−h2) 2 。さらに、 以前と同様に多数決による誘導により、HSV r,s のすべての正直な検証者は vi を設定します H(Br \(\ell\))。したがって、ステップ s' で b について合意に達すると、T r+1 は次のようになります。 \(\leq\)T r + \(\lambda\) + ts'+1 または \(\leq\)T r + \(\lambda\) + ts'+2、 ケース 2.1.a および 2.1.b の分析に従って、b = 0 か b = 1 に応じて異なります。で 特に、これ以上のコイン本物投げステップは実行されません。つまり、検証者は このようなステップは、依然として自分が検証者であることを確認するため待機しますが、何も行わずにすべて停止します。 何でも広める。したがって、ステップ s∗ の前では、Coin-AuthenticlyFlipped ステップの実行回数が確率変数 Lr に応じて分配されます。ステップ s' を許可する プロトコルの構築により、Lr によると最後の Coin-Authenticly-Flipped ステップとなる 私たちは持っています s' = 4 + 3Lr。 敵対者が T r+1 をできるだけ遅らせたい場合、いつステップを実行すべきか 可能ですか?敵対者が Lr の実現を事前に知っていると仮定することもできます。もし s∗> s' の場合、正直な検証者はすでに合意に達しているため、それは役に立ちません。 ステップs'。確かに、この場合、s* は、やはり b = 0 かどうかに応じて、s′ +1 または s′ +2 になります。 または b = 1。ただし、これは実際にはケース 2.1.a および 2.1.b であり、結果として得られる T r+1 は正確に あの場合と同じように。より正確には、 T r+1 \(\leq\)T r + \(\lambda\) + ts∗\(\leq\)T r + \(\lambda\) + ts'+2。 s∗< s′ −3 の場合、つまり s∗ が最後から 2 番目のコイン本物投げステップの前である場合、次のようになります。 ケース 2.2.a および 2.2.b の分析、 T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 < T r + \(\lambda\) + ts′。 つまり、敵対者は実際に Br に関する合意をより早く実現させているのです。 s∗= s′ −2 または s′ −1 の場合、つまり Coin-Fixed-To-0 ステップまたは Coin-Fixed-To-1 ステップ ステップ s' の直前 - 次に 4 つのサブケースの分析により、正直な検証者は ステップ s' では、コインが伝播せずに停止しているため、もうコインを投げることはできません。 または、同じビットで 2/3 を超える多数決が見られた場合 b.したがって、私たちは T r+1 \(\leq\)T r + \(\lambda\) + ts∗+3 \(\leq\)T r + \(\lambda\) + ts'+2。要約すると、それが何であっても、私たちは 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\) + Λ、 私たちが見せたかったとおり。最悪のケースは、s∗= s′ −1 でケース 2.2.b が発生する場合です。 バイナリ BA プロトコルのケース 1 とケース 2 を組み合わせると、補題 5.3 が成り立ちます。 ■ 5.9 シード Qr の安全性と誠実なリーダーの確率 補題 5.4 を証明することはまだ残っています。ラウンド r の検証者は PKr-k から取得され、 量 Qr−1 に従って選択されます。ルックバックパラメータ k を導入する理由 ラウンド r -k に戻って、敵対者が新しい悪意のあるユーザーをいつ追加できるかを確認することです。 PKr−k に対して、無視できる確率を除いて量 Qr−1 を予測することはできません。注意してください。 hash 関数はランダムな oracle であり、Qr-1 はラウンド r の検証器を選択するときの入力の 1 つです。 したがって、いかに悪意のあるユーザが PKr-k に追加されたとしても、敵対者の観点からは、それぞれのユーザが そのうちの 1 つが、ラウンド r のステップで必要な確率 p (または ステップ 1 の p1)。より正確には、次の補題があります。 補題 5.6. k = O(log1/2 F) の場合、ラウンド r ごとに、圧倒的な確率で敵対者が ラウンド r −k で Qr−1 をランダムな oracle に問い合わせませんでした。 証拠。帰納法で進めていきます。 \(\gamma\) < r の各ラウンドで、敵対者がクエリを行わなかったと仮定します。 Q\(\gamma\)−1 からラウンド \(\gamma\) −k.21 に戻るランダムな oracle へ。 敵対者はラウンド r −k で Qr−1 を予測しようとします。 各ラウンドのステップ 1 では、 \(\gamma\) = r −k、. 。 。 , r −1、ランダムにクエリされない特定の Q\(\gamma\)−1 が与えられた場合 oracle、hash 値 H(SIGi(\(\gamma\), 1, Q\(\gamma\)-1)) に従ってプレーヤー i \(\in\)PK\(\gamma\)-k を順序付けることによって 徐々に、PK\(\gamma\)−k にわたるランダムな置換が得られます。定義上、リーダー \(\ell\) \(\gamma\) は 順列の最初のユーザーであり、確率 h で正直です。また、PK\(\gamma\)−kが大きい場合には、 任意の整数 x \(\geq\)1 について、順列内の最初の x 人のユーザーが全員である確率は十分です。 悪意はありますが、(x + 1) 番目に正直なのは (1 −h)xh です。 \(\ell\) \(\gamma\) が正直であれば、Q\(\gamma\) = H(SIG\(\ell\) \(\gamma\)(Q\(\gamma\)−1), \(\gamma\)) となります。敵対者は署名を偽造できないため、 \(\ell\) \(\gamma\) の Q\(\gamma\) は、敵対者の観点からはランダムに均一に分布します。 指数関数的に小さい確率で、22 はラウンド r −k で H に対してクエリされませんでした。 それぞれなので Q\(\gamma\)+1、Q\(\gamma\)+2、. 。 。 、Qr−1はそれぞれ、Q\(\gamma\)、Q\(\gamma\)+1、. 。 。 、Qr−2 を入力の 1 つとして、 敵対者にとってそれらはすべてランダムに見えるため、敵対者は次の時点で Qr-1 を H に問い合わせることはできません。 r −k を丸めます。 したがって、敵対者がラウンド時に高い確率で Qr−1 を予測できる唯一のケース r−k は、すべてのリーダー \(\ell\)r−k, . 。 。 、\(\ell\)r−1 は悪意があります。もう一度丸め \(\gamma\) \(\in\){r−k を考えます。 。 。 、r−1} および対応する hash 値によって引き起こされる PK\(\gamma\)-k にわたるランダムな置換。一部の人にとっては x \(\geq\)2 の場合、順列内の最初の x −1 人のユーザーはすべて悪意があり、x 番目のユーザーは正直です。 敵対者には、Q\(\gamma\) について x 個の可能な選択肢があります。H(SIGi(Q\(\gamma\)−1, \(\gamma\))) の形式のいずれかです。ここで、i は次のいずれかです。 21 k が小さな整数であるため、一般性を失うことなく、プロトコルの最初の k ラウンドが実行されると仮定できます。 安全な環境下で行われ、これらのラウンドでは帰納的仮説が当てはまります。 22つまり、H の出力の長さは指数関数的になります。この確率は F よりもはるかに小さいことに注意してください。プレイヤー i をラウンド \(\gamma\) の実際のリーダーにすることで、最初の x-1 人の悪意のあるユーザー。または H(Q\(\gamma\)−1, \(\gamma\))、 B\(\gamma\) = B\(\gamma\) を強制する ァ 。それ以外の場合、ラウンド \(\gamma\) のリーダーが順列で最初の正直なユーザーになります。 そして、Qr-1 は敵対者にとって予測不可能になります。 Q\(\gamma\) の上記 x 個のオプションのうち、敵対者はどれを追求すべきですか?敵を助けるために この質問に答えてください。心理ゲームでは、実際に彼を実際よりも強力にします。 は以下の通りです。まず第一に、実際には、敵対者は正直なユーザーの hash を計算することはできません。 したがって、署名では、各 Q\(\gamma\) について、最初の悪意のあるユーザーの数 x(Q\(\gamma\)) を決定できません。 Q\(\gamma\) によって誘発されるラウンド \(\gamma\) + 1 のランダム順列の。心理的なゲームで、私たちは彼に次のことを与えます。 ナンバーズx(Q\(\gamma\))を無料で。次に、実際には、順列内の最初の x 人のユーザーがすべて 悪意があるからといって、必ずしも全員がリーダーになれるわけではありません。 それらの署名の値も p1 未満でなければなりません。私たちはこの精神的な制約を無視してきました。 ゲームでは、敵対者にさらに有利な点が与えられます。 精神的なゲームにおいて、敵対者にとっての最適な選択肢は ^Q\(\gamma\) で示されることが容易にわかります。 ランダムな開始時に悪意のあるユーザーの最長のシーケンスを生成するものです。 実際、特定の Q\(\gamma\) が与えられると、プロトコルは Q\(\gamma\)−1 に依存しません。 もはや、敵対者はラウンド \(\gamma\) + 1 の新しい順列のみに集中できます。 最初の悪意のあるユーザーの数の分布は同じです。したがって、各ラウンドで \(\gamma\)、上記の ^Q\(\gamma\) は、Q\(\gamma\)+1 の最大数のオプションを与え、したがって、 連続するリーダーがすべて悪意がある確率。 したがって、心理ゲームでは、敵対者はラウンド r −k からマルコフ連鎖に従います。 状態空間を {0} \(\cup\){x : x \(\geq\)2} として r −1 を丸めます。状態 0 は、 現在のラウンドのランダム順列の最初のユーザー \(\gamma\) は正直であるため、敵対者は失敗します。 Qr−1 を予測するゲーム。そして、各状態 x \(\geq\)2 は、その状態の最初の x −1 人のユーザーが、 順列は悪意があり、x 番目は正直であるため、敵対者には Q\(\gamma\) に対して x 個のオプションがあります。の 遷移確率 P(x, y) は次のとおりです。 • y \(\geq\)2 の場合、P(0, 0) = 1 および P(0, y) = 0。つまり、敵対者は最初にゲームに失敗します。 順列内のユーザーは正直になります。 • x \(\geq\)2 の場合、P(x, 0) = hx。つまり、確率 hx では、すべての x 個のランダムな置換は次のようになります。 最初のユーザーは正直であるため、敵対者は次のラウンドでゲームに失敗します。 • 任意の x \(\geq\)2 および y \(\geq\)2 について、P(x, y) は、x 個のランダムな順列のうち、 Q\(\gamma\) の x オプションによって引き起こされます。Q\(\gamma\) は、最初の悪意のあるユーザーの最長のシーケンスです。 それらの一部は y −1 であるため、敵対者は次のラウンドで Q\(\gamma\)+1 に対して y 個のオプションを持ちます。つまり、 P(x, y) = y−1 \(\times\) i=0 (1 −h)ih !x − y−2 \(\times\) i=0 (1 −h)ih !x = (1 −(1 −h)y)x −(1 −(1 −h)y−1)x。 状態 0 は遷移行列 P 内の固有の吸収状態であり、他のすべての状態であることに注意してください。 x は 0 になる正の確率を持っています。私たちは、次の数 k の上限に興味があります。 マルコフ連鎖が圧倒的な確率で 0 に収束するのに必要なラウンド数、つまり、 チェーンがどの状態で開始されるかに関係なく、圧倒的な確率で敵対者がゲームに負けます。 そしてラウンド r −k で Qr−1 を予測できません。 2 ラウンド後の遷移行列 P (2) \(\triangleq\) P \(\cdot\) P を考えます。 P (2)(0, 0) = 1 であることが簡単に分かります。 x \(\geq\) 2 の場合、P (2)(0, x) = 0 となります。任意の x \(\geq\)2 および y \(\geq\)2 について、P(0, y) = 0 であるため、次のようになります。 P (2)(x, y) = P(x, 0)P(0, y) + \(\times\) z≧2 P(x, z)P(z, y) = \(\times\) z≧2 P(x, z)P(z, y)。 ̄h \(\triangleq\)1 −h とすると、次のようになります。 P(x, y) = (1 − ̄hy)x −(1 − ̄hy−1)x そして P (2)(x, y) = \(\times\) z≧2 [(1 − ̄hz)x −(1 − ̄hz−1)x][(1 − ̄hy)z −(1 − ̄hy−1)z]。 以下では、P (2)(x,y) の限界を計算します。 P (x,y) h が 1 になると、つまり、 ̄h は 0 になります。 P(x, y) の  ̄h の次数は  ̄hy−1 であり、係数は x です。したがって、 リム h \(\to\) 1 P(2)(x,y) P(x, y) =リム  ̄h \(\to\) 0 P(2)(x,y) P(x, y) =リム  ̄h \(\to\) 0 P(2)(x,y) x ̄hy−1 + O( ̄hy) = リム  ̄h \(\to\) 0 P z\(\geq\)2[x ̄hz−1 + O( ̄hz)][z ̄hy−1 + O( ̄hy)] x ̄hy−1 + O( ̄hy) =リム  ̄h \(\to\) 0 2x ̄hy + O( ̄hy+1) x ̄hy−1 + O( ̄hy) = リム  ̄h \(\to\) 0 2xhy x ̄hy−1 = lim  ̄h \(\to\) 0 2 ̄h = 0。 h が 1,23 に十分近い場合、次のようになります。 P(2)(x,y) P(x, y) \(\leq\)1 2 任意の x \(\geq\)2 および y \(\geq\)2 に対して。帰納法により、任意の k > 2 について、P (k) \(\triangleq\) P k は次のようになります。 • x \(\geq\)2 の場合、P (k)(0, 0) = 1、P (k)(0, x) = 0、および • x \(\geq\)2 および y \(\geq\)2 の場合、 P (k)(x, y) = P (k−1)(x, 0)P(0, y) + \(\times\) z≧2 P (k−1)(x, z)P(z, y) = \(\times\) z≧2 P (k−1)(x, z)P(z, y) \(\leq\) \(\times\) z≧2 P(x, z) 2k−2 ・P(z,y)=P(2)(x,y) 2k−2 \(\leq\)P(x, y) 2k−1 。 P(x, y) \(\leq\)1 であるため、1−log2 F 丸め後、y \(\geq\)2 の状態への遷移確率は無視できます。 任意の状態 x \(\geq\)2 から開始します。このような状態 y はたくさんありますが、次のことは簡単にわかります。 リム y→+∞ P(x, y) P(x, y + 1) = リム y→+∞ (1 − ̄hy)x −(1 − ̄hy−1)x (1 − ̄hy+1)x −(1 − ̄hy)x = リム y→+∞  ̄hy−1 − ̄hy  ̄hy − ̄hy+1 = 1  ̄h = 1 1 −時間。 したがって、遷移行列 P の各行 x は、比率を伴う等比数列として減少します。 1 1−h > 2 y が十分に大きい場合、同じことが P (k) にも当てはまります。したがって、k が十分に大きいにもかかわらず、 log1/2 F、P程度 任意の x \(\geq\)2 について、y\(\geq\)2 P (k)(x, y) < F。つまり、圧倒的な確率で 敵対者はゲームに負け、ラウンド r −k で Qr−1 を予測できません。 h \(\in\)(2/3, 1] の場合、さらに 複素解析により、1/2 よりわずかに大きい定数 C が存在することがわかり、 k = O(logC F) を取得します。したがって、補題 5.6 が成り立ちます。 ■ 補題 5.4. (再掲) r の前の各ラウンドでプロパティ 1 ~ 3 が与えられると、Lr に対して ph = h2(1 + h −h2)、 そしてリーダー\(\ell\)r は少なくとも ph の確率で正直です。 23たとえば、パラメータの特定の選択によって示唆されるように、h = 80% です。
証拠。補助定理 5.6 に従って、敵対者は次の場合を除いてラウンド r −k で Qr−1 を予測することはできません。 無視できる確率。これは、正直なリーダーの確率が h であることを意味するものではないことに注意してください。 各ラウンド。確かに、Qr-1 が与えられると、最初に悪意のあるユーザーが何人いるかによって異なります。 PKr-k のランダムな置換により、敵対者は Qr および したがって、ラウンド r + 1 で悪意のあるリーダーの確率が増加する可能性があります。ここでも、彼に与えます。 分析を簡素化するために、補助定理 5.6 のようないくつかの非現実的な利点を考慮します。 ただし、ラウンド r −k で敵対者によって H に対してクエリされなかった各 Qr−1 について、 任意の x \(\geq\)1、確率 (1 −h)x−1h で、最初の正直なユーザーが結果の位置 x に出現します。 PKr-k のランダムな並べ替え。 x = 1 の場合、ラウンド r + 1 の正直なリーダーの確率は次のようになります。 確かに、h;一方、x = 2 の場合、敵対者には Qr に対して 2 つの選択肢があり、その結果の確率は次のようになります。 h2.これら 2 つのケースを考慮するだけで、ラウンドで正直なリーダーが現れる確率がわかります。 r + 1 は、必要に応じて、少なくとも h \(\cdot\) h + (1 −h)h \(\cdot\) h2 = h2(1 + h −h2) です。 上記の確率はラウンド r −k からのプロトコルのランダム性のみを考慮していることに注意してください。 rを丸めます。ラウンド 0 からラウンド r までのすべてのランダム性を考慮すると、Qr−1 は次のようになります。 敵対者にとってはさらに予測可能ではなく、ラウンド r + 1 で正直なリーダーが現れる確率は次のとおりです。 最小 h2(1 + h −h2)。 r + 1 を r に置き換え、すべてを 1 ラウンド戻すと、リーダー \(\ell\)r は、希望通り、少なくとも h2(1 + h −h2) の確率で正直です。 同様に、本物のコインを投げた各ステップ s では、そのステップの「リーダー」、つまり検証者が決まります。 SV r では、クレデンシャルの値が最小の hash を持つ s は、少なくとも h2(1 + h −h2)。したがって、Lr については ph = h2(1 + h −h2) となり、補題 5.4 が成り立ちます。 ■
Algorand '
2 이 섹션에서는 다음 가정 하에 작동하는 Algorand ' 버전을 구성합니다. 정직한 다수의 사용자 가정: 각 PKr의 사용자 중 2/3 이상이 정직합니다. 섹션 8에서는 위의 가정을 원하는 정직한 다수로 대체하는 방법을 보여줍니다. 돈 가정. 6.1 Algorand ′에 대한 추가 표기법 및 매개변수 2 표기법 • \(\mu\) \(\in\)Z+: 압도적인 확률로, 단계 수에 대한 실용적인 상한 실제로는 한 라운드에 완료됩니다. (앞으로 살펴보겠지만 매개변수 μ는 임시 변수의 수를 제어합니다. 각 라운드마다 사용자가 미리 준비하는 키입니다.) • Lr: 1을 확인하는 데 필요한 베르누이 시행 횟수를 나타내는 무작위 변수입니다. 시행은 확률이 ph인 경우 1입니다. 2 . Lr은 생성에 필요한 시간의 상한을 지정하는 데 사용됩니다. 블록 브롬 • tH: 라운드 r의 s > 1 단계에서 정직한 검증자 수에 대한 하한입니다. 압도적인 확률(n과 p가 주어지면) SV r,s에는 > tH개의 정직한 검증자가 있습니다. 매개변수 • 다양한 매개변수 간의 관계. — 라운드 r의 각 단계 s > 1에 대해 압도적인 확률로 n이 선택됩니다.
|HSV r,s| > 일 그리고 |HSV r,s| + 2|MSV r,s| < 2tH. 위의 두 부등식은 |HSV r,s|를 의미합니다. > 2|MSV r,s|: 즉, 선택된 검증자 중 2/3가 정직한 다수입니다. h 값이 1에 가까울수록 n은 더 작아야 합니다. 특히, 우리는 (변종 of) 원하는 조건이 압도적인 확률로 유지되도록 Chernoffbounds. • 중요한 매개변수의 예시 선택. — F = 10−18. — n \(\approx\)4000, tH \(\approx\)0.69n, k = 70. 6.2 Algorand '에서 임시 키 구현 2 검증자 i \(\in\)SV r,s가 자신의 메시지 mr,s에 디지털 방식으로 서명한다는 점을 기억하세요. 나 라운드 r의 단계 s에 대해 임시 공개 키 pkr,s i , 임시 비밀 키 skr을 사용하여 나 그는 즉시 파괴한다 사용 후. 라운드에서 취할 수 있는 가능한 단계 수가 주어진 단계로 제한되는 경우 정수 \(\mu\), 우리는 임시 키를 실제로 처리하는 방법을 이미 살펴보았습니다. 예를 들어, 우리는 Algorand '에서 설명했습니다. 1(여기서 \(\mu\) = m + 3), 가능한 모든 임시 키를 처리하려면 라운드 r'에서 라운드 r' + 106으로, i는 PMK 공개 마스터인 쌍(PMK, SMK)을 생성합니다. 신원 기반 서명 체계의 키 및 SMK에 해당하는 비밀 마스터 키. 사용자 i PMK를 공개하고 SMK를 사용하여 가능한 각 임시 공개 키의 비밀 키를 생성합니다. (그리고 그렇게 한 후 SMK를 파괴합니다). 관련에 대한 i의 임시 공개 키 세트 라운드는 S = {i} \(\times\) {r′, . . . , r' + 106} \(\times\) {1, . . . , \(\mu\)}. (논의된 바와 같이, 라운드 r' + 106이 접근함에 따라, 나는 그의 쌍(PMK, SMK)을 "새로 고침"합니다.) 실제로 \(\mu\)가 충분히 크면 Algorand '의 라운드가 됩니다. 2는 \(\mu\) 단계 이상 걸리지 않습니다. 에서 그러나 원칙적으로는 어떤 라운드에서는 단계 수가 줄어들 가능성이 희박합니다. 실제로 복용하면 μ를 초과합니다. 이런 일이 발생하면 저는 그의 메시지에 서명할 수 없습니다. 나 에 대한 모든 단계 s > \(\mu\), 왜냐하면 그는 라운드 r에 대해 \(\mu\) 비밀 키만 미리 준비했기 때문입니다. 게다가 그는 앞서 논의한 것처럼 임시 키의 새로운 보관을 준비하고 공개할 수 없었습니다. 사실 할 일은 따라서 그는 새 블록에 새로운 공개 마스터 키 PMK'를 삽입해야 합니다. 하지만 r을 반올림해야 합니다. 점점 더 많은 단계를 수행하면 새 블록이 생성되지 않습니다. 그러나 해결책이 존재합니다. 예를 들어, i는 라운드 r, pkr,μ의 마지막 임시 키를 사용할 수 있습니다. 나 , 다음과 같이. 그는 라운드 r에 대한 또 다른 키 쌍 숨김을 생성합니다. 예를 들어 (1) 다른 키 쌍을 생성합니다. 마스터 키 쌍(PMK, SMK) (2) 이 쌍을 사용하여 또 다른 106개의 임시 키를 생성합니다. sk r,μ+1 나 , . . . , SK r,μ+106 나 , 라운드 r의 단계 \(\mu\)+1, ..., \(\mu\)+106에 해당합니다. (3) skr,μ 사용 나 디지털 방식으로 pkr,μ를 기준으로 PMK(및 i \(\in\)SV r,μ인 경우 모든 (r,μ)-메시지)에 서명합니다. 나 ; (4) SMK 및 skr 삭제,μ 나 . 나는 s \(\in\){1, . . . , 106}, 그런 다음 나는 그의 (r, \(\mu\) + s)에 디지털 서명을 합니다. 메시지 Mr,μ+s 나 그의 새 키 pk와 관련하여 r,μ+s 나 = (i, r, \(\mu\) + s). 물론 이 서명을 확인하려면 i의 경우, 다른 사람들은 이 공개 키가 i의 새로운 공개 마스터 키 PMK와 일치하는지 확인해야 합니다. 따라서 이 서명에 추가로 i는 pkr,μ를 기준으로 PMK의 디지털 서명을 전송합니다. 나 . 물론, 이 접근법은 필요한 만큼 반복될 수 있습니다. 라운드 r이 계속되어야 합니다. 점점 더 많은 단계를 위해! 마지막 임시 비밀 키는 새로운 마스터 퍼블릭을 인증하는 데 사용됩니다. 키, 즉 라운드 r에 대한 또 다른 임시 키가 숨겨져 있습니다. 등.6.3 실제 프로토콜 Algorand ' 2 라운드 r의 각 단계 s에서 검증자 i \(\in\)SV r,s가 자신의 장기 공개 비밀을 사용한다는 점을 다시 상기하세요. 그의 자격 증명 \(\sigma\)r,s를 생성하기 위한 키 쌍 나 \(\triangleq\)SIGi(r, s, Qr−1) 및 SIGi Qr−1 s = 1인 경우. 검증자 i는 자신의 임시 키 쌍(pkr,s)을 사용합니다. 나, skr, s i ), 다른 메시지 m에 서명하려면 필수. 단순화를 위해 sigpkr,s 대신 esigi(m)을 씁니다. i(m), i의 적절한 임시를 나타냅니다. 이 단계에서 m의 서명을 입력하고 SIGpkr,s 대신 ESIGi(m)을 작성합니다. i(m) \(\triangleq\)(i, m, esigi(m)). 1단계: 블록 제안 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 라운드 r의 1단계를 시작하자마자 자신의 라운드 r을 시작합니다. CERT r−1, 이를 통해 i는 H(Br−1) 및 Qr−1을 명확하게 계산할 수 있습니다. • 사용자 i는 Qr−1을 사용하여 i \(\in\)SV r,1인지 여부를 확인합니다. i /\(\in\)SV r,1이면 그는 1단계에서 아무것도 하지 않습니다. • i \(\in\)SV r,1, 즉 i가 잠재적 리더라면 그는 다음을 수행합니다. (a) 내가 B0을 본 적이 있다면, . . . , Br−1 자신(모든 Bj = Bj 는 hash 값에서 쉽게 파생될 수 있습니다. CERT j에서 "본" 것으로 간주됨) 그런 다음 그는 라운드 R 지불금을 수집합니다. 지금까지 그에게 전파되어 최대 지불 세트 PAY r을 계산합니다. 나는 그들에게서. (b) B0을 모두 보지 못했다면, . . . , Br-1이지만 PAY r을 설정합니다. 나는 = \(\emptyset\). (c) 다음으로, 나는 그의 "후보 블록" Br을 계산합니다. 나는 = (r, 지불 r i , SIGi(Qr−1), H(Br−1)). (c) 마지막으로, i는 메시지 mr,1을 계산합니다. 나 = (Br i , Esigi(H(Br i )), \(\sigma\)r,1 i), 그의 일시적인 것을 파괴한다 비밀키 skr,1 i , 그런 다음 mr,1이라는 두 개의 메시지를 전파합니다. 나 그리고 (SIGi(Qr−1), \(\sigma\)r,1 나), 별도로 그러나 동시에.a ai가 리더일 때 SIGi(Qr−1)은 다른 사람들이 Qr = H(SIGi(Qr−1), r)을 계산하도록 허용합니다.
선택적 전파 1단계와 전체 라운드의 전역 실행을 단축하려면 (r, 1)- 메시지는 선택적으로 전파됩니다. 즉, 시스템의 모든 사용자 j에 대해 • 그가 수신하고 성공적으로 확인한 첫 번째 (r, 1) 메시지에 대해 a가 포함되어 있는지 여부 블록이거나 Qr−1의 자격 증명 및 서명인 경우 플레이어 j는 이를 평소대로 전파합니다. • 플레이어 j가 수신하고 성공적으로 확인한 다른 모든 (r, 1) 메시지에 대해 그는 전파합니다. 포함된 자격 증명의 hash 값이 hash 값 중에서 가장 작은 경우에만 해당됩니다. 그가 수신하고 성공적으로 확인한 모든 (r, 1) 메시지에 포함된 자격 증명 중 멀리. • 그러나 j가 mr,1 형식의 서로 다른 두 개의 메시지를 받으면 나 같은 플레이어 i,b 그에게서 i 자격 증명의 hash 값에 관계없이 두 번째 자격 증명을 삭제합니다. 선택적 전파에서는 각 잠재적 리더가 자신의 리더를 전파하는 것이 유용합니다. 자격 증명 \(\sigma\)r,1 나 Mr,1과는 별도로 i :c 작은 메시지는 블록보다 빠르게 전달됩니다. Mr,1의 적시 전파 i 는 포함된 자격 증명에 작은 hash 값이 있는 반면 hash 값이 큰 항목을 빠르게 사라지게 만듭니다. a즉, 모든 서명이 정확하며, mr,1 형식인 경우 i, 블록과 해당 hash이 모두 유효합니다. - j는 포함된 페이세트가 i에 대해 최대인지 여부를 확인하지 않습니다. b그 말은 내가 악의적이라는 뜻이다. c이를 제안한 Georgios Vlachos에게 감사드립니다.2단계: 단계적 합의 프로토콜 GC의 첫 번째 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 라운드 r의 2단계를 시작하자마자 시작합니다. CERT r-1. • 사용자 i는 최대 시간 t2 \(\triangleq\) \(\lambda\) + Λ 동안 기다립니다. 기다리는 동안 나는 다음과 같이 행동합니다. 1. 2\(\lambda\) 시간을 기다린 후 그는 H(\(\sigma\)r,1)과 같은 사용자 \(\ell\)를 찾습니다. \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j) 모두를 위해 자격 증명 \(\sigma\)r,1 j 이는 그가 수신한 성공적으로 검증된 (r, 1) 메시지의 일부입니다. 지금까지.a 2. 만일 그 있다 받은 에 블록 Br-1, 어느 성냥 는 hash 가치 H(Br−1) CERT r−1,b에 포함되어 있고 그가 \(\ell\)a로부터 유효한 메시지를 받았다면 mr,1 \(\ell\) = (Br \(\ell\), 대략\(\ell\)(H(Br \(\ell\))), \(\sigma\)r,1 \(\ell\)),c 그러면 나는 기다리기를 멈추고 v′를 설정한다. 나는 \(\triangleq\)(H(Br \(\ell\)), \(\ell\)). 3. 그렇지 않고, 시간 t2가 다 되면 v'를 설정합니다. 나는 \(\triangleq\) \(\bot\). 4. v′의 값이 i가 설정되면 i는 CERT r−1에서 Qr−1을 계산하고 다음을 확인합니다. i \(\in\)SV r,2인지 아닌지. 5. i \(\in\)SV r,2이면 i는 메시지 mr,2를 계산합니다. 나 \(\triangleq\)(ESIGi(v′ 나), \(\sigma\)r,2 i ),d는 그의 일시적인 것을 파괴한다 비밀키 skr,2 i , 그런 다음 mr,2를 전파합니다. 나. 그렇지 않으면 전파하지 않고 중지됩니다. 무엇이든. a본질적으로 사용자 i는 라운드 r의 리더가 사용자 \(\ell\)임을 개인적으로 결정합니다. b물론 CERT r−1이 Br−1 = Br−1임을 나타내는 경우 ? , 그렇다면 그가 Br−1을 받은 순간 나는 이미 Br−1을 “받았습니다”. CERT r-1. c다시 말하지만, 플레이어 \(\ell\)의 서명과 hashes가 모두 성공적으로 검증되었으며 PAY r \(\ell\)in Br \(\ell\)는 다음에 대한 유효한 지불 세트입니다. 라운드 r — PAY r인지 확인하지는 않지만 \(\ell\)는 \(\ell\)또는 \(\ell\)에 대해 최대값입니다. 만약 Br \(\ell\)에 빈 페이세트가 포함되어 있는 경우 실제로 Br인지 확인하기 전에 Br−1을 볼 필요가 없습니다. \(\ell\)는 유효한지 아닌지입니다. d메시지 Mr,2 나 플레이어 i가 v'의 첫 번째 구성 요소를 고려한다는 신호 나는 다음 블록의 hash이 됩니다. 또는 다음 블록이 비어 있는 것으로 간주합니다.
3단계: GC의 두 번째 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 라운드 r의 3단계를 시작하자마자 시작합니다. CERT r-1. • 사용자 i는 최대 시간 t3 \(\triangleq\)t2 + 2\(\lambda\) = 3\(\lambda\) + Λ 동안 기다립니다. 기다리는 동안 나는 다음과 같은 역할을 한다. 다음과 같습니다. 1. 적어도 tH개의 유효한 메시지를 수신한 값 v가 존재하는 경우 mr,2 j 의 형식 (ESIGj(v), \(\sigma\)r,2 j) 아무런 모순 없이 a 그런 다음 그는 기다리기를 멈추고 설정합니다. v' = v. 2. 그렇지 않고, 시간 t3이 다 되면 v' = \(\bot\)로 설정합니다. 3. v'의 값이 설정되면 i는 CERT r−1에서 Qr−1을 계산하고 다음을 확인합니다. i \(\in\)SV r,3인지 아닌지. 4. i \(\in\)SV r,3이면 i는 mr,3 메시지를 계산합니다. 나 \(\triangleq\)(ESIGi(v′), \(\sigma\)r,3 i), 그의 것을 파괴한다 임시 비밀 키 skr,3 i, 그런 다음 mr,3을 전파합니다. 나. 그렇지 않으면 나는 없이 멈춘다 무엇이든 전파합니다. a즉, 그는 각각 ESIGj(v)와 다른 ESIGj(ˆv)를 포함하는 두 개의 유효한 메시지를 수신하지 못했습니다. j 선수로부터. 나중에 정의되는 종료 조건을 제외하고 여기서부터, 정직한 플레이어가 특정 형식의 메시지를 원할 경우 서로 모순되는 메시지는 계산되지 않거나 유효한 것으로 간주되지 않습니다.
4단계: GC의 출력과 BBA의 첫 번째 단계⋆ 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 4단계를 시작합니다. 스스로 3단계를 마친다. • 사용자 i는 최대 2\(\lambda\).a 동안 대기합니다. 대기하는 동안 i는 다음과 같이 행동합니다. 1. 그는 GC의 출력인 vi와 gi를 다음과 같이 계산합니다. (a) v′ ̸= \(\bot\) 적어도 tH개의 유효한 메시지를 수신한 값이 존재하는 경우 씨,3 j = (ESIGj(v′), \(\sigma\)r,3 j ), 그 다음 그는 기다리기를 멈추고 vi \(\triangleq\)v′ 및 gi \(\triangleq\)2를 설정합니다. (b) 만약 그가 적어도 tH개의 유효한 메시지를 받았다면 mr,3 j = (ESIGj(\(\bot\)), \(\sigma\)r,3 j ) 그런 다음 그는 멈춥니다. 기다리고 vi \(\triangleq\) \(\bot\) 및 gi \(\triangleq\)0.b를 설정합니다. (c) 그렇지 않고, 시간 2\(\lambda\)가 다 되었을 때, v′ ̸= \(\bot\)라는 값이 존재한다면 그는 다음과 같습니다. 최소 ⌈tH를 받았습니다 2 ⌉유효한 메시지 mr,j j = (ESIGj(v′), \(\sigma\)r,3 j ), 그런 다음 vi \(\triangleq\)v′를 설정합니다. 그리고 gi \(\triangleq\)1.c (d) 그렇지 않고, 2\(\lambda\)의 시간이 지나면 vi \(\triangleq\) \(\bot\)과 gi \(\triangleq\)0을 설정합니다. 2. vi와 gi 값이 설정되면 i는 BBA⋆의 입력인 bi를 다음과 같이 계산합니다. gi = 2이면 bi \(\triangleq\)0이고, 그렇지 않으면 bi \(\triangleq\)1입니다. 3. i는 CERT r−1에서 Qr−1을 계산하고 i \(\in\)SV r,4인지 여부를 확인합니다. 4. i \(\in\)SV r,4이면 그는 메시지 mr,4를 계산합니다. 나 \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i), 그의 것을 파괴한다 임시 비밀 키 skr,4 i , 그리고 mr,4를 전파합니다. 나. 그렇지 않으면 전파하지 않고 중지됩니다. 무엇이든. a따라서 i가 라운드 r의 1단계를 시작한 이후 최대 총 시간은 t4 \(\triangleq\)t3 + 2\(\lambda\) = 5\(\lambda\) + Λ가 될 수 있습니다. b단계 (b)가 프로토콜에 있는지 여부는 정확성에 영향을 미치지 않습니다. 그러나 단계 (b)의 존재 충분히 많은 3단계 검증자가 "\(\bot\)에 서명"한 경우 4단계가 2\(\lambda\) 미만의 시간 내에 끝날 수 있습니다. c이 경우 v′가 존재한다면 고유해야 함을 증명할 수 있습니다.단계 s, 5 \(\leq\)s \(\leq\)m + 2, s −2 ‚0 mod 3: BBA⋆의 코인 고정-0 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 단계 s를 시작합니다. 자신의 단계 s-1을 완료합니다. • 사용자 i는 최대 2\(\lambda\).a 동안 대기합니다. 대기하는 동안 i는 다음과 같이 행동합니다. – 종료 조건 0: 임의의 지점에 문자열 v ̸= \(\bot\)과 단계 s′가 존재하는 경우 (a) 5 \(\leq\)s′ \(\leq\)s, s′ −2 pho mod 3 — 즉, s′ 단계는 Coin-Fixed-To-0 단계입니다. (b) 나는 적어도 tH개의 유효한 메시지 mr,s'-1을 수신했습니다. j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j ),b 그리고 (c) 나는 유효한 메시지(SIGj(Qr−1), \(\sigma\)r,1)를 수신했습니다. j ) j가 두 번째임 v의 구성 요소, 그런 다음 나는 기다리는 것을 멈추고 자신의 Step s 실행을 종료합니다(실제로는 r 라운드에서도). (r, s) 검증자로서 아무것도 전파하지 않고 즉시; H(Br)을 첫 번째로 설정합니다. v의 구성요소; 그리고 자신의 CERT r을 메시지 mr,s′-1의 집합으로 설정합니다. j (b) 단계 (SIGj(Qr−1), \(\sigma\)r,1과 함께 j).c – 종료 조건 1: 어느 시점에 다음과 같은 단계 s'가 존재하는 경우 (a') 6 \(\leq\)s' \(\leq\)s, s' −2 pho1 mod 3 — 즉, 단계 s'는 Coin-Fixed-To-1 단계이고, (b') 나는 적어도 tH개의 유효한 메시지 mr,s'-1을 수신했습니다. j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j ),디 그러면 나는 기다리는 것을 멈추고 그 자신의 Step s(그리고 실제로는 r 라운드)의 실행을 종료합니다. (r, s)-검증자로서 아무것도 전파하지 않고 멀리 갑니다. Br = Br로 설정 ? ; 그리고 자신이 설정한 CERT r은 메시지 mr,s′−1의 집합입니다. j 하위 단계 (b'). – 만약에 ~에 어떤 포인트 그 있다 받은 ~에 최소한 tH 유효한 씨,s−1 j 의 의 는 형태 (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 그는 기다리기를 멈추고 bi \(\triangleq\)1을 설정합니다. – 만약에 ~에 어떤 포인트 그 있다 받은 ~에 최소한 tH 유효한 씨,s−1 j 의 의 는 형태 (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), 하지만 동일한 v에 동의하지 않으면 그는 중지합니다. 기다리고 bi \(\triangleq\)0을 설정합니다. – 그렇지 않고, 시간 2\(\lambda\)가 다 되면 bi \(\triangleq\)0을 설정합니다. – bi 값이 설정되면 i는 CERT r−1에서 Qr−1을 계산하고 다음을 확인합니다. i \(\in\)SV r,s. – i \(\in\)SV r,s이면 i는 메시지 mr,s를 계산합니다. 나 \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) vi가 있는 경우 4단계에서 그가 계산한 값은 그의 임시 비밀 키 skr을 파괴합니다. 나 , 그리고 나서 Mr,s를 전파합니다 나. 그렇지 않으면 아무것도 전파하지 않고 중지됩니다. a따라서 i가 라운드 r의 1단계를 시작한 이후 최대 총 시간은 ts \(\triangleq\)ts−1 + 2\(\lambda\) = (2s −3) \(\lambda\) + Λ. b플레이어 j로부터의 이러한 메시지는 플레이어 i가 1에 서명한 j로부터 메시지를 받은 경우에도 계산됩니다. 엔딩 조건 1도 비슷한 내용입니다. 분석에서 보듯이 이는 모든 정직한 사용자가 알 수 있도록 하기 위한 것입니다. CERT r은 서로 시간 \(\lambda\) 내에 있습니다. c사용자 i는 이제 H(Br)와 자신의 라운드 r 완료를 알고 있습니다. 그는 실제로 블록 Br이 나올 때까지 기다려야 합니다. 그 사람에게 전파되므로 추가 시간이 걸릴 수 있습니다. 그는 여전히 일반 사용자로서 메시지 전파를 돕고 있습니다. 그러나 (r, s) 검증자로서 전파를 시작하지는 않습니다. 특히 그는 모든 메시지를 전파하는 데 도움을 주었습니다. 그의 CERT r은 우리 프로토콜에 충분합니다. 바이너리 BA 프로토콜에 대해서도 bi \(\triangleq\)0을 설정해야 한다는 점에 유의하세요. 어쨌든 이 경우에는 bi가 필요하지 않습니다. 향후 모든 지침에 대해서도 유사합니다. d이 경우 vj가 무엇인지는 중요하지 않습니다. 65단계 s, 6 \(\leq\)s \(\leq\)m + 2, s −2 ל1 mod 3: BBA⋆의 동전 고정 1 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 단계 s를 시작합니다. 자신의 단계 s-1을 완료합니다. • 사용자 i는 최대 2\(\lambda\)의 시간을 기다립니다. 기다리는 동안 나는 다음과 같이 행동합니다. – 종료 조건 0: Coin-Fixed-To-0 단계와 동일한 지침입니다. – 종료 조건 1: Coin-Fixed-To-0 단계와 동일한 지침입니다. – 만약에 ~에 어떤 포인트 그 있다 받은 ~에 최소한 tH 유효한 씨,s−1 j 의 의 는 형태 (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 그는 기다리기를 멈추고 bi \(\triangleq\)0.a를 설정합니다. – 그렇지 않고, 시간 2\(\lambda\)가 다 되면 bi \(\triangleq\)1을 설정합니다. – bi 값이 설정되면 i는 CERT r−1에서 Qr−1을 계산하고 다음을 확인합니다. i \(\in\)SV r,s. – i \(\in\)SV r,s이면 i는 메시지 mr,s를 계산합니다. 나 \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) vi가 있는 경우 4단계에서 그가 계산한 값은 그의 임시 비밀 키 skr을 파괴합니다. 나 , 그리고 나서 Mr,s를 전파합니다 나. 그렇지 않으면 아무것도 전파하지 않고 중지됩니다. a1에 대한 유효한 (r, s -1) 메시지 서명을 수신하면 종료 조건 1을 의미합니다. 단계 s, 7 \(\leq\)s \(\leq\)m + 2, s −2 ל2 mod 3: BBA⋆의 동전 뒤집기 단계 모든 사용자 i \(\in\)PKr−k를 위한 지침: 사용자 i는 다음과 같이 라운드 r의 단계 s를 시작합니다. 자신의 단계 s-1을 마칩니다. • 사용자 i는 최대 2\(\lambda\)의 시간을 기다립니다. 기다리는 동안 나는 다음과 같이 행동합니다. – 종료 조건 0: Coin-Fixed-To-0 단계와 동일한 지침입니다. – 종료 조건 1: Coin-Fixed-To-0 단계와 동일한 지침입니다. – 만약에 ~에 어떤 포인트 그 있다 받은 ~에 최소한 tH 유효한 씨,s−1 j 의 의 는 형태 (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 그는 기다리기를 멈추고 bi \(\triangleq\)0을 설정합니다. – 만약에 ~에 어떤 포인트 그 있다 받은 ~에 최소한 tH 유효한 씨,s−1 j 의 의 는 형태 (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j ), 그런 다음 그는 기다리기를 멈추고 bi \(\triangleq\)1을 설정합니다. – 그렇지 않은 경우, 시간 2\(\lambda\)가 종료되면 SV r,s−1을 허용합니다. 나 (r, s −1)-검증자의 집합이 됩니다. 그는 유효한 메시지를 받았습니다. mr,s−1 j , 나는 bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1을 설정합니다. 나 H(\(\sigma\)r,s−1 j )). – bi 값이 설정되면 i는 CERT r−1에서 Qr−1을 계산하고 다음을 확인합니다. i \(\in\)SV r,s. – i \(\in\)SV r,s이면 i는 메시지 mr,s를 계산합니다. 나 \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i) vi가 있는 경우 4단계에서 그가 계산한 값은 그의 임시 비밀 키 skr을 파괴합니다. 나 , 그리고 나서 Mr,s를 전파합니다 나. 그렇지 않으면 아무것도 전파하지 않고 중지됩니다. 주목. 원칙적으로 하위 섹션 6.2에서 고려한 바와 같이 프로토콜은 임의로 많은 수를 취할 수 있습니다. 어떤 라운드의 단계. 이런 일이 발생하면 논의한 대로 s > \(\mu\)인 사용자 i \(\in\)SV r,s가 지쳤습니다.
미리 생성된 임시 키를 보관하고 그의 (r, s) 메시지 mr,s를 인증해야 합니다. 나 에 의해 임시 키의 "계단식". 그래서 내 메시지가 좀 길어지고, 이 메시지를 더 길게 전송하게 되니 메시지를 보내는 데 시간이 조금 더 걸립니다. 따라서 주어진 라운드의 여러 단계를 거친 후에는 매개변수 \(\lambda\)는 자동으로 약간 증가합니다. (단, 새로운 값이 나오면 원래의 \(\lambda\)로 되돌아갑니다. 블록이 생성되고 새로운 라운드가 시작됩니다.) 비검증자에 의한 Round-r 블록 재구성 시스템의 모든 사용자 i를 위한 지침: 사용자 i는 라운드 r을 시작하자마자 자신의 라운드 r을 시작합니다. CERT r-1. • 나는 프로토콜의 각 단계의 지침을 따르고 모든 프로토콜의 전파에 참여합니다. 메시지를 전송하지만, 검증자가 아닌 경우 단계에서 전파를 시작하지 않습니다. • 나는 일부 항목에 종료 조건 0 또는 종료 조건 1을 입력하여 자신의 라운드 r을 종료합니다. 해당 CERT r을 사용하여 단계를 수행합니다. • 이후부터 그는 실제 블록 Br을 받기를 기다리는 동안 r + 1 라운드를 시작합니다. 그는 이미 그것을 받았습니다), 그의 hash H(Br)는 CERT r에 의해 고정되었습니다. 또 만약에 CERT r은 Br = Br임을 나타냅니다. ?, 나는 그가 CERT r을 취득하는 순간 Br을 압니다. 6.4 Algorand ' 분석 2 Algorand '의 분석 2는 Algorand ′의 그것으로부터 쉽게 파생됩니다. 1. 기본적으로 Algorand ' 2, 와 압도적인 확률, (a) 모든 정직한 사용자가 동일한 블록 Br에 동의합니다. 새로운 시대의 리더 블록은 적어도 ph = h2(1 + h −h2)의 확률로 정직합니다.
Algorand 」
2 このセクションでは、次の仮定の下で動作する Algorand ' のバージョンを構築します。 ユーザーの正直な大多数の仮定: 各 PKr のユーザーの 2/3 以上が正直です。 セクション 8 では、上記の仮定を望ましい正直多数派に置き換える方法を示します。 お金の仮定。 6.1 Algorand の追加の表記とパラメータ 2 表記法 • μ \(\in\)Z+: 圧倒的な確率で、 実際には1ラウンドでかかります。 (後で説明するように、パラメータ \(\mu\) は一時的なメッセージの数を制御します。 ユーザーがラウンドごとに事前に準備するキー) • Lr: 1 を確認するために必要なベルヌーイ試行の回数を表す確率変数。 試行は確率 ph で 1 です 2. Lr は、生成に必要な時間の上限を設定するために使用されます。 ブロックBr. • tH: ラウンド r のステップ s > 1 における誠実な検証者の数の下限。 圧倒的な確率で (n と p が与えられると)、SV r,s には正直な検証者が > 人います。 パラメータ • さまざまなパラメータ間の関係。 — ラウンド r の各ステップ s > 1 に対して、圧倒的な確率で次のように n が選択されます。
|HSV r,s| > thH そして |HSV r,s| + 2|MSV r,s| < 2thH。 上記の 2 つの不等式は一緒になって |HSV r,s| を意味することに注意してください。 > 2|MSV r,s|: つまり、そこにあります 選ばれた検証者の中で 2/3 の正直な多数派です。 h の値が 1 に近づくほど、n を小さくする必要があります。特に、(バリアントを使用します) of) チェルノフは、圧倒的な確率で望ましい条件が確実に成立するように努めます。 • 重要なパラメータの選択例。 — F = 10−18。 — n \(\approx\)4000、tH \(\approx\)0.69n、k = 70。 6.2 Algorand での一時キーの実装 2 検証者 i \(\in\)SV r,s が自分のメッセージ mr,s にデジタル署名することを思い出してください。 私は ラウンド r のステップ s の相対値 一時的な公開鍵 pkr,s i 、一時秘密鍵 skr,s を使用 私は 彼がすぐに破壊することを 使用後。 ラウンドで実行できるステップ数が指定されたステップ数に制限されている場合 整数 \(\mu\) については、一時的なキーを実際に処理する方法をすでに見てきました。たとえば、私たちとしては、 Algorand で説明しました。 1 (μ = m + 3)、考えられるすべての一時キーを処理するには、 ラウンド r' からラウンド r' + 106、i はペア (PMK、SMK) を生成します。ここで、PMK パブリック マスター ID ベースの署名スキームのキー、および SMK に対応する秘密マスター キー。ユーザーi PMK を公開し、SMK を使用して、考えられる各一時公開キーの秘密キーを生成します。 (そして、SMK を実行した後に SMK を破棄します)。関連する i の一時的な公開鍵のセット ラウンドは S = {i} \(\times\) {r', . 。 。 , r' + 106} \(\times\) {1, . 。 。 、μ}。 (前述したように、ラウンド r' + 106 が近づくと、 私は彼のペア(PMK、SMK)を「リフレッシュ」します。) 実際には、μ が十分に大きい場合、ラウンド Algorand ' 2 では、\(\mu\) ステップを超えることはありません。で ただし、原則として、あるラウンドではステップ数が変更される可能性がわずかにあります。 実際に撮影される量はμを超えます。こうなったら、彼のメッセージに署名できなくなるよ 私は のために すべてのステップ s > \(\mu\) です。これは、ラウンド r に対して \(\mu\) 個の秘密鍵だけを事前に準備しているためです。さらに、彼は、 前述のように、一時的な鍵の新しい隠し場所を準備して公開することはできませんでした。実際にやることは、 したがって、新しい公開マスターキー PMK' を新しいブロックに挿入する必要があります。ただし、r を丸める必要があります ステップが増えても、新しいブロックは生成されなくなります。 ただし、解決策は存在します。たとえば、ラウンド r、pkr、μ の最後の一時的なキーを使用できます。 私は 、 以下の通り。彼は、ラウンド r の鍵ペアの別の隠し場所を生成します。たとえば、(1) 別の鍵ペアを生成します。 マスターキーペア (PMK、SMK)。 (2) このペアを使用して別の、たとえば 106 個の一時キーを生成します。 スク r,μ+1 私は 、。 。 。 、sk r,μ+106 私は 、ラウンド r のステップ \(\mu\)+1、...、\(\mu\)+106 に対応します。 (3)skr,μを使用する 私は デジタルに pkr,\(\mu\) を基準とした符号 PMK (および i \(\in\)SV r,\(\mu\) の場合は任意の (r, \(\mu\))-メッセージ) 私は ; (4) SMK と skr,μ の消去 私は 。 ステップ \(\mu\) + s (s \(\in\){1, . 。 。 , 106}、その後、私は彼の (r, \(\mu\) + s)- にデジタル署名します。 メッセージ ミスター、μ+s 私は 彼の新しいキーPKと比較して r、μ+s 私は = (i、r、μ + s)。もちろん、この署名を検証するために i の場合、他の人は、この公開鍵が i の新しい公開マスター鍵 PMK に対応していることを確認する必要があります。 したがって、この署名に加えて、i は pkr,\(\mu\) に関連する PMK のデジタル署名を送信します。 私は 。 もちろん、このアプローチは必要に応じて何度でも繰り返すことができます。 どんどんステップアップしていきましょう!最後の一時的な秘密鍵は、新しいマスター公開鍵を認証するために使用されます。 キー、つまりラウンド r の一時的なキーの別の隠し場所。等々。6.3 実際のプロトコル Algorand ' 2 ラウンド r の各ステップ s で、検証者 i \(\in\)SV r,s が長期公開秘密を使用することをもう一度思い出してください。 彼の資格情報 \(\sigma\)r,s を生成するためのキー ペア 私は \(\triangleq\)SIGi(r, s, Qr−1)、および SIGi Qr−1 s = 1の場合。 検証者 i は一時的な鍵ペア (pkr,s) を使用します。 私、クロース i )、他のメッセージ m に署名します。 必須です。簡単にするために、sigpkr,s ではなく esigi(m) と書きます。 i (m)、i の適切な一時性を示します このステップでは m の署名を使用し、SIGpkr,s の代わりに ESIGi(m) を書き込みます。 i (m) \(\triangleq\) (i, m, esigi(m))。 ステップ 1: 提案をブロックする すべてのユーザー i \(\in\)PKr−k への指示: ユーザー i はラウンド r のステップ 1 を開始するとすぐに開始します。 CERT r−1。これにより、i は H(Br−1) と Qr−1 を明確に計算できます。 • ユーザー i は Qr−1 を使用して i \(\in\)SV r,1 かどうかを確認します。 i /\(\in\)SV r,1 の場合、ステップ 1 では何も行いません。 • i \(\in\)SV r,1 の場合、つまり i が潜在的なリーダーの場合、彼は次のことを行います。 (a) B0 を見た場合、. 。 。 , Br−1 自身 (任意の Bj = Bj í は、hash 値から簡単に導出できます。 CERT j にあるため、「見た」とみなされます)、その後、彼はラウンド R の支払いを回収します。 これまでに彼に伝播され、最大の給与セット PAY r を計算します。 私は彼らから。 (b) B0 をすべて見ていない場合は、. 。 。 , Br−1 まだ、その後彼は PAY r を設定します i = \(\emptyset\)。 (c) 次に、彼の「候補ブロック」Br を計算します。 i = (r, PAY r i 、SIGi(Qr−1)、H(Br−1))。 (c) 最後に、メッセージ mr,1 を計算します。 私は = (Br i , エシギ(H(Br i))、\(\sigma\)r,1 i )、彼の一時的なものを破壊します 秘密鍵 SKR,1 i 、そして 2 つのメッセージ mr,1 を伝播します。 私は および (SIGi(Qr−1), \(\sigma\)r,1 私)、 別々に、しかし同時に。 a i がリーダーの場合、SIGi(Qr−1) により、他の人が Qr = H(SIGi(Qr−1), r) を計算できるようになります。
選択的伝播 ステップ 1 とラウンド全体のグローバルな実行を短縮するには、(r, 1)- メッセージは選択的に伝播されます。つまり、システム内のすべてのユーザー j について、 • 彼が受信して検証に成功した最初の (r, 1)-メッセージについて、そのメッセージに次のものが含まれているかどうか ブロックであるか、単なる資格情報と Qr-1 の署名である場合、プレーヤー j は通常どおりそれを伝播します。 • プレイヤー j が受信して検証に成功した他のすべての (r, 1)-メッセージについては、次のように伝播します。 含まれる資格情報の hash 値が hash 値の中で最小である場合にのみ適用されます。 彼が受信し、検証に成功したすべての (r, 1)-メッセージに含まれる資格情報のうち、 遠い。 • ただし、j が mr,1 という形式の 2 つの異なるメッセージを受信した場合、 私は 同じプレイヤーから、私、彼は i の資格情報の hash 値が何であるかに関係なく、2 番目の資格情報を破棄します。 選択的伝播の下では、各潜在的なリーダー i が自分の伝播を伝播することが有益であることに注意してください。 資格情報 \(\sigma\)r,1 私は ミスター1とは別に i :c これらの小さなメッセージはブロックよりも速く送信されます。 mr,1 のタイムリーな伝播 i には、含まれている資格情報に小さな hash 値が含まれていますが、 hash 値が大きいものはすぐに消えます。 aつまり、すべての署名が正しく、形式が mr の場合、1 i 、ブロックとその hash の両方が有効です —ただし、j は、含まれるペイセットが i にとって最大であるかどうかをチェックしません。 bつまり、私は悪意があるということです。 cこれを提案してくれた Georgios Vlachos に感謝します。ステップ 2: 段階的コンセンサス プロトコル GC の最初のステップ すべてのユーザー i \(\in\)PKr−k への指示: ユーザー i はラウンド r のステップ 2 をすぐに開始します。 CERT r-1。 • ユーザー i は、最大時間 t2 \(\triangleq\) \(\lambda\) + Λ だけ待機します。待っている間、私は次のように行動します。 1. 時間 2\(\lambda\) 待った後、次のようなユーザー \(\ell\) を見つけます。 \(\ell\)) \(\leq\)H(\(\sigma\)r,1 j ) すべてのために 資格情報 \(\sigma\)r,1 j これらは、彼が受信した検証に成功した (r, 1)-メッセージの一部です これまでのところ。 2. もし 彼は 持っています 受け取った ある ブロック Br−1、 どの マッチ の hash 値 H(Br−1) CERT r−1,b に含まれており、彼が \(\ell\)a から有効なメッセージを受信した場合 mr,1 \(\ell\) = (Br \(\ell\)、esig\(\ell\)(H(Br \(\ell\)))、\(\sigma\)r,1 \(\ell\)),c その後、待機を停止し、v' を設定します i \(\triangleq\)(H(Br \(\ell\))、\(\ell\))。 3. それ以外の場合、時間 t2 がなくなると、i は v' を設定します。 私は\(\triangleq\) \(\bot\)です。 4. v'の値が i が設定されている場合、i は CERT r-1 から Qr-1 を計算し、 i \(\in\)SV r,2 かどうか。 5. i \(\in\)SV r,2 の場合、i はメッセージ mr,2 を計算します。 私は \(\triangleq\)(ESIG(v' i)、\(\sigma\)r,2 i ),d は彼の一時的なものを破壊します 秘密鍵 SKR,2 i 、そして mr,2 を伝播します 私は。 それ以外の場合は、伝播せずに停止します 何でも。 a基本的に、ユーザー i は、ラウンド r のリーダーがユーザー \(\ell\) であることを非公開で決定します。 bもちろん、CERT r−1 が Br−1 = Br−1 を示している場合は、 ああ とすると、彼が受け取った瞬間に私はすでに Br−1 を「受け取った」ことになります。 CERT r-1。 c 繰り返しになりますが、プレイヤー \(\ell\) の署名と hash はすべて正常に検証され、支払いが完了しました。 \(\ell\)in Br \(\ell\)は有効な給与セットです ラウンド r — ただし、PAY r かどうかはチェックしません \(\ell\)が\(\ell\)の最大値かどうか。 Brの場合 \(\ell\) には空の給与セットが含まれており、 実際には、Br かどうかを確認する前に i が Br−1 を見る必要はありません。 \(\ell\)が有効かどうか。 dメッセージmr,2 私は プレイヤー i が v' の最初の要素を考慮しているという信号 i が次のブロックの hash になる、または 次のブロックは空であると見なされます。
ステップ 3: GC の 2 番目のステップ すべてのユーザー i \(\in\)PKr−k への指示: ユーザー i はラウンド r のステップ 3 をすぐに開始します。 CERT r-1。 • ユーザー i は、最大時間 t3 \(\triangleq\) t2 + 2\(\lambda\) = 3\(\lambda\) + Λ だけ待機します。待っている間、私は次のように行動します が続きます。 1. 少なくとも tH 回の有効なメッセージを受信したような値 v が存在する場合、mr,2 j の 形式 (ESIGj(v), \(\sigma\)r,2 j ) 何の矛盾もなく、a それから彼は待つのをやめて設定します v' = v。 2. それ以外の場合、時間 t3 がなくなると、v' = \(\bot\) を設定します。 3. v' の値が設定されたら、i は CERT r-1 から Qr-1 を計算し、 i \(\in\)SV r,3 かどうか。 4. i \(\in\)SV r,3 の場合、i はメッセージ mr,3 を計算します。 私は \(\triangleq\)(ESIGi(v'), \(\sigma\)r,3 i )、彼のものを破壊します 一時的な秘密鍵 skr,3 i 、そして mr,3 を伝播します 私は。 それ以外の場合は、せずに停止します 何でも広める。 aつまり、彼はそれぞれ ESIGj(v) と異なる ESIGj(^v) を含む 2 つの有効なメッセージを受信していません。 選手Jよりこことここから、後で定義される終了条件を除いて、正直なプレイヤーはいつでも 特定の形式のメッセージが必要ですが、互いに矛盾するメッセージは決してカウントされず、有効とは見なされません。
ステップ 4: GC の出力と BBA の最初のステップ⋆ すべてのユーザー i \(\in\)PKr−k への指示: ユーザー i は、ラウンド r の自分のステップ 4 をすぐに開始します。 自分のステップ 3 を完了します。 • ユーザー i は最大時間 2\(\lambda\).a 待機します。待機中、i は次のように動作します。 1. 次のように、GC の出力である vi と gi を計算します。 (a) 少なくとも tH 回の有効なメッセージを受信したような値 v' ̸= \(\bot\)が存在する場合 さん、3 j = (ESIGj(v'), \(\sigma\)r,3 j )、その後、待機を停止し、 vi \(\triangleq\) v ' および gi \(\triangleq\) 2 を設定します。 (b) 彼が少なくとも tH 回の有効なメッセージを受信した場合 mr,3 j = (ESIGj(\(\bot\)), \(\sigma\)r,3 j )そして彼は立ち止まる 待機し、vi \(\triangleq\) \(\bot\)および gi \(\triangleq\)0.b を設定します。 (c) それ以外の場合、時間 2\(\lambda\) がなくなったときに、次のような値 v′ ̸= \(\bot\)が存在する場合 少なくとも⌈thHを受け取りました 2 ⌉有効なメッセージ mr,j j = (ESIGj(v'), \(\sigma\)r,3 j )、次に vi \(\triangleq\) v' を設定します そして gi \(\triangleq\) 1.c (d) そうでない場合、時間 2\(\lambda\) がなくなると、vi \(\triangleq\) \(\bot\)および gi \(\triangleq\) 0 を設定します。 2. 値 vi と gi が設定されている場合、i は次のように BBA⋆ の入力である bi を計算します。 gi = 2 の場合は bi \(\triangleq\) 0、それ以外の場合は bi \(\triangleq\) 1。 3. i は CERT r−1 から Qr−1 を計算し、i \(\in\)SV r,4 かどうかをチェックします。 4. i \(\in\)SV r,4 の場合、メッセージ mr,4 を計算します。 私は \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,4 i )、彼のものを破壊します 一時的な秘密鍵 skr,4 i 、そして mr,4 を伝播します 私は。それ以外の場合は、伝播せずに停止します 何でも。 したがって、i がラウンド r のステップ 1 を開始してからの最大合計時間は、t4 \(\triangleq\) t3 + 2\(\lambda\) = 5\(\lambda\) + Λ となります。 bステップ (b) がプロトコルに含まれるかどうかは、その正確さに影響しません。ただし、ステップ (b) の存在 十分に多くのステップ 3 検証者が「\(\bot\)に署名」した場合、ステップ 4 は 2\(\lambda\) 時間未満で終了できます。 cこの場合の v' が存在する場合、それは一意でなければならないことが証明できます。ステップ s, 5 \(\leq\) s \(\leq\) m + 2, s −2 ≡0 mod 3: BBA⋆ のコイン固定の 0 ステップ すべてのユーザー i \(\in\)PKr−k への命令: ユーザー i は、ラウンド r の自分のステップ s をすぐに開始します。 自分のステップ -1 を終了します。 • ユーザー i は最大時間 2\(\lambda\).a 待機します。待機中、i は次のように動作します。 – 終了条件 0: 任意の時点で、次のような文字列 v ̸= \(\bot\)およびステップ s' が存在する場合、 (a) 5 \(\leq\) s' \(\leq\) s, s' −2 ≡0 mod 3 —つまり、ステップ s' は Coin-Fixed-To-0 ステップです。 (b) i は少なくとも tH 個の有効なメッセージ mr,s'−1 を受信しました j = (ESIGj(0), ESIGj(v), \(\sigma\)r,s′−1 j )、b そして (c) i は有効なメッセージを受信しました (SIGj(Qr−1), \(\sigma\)r,1 j ) (j は 2 番目) v の成分、 その後、私は待機を停止し、ステップ s (実際にはラウンド r) の実行を終了します。 (r, s)-verifier として何も伝播せずにすぐに。 H(Br) を最初に設定します v の成分。そして、自分自身の CERT r をメッセージのセット mr,s'−1 に設定します。 j ステップ(b)の (SIGj(Qr−1), \(\sigma\)r,1 とともに j).c – 終了条件 1: いずれかの時点で、次のようなステップ s' が存在する場合 (a’) 6 \(\leq\)s’ \(\leq\) s, s’ −2 ≡1 mod 3 —つまり、ステップ s’ は Coin-Fixed-To-1 ステップであり、 (b’) i は少なくとも tH 個の有効なメッセージ mr,s’−1 を受信しました j = (ESIGj(1), ESIGj(vj), \(\sigma\)r,s′−1 j )、d 次に、私は待つのをやめて、自分自身のステップ s (実際にはラウンド r) の実行を終了します。 (r, s)-verifier として何も伝播せずに離れます。 Br = Br を設定します  ̄ ;そして自分自身を設定します CERT r はメッセージ mr,s'−1 のセットになります j サブステップ(b’)の。 – もし で どれでも ポイント 彼は 持っています 受け取った で 少なくとも thH 有効な さん、s−1 j の の の フォーム (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j )、その後、待機を停止し、bi \(\triangleq\) 1 を設定します。 – もし で どれでも ポイント 彼は 持っています 受け取った で 少なくとも thH 有効な さん、s−1 j の の の フォーム (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j )しかし、彼らは同じvに同意しないので、彼は立ち止まります 待機し、bi \(\triangleq\) 0 を設定します。 – それ以外の場合、時間 2\(\lambda\) がなくなると、i は bi \(\triangleq\) 0 に設定されます。 – 値 bi が設定されている場合、i は CERT r−1 から Qr−1 を計算し、 i \(\in\)SV r,s. – i \(\in\)SV r,s の場合、i はメッセージ mr,s を計算します 私は \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ) vi は ステップ 4 で計算した値は、一時的な秘密鍵 skr,s を破壊します。 私、そしてそれから 氏を伝播します 私は。それ以外の場合は、何も伝播せずに停止します。 aしたがって、i がラウンド r のステップ 1 を開始してからの最大合計時間は、ts \(\triangleq\) ts−1 + 2\(\lambda\) = となります。 (2s −3)\(\lambda\) + Λ。 bプレーヤー j からのそのようなメッセージは、プレーヤー i が 1 に署名する j からメッセージを受信した場合でもカウントされます。 終了条件 1 についても同様です。分析で示されているように、これはすべての正直なユーザーが確実に知っているようにするためです。 CERT r は互いに時間 \(\lambda\) 以内にあります。 c ユーザー i は、H(Br) と自分のラウンド終了を知りました。彼は実際にBrがブロックされるまで待つ必要があるだけです が彼に伝播されるため、さらに時間がかかる可能性があります。彼は今でも一般ユーザーとしてメッセージの伝達に貢献しています。 ただし、(r, s)-verifier として伝播を開始することはありません。特に、彼はすべてのメッセージを広めるのに貢献しました。 彼の CERT r は、私たちのプロトコルには十分です。バイナリ BA プロトコルに対しても bi \(\triangleq\) 0 を設定する必要があることに注意してください。 いずれにしても、この場合、bi は必要ありません。今後のすべての指示についても同様のことが起こります。 この場合、vj が何であるかは関係ありません。 65ステップ s, 6 \(\leq\) s \(\leq\) m + 2, s −2 ≡1 mod 3: BBA のコイン固定 To-1 ステップ⋆ すべてのユーザー i \(\in\)PKr−k への命令: ユーザー i は、ラウンド r の自分のステップ s をすぐに開始します。 自分のステップ -1 を終了します。 • ユーザー i は最大時間 2\(\lambda\) 待機します。待っている間、私は次のように行動します。 – 終了条件 0: Coin-Fixed-To-0 ステップと同じ命令。 – 終了条件 1: Coin-Fixed-To-0 ステップと同じ命令。 – もし で どれでも ポイント 彼は 持っています 受け取った で 少なくとも thH 有効な さん、s−1 j の の の フォーム (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j )、その後、待機を停止し、bi \(\triangleq\) 0.a を設定します。 – それ以外の場合、時間 2\(\lambda\) がなくなると、i は bi \(\triangleq\) 1 に設定されます。 – 値 bi が設定されている場合、i は CERT r−1 から Qr−1 を計算し、 i \(\in\)SV r,s. – i \(\in\)SV r,s の場合、i はメッセージ mr,s を計算します 私は \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ) vi は ステップ 4 で計算した値は、一時的な秘密鍵 skr,s を破壊します。 私、そしてそれから 氏を伝播します 私は。それ以外の場合は、何も伝播せずに停止します。 a 1 に署名する tH 個の有効な (r, s −1)-メッセージを受信すると、終了条件 1 が意味されることに注意してください。 ステップ s, 7 \(\leq\) s \(\leq\) m + 2, s −2 ≡2 mod 3: BBA の本物のコイン投げステップ⋆ すべてのユーザー i \(\in\)PKr−k への命令: ユーザー i は、ラウンド r の自分のステップ s をすぐに開始します。 自分自身のステップ s -1 を終了します。 • ユーザー i は最大時間 2\(\lambda\) 待機します。待っている間、私は次のように行動します。 – 終了条件 0: Coin-Fixed-To-0 ステップと同じ命令。 – 終了条件 1: Coin-Fixed-To-0 ステップと同じ命令。 – もし で どれでも ポイント 彼は 持っています 受け取った で 少なくとも thH 有効な さん、s−1 j の の の フォーム (ESIGj(0), ESIGj(vj), \(\sigma\)r,s−1 j )、その後、待機を停止し、bi \(\triangleq\) 0 を設定します。 – もし で どれでも ポイント 彼は 持っています 受け取った で 少なくとも thH 有効な さん、s−1 j の の の フォーム (ESIGj(1), ESIGj(vj), \(\sigma\)r,s−1 j )、その後、待機を停止し、bi \(\triangleq\) 1 を設定します。 – それ以外の場合、時間 2\(\lambda\) がなくなると、SV r,s−1 とします。 私は からの (r, s −1)-検証者の集合とする 彼は有効なメッセージを受け取りました、mr,s−1 j 、i は bi \(\triangleq\)lsb(minj\(\in\)SV r,s−1 を設定します) 私は H(\(\sigma\)r,s−1 j ))。 – 値 bi が設定されている場合、i は CERT r−1 から Qr−1 を計算し、 i \(\in\)SV r,s. – i \(\in\)SV r,s の場合、i はメッセージ mr,s を計算します 私は \(\triangleq\)(ESIGi(bi), ESIGi(vi), \(\sigma\)r,s i ) vi は ステップ 4 で計算した値は、一時的な秘密鍵 skr,s を破壊します。 私、そしてそれから 氏を伝播します 私は。それ以外の場合は、何も伝播せずに停止します。 述べる。 原則として、セクション 6.2 で検討したように、プロトコルは任意に多くのセクションを使用できます。 あるラウンドのステップ。これが起こった場合、前述したように、s > \(\mu\) のユーザー i \(\in\)SV r,s は疲れ果てています。
彼の事前に生成された一時キーの隠し場所と、彼の (r, s)-メッセージを認証する必要があります。 私は によって 一時的なキーの「カスケード」。したがって、i のメッセージは少し長くなり、送信時間が長くなります メッセージにはもう少し時間がかかります。したがって、特定のラウンドで非常に多くのステップを行った後、 パラメータ \(\lambda\) は自動的にわずかに増加します。 (ただし、新しいものを作成すると元の \(\lambda\) に戻ります) ブロックが生成され、新しいラウンドが始まります。) 非検証者による Round-r ブロックの再構築 システム内のすべてのユーザー i に対する指示: ユーザー i は、ラウンド r を開始するとすぐに自分のラウンドを開始します。 CERT r-1。 • 私はプロトコルの各ステップの指示に従い、すべてのステップの伝播に参加します。 ただし、ステップ内の検証者ではない場合、ステップ内の伝播は開始されません。 • i は、終了条件 0 または終了条件 1 を入力して自分のラウンド r を終了します。 ステップ、対応する CERT r を使用します。 • そこから、実際のブロック Br を受け取るのを待ちながらラウンド r + 1 を開始します (ただし、 彼はすでにそれを受け取っています)、そのhash H(Br) は CERT r によって固定されています。もう一度言いますが、 CERT r は Br = Br を示します iq は、Br が CERT r を取得した瞬間にわかります。 6.4 Algorand の分析 2 Algorand の分析 2 は Algorand の値から簡単に導出されます。 1. 基本的に、Algorand で 2、付き 圧倒的な確率で、(a) すべての正直なユーザーが同じブロック Br に同意します。新しいリーダー ブロックは少なくとも ph = h2(1 + h −h2) の確率で正直です。
오프라인 정직한 사용자 처리
우리가 말했듯이, 정직한 사용자는 온라인 접속을 포함하여 자신이 규정한 모든 지침을 따릅니다. 그리고 프로토콜을 실행합니다. 이는 Algorand에서 큰 부담이 되지 않습니다. 정직한 사용자에게 필요한 대역폭은 매우 적당합니다. 하지만 Algorand은(는) 정직한 사용자가 오프라인 상태가 허용되는 두 가지 모델에서 작동하도록 쉽게 수정될 수 있습니다. 큰 숫자. 이 두 가지 모델을 논의하기 전에, 정직한 플레이어의 비율이 95%인 경우에도 Algorand은 h = 80%라고 가정하고 모든 매개변수를 설정하여 계속 실행할 수 있습니다. 따라서 Algorand은 정직한 플레이어의 최대 절반이더라도 계속해서 제대로 작동합니다. 오프라인을 선택했습니다(실제로 '결근'의 주요 사례). 사실, 어느 시점에서든 적어도 온라인 플레이어 중 80%는 정직합니다. 지속적인 참여에서 나태한 정직함으로 보시다시피 Algorand ′ 1 및 Algorand ' 2 선택 되돌아보기 매개변수 k. 이제 k를 적절하게 크게 선택하면 다음을 제거할 수 있음을 보여드리겠습니다. 지속적인 참여 요구 사항. 이 요구 사항은 다음과 같은 중요한 속성을 보장합니다. 기본 BA 프로토콜 BBA⋆는 적절하고 정직한 다수를 가지고 있습니다. 이제 게으른 방법을 설명하겠습니다. 정직함은 이러한 특성을 만족시킬 수 있는 대안적이고 매력적인 방법을 제공합니다.
(1) 사용자 i가 자신이 규정한 모든 지침을 따른다면 게으르지만 정직하다는 점을 기억하세요. 그는 프로토콜에 참여하라는 요청을 받고 (2) 프로토콜에만 참여하도록 요청받습니다. 매우 드물게(예: 일주일에 한 번) 적절한 사전 통지가 있고 잠재적으로 상당한 금액을 받을 수 있습니다. 그가 참여하면 보상을 받습니다. Algorand이 그러한 플레이어와 함께 작업할 수 있도록 하려면 "검증자를 선택하는 것"으로 충분합니다. 훨씬 이전 라운드에 이미 시스템에 있었던 사용자들 사이에서 현재 라운드.” 실제로, 그것을 기억하십시오 라운드 r에 대한 검증자는 라운드 r -k의 사용자 중에서 선택되며 선택은 다음을 기반으로 이루어집니다. 수량 Qr−1에 대해. 일주일은 대략 10,000분으로 구성되며, 라운드는 대략(예: 평균) 5분 정도 걸리므로 일주일에 대략 2,000라운드가 진행됩니다. 가정하다 어떤 시점에서 사용자는 자신의 시간을 계획하고 자신이 시간을 보낼지 여부를 알고 싶습니다. 다음 주에 검증인이 올 것입니다. 이제 프로토콜은 라운드 r에 대한 검증자를 다음 사용자 중에서 선택합니다. r −k −2,000을 라운드하고 선택은 Qr−2,001을 기반으로 합니다. r 라운드에서 나는 이미 알고 있는 선수 값 Qr−2,000, . . . , Qr−1, 실제로는 blockchain의 일부이기 때문입니다. 그런 다음 각 M에 대해 1과 2,000 사이에서 i는 라운드 r + M의 단계 s에서 검증자입니다. .H SIGi r + M, s, Qr+M−2,001 \(\leq\)p . 따라서 그가 다음 2,000 라운드 동안 검증자로 활동하도록 호출될 것인지 확인하려면 다음을 수행해야 합니다. \(\sigma\)M,s를 계산하다 나 = SIGi r + M, s, Qr+M−2,001 M = 1 ~ 2,000이고 각 단계 s에 대해 확인합니다. .H(\(\sigma\)M,s 나 ) 그 중 일부는 \(\leq\)p입니다. 디지털 서명을 계산하는 데 밀리초가 걸린다면 이 전체 작업을 계산하는 데 약 1분이 소요됩니다. 검증인으로 선정되지 않은 경우 이 라운드 중 어느 라운드에서든 그는 "정직한 양심"을 가지고 오프라인으로 갈 수 있습니다. 만약 그가 지속적으로 참여했다면 그는 어쨌든 다음 2,000 라운드 동안 본질적으로 0보를 걸었을 것입니다! 대신에 그는 이 라운드 중 하나에서 검증자로 선택됩니다. 그런 다음 그는 자신을 준비합니다(예: 모든 것을 얻음으로써) 필요한 정보) 적절한 라운드에서 정직한 검증자 역할을 합니다. 그렇게 행동함으로써, 게으르지만 정직한 잠재적 검증자는 전파에 참여하는 것을 놓칠 뿐입니다. 메시지의. 그러나 메시지 전파는 일반적으로 강력합니다. 또한, 지급인과 수취인은 최근 전파된 결제는 온라인에서 결제가 어떻게 진행되는지 확인할 수 있을 것으로 예상됩니다. 따라서 그들은 정직하다면 메시지 전파에 참여할 것입니다.
オフラインの正直なユーザーの扱い
先ほども述べたように、誠実なユーザーは、オンラインでの使用も含め、定められたすべての指示に従います。 そしてプロトコルを実行します。 Algorand では、計算と 正直なユーザーに必要な帯域幅は非常に控えめです。ただし、Algorand は次のことができることを指摘しておきます。 2 つのモデルで動作するように簡単に変更できます。正直なユーザーはオフラインにできます。 すごい数字。 これら 2 つのモデルについて説明する前に、正直なプレイヤーの割合が が 95% であった場合でも、h = 80% と仮定してすべてのパラメータを設定して Algorand を実行できます。 したがって、Algorand は、たとえ正直なプレイヤーの最大半分であっても、適切に動作し続けます。 オフラインになることを選択しました(実際、「欠勤」の重大なケースです)。実際、どの時点でも少なくとも、 オンラインプレイヤーの 80% は正直だと思います。 継続的な参加から怠惰な正直さへ ご覧のとおり、Algorand 」 1 と Algorand 」 2 選択します ルックバックパラメータ k。ここで、適切な大きさの k を選択すると、次のことが可能になることを示しましょう。 継続的参加要件。この要件により、次の重要な特性が保証されます。 基礎となる BA プロトコル BBA⋆ が正当な多数派を持っていること。では、どれだけ怠惰かを説明しましょう 正直さは、この特性を満たす代替の魅力的な方法を提供します。
ユーザー i は、(1) 規定の指示をすべて遵守する場合、怠け者だが正直であることを思い出してください。 (2) プロトコールのみに参加するよう求められる 非常にまれに (例: 週に 1 回)、適切な事前通知があり、重大な通知が届く可能性があります。 参加すると報酬がもらえる。 Algorand がそのようなプレイヤーと連携できるようにするには、「検証者を選択する」だけで十分です。 現在のラウンドでは、はるか以前のラウンドで既にシステムに参加していたユーザーが含まれます。」確かに、それを思い出してください ラウンド r の検証者はラウンド r −k のユーザーから選択され、選択は以下に基づいて行われます。 数量 Qr−1 について。 1 週間はおよそ 10,000 分で構成されていることに注意してください。 ラウンドにはおよそ (平均して) 5 分かかるため、1 週間にはおよそ 2,000 ラウンドがかかります。仮定する ある時点で、ユーザーが自分の時間を計画し、予定があるかどうかを知りたいと考えています。 来週には検証者が出る。プロトコルはラウンドの検証者をユーザーから選択するようになりました。 r −k −2,000 を丸め、選択は Qr−2,001 に基づきます。ラウンド R で、私はすでに知っているプレーヤー 値 Qr−2,000、... 。 。 、Qr−1。これらは実際には blockchain の一部であるためです。すると、M ごとに、 1 から 2,000 の間で、次の場合に限り、i はラウンド r + M のステップ s の検証者です。 .H シギ r+M、s、Qr+M−2,001 \(\leq\)p 。 したがって、彼が次の 2,000 ラウンドで検証者として呼ばれるかどうかを確認するには、次のようにする必要があります。 \(\sigma\)M,s を計算する 私は = シギ r+M、s、Qr+M−2,001 M = 1 ~ 2,000 および各ステップ s について、チェックします。 .H(\(\sigma\)M,s 私は ) \(\leq\)p の場合もあります。デジタル署名の計算にミリ秒かかる場合、 この操作全体の計算には約 1 分かかります。検証者に選ばれなかった場合 これらのラウンドのいずれにおいても、そうすれば彼は「正直な良心」をもってオフラインになれる。彼が継続していたら 参加したとしても、いずれにせよ、彼は次の 2,000 ラウンドで基本的に 0 歩しか歩まなかったでしょう。代わりに、 彼はこれらのラウンドのいずれかで検証者に選ばれ、その後準備を整えます(たとえば、すべての 適切なラウンドで誠実な検証者として機能するために必要な情報)。 そのように行動することによって、怠け者だが誠実な潜在的検証者は、伝播への参加を逃すだけです。 のメッセージ。ただし、メッセージの伝播は通常、堅牢です。また、支払者と受取人は、 最近伝播された支払いはオンラインで支払いがどうなるかを監視することが期待されています。 したがって、彼らは正直であれば、メッセージの伝播に参加するでしょう。
프로토콜 Algorand ' 정직한 다수의 돈으로
이제 마지막으로 정직한 다수의 사용자 가정을 훨씬 더 많은 가정으로 대체하는 방법을 보여줍니다. 의미 있는 정직한 다수의 돈 가정. 기본 아이디어는 (proof-of-stake 맛)입니다. “다음에 비례하는 가중치(즉, 결정력)를 사용하여 SV r,s에 속하는 사용자 i \(\in\)PKr−k를 선택합니다. i가 소유한 돈의 양.”24 HMM 가정에 따라 해당 금액을 r −k 라운드에 보유해야 하는지 여부를 선택할 수 있습니다. 또는 라운드 r(시작)에. 지속적인 참여를 꺼리지 않는다는 가정 하에 우리는 다음을 선택합니다. 후자의 선택. (지속적인 참여를 없애기 위해 우리는 전자의 선택을 선택했을 것입니다. r −k −2,000 라운드에 소유한 화폐의 양에 대해 말하는 것이 더 좋습니다.) 이 아이디어를 구현하는 방법에는 여러 가지가 있습니다. 가장 간단한 방법은 각 키를 홀드하는 것입니다. 최대 1 단위의 돈을 선택하고 a(r)이 되도록 PKr−k에서 무작위로 n명의 사용자 i를 선택합니다. 나 = 1. 24지속적인 참여를 대체하려면 PKr−k−2,000이라고 말해야 합니다. 단순화를 위해 요구할 수 있으므로 어쨌든 지속적인 참여를 위해 우리는 이전과 같이 PKr-k를 사용하여 하나의 매개변수를 덜 전달합니다.
다음으로 가장 간단한 구현 다음으로 간단한 구현은 각 공개 키가 최대 금액을 소유하도록 요구하는 것입니다. 어떤 고정된 M에 대한 화폐 M입니다. 가치 M은 총 화폐 금액에 비해 충분히 작습니다. 키가 둘 이상의 검증자 세트에 속할 확률이 k 라운드를 진행하는 것은 무시할 수 있습니다. 그런 다음, 금액 a(r)을 소유한 키 i \(\in\)PKr−k 나 라운드 r에서 다음과 같은 경우 SV r,s에 속하도록 선택됩니다. .H SIGi r, s, Qr−1 \(\leq\)p \(\cdot\) a(r) 나 엠 . 그리고 모든 수익은 이전과 동일합니다. 더욱 복잡한 구현 마지막 구현에서는 "시스템의 부유한 참가자가 많은 키를 소유하도록 강요했습니다". 아래에 설명된 대체 구현은 상태 개념을 일반화하고 다음을 고려합니다. 각 사용자 i는 K + 1개의 복사본(i, v)으로 구성되며, 각 복사본은 독립적으로 검증자로 선택됩니다. 자신의 임시 키를 소유하게 됩니다(pkr,s 나,v,skr,s i,v) 라운드 r의 단계 s에서. K 값은 다음과 같습니다. 금액에 따라 a(r) 나 라운드 r에서 i가 소유하고 있습니다. 이제 그러한 시스템이 어떻게 작동하는지 더 자세히 살펴보겠습니다. 사본 수 n을 각 검증자 세트의 목표 예상 카디널리티로 설정하고 a(r)을 다음과 같이 설정합니다. 나 라운드 r에서 사용자 i가 소유한 금액이 됩니다. Ar을 소유한 총 화폐량이라고 하자. 라운드 r에서 PKr-k의 사용자에 의해, 즉, 아르 = X i\(\in\)P Kr−k a(r) 나. i가 PKr-k의 사용자라면 i의 복사본은 (i, 1), . . . , (i, K + 1), 여기서 케이 = $ n \(\cdot\) a(r) 나 아칸소 % . 예. n = 1,000, Ar = 109, a(r)이라고 가정합니다. 나 = 370만. 그런 다음, 케이 = 103 \(\cdot\) (3.7 \(\cdot\) 106) 109 = ⌊3.7⌋= 3 . 검증자 및 자격 증명 나는 K + 1 복사본을 가진 PKr-k의 사용자라고 가정합니다. 각 v = 1에 대해 . . . , K, 복사본(i, v)은 자동으로 SV r,s에 속합니다. 즉, 나의 자격 증명은 \(\sigma\)r,s i,v \(\triangleq\)SIGi((i, v), r, s, Qr−1)이지만 해당 조건은 .H(\(\sigma\)r,s)가 됩니다. i,v) \(\leq\)1, 즉 항상 사실입니다. 복사(i, K + 1)의 경우 라운드 r의 각 단계 s에 대해 i는 다음을 확인합니다. .H SIGi (i, K + 1), r, s, Qr−1 \(\leq\)a(r) 나 엔 Ar-K.
그렇다면 사본 (i, K + 1)은 SV r,s에 속합니다. 그것을 증명하기 위해 자격 증명을 전파합니다. \(\sigma\)r,1 i,K+1 = SIGi (i, K + 1), r, s, Qr−1 . 예. 이전 예에서와 같이 n = 1K, a(r) 나 = 3.7M, Ar = 1B, i는 4입니다. 복사본: (i, 1), . . . , (i, 4). 그런 다음 처음 3개의 복사본은 자동으로 SV r,s에 속합니다. 4번째의 경우, 개념적으로 Algorand '은 앞면이 나올 확률이 0.7인 편향된 동전을 독립적으로 굴립니다. 복사 (i, 4)는 동전 던지기가 앞면인 경우에만 선택됩니다. (물론 이 편향된 동전 던지기는 hashing, 서명 및 비교를 통해 구현됩니다. 나는 그의 결과를 증명할 수 있도록 이 논문에서 모든 작업을 수행했습니다.) 평소대로 사업 검증자를 선택하는 방법과 자격 증명을 어떻게 지정하는지 설명했습니다. 라운드 r의 각 단계에서 계산되므로 라운드 실행은 이미 설명한 것과 유사합니다.
プロトコル Algorand 、正直な過半数の資金を使用
ここで、ついに、ユーザーの正直な多数派の仮定を、さらに多くの仮定に置き換える方法を示します。 意味のあるオネスト・マジョリティ・オブ・マネーの仮定。基本的なアイデアは (proof-of-stake フレーバーで) 「SV r,s に属するユーザー i \(\in\)PKr−k を、次の値に比例する重み (つまり、決定力) で選択します。 「i が所有する金銭の量」24 HMM の仮定により、その金額をラウンド r −k で所有すべきかどうかを選択できます。 またはラウンド r (の開始時) に。継続的に参加しても構わないと仮定すると、 後者の選択。 (継続的な参加を排除するには、前者の選択を選択することになります。 より良く言えば、ラウンド r −k −2,000 で所有されている金額の場合です。) このアイデアを実現するにはさまざまな方法があります。最も簡単な方法は、各キーを保持することです 最大 1 単位の通貨を使用し、a(r) となるように PKr−k からランダムに n 人のユーザー i を選択します。 私は = 1。 24継続参加の代わりに PKr-k-2,000 と言うべきです。簡単にするために、次のようにする必要があるかもしれないので、 とにかく継続的に参加するため、運ぶパラメータが 1 つ少なくなるように、以前と同様に PKr-k を使用します。
次に簡単な実装 次に簡単な実装は、各公開鍵が最大量を所有することを要求することです。 ある一定の M に対して、お金 M の値。M の値は、お金の総額に比べて十分に小さいです。 システム内のお金。キーが複数の検証セットに属する確率が高くなります。 —たとえば — k ラウンドのステップは無視できます。次に、鍵 i \(\in\)PKr−k、金額 a(r) を所有 私は ラウンド r では、次の場合に SV r,s に属することが選択されます。 .H シギ r、s、Qr−1 \(\leq\)p・a(r) 私は M 。 そしてすべてが以前と同じように進みます。 より複雑な実装 最後の実装では、「システムの裕福な参加者に多くのキーの所有を強制」しました。 以下で説明する代替実装では、ステータスの概念を一般化し、次のことを考慮します。 各ユーザー i は K + 1 個のコピー (i, v) で構成され、それぞれが検証者として独立して選択されます。 そして自分自身の一時的な鍵 (pkr,s) を所有することになります。 i、v、skr、s i,v) ラウンド r のステップ s で。 K の値は依存します a(r)の金額について 私は ラウンドrのiが所有。 このようなシステムがどのように機能するかをさらに詳しく見てみましょう。 部数 n を各検証セットの対象となる期待カーディナリティとし、a(r) とします。 私は ラウンド r でユーザー i が所有する金額になります。所有するお金の総額をArとします ラウンド r の PKr-k のユーザーによる、つまり Ar = \(\times\) i\(\in\)P Kr−k a(r) 私は。 i が PKr-k のユーザーの場合、i のコピーは (i, 1), . 。 。 , (i, K + 1)、ここで K = $ n・a(r) 私は アル % 。 例。 n = 1,000、Ar = 109、および a(r) とします。 私は = 370 万。それから、 K = 103・(3.7・106) 109 = ⌊3.7⌋= 3 。 検証者と資格情報 i を K + 1 コピーを持つ PKr−k のユーザーとしましょう。 各 v = 1、. 。 。 、K、コピー(i、v)は自動的にSV r、sに属する。つまり、i の資格情報は \(\sigma\)r,s i,v \(\triangleq\)SIGi((i, v), r, s, Qr−1) ですが、対応する条件は .H(\(\sigma\)r,s i,v) \(\leq\) 1、つまり 常に真実です。 コピー (i, K + 1) の場合、ラウンド r の各ステップ s について、i は次のことをチェックします。 .H シギ (i, K + 1)、r、s、Qr−1 \(\leq\)a(r) 私は n Ar −K 。
そうであれば、コピー (i, K + 1) は SV r,s に属します。それを証明するために、資格情報を伝播します \(\sigma\)r,1 i,K+1 = SIGi (i, K + 1)、r、s、Qr−1 。 例。 前の例と同様に、n = 1K、a(r) とします。 私は = 3.7M、Ar = 1B、i は 4 コピー: (i, 1), . 。 。 、(i、4)。その後、最初の 3 つのコピーは自動的に SV r,s に属します。 4番目については、 概念的には、 Algorand ' は、表の確率が 0.7 であるバイアスされたコインを独立してロールします。コピー (i, 4) は、コイントスが表の場合にのみ選択されます。 (もちろん、この偏ったコイン投げは、hash の作成、署名、比較によって実装されます。 私が彼の結果を証明できるようにするために、この論文ではずっとそうしてきました。) 通常通りの営業 検証者の選択方法とその資格情報の仕組みについて説明しました。 ラウンド r の各ステップで計算されるため、ラウンドの実行はすでに説明したものと同様です。
Fork 처리
포크가 발생할 확률을 10-12 또는 10-18로 줄임으로써 실질적으로 처리할 필요가 없습니다. 그런 일이 일어날 가능성은 희박합니다. 그러나 Algorand은 다양한 포크를 사용할 수도 있습니다. 작업 증명 유무에 관계없이 해결 절차. 사용자에게 포크를 해결하도록 지시하는 한 가지 가능한 방법은 다음과 같습니다. • 사용자에게 여러 체인이 표시되는 경우 가장 긴 체인을 따릅니다. • 가장 긴 체인이 두 개 이상인 경우 끝에 비어 있지 않은 블록이 있는 체인을 따릅니다. 만약에 모두 끝에 빈 블록이 있습니다. 마지막 두 번째 블록을 고려하세요. • 끝에 비어 있지 않은 블록이 있는 가장 긴 체인이 두 개 이상 있는 경우 체인은 다음과 같습니다. 길이가 r인 블록 r의 리더가 가장 작은 자격 증명을 가진 블록을 따릅니다. 인연이 있다면, 블록 r 자체가 가장 작은 hash 값을 갖는 블록을 따르십시오. 여전히 동점이 있는 경우 다음을 따르세요. 블록 r이 사전순으로 첫 번째로 정렬된 블록입니다.
フォークの処理
フォークの確率が 10−12 または 10−18 に減少したため、実際には処理は不要です。 それらが起こる可能性は非常に低いです。 ただし、Algorand ではさまざまなフォークを使用することもできます 作業証明の有無にかかわらず、解決手順。 ユーザーにフォークを解決するように指示する考えられる方法の 1 つは次のとおりです。 • ユーザーに複数のチェーンが表示された場合は、最も長いチェーンをたどります。 • 最も長いチェーンが複数ある場合は、最後に空ではないブロックを持つチェーンの後に続けます。もし それらのすべての最後には空のブロックがあります。最後から 2 番目のブロックを考慮してください。 • 最後に空ではないブロックを持つ最も長いチェーンが複数ある場合、そのチェーンは 長さ r のブロック r のリーダーの資格情報が最も小さいものに従います。絆があれば、 ブロック r 自体が最小の hash 値を持つものに従います。まだ関係がある場合は、次に従ってください。 ブロック r が辞書順に最初に順序付けされているもの。
네트워크 파티션 처리
앞서 말했듯이, 우리는 네트워크의 모든 사용자 사이의 메시지 전파 시간이 \(\lambda\)와 Λ에 의해 상한된다고 가정합니다. 오늘날의 인터넷은 빠르고 강력하며, 이러한 매개변수의 실제 값은 상당히 합리적입니다. 여기서는 Algorand `` 2 인터넷이 때때로 두 부분으로 분할되어도 계속 작동합니다. 경우는 인터넷은 두 개 이상의 부분으로 나누어져 있습니다. 10.1 물리적 파티션 우선, 물리적인 이유로 파티션이 발생할 수 있습니다. 예를 들어, 대규모 지진이 발생할 수 있습니다. 결국 유럽과 미국의 연결이 완전히 무너졌습니다. 이 경우, 악의적인 사용자도 분할되어 있으며 두 부분 사이에는 통신이 없습니다. 따라서
두 명의 적이 있는데, 하나는 파트 1에, 다른 하나는 파트 2에 사용됩니다. 각 대적은 여전히 다음을 시도합니다. 프로토콜 자체를 위반합니다. 분할이 라운드 r의 중간에 발생한다고 가정합니다. 그런 다음 각 사용자는 여전히 이전과 동일한 확률로 PKr-k를 기반으로 하는 검증자입니다. HSV r,s를 보자 나 및 MSV r,s 나 각각 파트 i \(\in\){1, 2}의 단계 s에서 정직하고 악의적인 검증자의 집합이 됩니다. 우리는 |HSV r,s 1 | + |MSV r,s 1 | + |HSV r,s 2 | + |MSV r,s 2 | = |HSV r,s| + |MSV r,s|. |HSV r,s| + |MSV r,s| < |HSV r,s| + 2|MSV r,s| 압도적인 확률로 2tH 미만. 어떤 부분에 |HSV r,s가 있는 경우 나 | + |MSV r,s 나 | 무시할 수 없는 확률(예: 1%)의 \(\geq\)tH인 경우 |HSV r,s의 확률 3−i| + |MSV r,s 3−i| \(\geq\)tH는 매우 낮습니다(예: F = 10−18인 경우 10−16). 이 경우, 검증자가 충분하지 않기 때문에 더 작은 부분을 오프라인으로 처리하는 것이 좋습니다. 블록을 인증하기 위한 서명을 생성하는 부분입니다. 일반성을 잃지 않고 더 큰 부분, 즉 파트 1을 고려해 보겠습니다. 비록 |HSV r,s| < 각 단계 s에서 무시할 수 있는 확률을 갖는 tH, 네트워크가 분할되면 |HSV r,s 1 | 어쩌면 무시할 수 없는 확률로 tH보다 작습니다. 이 경우 상대방은 다음과 같은 조치를 취할 수 있습니다. 다른 무시할 수 없는 확률, 비어 있지 않은 블록 Br과 빈 블록 Br을 사용하여 바이너리 BA 프로토콜을 r 라운드의 포크로 강제 실행합니다. ? 둘 다 유효한 서명을 가지고 있습니다.25 예를 들어, Coin-Fixed-To-0 단계, HSV r,s의 모든 검증자 1 비트 0과 H(Br)에 서명하고 이를 전파했습니다. 메시지. MSV r,s의 모든 검증자 1 또한 0과 H(Br)에 서명했지만 메시지를 보류했습니다. 왜냐하면 |HSV r,s 1 | + |MSV r,s 1 | \(\geq\)tH, 시스템에는 Br을 인증할 만큼 충분한 서명이 있습니다. 그러나 이후 악의적인 검증자가 서명을 보류하면 사용자는 Coin-Fixed-To1 단계인 s + 1 단계에 들어갑니다. 왜냐하면 |HSV r,s 1 | < tH 파티션으로 인해 HSV r,s+1의 검증자 1 못 봤어 비트 0에 대한 서명이 있고 모두 비트 1에 대해 서명되었습니다. MSV r,s+1의 모든 검증자 1 똑같이했습니다. 왜냐하면 |HSV r,s+1 1 | + |MSV r,s+1 1 | \(\geq\)tH, 시스템에는 Br을 인증하기에 충분한 서명이 있습니다. ? 대적 그런 다음 MSV r,s의 서명을 릴리스하여 포크를 생성합니다. 1 0과 H(Br)의 경우. 따라서 라운드 r의 해당 블록에 의해 정의되는 두 개의 Qr이 있습니다. 그러나, 포크는 계속되지 않으며 두 가지 중 하나만 r + 1 라운드에서 자랄 수 있습니다. Algorand '에 대한 추가 지침 2. 비어 있지 않은 블록 Br과 비어 있는 블록을 볼 때 블록 브롬 ϫ , 비어 있지 않은 것(및 이에 의해 정의된 Qr)을 따릅니다. 실제로 사용자에게 프로토콜의 비어 있지 않은 블록을 사용하도록 지시함으로써 PKr+1−k의 정직한 사용자 중 상당수는 라운드 r +1의 시작 부분에 포크가 있다는 것을 깨닫습니다. 빈 블록에는 추종자가 충분하지 않아 성장하지 않습니다. 적이 다음과 같이 관리한다고 가정합니다. 일부 정직한 사용자가 Br(및 아마도 Br)을 볼 수 있도록 정직한 사용자를 분할합니다. ?), 일부는 단지 브르 ? 왜냐하면 대적은 그들 중 어느 것이 Br을 따르는 검증자가 될 것인지, 그리고 어느 것이 검증자가 될 것인지 알 수 없기 때문입니다. Br을 따르는 검증자가 될 것입니다. ? , 정직한 사용자는 무작위로 분할되어 있으며 각 사용자는 여전히 검증자가 됩니다(Br에 대해 또는 Br에 대해). Ϋ) 확률이 s > 1인 단계에서 p. 악의적인 사용자의 경우 각 사용자는 검증자가 될 수 있는 두 번의 기회를 가질 수 있습니다. Br과 다른 하나는 Br ϫ, 각각 독립적으로 확률 p를 갖습니다. HSV r+1,s를 보자 1;Br Br에 이어 라운드 r+1의 단계 s에서 정직한 검증자 집합이 됩니다. 기타 표기법 HSV r+1,s와 같은 1;브 , MSV r+1,s 1;Br 및 MSV r+1,s 1;브뤼 유사하게 정의되어 있습니다. Chernoffbound를 이용하면 쉽습니다. 25두 개의 비어 있지 않은 블록이 있는 포크를 갖는 것은 무시할 수 있는 경우를 제외하고는 파티션이 있든 없든 불가능합니다. 확률.압도적인 확률로 그걸 보게 된다면, |HSV r+1,s 1;Br | + |HSV r+1,s 1;브뤼 | + |MSV r+1,s 1;Br | + |MSV r+1,s 1;브뤼 | < 2tH. 따라서 두 가지 모두 라운드 블록을 인증하는 적절한 서명을 가질 수 없습니다. 동일한 단계 s에서 r + 1. 더욱이 두 단계 s와 s′에 대한 선택 확률은 동일하며 선택은 독립적이며 압도적인 확률을 갖습니다. |HSV r+1,s 1;Br | + |MSV r+1,s 1;Br | + |HSV r+1,s′ 1;브뤼 | + |MSV r+1,s′ 1;브뤼 | < 2tH, 임의의 두 단계 s와 s′에 대해. F = 10−18일 때, 결합 결합에 의해, 적이 할 수 없는 한 정직한 사용자를 오랫동안 분할합니다(예: 104단계, 이는 \(\lambda\) = 10인 경우 55시간 이상). 초26), 높은 확률(예: 1−10−10)로 최대 하나의 분기가 tH개의 적절한 서명을 갖게 됩니다. 라운드 r + 1에서 블록을 인증합니다. 마지막으로, 물리적 파티션이 대략 동일한 크기의 두 부분을 생성한 경우 |HSV r,s의 확률 나 | + |MSV r,s 나 | \(\geq\)tH는 각 부분 i에 대해 작습니다. 비슷한 분석에 따르면, 비록 적이 각 부분에서 무시할 수 없는 확률로 포크를 생성하더라도 라운드 r의 경우, 네 개의 가지 중 많아야 하나가 라운드 r + 1에서 자랄 수 있습니다. 10.2 적대적 파티션 둘째, 적대자에 의해 파티션이 발생하여 메시지가 전파될 수 있습니다. 한 부분의 정직한 사용자는 다른 부분의 정직한 사용자에게 직접 도달하지 않지만 공격자는 두 부분 간에 메시지를 전달할 수 있습니다. 그래도 한 번은 누군가의 메시지를 부분이 다른 부분에서 정직한 사용자에게 도달하면 평소와 같이 후자에 전파됩니다. 만약 상대방은 많은 돈을 쓸 의향이 있으며, 해킹을 할 수도 있다고 생각됩니다. 인터넷을 하고 잠시 이렇게 파티션을 나누세요. 분석은 위의 물리적 파티션의 더 큰 부분(더 작은 부분)에 대한 분석과 유사합니다. 부분의 인구는 0인 것으로 간주될 수 있습니다. 공격자는 포크를 생성하고 각 정직한 사용자는 가지 중 하나만 볼 수 있지만 최대 하나의 가지가 성장할 수 있습니다. 10.3 네트워크 파티션 합계 네트워크 파티션이 발생할 수 있고 파티션 아래에서 한 라운드의 포크가 발생할 수도 있지만 이는 오래 지속되는 모호함이 아닙니다. 포크는 수명이 매우 짧으며 실제로는 최대 한 라운드 동안 지속됩니다. 에서 최대 하나를 제외한 파티션의 모든 부분에서 사용자는 새로운 블록을 생성할 수 없으므로 (a) 네트워크에 분할이 있다는 것을 인식하고 (b) "사라지는" 블록에 절대 의존하지 마십시오. 감사의 말 먼저 인용된 Democoin 시스템의 공동 저자인 Sergey Gorbunov에게 감사 인사를 전하고 싶습니다. 많은 계몽적인 토론과 지적을 해주신 Maurice Herlihy에게 진심으로 감사드립니다. 파이프라이닝이 Algorand의 처리량 성능을 향상시키고 26 사용자는 해당 항목에 대해 최소한 tH개의 서명을 본 경우에만 2\(\lambda\) 시간을 기다리지 않고 단계 s를 완료한다는 점에 유의하십시오. 같은 메시지. 서명이 충분하지 않으면 각 단계는 2\(\lambda\) 시간 동안 지속됩니다.
이 문서의 이전 버전을 설명합니다. 의견을 주신 Sergio Rajsbaum에게 깊은 감사를 드립니다. 이 문서의 이전 버전. 몇 가지 심도 있는 토론을 해주신 Vinod Vaikuntanathan에게 많은 감사를 드립니다. 그리고 통찰력. Yossi Gilad, Rotem Hamo, Georgios Vlachos 및 Nickolai Zeldovich에게 많은 감사를 드립니다. 이러한 아이디어를 테스트하기 시작하고 많은 유용한 의견과 토론을 해주셔서 감사합니다. Silvio Micali는 수많은 토론과 지도를 해주신 Ron Rivest에게 개인적으로 감사의 말씀을 전하고 싶습니다. 30년 이상 암호화폐 연구에 종사했으며, 인용된 소액 결제 시스템을 공동 집필했습니다. 이는 Algorand의 검증자 선택 메커니즘 중 하나에 영감을 주었습니다. 우리는 이 기술을 다음 단계로 끌어올리기를 희망합니다. 그동안 여행과 교제 정말 재미있어요. 정말 감사해요.
ネットワークパーティションの処理
前述したように、ネットワーク内のすべてのユーザー間のメッセージの伝播時間は \(\lambda\) と Λ によって上限があると仮定します。今日のインターネットは高速かつ堅牢であるため、これは強い仮定ではありません。 これらのパラメータの実際の値は非常に妥当です。ここで、Algorand を指摘しましょう。 2 インターネットが時折 2 つの部分に分割されても動作し続けます。場合 インターネットが 3 つ以上の部分に分割されている場合も同様です。 10.1 物理パーティション まず第一に、パーティションは物理的な理由によって引き起こされる可能性があります。例えば、巨大地震が起こると、 最終的にはヨーロッパとアメリカの間のつながりを完全に破壊することになります。この場合、 悪意のあるユーザーも分割されており、2 つの部分間で通信は行われません。したがって、
2 つの敵対者が存在し、1 つはパート 1 に、もう 1 つはパート 2 に対応します。各敵対者は引き続き攻撃を試みます。 プロトコル自体の部分を壊します。 分割がラウンド r の途中で発生すると仮定します。その後も各ユーザーは次のユーザーとして選択されます。 検証者は PKr-k に基づいて、以前と同じ確率で検証します。 HSV r,s とする 私は およびMSV r、s 私は それぞれ は、パート i \(\in\){1, 2} のステップ s における正直な検証者と悪意のある検証者のセットになります。私たちは持っています |HSV r、s 1 | + |MSV r,s 1 | + |HSV r,s 2 | + |MSV r,s 2 | = |HSV r,s| + |MSV r,s|。 |HSV r,s| に注意してください。 + |MSV r,s| < |HSV r,s| + 2|MSV r,s|圧倒的な確率で2thH未満。 ある部分 i に |HSV r,s がある場合 私は | + |MSV r,s 私は |無視できない確率、たとえば 1% で \(\geq\)tH の場合、 |HSV r,s の確率 3−i| + |MSV r,s 3−i| \(\geq\)tH は非常に低く、たとえば F = 10−18 の場合は 10−16 です。この場合、 十分な検証者が存在しないため、より小さい部分をオフラインとして扱うこともできます。 この部分は、ブロックを証明するための署名を生成します。 一般性を失わずに、より大きな部分、たとえばパート 1 を考えてみましょう。 |HSV r,s| ですが< ネットワークが分割されている場合、各ステップ s の確率は無視できる tH |HSV r,s 1 |かもしれない 無視できない確率で tH 未満になります。 この場合、敵対者は、何らかの手段で、 その他の無視できない確率では、空ではないブロック Br と空のブロック Br を使用して、バイナリ BA プロトコルをラウンド r でフォークに強制します。 両方とも有効な署名を持っています。25 たとえば、 Coin-Fixed-To-0 ステップ、HSV r,s のすべての検証者 1 ビット 0 と H(Br) に署名され、それらを伝播します。 メッセージ。 MSV r,s のすべての検証者 1 0 と H(Br) にも署名しましたが、メッセージは差し控えられました。なぜなら |HSV r、s 1 | + |MSV r,s 1 | \(\geq\)tH、システムには Br を認証するのに十分な署名があります。ただし、以来、 悪意のある検証者が署名を保留した場合、ユーザーはステップ s + 1 (Coin-Fixed-To1 ステップ) を入力します。なぜなら |HSV r,s 1 | < tH 分割によるもの、HSV r,s+1 の検証者 1 見なかった ビット 0 の署名とビット 1 の署名すべて。MSV r,s+1 のすべての検証者 1 同じことをしました。なぜなら |HSV r,s+1 1 | + |MSV r,s+1 1 | \(\geq\)tH、システムには Br を証明するのに十分な署名があります。 ああ。敵対者 次に、MSV r,s の署名を解放してフォークを作成します。 1 0 および H(Br) の場合。 したがって、ラウンド r の対応するブロックによって定義される 2 つの Qr が存在します。ただし、 フォークは続行されず、ラウンド r + 1 では 2 つの分岐のうち 1 つだけが成長する可能性があります。 Algorand の追加手順 2. 空ではないブロック Br と空のブロックを見たとき ブロックBr ϫ 、空ではないもの (およびそれによって定義された Qr) をたどります。 実際、プロトコル内の空でないブロックを使用するようにユーザーに指示することで、大規模な場合は PKr+1−k の正直なユーザーの数が、ラウンド r +1 の開始時にフォークがあることに気づき、その後、 空のブロックには十分なフォロワーがいないため、成長しません。敵対者がなんとかして 正直なユーザーを分割して、一部の正直なユーザーに Br (おそらく Br) が表示されるようにします。 iq) だけを見る人もいます。 Br ああ。なぜなら、敵対者は、そのうちのどれが Br に続く検証者になるのか、そしてどれが検証者になるのかを知ることができないからです。 Brに続く検証者になります iq、正直なユーザーはランダムに分割され、それぞれのユーザーは依然として (Br に関して、または Br に関して) 検証者になります。 ϫ) ステップ s > 1 の確率で p.悪意のあるユーザーの場合、それぞれが検証者になるチャンスが 2 回あります。 Br ともう 1 つは Br ϫ、それぞれ独立に確率 p を持ちます。 HSV r+1,s とする 1;Br は、Br に続くラウンド r+1 のステップ s における正直な検証者のセットになります。その他の表記 HSV r+1,s など 1;BR 、MSV r+1,s 1;Br およびMSV r+1,s 1;ブリー も同様に定義されます。 Chernoffboundなら簡単です 25 2 つの空でないブロックを含むフォークを持つことは、パーティションの有無にかかわらず、ごくわずかなブロックを除いて不可能です。 確率。圧倒的な確率でそれを見ると、 |HSV r+1,s 1;Br | + |HSV r+1,s 1;ブリー | + |MSV r+1,s 1;Br | + |MSV r+1,s 1;ブリー | < 2thH。 したがって、2 つのブランチの両方がラウンド用のブロックを証明する適切な署名を持つことはできません。 同じステップ s で r + 1。さらに、2 つのステップ s と s' の選択確率は 同様であり、選択は独立しており、これも圧倒的な確率で行われます |HSV r+1,s 1;Br | + |MSV r+1,s 1;Br | + |HSV r+1,s' 1;ブリー | + |MSV r+1,s' 1;ブリー | < 2thH、 任意の 2 つのステップ s と s' について。 F = 10−18 の場合、敵対者ができない限り、和集合による 正直なユーザーを長時間 (たとえば 104 ステップ、\(\lambda\) = 10 の場合 55 時間以上) に分割します。 秒26)、高い確率 (たとえば 1-10-10) で、適切な署名を持つブランチは最大でも 1 つだけです。 ラウンド r + 1 でブロックを認定します。 最後に、物理パーティションがほぼ同じサイズの 2 つの部分を作成した場合、 |HSV r,s の確率 私は | + |MSV r,s 私は | \(\geq\)tH は各部分 i で小さい。同様の分析を行った結果、 たとえ敵対者が各部分で無視できない確率でフォークを作成できたとしても ラウンド r では、4 つのブランチのうち最大 1 つがラウンド r + 1 で成長します。 10.2 敵対的パーティション 次に、分割は敵対者によって引き起こされる可能性があるため、メッセージが伝播されます。 ある部分の正直なユーザーによる情報は、他の部分の正直なユーザーには直接届きませんが、 敵対者は 2 つの部分間でメッセージを転送できます。それでも、ある方からのメッセージがあれば、 一部が他の部分で正直なユーザーに到達すると、通常どおり後者で伝播されます。もし 敵対者は多額の資金を費やすつもりであり、システムをハッキングできる可能性があると考えられます。 インターネットに接続し、しばらくこのようにパーティション化します。 分析は、上記の物理パーティションの大部分 (小さい部分) の分析と同様です。 部分は人口 0 を持つと見なすことができます): 敵対者はフォークを作成できる可能性があり、 正直なユーザーはそれぞれブランチの 1 つしか表示しませんが、成長できるブランチは最大でも 1 つだけです。 10.3 ネットワークパーティションの合計数 ネットワーク分割が発生する可能性があり、パーティションの下で 1 ラウンドのフォークが発生する可能性がありますが、 フォークの存続期間は非常に短く、実際には長くても 1 ラウンドしか存続しません。で 最大 1 つを除くパーティションのすべての部分では、ユーザーは新しいブロックを生成できないため、 (a) ネットワークに分割があることを認識し、(b) 「消える」ブロックに決して依存しないでください。 謝辞 まず最初に、引用した Democoin システムの共著者である Sergey Gorbunov に感謝したいと思います。 多くの啓発的な議論をしていただき、指摘してくださった Maurice Herlihy に心からの感謝を申し上げます。 パイプライン化により Algorand のスループット パフォーマンスが向上し、 26 ユーザーが 2\(\lambda\) 時間待たずにステップ s を終了できるのは、少なくとも tH 個の署名を見た場合のみであることに注意してください。 同じメッセージです。十分な署名がない場合、各ステップは 2\(\lambda\) 時間続きます。
この論文の以前のバージョンの説明。 Sergio Rajsbaum 氏、コメントありがとうございます。 この文書の以前のバージョン。いくつかの深い議論をしてくれた Vinod Vaikuntanathan に感謝します。 そして洞察。 Yossi Gilad、Rotem Hamo、Georgios Vlachos、Niccolai Zeldovich に感謝します。 これらのアイデアのテストを開始したこと、そして多くの有益なコメントやディスカッションに感謝します。 シルヴィオ・ミカリは、数え切れないほどの議論と指導をしてくれたロン・リベストに個人的に感謝したいと思います。 30 年以上にわたる暗号研究で、引用されたマイクロペイメント システムの共著者として貢献 これは、Algorand の検証者選択メカニズムの 1 つに影響を与えました。 私たちはこのテクノロジーを次のレベルに引き上げたいと考えています。その間、旅行と交友関係 とても楽しいです、とても感謝しています。