이 문서의 목적 : Chia 합의 알고리즘의 1.1 버전 설명

타겟 고객층: 블록 체인에 익숙하지만 PoS (Proofs of Space), VDF (Proofs of Time / Verifiable Delay Functions) 및 Chia에는 익숙하지 않은 기술 청중.

비트 코인 / 블록 체인을 처음 사용하는 경우이 교과서를 먼저 읽으십시오. Bitcoin 및 Chia 네트워크 합의 설명ww암호화폐 기술.

제발 묻다 이 문서를 개선 할 수 있도록 keybase에 대한 질문!

동기 부여

그만큼 Chia Consensus 알고리즘은 작업 증명 및 지분 증명에 대한 환경 친화적이고 안전하며 분산 된 대안을 만드는 것을 목표로합니다.

작업 증명 (PoW) 암호 화폐는 엄청난 양의 전기를 태 웁니다. 또한 하드웨어 제조 및 소유의 집중과 저렴한 비용의 집중으로 인해 중앙 집중화되는 경향이 있습니다. 에너지, PoW는 일반 사용자가 액세스 할 수 없으며 다양한 공격에 취약합니다.

지분 증명에는 여러 가지 형태가 있으며 각각 장단점이 있습니다. 일반적인 약점은 다음과 같습니다. 거래소에 의한 집중된 자금 통제; 위임 집중; 체크 포인트 및 주관성에 대한 의존 (주기적으로 온라인 상태 여야 함) 일반 사용자에게 접근 불가; 슬래 싱 위험; 클럭 동기화 가정, 네트워킹 가정및 기타 보안 가정.

소개

분산된 합의 알고리즘은 암호화로 검증 가능하고 희소한(무한이 아닌) 리소스를 사용하는 Sybil 저항을 필요로 합니다. 이전 블록체인 시스템에서 부족한 자원은 컴퓨팅 파워와 지분이었습니다. 공간 증명은 저장 용량을 희소 자원으로 사용함으로써 비트코인의 원래 이상인 "XNUMX CPU XNUMX 투표"에 훨씬 더 가까운 대안입니다. 예를 들어amp르, 500GiB를 저장하는 사람은 5 개의 "투표"가 있고, 100GiB를 저장하는 사람은 1 개의 "투표"가 있습니다.”, 여기서 투표블록을 이기고 검증 할 수있는 기회를 의미합니다., 실제 투표가 아닙니다. s 만 사용그러나 토 라이징 용량은 안전하지 않습니다. 다른 하나 암호 퍼즐 조각 이 시스템을 보호하는 데 사용됩니다. 즉, 검증 가능한 지연 함수입니다. 암호화 실시간이 지났다는 증거. 공간과 시간의 증거를 결합하여 공정한 시스템을 만들 수 있습니다. 이러한 시스템에서 사용자는 무작위로 저장합니다.일정 기간 동안 하드 드라이브에서 데이터를 찾고 Chia를 획득 할 수있는 기회는 할당 된 공간에 비례합니다. 또한 이러한 시스템은 작업 증명 복권과 유사한 방식으로 수십억 명의 참가자로 확장됩니다. 가입하는 데 자금, 특수 하드웨어, 등록 또는 허가가 필요하지 않으며 하드 드라이브 만 있으면됩니다. 그리고 시스템은 완전히 투명하고 결정적입니다. 누구든지 어떤 체인이 표준 체인인지 효율적이고 객관적으로 확인할 수 있습니다.

공간 증명

우주 프로토콜 증명은 다음 중 하나입니다.

  1. Verifier는 Prover에게 챌린지를 보낼 수 있습니다.
  2. Prover는 Prover가 정확한 시간에 특정 양의 저장 공간을 예약하고 있음을 검증 자에게 보여줄 수 있습니다.

공간 증명 프로토콜에는 플로팅, 증명 / 농업 및 검증의 세 가지 구성 요소가 있습니다. 자세한 내용은 여기를 참조하세요.

그림 1: 먼저, 증명자는 디스크 공간의 일부를“플롯”하거나 할당합니다 (1). 그런 다음 증명자는 공간 증명 (2,3,4)으로 도전에 응답함으로써 "농장"합니다. 검증자는 증명이 해당 챌린지에 유효한지 확인합니다.

플로팅 우리가 농부라고 부르는 증명자가 일정량의 공간을 초기화하는 과정입니다. 농부는 랩톱에 예약할 수 있는 최소 100GiB가 있는 사람이거나 사용하지 않는 대용량 저장 공간을 할당할 준비가 된 기업이 될 수 있습니다. 상한선은 없습니다. 플로팅은 몇 시간 또는 며칠이 걸리며 한 번만 수행됩니다. 초기화된 공간은 file 플롯이라고 합니다. 플롯 크기는 ak 매개변수에 의해 결정되며, 여기서 space = 780 * k * 포스(2, 케이  10), 최소 k 32 (101.4GiB). Chia 기준 1.0, k32 플롯은  빠른 상품 기계로 몇 시간, 24 하나의 CPU 코어와 몇 GB의 메모리를 사용하는 느린 시스템에서 시간. 엄청난 속도 향상의 기회가 있습니다. PosSpace 건설은 Beyond를 기반으로합니다. 헬만 [8 다운로드], 그러나 6 번 중첩되고 실용적으로 만들기위한 다른 휴리스틱을 포함합니다.

결과는 플롯 file 예를 들어amp르, 100 G이브. NS file 무작위로 보이는 데이터가 있는 2개의 테이블이 있습니다. 각 테이블에는 XNUMX^k 항목이 있습니다. 표 i의 각 항목에는 다음이 포함됩니다. 표 i-1에 대한 두 포인터 (이전 표). 마지막으로, 각 테이블 1 항목에는 0과 2 ^ k, "x- 값"이라고합니다. 공간 증명은 특정 수학적 관계를 갖는 64 개의 x- 값 모음입니다.

위의 다이어그램에서 Prover가 초기화 됨 100 GiB, 그들은 도전을 받고 증거를 만들 준비가되어 있습니다. 이 체계의 한 가지 매력적인 속성은 비대화 형이라는 것입니다. 등록 없음 또는 온라인 연결이 필요합니다. PoW와 유사한 보상을받을 때까지 블록 체인에 도달하는 것은 없습니다.

농업 농부가 정해진 양의 저장을 합법적으로 제쳐두고 있음을 증명하기 위해 일련의 도전을받는 과정입니다. 각 도전에 대한 응답으로 농부는 자신의 플롯을 확인하고 증거를 생성하고 승리 증거 확인을 위해 네트워크에.

이 프로세스의 각 반복은 테이블 조회입니다. ㅏ 조회하다 256 비트 챌린지를 입력으로 받아 증명을 출력합니다. 농부는 다음과 같은 도전에 대응합니다. 값 쌍 읽기 표 7. 이들은 표 6의 두 항목을 가리 킵니다. 마지막으로 농부는 x 값의 전체 트리를 가져옵니다. 여기에는 테이블 7, 테이블 6에 대해 5 개, 테이블 640에 대해 10 개 등의 읽기가 필요합니다. 전체 프로세스는 검색 시간이 XNUMXms 인 느린 HDD를 가정 할 때 약 XNUMXms가 걸립니다. 읽는 데이터의 양은 적고 플롯 크기와 무관합니다.

이 프로세스에서 생성 된 대부분의 증명은 검증을 위해 네트워크에 제출하기에 충분하지 않기 때문에 (나중에 논의 됨) 트리의 한 가지만 확인, 결과에 따라 두 개의 x- 값이 생성됩니다. 그런 다음 이러한 방식으로 생성 된 x 값을 256 비트 문자열로 해시하여 증명이 좋은지 여부를 결정합니다. 이러한 x 값을 해시하면 256 비트 임의 값인 품질 문자열이 제공됩니다. 이것은 난이도와 플롯 크기와 결합되어 required_반복. 필요한 경우 _반복 특정 숫자보다 작 으면 (블록 체인에 들어갈 수 있음) 전체 PoSpace를 조회합니다. 하나의 분기를 찾는 데는 약 7 개의 디스크 검색 및 읽기만 필요하거나 느린 하드 드라이브에서는 약 70ms가 필요합니다.

그림 2: 플롯의 구조 file. 64개의 빨간색 x-값은 증거를 나타내고 2개의 녹색 x-값은 품질을 나타냅니다. 

추가 최적화는 특정 비율을 실격시키는 것입니다(예:ample 511/512) 각 챌린지에 대한 적격성 플롯. 이것은 플롯 필터. 예를 들어ample, 챌린지 및 plot_id의 해시가 다음으로 시작해야 함 9 0. 이것은 모든 사람에게 똑같이 상처를 입히므로 (반복 공격자를 제외하고) 공평합니다. 따라서 파밍에는 리소스가 거의 필요하지 않으며 몇 분마다 디스크 읽기가 거의 없습니다.  Chia 사용자는 단일 Raspberry Pi에서 여러 PiB 스토리지를 성공적으로 파밍했습니다. 우리는 농부들이 HDD가 저렴하기 때문에 항상 HDD를 사용한다고 가정하고 속도는 농업과 관련이 없기 때문에 SSD를 사용할 이유가 없습니다. 그러나 SSD / RAM은 더 빠른 플로팅에 사용할 수 있습니다.

플롯 키는 플롯에 저장된 개인 키입니다. file. 플롯 ID는 플롯 공개 키와 풀 공개 키. 공간 증명이있는 블록을 생성하려면 플롯 키와 풀 키를 모두 사용하여 서명해야합니다. 따라서 플롯을 생성 한 후 풀을 변경할 수 없습니다. 실제로 플롯 키는 플롯에 저장된 로컬 키와 농부 소프트웨어에 저장된 키 사이의 2/2 BLS 집계 공개 키입니다. 보안 및 효율성을 위해 농부는이 키 및 서명 체계를 사용하여 중앙 집중식 서버를 실행할 수 있습니다. 서버는 플롯을 저장하는 많은 수확기 기계에 연결될 수 있습니다. 파밍에는 파머 키와 로컬 키가 필요하지만 풀 키는 필요하지 않습니다. 풀의 서명이 캐시되어 여러 블록에 재사용 될 수 있기 때문에.

확인 중: 농부가 공간 증명을 성공적으로 생성 한 후에는 몇 가지 해시를 수행하고 증명의 x 값을 비교하여 증명을 확인할 수 있습니다. 증명은 64 x 값의 목록이며 각 x 값은 k 비트 길이입니다. k32의 경우 이것은 256 바이트이므로 매우 간결합니다. 검증은 매우 빠르지 만, blake3 및 chacha8 작업이 필요하기 때문에 이더 리움 (체인 간 신뢰없는 전송을 가능하게하는 것)에서 견고 함을 검증 할만큼 충분히 빠르지는 않습니다.

시간 증명

시간 증명 또는 V제거할 수 있는 D일 레이 Function은 순차 함수가 특정 횟수만큼 실행되었다는 증거입니다.


증명할 수 있는: 이것은 계산을 수행 한 후 (시간이 소요됨) 증명자가 매우 짧은 시간에 아주 작은 증명을 만들 수 있음을 의미합니다. 검증자는 전체 계산을 다시 실행할 필요없이이 증명을 검증 할 수 있습니다.

지연: 이것은 증명자가 함수를 계산하는 데 실제로 많은 시간을 소비했음을 의미합니다 (정확히 얼마나 많은지는 알 수 없지만).

기능: 이것은 결정적이라는 것을 의미합니다. 입력 x에 대한 VDF를 계산하면 항상 동일한 결과 y가 산출됩니다.

여기서 핵심 단어는 여러 번 해싱하는 것과 같이 "순차적"입니다. hash (hash (hash (a))) 등입니다. 이것은 증명자가 비트 코인 / 작업 증명과 달리 더 빨리 가기 위해 더 많은 기계를 구입할 수 없음을 의미합니다. 따라서 VDF를 계산하려면 실제 (벽시계) 시간이 필요하다고 가정 할 수 있습니다. 우리가 사용하는 구조는 반복 제곱입니다. 증명자는 도전을 x T 번 제곱해야합니다. 이것은 시간 ϴ (T)가 필요합니다. 증명자는 또한 이것이 제대로 수행되었다는 증명을 만들어야합니다.

그림 3 : Verifier (블록 체인)는 증명 자 (timelord)에게 챌린지를 보내고 증명자는 출력과 증명을 계산합니다. 

다음 세부 사항은 합의 알고리즘을 이해하는 데 그다지 중요하지 않지만 공격자가 훨씬 더 빠른 시스템을 얻는 데 성공하면 일부 공격이 가능하기 때문에 사용할 VDF를 선택하는 것이 중요합니다.

Chia에서 사용하는 VDF는 알 수없는 순서의 클래스 그룹으로 반복 제곱됩니다. 순서를 알 수없는 큰 그룹을 생성하는 두 가지 주요 방법이 있습니다. 첫 번째는 RSA 모듈러스를 사용하고 정수 mod N을 그룹으로 사용하는 것입니다. 많은 참여 당사자들과 함께 모듈러스를 생성 할 수 있다면 그룹의 순서는 알 수 없습니다. 엠피씨 의식. 더 쉬운 방법은 알 수없는 순서의 그룹 인 큰 소수 판별을 가진 클래스 그룹을 사용하는 것입니다. 복잡하거나 신뢰할 수있는 설정이 필요하지 않으므로 Chia에 대해이 옵션을 선택했습니다. 이러한 그룹 중 하나를 만들려면 큰 난수 소수만 있으면됩니다. 단점은 클래스 그룹 코드가 실생활에서 덜 테스트되고 최적화가 RSA 그룹보다 덜 알려져 있다는 것입니다. 제곱에 대해 동일한 초기 요소를 사용하고 (a = 2, b = 1 클래스 그룹 요소) 대신 챌린지를 사용하여 판별 자로 사용되는 각 VDF에 대해 새로운 난수 소수를 생성합니다. 판별 자의 크기는 1024 비트이며 이는 증명 크기가 약 1024 비트임을 의미합니다. 우리는 Wesolowski 계획 [다운로드] n (1 <= n <= 64) 단계로 분할하여 증명 작성이 매우 빠릅니다. n-wesolowski 증명은 클 수 있으므로, 더 작지만 만드는 데 더 많은 시간이 필요하기 때문에 사용 가능한 즉시 1-wesolowski 증명으로 대체합니다. 증명 자체는 체인에 전념하지 않으므로 교체 할 수 있습니다.

주입

요약하자면 VDF는 챌린지라고하는 입력을 받아 함수가 올바르게 평가되었음을 증명하는 증명과 함께 출력을 생성합니다.

VDF에 값을 주입하는 것은 해당 값이 VDF의 출력과 결합되어 다음 VDF의 입력 / 챌린지로 사용되는 새 값을 생성하는 것을 의미합니다. 따라서 우리는 VDF를 연결하지만 그 사이에 새로운 값 (블록)을 적용합니다. 이것은 우리가 시간 증명과 공간 증명을 번갈아 가며 블록의 선형 진행을 갖도록 사용됩니다.

합의 알고리즘

BLS 서명

이 문서에서 시그니처를 참조 할 때마다 확장 체계를 사용하는 IETF 사양에 따라 결정적 BLS 시그니처가 사용된다고 가정합니다. 이러한 디지털 서명을 수행하는 개인 키는 농부가 제어하고 저장하며 각 플롯에 고유 한 개인 키가 사용됩니다.

노드의 역할

농부들

농부들 플롯을 저장하고 공간 증명을 확인하여 합의 알고리즘에 참여하는 노드입니다. 그들은 전체 노드 (일반적으로 동일한 기계에 있음)와 통신합니다. 농부들은 또한 플롯이 저장되는 기계에 상주하는 서비스 인 하나 이상의 수확기와 통신하고 농부 프로세스를 대신하여 공간 증명을 조회합니다.

타임로드

타임로드는 시간 증명을 만들고 VDF에 블록을 주입하여 합의 알고리즘에 참여하는 노드입니다.

전체 노드

풀 노드는 타임로드 또는 농부가 될 수도 있고 풀 노드의 역할을 수행 할 수도 있습니다. 여기에는 공간 및 시간 증명 방송, 블록 생성, 보류중인 트랜잭션의 mempool 유지, 과거 블록 체인 저장, 다른 전체 노드 및 지갑 (라이트 클라이언트)에 블록 업로드가 포함됩니다.

도전 과제

Chia 합의 알고리즘은 주기적으로 조정되는 하위 슬롯이라는 시간 동안 VDF를 실행하여 최대 약 10 분을 추가합니다. 주기적으로 챌린지가 출시되어 농부들이 공간 증명을 위해 플롯을 확인하는 일종의 미니 복권을 시작합니다. 농부들이 자격을 갖춘 공간 증명을 찾으면이를 네트워크에 방송합니다. 난이도는 각 하위 슬롯의 전체 네트워크에 대해 32 개의 승리 증명을 목표로 변경됩니다. 이러한 증명은 하위 슬롯 내에서 서로 다른 시간에 VDF에 주입됩니다. 농부들은 가장 많은 누적 난이도가있는 체인 인 가장 무거운 체인을 따릅니다 (보통 블록이 가장 많은 체인).

그림 4 : 세 개의 하위 슬롯. x 축은 시간을 나타냅니다. 점선은 VDF 실행을 나타내며 시간이 지남에 따라 왼쪽에서 오른쪽으로 진행됩니다. 화살표는 해시 종속성을 나타냅니다 (다른 개체를 가리키는 개체에는 두 번째 개체의 해시가 포함됨). 

그림 4에서 우리는 c1, c2, c3의 세 가지 챌린지 포인트를 볼 수 있습니다. c1, c2 및 c3 지점에서 타임로드는 VDF에 대한 입력으로 제공되는 챌린지(256비트 해시)를 생성합니다. 타임로드는 이러한 해시를 사용하여 지정된 반복 횟수 동안 이 챌린지에 대한 VDF 계산을 시작합니다. 이 전에서ample, 각 슬롯은 100,000,000번의 반복입니다. VDF가 완료되면 타임로드는 새로운 도전과 VDF의 증거를 게시합니다. 슬롯 끝 정보의 주입은 각 하위 슬롯의 끝에서 발생합니다.

하위 슬롯: 작업 난이도 조정에 따라 고정 된 수의 VDF 반복 세그먼트로, 항상 목표 고정 시간 (예 : 10 분)으로 조정됩니다.

하위 슬롯 반복: 각 서브 슬롯이 가져야하는 VDF 반복 횟수를 결정하는 주기적으로 조정되는 상수입니다.

도전: 농부의 플롯과 챌린지 체인 VDF에 대한 공간 문제 증명으로 사용되는 sha256 출력 문자열입니다. 이것은 또한 도전 해시.

그림 4에서 볼 수 있듯이 세 개의 VDF가 동시에 실행되며 각각 다른 용도로 사용됩니다. 다음 섹션에서 설명합니다.

간판 지점 및 주입 지점

챌린지 및 보상 체인의 각 하위 슬롯은 64 개의 더 작은 VDF로 나뉘며 이러한 각 작은 VDF 사이에는 a라는 포인트가 있습니다. 간판 포인트. 타임로드는 각 간판 지점에 도달하면 VDF 출력 및 증거를 게시합니다. 챌린지 체인과 보상 체인에는 모두 간판 포인트가 있습니다 (주입 된 챌린지 체인은 아님). 각 간판 포인트 사이의 반복 횟수는 다음과 같습니다. sp 간격 반복, 이는 서브 슬롯 반복 / 64와 같습니다.

 

하위 슬롯 시작시의 문제도 유효한 간판 포인트입니다. 64 개 사이 니지 포인트 각각에 도달하면 타임로드와 노드가 네트워크를 통해 브로드 캐스트합니다. 농부들은 이러한 간판 포인트를 받고 간판 포인트, 플롯 ID 및 하위 슬롯 챌린지를 기반으로 플롯 필터를 계산합니다. 플롯 필터 비트가 9 개의 XNUMX으로 시작하는 경우, 해당 플롯은 해당 간판 지점에 대한 필터를 통과하고 계속 진행할 수 있습니다. 이것은 모든 플롯의 약 511/512를 실격합니다. file해당 간판 지점에 대한 네트워크의 s.

그만큼 공간 증명 문제는 플롯 필터 비트의 해시로 계산됩니다.

이 과제를 사용하여 농부들은 디스크에서 필터를 통과 한 각 플롯에 대해 품질 문자열을 가져옵니다.. 이 프로세스는 거의 즉각적이며 사이 니지 포인트는 공간 증명의 일부에서 파생 된 해시라는 점을 기억하십시오 (그러나 전체 공간 증명은 아직 검색되지 않음).

농부는 필요한 반복 각 공간 증명에 대해. 필요한 반복 <sp 간격 반복 인 경우 공간 증명이 블록 체인에 포함될 수 있으므로 농부는 디스크에서 전체 공간 증명을 가져오고 (품질 만 가져 오는 것보다 더 오래 걸립니다) 미완성 하위 블록을 생성합니다. 네트워크에 브로드 캐스트합니다. 평균 32 개가 각 하위 슬롯에 대한 전체 네트워크에 적합하기 때문에 필요한 반복의 대부분은 너무 높을 것입니다. 이것은 무작위 프로세스이므로 많은 수의 증명이 자격이 될 수 있지만 가능성은 거의 없습니다. 그만큼 간판 포인트 반복 하위 슬롯의 시작부터 간판 지점까지의 반복 횟수입니다.

그만큼 주입 반복 위 품질의 블록이 블록 체인에 포함될 수있는 서브 슬롯의 시작부터 반복 횟수입니다. 이것은 다음과 같이 계산됩니다.

따라서 주입 반복은 3-4 사이 니지 포인트입니다. ~ 후에 간판 포인트. 농부들은 주입 지점에 도달하기 전에 증명과 블록을 제출해야합니다. 모듈러스는 표지판 지점이 하위 슬롯의 끝 근처에있는 경우 다음 하위 슬롯으로 오버플로를 허용하기위한 것입니다. 이것은 나중에 확장됩니다.

주입 지점에서 농부의 블록은 주입 지점 VDF 출력과 결합되어 그 시점부터 VDF에 대한 새로운 입력을 생성합니다. 즉, 농부의 블록을 VDF에 주입합니다.. 블록은 주입 반복에 도달하고 VDF 증명이 블록에 첨부 된 후에 만 ​​완전히 유효합니다.

b1 블록이 유효 / 완료 되려면 두 개의 VDF 증명이 포함되어야합니다. 하나는 r1에서 간판 지점까지이고 다른 하나는 r1에서 b1까지입니다. (실제로는 나중에 설명 할 VDF 체인이 세 개이므로 더 많습니다.) 그림 5에서 농부는 간판 지점에서 생성합니다 (B1 '이라고합시다). 그러나 B1 '은 주 입점 VDF가 필요하기 때문에 아직 완성되지 않았습니다. 주입 반복 VDF가 해제되면 B1 '에 추가되어 B1에서 완성 된 블록을 형성합니다.

수치 5타임로드 간판 지점과 주입 지점 모두에 대한 증거를 만듭니다. 하지만 그들은 후자의 경우 주입 (VDF 클래스 그룹 변경). 제곱은 새로운 VDF가 시작되는 주입을 상징합니다. Sp_iterval_iterrs = 3.125M. 64 SP로 업데이트

전직을 생각해보자amp하위 슬롯 반복은 5M이고 sp 간격 반복은 200M입니다. 농부가 총 3.125개의 구획을 가지고 있다고 가정해 보겠습니다.

64개의 사이니지 포인트 각각에 대해 9초마다 또는 3.125만 XNUMX번 반복할 때마다 네트워크에 릴리스되므로 농부는 플롯 필터를 계산하고 몇 개의 플롯이 통과하는지 확인합니다. 각 간판 지점에 대한 필터를 통과하는 각 플롯에 대해 농부는 필요한 반복을 계산합니다. 이 전에서ample, 농부는 전체 하위 슬롯에서 한 번만 required_iterations < 3.125M을 얻습니다(2.2879M이라고 가정해 봅시다). 그림 5에서 이것은 14번째 간판 지점에 있습니다. 주입 반복은 다음과 같이 계산됩니다.

그들이 이겼다는 것을 알게 된 후 (14 번째 주입 지점에서), 농부는 전체 공간 증명을 가져 와서 트랜잭션을 포함하여 블록을 만들고이를 네트워크에 브로드 캐스트합니다. 그들은 블록을 주입하여 주입 지점 VDF를 생성 할 타임로드에게 도달하기 위해 몇 초 (주입 반복까지)가 있습니다. 이러한 VDF를 사용하면 블록을 완료하고 블록 체인에 추가 할 수 있습니다.

Sp 간격 반복 : floor (sub-slot iterations / 64)로 정의됩니다.

간판 포인트 : VDF가 주기적으로 릴리스되는 챌린지 및 보상 체인의 하위 슬롯 내에서 64 개의 중간 시점. 각 사이 니지 지점에서 VDF 출력이 생성되고 네트워크를 통해 브로드 캐스트됩니다. 하위 슬롯의 첫 번째 간판 지점은 도전 그 자체입니다. 각 블록에는 간판 포인트가 있으므로 블록의 공간 증명이 해당 간판 포인트에 적합해야합니다.

필수 반복: 블록을 만들 수있는 공간 증명을 선택하는 데 사용되는 품질 문자열을 사용하여 계산 된 숫자입니다. 대다수의 공간 증명에는 너무 높은 반복이 필요하므로 체인에 포함 할 수 없습니다. 이 숫자는 주입 지점을 계산하는 데 사용됩니다.

주입 지점 : 시점 주입 반복 특정 도전이있는 공간 증명을 위해 도전 지점에서 주입 반복. 이 시점에서 농부의 블록은 보상 체인 VDF에 주입됩니다. 블록의 주입 지점은 항상 해당 블록의 표지판 지점 뒤의 3-4 표지판 지점 사이에 있습니다. 사이 니지 포인트 반복 + 3 * sp 간격 반복 + 필수 반복으로 계산됩니다.

간판 지점과 주입 지점 사이의 지연은 고아 및 이기적인 농업에 대한 방어, 포크 감소, VDF 일시 중지 없음 등 많은 이점이 있습니다. 이 약 30 초의 지연은 농부들이 슬롯 VDF를 지연시키지 않고 서명 할 충분한 시간을 갖도록 제공됩니다. 잘 행동하는 농부들은 공간 증명마다 하나의 간판 지점에만 서명합니다. 즉, 공격자가 체인을 쉽게 재구성 할 수 없음을 의미합니다.

여러 블록

그림 7: 여러 블록. Sp1 = 사이 니지 포인트 1

그림 7에서 볼 수 있듯이 여러 블록이 동일한 하위 슬롯에 주입될 수 있습니다. Chia의 시스템은 서브 슬롯당 32개의 블록을 목표로 하며, 이는 작업 난이도 알고리즘을 통해 조정됩니다. VDF는 이전 주입 지점에서 현재 표지판 지점으로, 이전 주입 지점에서 현재 주입 지점으로 이동합니다. 각 블록에 필요한 VDF 증명은 겹칠 수 있습니다. 예를 들어amp르, B2 VDF 증명 포함 B1 에게 sp2, 및 B1 에게 B2B3 증거 포함 B1 에게 sp3, 그리고에서 B2 에게 B3B2 전혀 의존하지 않는다 B3, 하지만 B3 에 따라 달라집니다 B2, VDF는 B2 주입 지점. 다시 말하지만, 블록은 간판 지점에서 생성되지만 주입 지점 VDF가 누락되었습니다. 이 VDF가 추가되면 블록이 완성되고 블록 체인의 일부를 형성합니다. 주입 지점에는 서명이 없습니다. 주입 지점에 추가 된 유일한 것은 VDF입니다.

XNUMX 개의 VDF 체인

하나의 VDF (보상 체인 용) 만 사용했다면 블록을 포함하거나 제외하면 다음 슬롯에 대한 챌린지를 제어 할 수 있습니다. 이는 공격자가 다양한 조합을 시도하고 가장 적합한 도전을 선택할 수 있음을 의미합니다. 이러한 유형의 공격을 연삭 공격이라고하며 작업 증명에서 공간 증명 또는 PoStake로 변경하는 데있어 가장 큰 어려움 중 하나입니다. 자세한 내용은 "공격 및 대응"섹션에서 제공됩니다.

이를 완화하기 위해 과제는 슬롯에 주입되는 첫 번째 블록에만 기반합니다.

그림 8: 세 개의 VDF 체인. 공격자는 보상 체인 결과를 조작 할 수 있지만 이것은 c2에 영향을 미치지 않으므로 PoSpace 복권에 영향을 미치지 않습니다. cc = 챌린지 체인, rc = 보상 체인, sp = 사이 니지 포인트. B = 블록.

이 다이어그램에는 많은 것들이 있습니다. 먼저 보시다시피 4 개의 블록 : B1, B2, B3, B4, 이들은 농부가 만든 블록으로, 그들이 가리키는 모든 데이터를 포함합니다. 해당 하위 슬롯에 5 개 이상의 블록이 생성되었다고 가정하지만 공간 제약으로 인해 모든 블록을 그리지는 않습니다.

또한 챌린지 체인과 보상 체인 모두 64 개의 사이 니지 포인트를 생성합니다. 블록에는 두 체인에 대한 간판 포인트 VDF가 포함되어야합니다. 블록에는 세 체인 모두에 대한 주입 지점 VDF도 포함되어야합니다.

보시다시피 챌린지 체인은 하위 슬롯의 시작부터 끝까지 VDF를 실행합니다 (원은 VDF 증명이지만 VDF를 중단하지는 않습니다). 보상 체인은 포함 된 모든 블록에 주입됩니다. 중간에있는 사슬은 주입 된 도전 체인, 각 도전에 대한 첫 번째 주입 된 블록에서 시작하여 슬롯이 끝날 때까지 계속됩니다.

슬롯 첫 번째 하위 슬롯 또는 이후 하위 슬롯의 챌린지를 기반으로 최소 16개의 보상 체인 블록을 포함하는 하위 슬롯의 목록입니다. 예를 들어ample, 우리는 서브슬롯에 10개의 블록만 가질 수 있고, 3개와 7개를 가질 수 있습니다. 이는 16개의 서브슬롯이 하나의 슬롯을 형성함을 의미합니다. 평균적으로 XNUMX개 이상의 블록이 포함되기 때문에 일반적으로 각 하위 슬롯도 슬롯입니다. NS 부족 슬롯을 종료하는 데 여전히 필요한 블록의 수입니다. 이에 대해서는 나중에 자세히 설명합니다.

슬롯의 끝에서 챌린지 체인은 주입 된 챌린지 체인과 결합되어 다음 하위 슬롯에 대한 챌린지 체인을 시작하는 데 사용되는 새로운 챌린지 c2를 생성합니다.

챌린지 체인에 영향을 미치는 유일한 블록은 첫 번째 블록입니다. B1의 결정적 부분 만 B1, CC B1, 챌린지 체인 데이터에만 의존합니다. 그라인딩을 원하는 공격자는 보류로 도전을 변경할 수 없습니다. B2B3, 또는 첫 번째 블록과 다른 블록.

공격자가 가장 빠른 블록 (B1)에는 보류, 지연 또는 해제의 세 가지 옵션이 있습니다. 새로운 도전이 그들에게 도움이 될지 여부를 알기 위해서는 VDF를 c2까지 실행해야합니다. 그때까지는 정직한 농부들이 공간 증명 당 하나의 블록에만 서명하기 때문에 보상 체인에 포함될 기회가 사라졌습니다. 원천 징수 B1 공격자에게 많은 이점을 제공하지 않습니다. sp2 농부들을 사슬에 묶으려면 농부들은 가장 무거운 체인을 선택합니다. (가장 무거운) 보상 체인 블록.

왜 우리는 챌린지 체인의 모든 블록에 전념합니까? 글쎄요, 그렇지 않다면 공격자는 더 빠른 VDF를 미리 볼 수 있습니다. 왜냐하면 미래의 챌린지 체인을 계산하기 위해 정직한 참가자의 도움이 필요하지 않기 때문입니다. 챌린지 체인은 완전히 결정적입니다. 이것은 약간의 advan을 가능하게 할 것입니다tage를 다시 플로팅하여. 또한 챌린지 체인은 모든 보상 체인 블록을 공유하지 않고 라이트 클라이언트에게 보상 체인의 가중치를 확률적으로 증명하는 데 사용할 수 있습니다(챌린지 체인은 슬롯의 "최고" 블록에 의존하기 때문에 보상의 수를 계산할 수 있습니다. 체인 블록).

챌린지 체인: 각 하위 슬롯의 중간에 아무것도 주입하지 않는 각 하위 슬롯에 대한 각 챌린지를 기반으로하는 VDF 체인. 챌린지는 공간 증명에도 사용됩니다. 이 체인의 간판 포인트는 SP 필터에 사용됩니다.

보상 체인 : 모든 블록의 주입을 포함하는 VDF 체인. 이 체인은 챌린지 체인과 선택적으로 각 하위 슬롯의 끝에 주입 된 챌린지 체인을 가져옵니다.

주입 된 도전 체인: 슬롯에 주입 된 첫 번째 블록 (이전 슬롯의 챌린지에 기반하지 않고 챌린지 블록이라고 함)에서 시작하여 슬롯의 끝에서 끝나는 VDF 체인입니다.

슬롯 : 첫 번째 하위 슬롯 또는 이후 하위 슬롯의 챌린지에 따라 최소 16 개의 보상 체인 블록을 포함하는 하위 슬롯 목록. 슬롯의 끝에서 주입 된 챌린지 체인이 중지되고 주입 된 챌린지 체인의 결과가 챌린지 체인이 당겨지고 적자가 16으로 재설정됩니다.

차단하다: 블록은 다음을 포함하는 보상 체인에 주입 된 데이터 모음입니다. 보상 주소. 일부 블록은 트랜잭션 블록이기도합니다. 슬롯 당 최대 128 개의 블록이 있습니다.

거래 블록 : 거래를 생성 할 수있는 블록, 관련 거래 목록과 함께.

도전 블록 : 각 슬롯에 주입 될 첫 번째 블록으로, 이전 슬롯의 챌린지를 기반으로하지 않습니다. 챌린지 블록은 항상 15의 적자를 가지며 항상 주입 된 챌린지 체인에서 시작합니다.

P이크: 노드가 보는 블록 체인의 정점은 가중치가 가장 큰 블록입니다. 무게는 높이와 비슷하지만 블록과 모든 조상의 난이도의 합입니다. 체인이 짧을수록 조정의 어려움으로 인해 무게가 더 무거워 질 수 있습니다.

블록이 유효한 것으로 간주 되려면 챌린지 체인 및 보상 체인에 VDF를 제공해야하며, 존재하는 경우 주입 된 챌린지 체인에 대해 선택적으로 제공해야합니다. 모든 VDF를 강제로 포함한다는 것은 세 체인이 모두 동일한 속도로 앞으로 나아갈 수 있음을 의미합니다.

오버플로 블록

농부가 블록을 생성하려면 required_iterations는 위에 설명 된대로 3.125M 또는 하위 슬롯 반복 / 64 미만이어야합니다. 이는 주입 반복이 하위 슬롯 반복보다 클 수 있으므로 주입이 다음 하위 슬롯에서 발생해야 함을 의미합니다.

오버플로 블록: 주입 지점이 간판 지점과 다른 하위 슬롯에있는 블록입니다.

현재 슬롯 문제: 특정 블록 B와 관련하여 B의 현재 슬롯 챌린지는 슬롯의 첫 번째 챌린지에서 시작하여 슬롯의 끝에서 끝나는 모든 챌린지를 포함합니다 (비 포함). 때로는 슬롯이 여러 하위 슬롯에 걸쳐 있으므로 여러 문제가 발생하기 때문에 관련이 있습니다.

그림 9B4 이 다이어그램은 주입이 다음 슬롯에 있기 때문에 오버플로 블록입니다. B4 현재 슬롯 챌린지를 기반으로하지 않으므로 적자를 줄이거 나 챌린지 블록을 만들지 않습니다. TODO : 다이어그램은 16가 아니라 5이어야합니다.

오버플로 블록은 에포크의 첫 번째 하위 슬롯에 존재할 수 없습니다 (서브 슬롯 반복이 변경되기 때문에).

또한 오버플로 블록은 이전 하위 슬롯의 챌린지에 대한 응답이기 때문에 현재 슬롯 챌린지를 기반으로하지 않는 한 부족한 부분을 변경하지 않습니다. 오버플로 블록은 현재 슬롯 챌린지를 기반으로하지 않는 한 챌린지 블록이 아닙니다. 부족은 거의 항상 XNUMX으로 감소하고 모든 하위 슬롯에서 새 슬롯이 시작되기 때문에 오버플로 블록이 부족을 줄이는 경우는 드뭅니다.

최소 블록 요구 사항

슬롯을 완료하려면 최소 16 개의 현재 슬롯 챌린지 블록을 보상 체인에 주입해야합니다.

적자는 하위 슬롯의 시작 부분에 존재하는 0에서 16 사이의 숫자입니다. 이것은 슬롯을 완료하기 위해 주입해야하는 보상 체인 블록의 수로 정의됩니다. 슬롯을 시작할 때마다 16으로 재설정됩니다 (따라서 챌린지 체인 주 입당 총 16 개 이상의 블록이 있어야합니다). 현재 슬롯 챌린지를 기반으로 한 보상 체인 주입마다 적자가 줄어 듭니다.

적자가 15 인 블록은 챌린지 블록입니다.

정상적인 경우는 적자가 16에서 시작하여 하위 슬롯 내에서 16으로 내려 가고 슬롯을 완료하고 새 슬롯을 시작할 때 0으로 다시 재설정되는 경우입니다. 슬롯 끝에서 16으로 줄일 수없는 경우, 챌린지 체인과 주입 된 챌린지 체인 (있는 경우)은 계속되고 적자는 0으로 재설정되지 않습니다. 블록 (지금 오버플로 블록 포함) , 16에 도달 할 때까지 적자에서 계속 빼십시오. 적자가없는 하위 슬롯을 완료하면 주입 된 챌린지 체인이 챌린지 체인에 포함되고 적자는 XNUMX으로 재설정됩니다.

이 요구 사항은 장거리 공격을 방지하기 위해 추가되었으며 아래의 대책 섹션에 자세히 설명되어 있습니다. 대부분의 하위 슬롯은> = 5 블록을 가지며, 따라서 정상적인 작동에 큰 영향을 미치지 않습니다.

그림 10: c2는 하위 슬롯의 끝이지만 슬롯의 끝은 아닙니다. 슬롯이이 하위 슬롯에서 끝나지 않았기 때문에 c2는 ic2를 가리 키지 않습니다. 적자는 2로 재설정되는 대신 5이며 주입 된 챌린지 체인은 계속됩니다.

무게

그만큼 무게 블록의 수는이 블록의 난이도와 이전 블록의 합계입니다. 이 블록의 조상입니다. 정직한 풀 노드는 자신이 알고 있는 가장 무거운 블록이 피크가 되도록 블록체인의 피크를 선택해야 합니다. 이것은 중요한 요구 사항이며 Bitcoin의 가장 무거운 체인 규칙과 동일합니다. 이 규칙으로 인해 공간의 50% 미만이고 VDF advan이 없는 공격자는tage는 운이 좋아야 정직한 체인보다 더 많은 보상 체인 블록을 만들어야 하기 때문에 공정한 몫보다 더 많은 수익을 올리는 데 어려움을 겪을 것입니다. 게다가 농부들은 가장 무거운 사슬에 해당하는 도전에 대해서만 농사를 짓습니다.

VDF 속도와 총 공간은 무게에 중요하며 이러한 변화는 난이도 조정을 유발할 수 있습니다. 공간이 증가하면 슬롯 당 32 개 이상의 블록이 생성되므로 난이도를 높여야합니다. 네트워크 VDF 속도가 증가하면 32 분마다 10 개 이상의 블록이 생성되므로 난이도 (및 하위 슬롯 반복)를 늘려야합니다.  

그러나 약간 더 빠른 VDF에 독점적으로 액세스 할 수있는 농부는 일반 속도 VDF를 사용하는 농부보다 쉽게 ​​더 많은 보상을받을 수 없습니다. 공격자가 체인에서 블록 중 하나를 고아하려고 시도하는 경우 공격자의 체인이 더 적은 블록 (따라서 더 낮은 가중치)을 가지므로 더 빠른 VDF는 도움이되지 않습니다. 농부들은 자신이 짓고있는 블록에 서명해야하며, 가장 높은 무게 사슬 위에 만 건설 할 것입니다.

그러나 VDF 속도는 공격자가 51 % 공격을 시작하려고 할 때 적용됩니다. 이 경우 공격하는 농부는 VDF를 사용하여 정직한 블록이없는 완전히 대체 체인을 만들고 정직한 체인을 추월 할 수 있습니다.

위의 다이어그램에서는 모든 블록이 표준이므로 농부가 보상을 지정할 장소가 없습니다. 농부들은 지정된 공간, VDF 및 서명의 정확한 증거를 사용해야하기 때문에 블록이 어떻게 구성되는지에 대해 말할 수 없습니다. 농사 보상과 거래를 시스템에 포함 시키려면 나뭇잎이라는 블록의 추가 구성 요소를 도입해야합니다. 지금까지 "트렁크"구성 요소에 대해 논의했습니다.

트렁크: VDF, 공간 증명, PoS 서명, 챌린지 및 이전 트렁크 블록을 포함하며 완전히 표준 인 블록 및 블록 체인의 구성 요소입니다. 트렁크는 단풍 사슬을 의미하지 않습니다.

잎: 보상이 어디로 가야하는지, 어떤 트랜잭션이 포함되어야하는지, 이전 나뭇잎 블록이 무엇인지에 대한 사양을 포함하는 블록 및 블록 체인의 구성 요소 이것은 농부가 결정하고 분쇄 ​​할 수 있으므로 도전에 대한 입력으로 사용할 수 없습니다.

재조직: reorg(또는 reorganization)는 노드의 view 피크 변화의 view 새 항목에 포함되지 않은 블록이 포함되어 있습니다. view (일부 블록이 반전됨). 줄기 및 잎 재구성이 모두 가능하지만 실제로는 거의 없습니다.

아래 그림 11에서 나뭇잎이 블록에 추가되어 추가 체인을 생성하는 것을 볼 수 있습니다. 이 나뭇잎에는 이전 나뭇잎의 해시, 보상 블록 해시 및 서명이 포함됩니다. 이 나뭇잎 포인터는 표준이 아닌 트렁크 체인과 분리되어 있습니다. 즉, 농부들은 이론적으로 잎이 교체되는 잎 재구성을 만들 수 있지만 똑같은 줄기 (공간 및 시간 증명)가 사용됩니다. 이를 방지하기 위해 정직한 농부들은 블록 당 하나의 단풍 블록 만 만듭니다. 한 정직한 농부가 나뭇잎 블록을 추가하자마자 그 높이를 넘어서는 나뭇잎을 재구성 할 수 없게됩니다. 동일한 PoSpace로 농부는 동일한 PoSpace로 다시 서명하지 않을 것입니다.

또한, 같은 블록 B3 다른 나뭇잎 블록 (B2) 이전 나뭇잎 블록에 서명 할 필요가 없습니다. 볼 시간이 충분하지 않기 때문입니다. "병행"이란 두 번째 블록의 간판 지점이 첫 번째 블록 주입 지점보다 먼저 발생한다는 것을 의미합니다. 다이어그램의 빨간색 화살표는 해당 블록의 공간 증명을 위해 플롯 키로 서명 된 나뭇잎 포인터를 나타냅니다. 회색 화살표는 플롯 키로 서명되지 않은 해시 포인터를 나타냅니다 (따라서 회색 화살표는 B3 다음과 같은 경우 교체 가능 B2 변경되거나 보류 됨). 이것은 다음과 같은 공격을 방지합니다. B2 블록과 힘을 수정 B3 재구성합니다.

빨간색 포인터가있는 블록도 트랜잭션을 생성 할 수 있으므로 트랜잭션 블록이라고합니다. 블록은 트랜잭션 블록입니다. 만약 그리고 오직 만약 이전 트랜잭션 블록 주입 후 사이 니지 포인트가 발생하는 첫 번째 블록sp3 앞서 온다 B2, (트랜잭션 블록 및 이전 블록 B3), 그래서 B3 트랜잭션 블록이 될 수 없습니다. 빨간색 화살표는 나뭇잎 블록을 묻어 보안을 제공하지만 회색 화살표는 그렇지 않습니다. 회색 화살표의 목적은 나뭇잎에 연결된 목록을 유지하고 구현의 복잡성을 줄이는 것입니다. 그러나 회색 블록 그들을 가리키는 화살표는 다음 블록에 묻혀 있습니다.

그림 11: 단풍 블록 및 블록. 블록에는 트랜잭션이 있고 빨간색 포인터 (마지막 블록에 대한 포인터)가 있습니다. 하위 슬롯의 시작 부분도 표지판 지점입니다.

블록 해시는 전체 나뭇잎과 트렁크 블록의 해시입니다. Reorgs는 블록 해시에서 작동합니다. 같은 공간과 시간의 증거를 가진 사슬을 보더라도, 잎이 다르면 블록은 다릅니다. 두 농부 (B2 그리고 B3) 블록을 생성 할 기회가있을 수 있으므로 서명 된 포인터와 트랜잭션을 모두 제공해야합니다. 그러나 모든 트랜잭션 블록은 일반 블록으로도 포함될 수 있습니다. B2 그리고 B3 병렬로, 그들 중 하나만 트랜잭션 블록을 만들 수 있습니다.

모든 블록은 여전히 ​​보상이 전달되는 퍼즐 해시를 선택하지만 해당 거래는 다음 거래 블록까지 블록 체인에 포함되지 않습니다.

chia 메인 넷의 경우 평균 블록 시간 32 초 동안 600 초마다 18.75 개의 블록이 있습니다. 64 개의 간판 포인트가 있으므로 블록 사이의 최소 시간은 3 * 600 / 64 = 28.125 초입니다. 이렇게하면 평균 트랜잭션 블록 시간이 46.875 초가됩니다.

시대 및 난이도 조정

하위 시대 : 서브 에포크 N은 서브 에포크 때 시작됩니다.  끝나고 (0 번째 서브 에포크 제외), 첫 번째 슬롯의 끝에서 끝납니다.  블록은 창세기부터 포함되었습니다. 

시대: Epoch N은 Epoch N-1이 끝날 때 (0 번째 Epoch 제외) 시작되고 첫 번째 슬롯의 끝에서 끝납니다.  블록은 창세기부터 포함되었습니다.

어려움: 주어진 공간 증명에 대한 반복 횟수를 조정하는 상수입니다. 반복은 난이도 / 품질로 계산됩니다.

4608 블록마다 난이도 조정이 시작됩니다. 이렇게하면 slot_iterations 매개 변수와 난이도 매개 변수의 두 매개 변수가 수정됩니다.

sub_slot_iterations 매개 변수가 재설정되므로 300 초 슬롯에는 slot_iterations에 가까운 많은 반복이 필요합니다. 재설정은 마지막 에포크의 값을 사용하여 구체적으로 초당 반복 횟수를 대략적으로 계산합니다.

Epoch의 경우 Epoch*는 Epoch*가 Epoch가 시작되기 전에 주입된 마지막 블록으로 시작하고 Epoch에 주입된 마지막 블록으로 끝나는 약간 이동된 기간을 나타냅니다. 값 t1,i1 및 w1은 시간을 나타냅니다.amp, 생성 이후의 반복 및 epoch 시작 시 생성 이후의 가중치*, (t2,i2,w2)는 epoch* 종료 시의 값입니다.

즉, Epoch의 시작부터 끝까지 총 반복의 델타를 timest의 델타로 나눈 값입니다.amps, i2는 Epoch에서 마지막 블록의 주입 지점의 총 반복입니다. i1은 이전 epoch에서 마지막 블록의 주입 지점의 총 반복입니다. 하위 슬롯 반복은 하위 슬롯당 총 반복 횟수입니다.

우리는 반복과 시간을 정확히 epoch의 끝에서 취하지 않고 epoch에서 블록의 마지막 주입 지점에서 취한다는 점에 유의하십시오.amp블록이 주입될 때 사용 가능합니다.

   

하나의 층 분할 만 사용하도록 재정렬 할 수 있습니다.

서브슬롯 반복 횟수는 각 슬롯이 약 600초 동안 지속되도록 조정됩니다. 난이도는 모든 도전 과제가 슬롯 반복 횟수보다 적은 반복 횟수로 평균 32개의 블록을 생성하도록 조정됩니다. 슬롯당 VDF 반복 횟수는 가중치에 영향을 미치지 않는다는 점에 유의해야 합니다. 즉, VDF 속도와 공간이 동일한 두 개의 월드가 있지만 한 월드의 서브슬롯 반복 횟수 매개변수가 2배 더 높다고 가정해 보겠습니다. 이 경우 서브슬롯 반복 횟수가 더 높은 블록체인은 슬롯당 두 배 더 많은 블록을 포함하게 되지만, 각 슬롯에 걸리는 시간도 두 배가 되므로 체인에 추가되는 초당 가중치는 두 경우 모두 동일합니다. 다른 관점에서 보면,asing 서브슬롯 반복은 슬롯당 블록 수를 증가시키지만 슬롯의 지속 시간도 늘리므로 초당 무게에는 영향을 미치지 않습니다.

하위 시대

앞에서 설명한 것처럼 챌린지 체인은 완전히 분리되어 있으며 보상 체인의 어떤 것도 참조하지 않습니다. 이러한 체인이 영원히 분리되어 있다면 VDF가 더 빠른 공격자는 먼 미래를 들여다보고 문제를 예측할 수 있습니다. 공격자는 제한된 공간으로 슬롯 당 하나의 블록을 생성하여 전체 챌린지 체인을 생성 할 수 있습니다. 이를 통해 그들이 플롯을 만들고 미래에 이길 이러한 플롯에 대한 공간 증명을 즉시 생성 한 다음 플롯을 삭제할 수 있습니다 (장거리 리 플로팅 공격). 이렇게하면 보상 체인을 채우고 체중을 늘릴 수 있습니다.

 

이에 대한 해결책은 주기적으로 (평균 384 시간 인 2 개 블록마다) 슬롯의 보상 체인 끝을 챌린지 체인에 주입하는 것입니다. 이는 공격자가 향후 몇 시간 동안 만 replotting 공격을 수행 할 수 있음을 의미합니다. 플로팅 자체는 몇 시간이 걸리지 만 공격자가 즉시 리 플로팅 할 수 있더라도 리 플로팅 공격의 비용이 이점보다 큽니다. 현재 보상 체인 출력이 아니라 이전 서브 에포크 (2 시간 전) 종료 시점의 보상 체인 출력을 주입합니다.

플롯을 만드는 비용에는 모든 테이블을 계산하는 데 필요한 전기,이 플롯을 만드는 동안 필요한 RAM, 고정 인프라 비용 (공간, 전력, 냉각 등)이 포함됩니다. 초고속 VDF 및 즉각적인 ASIC 플로팅의 최악의 시나리오를 가정하면 이점은 해당 플롯을 HDD에 몇 시간 동안 저장하는 이점과 동일합니다. 이 공격은 가치가 없으며 플롯을 저장하는 것이 훨씬 저렴하다는 것이 분명합니다 (아래 분석).

위의 내용은 서브 에포크 간격이 상대적으로 낮게 유지되어야 하는 이유를 설명합니다. 그러나 왜 우리는 2시간 미만으로 더 줄여서 리포팅 공격의 동기를 약화시킬 수 없습니까? 그 이유는 비정규 데이터가 챌린지 체인에 주입될 때마다 연삭의 기회가 발생하기 때문입니다. 이는 공격자가 향후 2시간 동안의 도전 과제를 조작하기 위해 블록을 포함하거나 제외하도록 선택할 수 있음을 의미합니다. 이 시간이 너무 짧으면 작은 공간 이점을 얻을 수 있습니다.tage 이 작업을 더 자주 수행합니다.

하위 에포크의 두 번째 목적은 라이트 클라이언트의 효율성을 높이기 위해 아래 설명 된 플라이 클라이언트와 유사한 프로토콜에서 체크 포인트 역할을하는 것입니다.

가벼운 클라이언트 확인

라이트 클라이언트 지원은 모든 증명이 암호화 방식으로 객관적으로 검증 될 수 있고 특정 시점에서 실제 리소스를 제어해야하기 때문에 스테이크 증명과 비교할 때 공간 증명의 또 다른 이점입니다.

체인에 빠르게 동기화하려는 라이트 클라이언트(예:ample 모바일 지갑), 전체 노드는 체인의 무게가 어떤 값에 가깝다는 것을 라이트 클라이언트에게 확신시킬 수 있는 작은 크기의 증거를 생성할 수 있습니다. 이것은 무게 증명. 순진하게도 라이트 클라이언트는 모든 단일 블록과 필요한 모든 증명을 다운로드하고 확인할 수 있지만 블록 수가 너무 많으면 많은 대역폭과 CPU가 필요합니다.

보다 효율적인 방법은 Flyclient[4]와 유사한 프로토콜에 의존합니다. 노드(증명자)는 난이도 재설정을 포함하여 포크 지점에서 모든 하위 에포크 요약을 라이트 클라이언트로 보냅니다. 384 블록마다 하나씩만 있으므로 몇 MB의 데이터에만 도달할 수 있습니다. 노드는 또한 결정적으로 samp마지막 블록의 챌린지를 기반으로 여러 하위 에포크를 만듭니다. 하위 시대는 해당 하위 시대의 난이도에 비례하여 선택될 기회가 있습니다. 선택한 하위 에포크에 대해 라이트 클라이언트는 챌린지 체인 블록 중 하나(모든 블록의 약 1/32)를 다운로드하고 해당 하위 에포크의 모든 챌린지 블록에 대한 평균 주입 반복을 계산합니다. 이 시간을 기반으로 라이트 클라이언트는 보상 체인에 포함된 블록 수를 추정할 수 있습니다. 예를 들어ample, 모든 챌린지 블록이 매우 작은 반복으로 발생하면(슬롯의 시작 부분에 가까움) 해당 슬롯에 많은 블록이 있을 수 있습니다. 반대로, 반복이 슬롯의 중간에 가까우면 슬롯당 하나의 블록만 있을 가능성이 높습니다. 이를 통해 라이트 클라이언트는 각 슬롯에 있는 블록의 1/32만 다운로드할 수 있지만 여전히 총 ​​중량에 대한 적절한 추정치를 얻을 수 있습니다.

또한 라이트 클라이언트를 위해 마지막 몇 개의 하위 에포크를 전체적으로 다운로드해야합니다. 이렇게하면 소량의 데이터가 추가되지만 공격자가 체인 끝에 작은 포크를 만드는 것을 방지합니다. 이 프로토콜과 플라이 클라이언트의 주요 차이점은 블록이 머클 산맥을 사용하는 데 전념하지 않고 대신 라이트 클라이언트가 제네시스에서 하위 에포크 해시의 전체 목록을 다운로드하여 쿼리 된 하위 에포크가 체인에 포함되도록 보장한다는 것입니다. . 또 다른 차이점은 개별 블록이 아닌 전체 섹션이 다운로드된다는 것입니다.

다운로드해야하는 하위 에포크 수와 가중치 증명이 의미하는 범위가 무엇인지에 대해 더 많은 분석을 수행해야합니다.

풀링

Chia의 풀링은 비트 코인 / 이더 리움의 풀링보다 매우 간단하고 분산화되도록 설계되었습니다. Chia에서는 풀 공개 키가 플롯에 포함되어 농부가 둘 이상의 풀에 참여하여 풀에서 보상을 훔치는 것을 방지합니다. 농부는 서명과 함께 수영장 주소를 다운로드합니다. 농부는 T 미만의 공간 증명을 위해 주기적으로 부분을 보냅니다. 여기서 T는 풀에서 선택됩니다.

농부가 블록을 획득하면 농부 서명과 풀 서명을 제출합니다. 거래 수수료는 블록 보상의 ⅛와 함께 농부에게 전달되고 블록 보상의 ⅞는 풀로 이동합니다. 농부에게 보상의 일부를 제공하는 이유는 하나의 풀이 다른 풀을 "풀링"하여 다른 풀을 공격하는 공격을 인센티브 화하지 않고 실제로 우승 증명을 제출하지 않기 때문입니다. 이것은 다른 풀이 사업을 중단시킬 수있는 공격입니다.

풀이 서명을 한 번 게시하는 것 외에는 아무 것도 할 필요가 없기 때문에 이것은 더 간단합니다. web부분을 ​​수집하고 정기적으로 지불합니다. 블록이 농부에 의해 만들어지기 때문에 더 분산되어 있으므로 대규모 중앙 집중식 풀은 네트워크를 거의 제어하지 못하고 거래 검열에 대한 저항이 증가합니다.

두 번째 더 복잡한 풀링 프로토콜을 사용하면 풀 주소를 저장할 싱글 톤 스마트 계약을 지정할 수 있습니다. 그런 다음 플롯에는 스마트 계약의 퍼즐 해시가 포함되어 농부가 언제든지 풀을 전환 할 수 있습니다. 이 풀링 프로토콜의 단점은 농업을 시작하기 위해 온 체인 트랜잭션이 필요하므로 첫 번째 풀링 프로토콜보다 엄격하게 낫지 않다는 것입니다.

Timelord 알고리즘

타임로드는 현재 피크를 추적합니다. 여기에는 특정 높이에 주입 된 블록과 피크부터 표지판이 포함되어 있습니다. 타임로드는 주입 할 새로운 블록, 새로운 피크 (이미 주입 된 블록) 또는 새로운 간판 포인트를받을 수 있습니다.

제한된 수의 사용 가능한 프로세서에서 타임로드는 시간 증명을 생성 할 과제를 어떻게 결정합니까? ASIC은 미래에 개발 될 가능성이 있지만 현재 가장 빠른 클래스 그룹 VDF 구현은 클래스 그룹 VDF가 FPGA 하드 인 것처럼 보이기 때문에 범용 하드웨어에 있습니다. 또한 ASIC 개발 이후에도 CPU를 보유한 모든 사용자가 타임로드가되어 ASIC 타임로드가 다운되거나 악성이되는 경우 폴백을 제공하는 것이 중요합니다.

일반적으로 타임로드는 가장 무거운 체인에서 작업합니다. 그들은 사이 니지 지점에서 시간 증명을 만들고 도달 할 때이를 네트워크에 브로드 캐스트합니다. 그들은 또한 가능한 한 자주 블록을 주입합니다. 타임로드가 현재 피크보다 더 큰 가중치를 가진 주입 된 블록을 받으면 즉시 전환합니다.

타임로드 또한 세 개의 VDF 체인을 병렬로 실행합니다. 따라서 블록 체인을 효율적인 속도로 발전시키기 위해서는 최소 3 개의 빠른 CPU 코어가 필요합니다. 효율적인 속도로 증명을 생성하려면 추가 CPU 코어가 필요하지만 속도가 빠를 필요는 없습니다.

타임로드가 현재 최고점보다 가중치가 적은 챌린지를 받으면 무시합니다.

타임로드가 현재 체인에서 나중에 챌린지 포인트를 받으면 안전한 방법은이를 무시하는 것입니다. 그 이유는 나중에 한 지점으로 전환하면 타임로드가 블록 주입을 건너 뛰고 유효한 블록을 분리 할 수 ​​있기 때문입니다.

타임로드가 늦게 주입 할 블록을 받으면 (이미 블록이 주입되어야하는 챌린지 지점에 도달 했음),이 블록으로 전환하면 공격자가 블록을 보류 할 수 있으므로이를 무시합니다. [TODO 확장]. 따라서 타임로드의 주요 작업은 주입 할 미래 블록의 캐시를 유지하고, 도전 포인트에 도달하면 브로드 캐스팅하며, 도전 포인트에 도달하면 블록을 주입하는 것입니다.

타임로드가 현재 피크와 동일한 가중치로 챌린지를 받으면, 처음 본 미완성 블록 (즉, 아직 주입되지 않은 블록)을 선택하고, 본 주입 블록 (피크)을 선택합니다. 먼저. 이것은 또한 블록의 보류를 방해합니다.

관련 공격 및 대책

51% (46%) 공격:

51% 공격은 결국 정직한 체인보다 더 높은 가중치에 도달하는 대체 체인을 생성하고 사용자를 강제로 재구성하는 것을 포함합니다. 작업 증명 시스템에도 존재하는 고전적인 장거리 공격은 51% 공격입니다. 51% 공격에서는 네트워크 공간의 51%를 차지하는 공격자가 대체 체인을 만들고 결국 따라잡습니다. Chia 합의와 작업 증명 사이에는 두 가지 주요 차이점이 있습니다. 첫 번째는 공격자가 동시에 많은 체인을 확장하고 파밍할 수 있다는 것입니다. 두 번째는 공격자가 가장 빠른 VDF를 가지고 있으면 추가 공간 이점을 얻을 수 있다는 것입니다.tage/부스트.

많은 체인 확장

공격자가 자신의 개인 체인을 만드는 경우, 어떤 블록이 챌린지 체인에 주입되는지 선택할 수 있으므로 가능한 최상의 체인을 얻을 수 있도록 다양한 주입을 시도 할 수 있습니다. 동일한 챌린지가있는 평균 32 개의 블록으로 인해 공격자는 약 32 개의 다른 조합 만 시도 할 수 있습니다. (챌린지 체인에 포함 할 블록), 이들 각각을 시도하는 기하 급수적으로 분기하면 공격자의 공간이 약간 증가합니다 (5PiB가 있으면 6 또는 7 인 척 할 수 있음). 이것은 시도되는 대체 체인이 열등하고 가장 긴 체인을 추월 할 가능성이 적기 때문입니다. 이것은 [1]에서 분석되었습니다.

이 공격을 수행하는 데 필요한 실제 공간(공격자가 네트워크의 나머지 부분을 합친 것보다 더 무거운 체인을 얻기 위해)은 공격자가 블록의 다른 조합을 "시도"할 수 있는 능력으로 인해 46.3%입니다.ample 생략 또는 생략 첫 번째 블록. 모든 단일 블록에 대해 새로운 공간 증명 문제가있는 경우 공격자는 자신의 공간을 e = 2.718의 계수로 늘릴 수 있으며, 네트워크를 추월하는 데 27 % 만 필요합니다. 블록 수를 32로 설정하면 공격자의 필수 공간이 46 %로 늘어납니다.

증가하지 않는 이유는 다음과 같습니다.asin이를 32보다 더 높이면 다음과 같은 결과가 나타납니다. 10분 간격의 블록 수를 200개 정도로 늘리면 VDF가 약간 더 빠른 플레이어가 다른 플레이어를 고아로 만들 가능성이 높아집니다. 블록 간 간격이 매우 짧아지기 때문입니다. 32개의 블록으로 구성된 경우 블록 간 간격은 약 15~25초이며, 고아로 만들려면 훨씬 더 빠른 VDF가 필요합니다.

또한 스탠포드 논문[Tse et al., 1]은 증가가asin챌린지당 블록 수를 늘리면 보안이 매우 느린 속도로 향상되므로, 블록 수를 늘리세요.asin이 수치는 그다지 큰 이점을 제공하지 않습니다.

공격자가 난이도를 조작하는 경우 슬롯 당 보상 블록을 더 적게 얻도록 변경할 수 있습니다. 그런 다음 각 블록을 포함하거나 제외 할 수 있으며 동시에 모든 체인을 기하 급수적으로 확장 할 수 있으며 공간에 작은 요소를 곱할 수 있습니다 [1]. 공격자가 난이도를 변경해야하므로 약간의 무게를 희생해야하므로이 공격이 크게 증가하는지 여부는 명확하지 않습니다. 그러나 이러한 공격을 방지하기 위해 챌린지 블록을 포함하려면 최소 16 개의 보상 체인 블록을 생성해야합니다. 이는 최악의 시나리오에서 필요한 공격자 공간을 27 %에서 최대 42 %로 가져옵니다.

더 빠른 VDF 및 46 %의 공간

공격자의 VDF가 더 빠르면 46 % 공격은 더 나빠집니다. 공격자의 VDF가 2 배 빠르다고 가정 해 보겠습니다. 그러면 체인은 나머지 네트워크 속도의 2 배로 챌린지와 블록을 생성 할 수 있습니다. 즉, 동일한 공간으로 "무거운"체인을 만들 수 있습니다.

이 필요한 공간은 전체 네트워크 공간의 46%에서 약 30%로 줄어듭니다. 0.46/0.54 = 2x/(1-x). x=0.30. 공격자가 가장 빠른 VDF에 액세스할 수 없으면 Space Advan을 얻을 수 없습니다.tage.

Chia 공간 / 글로벌 하드 드라이브 공간

Chia 시스템이 하드 드라이브 제조업체 또는 대기업의 사용 가능한 여유 공간에 비해 공간이 많지 않으면 51 % 공격에 취약해질 것이라는 우려가 있습니다. 따라서 Chia 시스템이 차지하는 공간이 많을수록 네트워크가 더 안전합니다. 한 가지 그럴듯한 시나리오는 많은 공간이 확보되어 TB 당 보상이 매우 낮고 드라이브 구입이나 비즈니스 데이터 삭제를 정당화하기에 충분하지 않다는 것입니다. 또한 플롯을 생성하려면 고정 된 선불 시간과 비용이 필요합니다 (현재 beta17의 계산에서 k1의 경우 약 32kWh 또는 테라 바이트 당 10 달러 인 약 1 센트).

100% 공격

X VDF 슬롯마다 난이도 조정이 트리거 된 경우, 모든 X 블록과는 달리, 이것은 100 % 공격을 허용 할 것입니다. 모든 농부가 결탁하여 지속적으로 난이도를 낮추거나 증가시킵니다. 정상 작동에서는 슬롯 당 32 개의 블록이 있습니다. 100 % 공격을 받으면 난이도가 2 씩 낮아 지도록 조작하여 슬롯 당 64 개의 블록이 있고 4 개씩 증가하므로 슬롯 당 16 개의 블록이 계속 번갈아 가며 계속됩니다. 이를 통해 농부들은 슬롯 당 평균 64 + 16 / 2 = 36 블록 보상을 얻을 수 있습니다. 블록 수에 따라 난이도를 조정하는 이유입니다.

단거리 환류 공격

플로팅은 일반적으로 몇 시간 (베타 8의 k32, 코어가 14 개인 경우 30 시간)이 걸리지 만 매우 병렬화가 가능하므로 공격자는 챌린지가 릴리스 된 후 플롯을 생성 한 다음 플롯을 삭제할 수있는 방법을 찾을 수 있습니다. 지속적으로 공간을 저장하지 않고 농장. 주입을위한 시간 내에 플롯을 생성해야하기 때문에 (XNUMX 초 미만) 빠른 메모리를 갖춘 고가의 특수 하드웨어가 필요할 수 있습니다.

농부가 즉시 플롯을 만들 수있는 최악의 시나리오를 가정하면 비용은 얼마이며 공격의 이점은 무엇입니까? 비용은 해당 플롯을 만드는 데 드는 전기, 메모리, 하드웨어 및 인프라 비용입니다. 1TB를 만드는 데 드는 비용은 현재 전기 비용으로 $ 1 정도입니다. 이점은 80 분 동안 해당 플롯을 저장하는 것과 동일한 이점입니다 (간판 포인트 간격에 플롯 필터 상수). 공격자가 플롯 필터를 통과하는 플롯을 선택할 수 있기 때문입니다. 테라 바이트 당 연간 가치가 $ 5라고 가정 할 때 1 분 동안 80TB 플롯의 가치는 $ 0.00094입니다. 따라서 현재 플로팅 소프트웨어 및 하드웨어를 사용하면 플롯을 다시 만드는 것과 달리 저장하는 것이 훨씬 저렴합니다.

플롯 필터 상수는 농부가해야하는 디스크 조회의 양을 줄이는 데 매우 유용합니다. 512 개의 플롯 필터를 사용하면 7 초마다 플롯 당 9 개의 디스크 읽기 대신 농부는 7 분마다 약 80 개의 읽기만 수행하면됩니다. 플롯 필터 상수는 공격자에게 리 플로팅 이점의 배수를 제공하므로 너무 높게 설정하면 안됩니다. 플롯 필터 상수가 512이면 1/512 플롯이 모든 챌린지에 유효합니다. 공격자는 필터를 통과하는 플롯 만 생성 할 수 있으므로 다른 511/512 분의 512을 생성 할 필요가 없습니다. 512로 설정하면 XNUMXx 배율 등이 제공됩니다.

더 빠른 VDF (51 % 공격 아님)

시스템에서 가장 빠른 VDF를 사용하여 공격자는 51 % 공격을보다 효과적으로 수행 할 수 있습니다. 즉, 사설 체인에서 농사를 지을 때 공간을 확장 할 수 있습니다. 공격자가 전체 공간의 51 %에 도달하지 않으면 (VDF가 위와 같이 많은 체인을 확장하고 확장하여) 더 빠른 VDF의 유용성이 크게 감소합니다. 이는 블록의 포함 및 제외가 VDF를 수행 할 수있는 속도에 의존하지 않고 대신 하위 슬롯 반복보다 적은지 여부에 따라 달라지기 때문입니다. 또한 공격자는 발전하기 위해 나머지 네트워크 공간이 필요하므로 네트워크에 대한 문제를 해결해야합니다.

블록이 매우 가깝게 연결되는 특정 경우에 더 빠른 VDF를 사용하면 공격자가 특정 블록을 고아로 만들 수 있습니다. 단기간에 보상이 증가하지는 않으며 장기적으로 네트워크를 손상시킬 위험이 있습니다. TODO : 확장 : bram

이기적인 농업

이기적인 농업은 공격자가 농장을 비공개로 차단하고 정직한 사슬에 의해 추월 될 위험에 처했을 때만 풀어주는 공격입니다. Nakamoto PoW에서는 채굴자가 나머지 네트워크보다 앞서있는 어느 지점에서나 네트워크의 나머지 부분이 이길 수없는 체인에 해시 파워를 낭비하고 있기 때문에 상당한 이점을 제공합니다. Chia 합의에서 이것은 30-40 초의 지연과 다른 농부의 블록을 고아로 설정한다고해서 보상이 증가하지 않기 때문에 다릅니다. (??)TODO : 확장 : bram

농부 뇌물 트렁크 공격

[10]에서 탐색한 흥미로운 공격은 이점을 취하는 뇌물 공격입니다.tage 각 슬롯에서 선출된 "리더"의 예측 가능성. 저자는 지분 증명 체인을 분석하고 참가자가 사전에 승리할 것임을 알면 잠재적인 뇌물 공격이 있다고 주장합니다. 참가자가 어떤 음모가 이길지 미리 알고 있다면 각 사용자는 공격자에게 공격에 참여할 의사가 있음을 알릴 수 있으며 특정 임계 값에 도달하면 체인을 완전히 재구성 할 수 있습니다 (또는 참여하지 않은 사람들은 고아, 검열 거래 등). 이 공격은 참여하는 데 네트워크 공간의 대부분을 필요로 하지 않습니다. 그 짧은 기간의 승자만. 또한 공격자가 정상적인 체인을 만들 수 있기 때문에 탐지할 수 없습니다.

이 문제는 Chia 합의 알고리즘의 이번 개정판에는 존재하지 않습니다. 이 문제는 예측 가능성을 줄임으로써 해결됩니다. 각 농부는 간판 지점까지 공간 증명이 완전히 자격이 있는지 확실하지 않습니다. 따라서 공격자는이 공격을 시작하기 위해 대부분의 공간에 뇌물을 제공해야합니다.

농부 뇌물 단풍 reorg 공격

블록은 PoSpace 키로 서명되기 때문에 농부는 이론적으로 같은 높이에서 동일한 PoSpace로 여러 블록에 서명 할 수 있습니다. 이 공격은 악의적 인 당사자가 농부들에게 일정량의 자금을 뇌물로 제공하여 대체 체인의 서명을 제공하도록 요구합니다. 공격자가 N 블록의 모든 농부가 서명하도록 설득 할 수 있으면 N 블록의 모든 트랜잭션을 되돌 리거나 재정렬 할 수 있습니다. 잠재적으로 사기 방지를 사용할 수 있지만 다른 공격과 복잡한 동작을 가능하게하므로 선택되지 않았습니다.

대신 해결책은 단순히 더 오래 기다리는 것입니다. 32 블록 (약 10 분) 후, 최소한 한 명의 농부가 프로토콜을 따르고 이중 서명이 아니라고 가정하는 것이 합리적입니다. 54 %가 충돌하지 않는 경우 (46 % 공격 복원력에 대한 가정), 32 블록 후 반전 가능성은 다음과 같습니다.. 또한이 공격은 탐지 가능하므로 쉽게 풀 수 없습니다.

각 사용자는 트랜잭션/블록을 최종으로 수락하는 자체 임계값을 선택할 수 있습니다. 예를 들어amp예를 들어, 전체 네트워크 공간이 갑자기 떨어지는 경우 사용자는 네트워크 분할로 인해 다른 기존 포크가 있는 경우 더 주의하고 트랜잭션을 최종적인 것으로 간주하지 않을 수 있습니다.amp르.

거래 수수료에 대한 거래 블록 분리

거래 b잠금은 거래 수수료가 포함되어 있기 때문에 비 거래 블록과 다릅니다. 이것은 블록 보상을 능가 할 수 있습니다. 글을 쓰는 시점 (2020 년 2 월), 최고 수준의 과대 광고에서 우리는 블록 당 8 개의 eth 수수료로 2 개의 eth 블록 보상을보고 있습니다. Chia에서는 모든 블록에 트랜잭션이 포함되어 있지 않기 때문에 더 극단적 일 것입니다. 이는 1 위 농부가 거래 블록을 획득하기 위해 2 위를 무시하는 공격으로 이어집니다. 두 번째 블록이 첫 번째 블록 이후 30 초 이내에 오면 이전 블록을 지정하지 않으므로 두 번째 블록은 첫 번째 블록을 고아로 만들 수 없습니다. 1 위는 둘 다 고아가 될 수 있지만 더 짧기 때문에 아무도이 사슬을 따르지 않을 것입니다.

그러나 첫 번째 블록에서 30 초 이내에 블록이 없으면 두 번째 블록이 첫 번째 블록을 고아로 만들 수 있지만 다음 블록이 대체 체인에서 팜하도록 설득해야합니다. 더 쉬운 공격은 공격자가 두 번째와 세 번째를 모두 제어하는 ​​경우이며,이 경우 첫 번째를 무시하고 더 길어질 수 있습니다.. 이러한 고아 공격은 공격자가 보상을 훔치는 것을 허용하지 않고 공격자가 난이도를 약간 낮출 수 있도록합니다. 상황에 따라 다르며 많은 공간이 필요하기 때문에이 공격을 시도하면 공격자가 얻을 수있는 잠재적 이득보다 네트워크에 더 많은 피해를 줄 수 있습니다.

고아 비율

Chia 합의에서 동시에 경쟁하는 두 블록은 서로에 대해 알지 못해도 병렬로 블록 체인에 포함될 수 있습니다. (최대 하나는 블록이 될 수 있지만). 모든 트랜잭션 블록도 블록이기 때문에 둘 다 체인에 포함되어 가중치가 더 높은 체인이됩니다. 이것은 Chia의 고아 비율이 네트워크 대기 시간이 낮다고 가정하면 기본적으로 30이됩니다. 네트워크 지연이 주입 지연 (40-XNUMX 초)을 초과하면 블록의 고아가 거의 보장되므로 단계적 기능에 가깝습니다. 이는 네트워크 지연이있는 경우 고아 비율이 높고 네트워크 상태가 개선되면 순조롭게 감소하지만 결코 XNUMX에 도달하지 않는 Nakamoto-PoW와 대조됩니다.

분석

안전

안전성은 비트코인과 같은 다른 나카모토 합의 알고리즘과 유사합니다. 보장된 완결성은 없지만 트랜잭션에 대한 확인이 많을수록 더 안전합니다. 수신자가 <46%(* vdf advantage) 담합 가정. 농부는 이론적으로 동일한 높이에서 여러 블록에 서명할 수 있으므로 Chia에서 더 많은 확인을 사용해야 합니다. 비트 코인보다. 그러나 32 분당 10 개 블록의 속도로 비트 코인의 6 개 확인은 Chia의 192 개에 해당하며 이는 안전한 것으로 간주하기에 충분합니다. 192 명의 농민 중 한 명이 잘 행동하는 한 (이중 서명이 아님) 해당 거래는 취소되지 않습니다.

54 %의 정직한 농업 공간이 필요하지 않지만 54 %는 공모하지 않는다는 점에 주목할 가치가 있습니다. 이윤을 추구하는 농부들은 프로토콜에서 벗어나서 거의 얻는 것이 없습니다.

적어도 하나의 빠른 타임로드가 네트워크의 비 충돌 부분에 연결되어야하며 공격자의 타임로드가 그다지 빠르지 않다는 추가 가정이 있습니다.

생동감

Chia 합의 시스템의 활력은 가장 큰 강점 중 하나입니다. 비트 코인과 마찬가지로 치아 시스템은 대부분의 공간이 오프라인 상태가 되더라도 계속 발전합니다. 하지만 비트 코인과 달리 모든 블록이 트랜잭션 블록이 아니기 때문에 이런 일이 발생해도 시스템 속도가 크게 느려지지 않습니다.. 따라서 많은 참가자가 오프라인 상태가 되어도 트랜잭션 처리량이 너무 많이 떨어지지 않습니다. 한 명의 농부 만 온라인 상태 인 경우에도 계속됩니다. 빈 슬롯이 많더라도 트랜잭션 블록은 하위 슬롯 반복 임계 값 미만인 경우에만 생성 할 수 있기 때문입니다.

물론 장기적인 네트워크 분할의 경우 하나의 체인을 선택해야하는 효과가 있으므로이 경우 대규모 재구성이있을 수 있습니다. 그래도 네트워크는 PoW와 유사한 더 무거운 체인을 선택합니다.

BFT와 비교 합의 알고리즘

B를 부트 스트랩하기 위해 공간 증명을 Sybil 내성 메커니즘으로 사용할 수도 있습니다.yzantine 합의(k-agreement) 시스템. File코인과 많은 지분 증명 시스템은 비잔틴 합의의 측면을 사용합니다.

Chia Nakamoto Consensus 대 Byzantine 합의 사용의 장단점은 알고리즘마다 다릅니다.

  • + 훨씬 간단
  • + 등록 요건 없음
  • + 확장 성 요구 사항 없음 (수백만 명의 농부로 확장 가능)
  • + 더 많은 검열 저항력. 농업 공간의 작은 부분이 검열되지 않는 한 결국 블록 체인에 들어갈 수 있습니다.
  • + 활성 요구 사항 없음, 잠재적으로 네트워크 가정 감소
  • + 완전히 객관적입니다 (노드는 체인 1과 체인 2를 비교할 수 있고 어느 것이 더 무거운 지 즉시 알 수 있습니다). ⅔ 합의로 체크 포인트가 필요 없습니다.
  • + 더 나은 라이트 클라이언트 지원 [11]
  •  최종성은없고 확률적일뿐입니다.
  •  거래 확인을 위해 더 오래 기다려야합니다 (완성 없음과 관련됨).
  •  일관되지 않은 블록 시간 및 트랜잭션 처리량

Nakamoto PoW와 비교

  • + 다른 자원. PoSpace는 ASIC 내성이 있으므로 누구나 농업에 참여할 수 있습니다. 더 탈 중앙화되기를 바랍니다.
  • + 쉬운 병합 농업. 다른 암호 화폐는 동일한 형식을 사용할 수 있으며 모든 사람이 공간을 공유 할 수 있습니다. 농부들이 더 작은 것을 공격 할 수 있기 때문에 아마도 가장 안전한 곳이 유일하게 안전한 곳일 것입니다.
  • + 소수의 노드 만 VDF를 실행하고 병렬화되지 않으므로 사용되는 최소 에너지입니다. 매우 낮은 한계 비용 내 것으로.
  • + 보다 일관된 트랜잭션 블록 시간 (~ 1 분당 XNUMX 회).
  • + 이기적인 채굴 공격에 덜 취약
  • + 블록이 병렬로 포함될 수 있기 때문에 더 작은 고아 비율 및 포크.
  • + 1/16 블록에만 트랜잭션이 포함되므로 공간이 줄어들 때도 같은 속도로 진행됩니다. PoW 나카 모토 합의 속도가 느려집니다.
  •  더 많은 잠재적 공격자의 단점 (대기업). 하드웨어는 범용이므로 공격자는 데이터 저장을 위해 파밍, 공격 및 사용간에 전환 할 수 있습니다.
  •  VDF의 속도를 높이면 공간이 향상될 수 있습니다.tage 네트워크를 공격하는 누군가의 경우.
  •  하위 슬롯 및 VDF로 인한 복잡성 증가, 잠재적으로 더 많은 암호화 가정

지분 증명과의 비교

이 합의 알고리즘은 지분 증명에도 사용할 수 있으며, 여기서 우주 농부는 시스템에서 코인을 소유 한 스테이 커로 대체됩니다. 이익은 슬래시 (사람의 지분을 삭제) 할 수있는 능력이고, 농부는 "게임 속 스킨"을 가질 수 있지만 지분 증명이 사용되는 경우 몇 가지 우려가 있습니다. (+ 공간 사용에 대한 이점과 지분을 의미합니다.)

  • + 공격자는 지분을 다른 사람에게 양도 할 수 있지만 지분이 양도되기 직전에 체인을 포크합니다. 이 대체 체인에서 공격자는 여전히 모든 지분을 보유하고 있으므로 체인을 발전시킬 수 있습니다. PoStake에서“위협이없는”문제는 다릅니다. PoSpace를 생성하려면 물리적 리소스 (하드 드라이브 공간)가 필요하지만 PoS를 생성하려면 키만 필요하기 때문에 PoSpace보다
  • + 공격자는 총 코인 수가 제한되어 있기 때문에 보상을 스테이 킹하여 전체 파이의 몫을 보장 할 수 있습니다 (부자가 더 부자가 됨).
  • + 거기 공격자가 지분을 이전하기 위해 여러 가지 방법을 사용할 수있는 상황 일 수 있습니다. 스테이크가 활성화되기까지 오랜 시간을 요구함으로써이 문제를 완화 할 수 있습니다.
  • + 등록이 필요하며 등록 할 때까지 지분 증명에 참여할 수 없습니다. 이것은 프라이버시와 확장 성을 감소시킵니다 (얼마나 많은 사람들이 스테이 킹 할 수 있는지).
  • + 진입 장벽이 높아짐 : 보증금 및 슬래 싱으로 인해 소규모 사용자가 참여하기가 어렵습니다. 슬래 싱은 네트워크 참여자에게 큰 위험이 될 수 있습니다. 중앙 집중식 관리인은 덜 분산 된 참가자 집합으로 이어집니다.
  • 일부 가정 지분 증명에서 라이트 클라이언트 동기화를 수행하려면 [11]이 필요합니다.
  •  게임 속 스킨 : PoS 사용합의는 사람들의 지분을 삭감 할 수 있으며 시스템에 대한 약간의 투자 (가격에 대한 노출)를 필요로합니다. In Proof of Space 하드 드라이브는 다른 용도로 사용할 수 있으며 사람들의 하드웨어를 "슬래시"할 수 없습니다.

참고문헌

  1. Vivek Bagaria, Amir Dembo, Sreeram Kannan, 오세웅, David Tse, Pramod Viswanath, Xuechao Wang, Ofer Zeitouni, 지분 증명 최장 체인 프로토콜, 보안 대 예측 가능성 [다운로드]
  2. Aggelos Kiayias, Alexander Russell, Bernardo David, Roman Oliynykov, Ouroboros : A 입증 된 보안 지분 증명 블록 체인 프로토콜 [다운로드]
  3. Bram Cohen과 Krzysztof Pietrzak, Chia 네트워크 블록 체인
  4. Benedikt Bunz, Lucianna Kiffer, Loi Luu, Mahdi Zamani, 2019-226 [PDF]
  5. 크지슈토프 피에트르자크, 효율적인 검증 가능한 지연 기능 [다운로드]
  6. 벤자민 웨솔로프스키, 간단한 검증 가능한 지연 기능 [다운로드]
  7. Stefan Dziembowski, Sebastian Faust, Vladimir Kolmogorov, Krzysztof Pietrzak, 공간 증명 [다운로드]
  8. Hamza Abusalah, Joel Alwen, Bram Cohen, Danylo Khilko, Krzysztof Pietrzak, Leonid Reyzin, 2017-893 [다운로드]
  9. 치아 네트워크, Chia 공간 건설 증명
  10. Soubhik Deb, Sreeram Kannan, David Tse, 작업없이 PoSAT 작업 증명 가용성 및 예측 불가능 [다운로드]를
  11. 알렉산더 스키 다 노프, 지분 증명 시스템의 라이트 클라이언트

–  –

참고문헌

댓글을 남겨주세요

이메일 주소는 공개되지 않습니다. 필수 항목은 표시되어 있습니다. *