비콘 체인의 대안: 누적 위원회 기반 최종성 모델
출처 |ethresearch.ch
저자 | 비탈릭 부테린
이는 비콘 체인에 대해 제안된 대체 설계로 먼 미래에 이 모델로 전환할 수 있으며(현재 계획된 CBC 대체) 다음과 같은 주요 기능을 제공하려고 시도합니다.
➤ 정상적인 상황에서 의미 있는 단일 슬롯 경제적 확실성 제공(즉, 텐더민트와 같은 속성)
대다수의 검증인이 담합에 참여하여 단일 슬롯을 재구성하더라도 실행 비용이 지금보다 훨씬 높기 때문에 CEV(Consensus-Extractable Value)가 감소합니다.
➤ LMD GHOST 포크 선택에 대한 높은 의존도 제거, 알려진 결함 방지, 도입 필요복잡한 하이브리드 포크 선택 규칙, 이러한 결함을 수정합니다.
➤ 최소 보증금 크기를 낮추고 검증인 수를 늘릴 수 있는 가능성
예비 지식
예비 지식
CONSENSUS를 비동기식으로 안전한 합의 알고리즘(예: Tendermint, Casper FFG 등)으로 두십시오. 우리는 컨센서스 알고리즘이 슬롯과 뷰(뷰 뷰)를 포함하도록 설계되었다고 가정합니다. 즉, 고정된 기간마다 합의에 도달하려고 시도합니다. 또한 입력으로 가중 유효성 검사기 세트(기존 BFT 합의 알고리즘에 추가하기 쉬운 속성)를 취한다고 가정합니다.
아래 디자인에서는 CONSENSUS를 수정하여 마무리하는 데 필요한 유효성 검사기 집합이 조회마다 달라집니다. 즉, get_validator_set(view_number: int) -> Map[Validator, int](여기서 int는 검증인 잔액을 나타냄) 함수의 입력으로 검증인 세트 대신 CONSENSUS를 사용하여 검증인의 새로운 뷰 보기를 생성할 수 있습니다. 설정합니다. get_validator_set은 검증인 세트가 한 보기에서 다음 보기까지 최대 1/r만큼 달라지는 특성을 가져야 합니다. 여기서 r(r=65536)은 복구 기간 길이입니다. 보다 공식적으로는 다음을 희망합니다.
그 중 |x|는 x 값의 절대값의 합을 반환하고, diff는 각 키 값을 뺀 값을 반환한다(예를 들어, diff({a:0.1, b:0.2}, {b:0.1 , c:0.3}) = {a: 0.1, b: 0.1, c: -0.3}).
실제로 인접한 두 검증인 세트 간의 차액에는 기존 검증인의 차감된 잔액이 포함되며 새로 추가된 검증인의 비율은 차감된 잔액의 비율과 동일합니다.
1/r의 최대 유효성 검사기 세트 델타 기능은 이전 유효성 검사기가 아직 완료되지 않은 경우에만 사용할 수 있습니다. 이전 검증자 집합이 완료되면 CONSENSUS의 인스턴스가 변경되므로 get_validator_set 함수의 내부 임의성도 완전히 변경되며, 이 경우 인접한 두 검증자 집합은 완전히 달라집니다.
기구
기구
두 가지 수준의 포크 선택을 사용합니다.
➤ LATEST_FINALIZED_BLOCK 선택(최신 완료 블록)
➤ LATEST_FINALIZED_BLOCK부터 시작하여 다른 포크 선택 항목(예: LMD GHOST)을 사용하여 블록 헤더를 선택합니다.
CONSENSUS 알고리즘은 get_post_state(LATEST_FINALIZED_BLOCK)에 의해 생성된 데이터를 기반으로 하는 유효성 검사기 집합 생성 함수를 입력으로 사용하여 슬롯당 한 번 볼 수 있습니다. 유효한 제안에는 LATEST_FINALIZED_BLOCK의 유효한 하위 블록이 포함되어야 합니다. 유효성 검사기는 해당 부분이 포크 선택에서 승리하고 블록체인의 일부가 되는 경우에만 블록 제안을 준비하고 투표합니다.
이미지 설명
참고: 슬롯은 항상 현재 보기 번호에 이전에 성공적으로 완료된 각 유효성 검사기 세트의 보기 번호 합계를 더한 값과 같아야 합니다.
다음과 같은 처벌이 있습니다.
➤ 합의 알고리즘에 의해 결정되는 정기적인 삭감 페널티
첫 번째 레벨 제목
FFG 대안: 단일 슬롯 에포크 캐스퍼 FFG
위의 설계에 대한 대안은 Casper FFG를 사용하는 것이지만 에포크를 슬롯 길이와 동일하게 만듭니다. Casper FFG는 동일한 위원회가 블록과 그 하위 항목을 마무리하는 것을 막지 않기 때문에 다르게 작동합니다. 이 차이를 수용하기 위해 우리는 (i) 1/3 대신 1/4의 안전 임계값, (ii) 슬롯이 완료되면 유효성 검사기 세트가 완전히 대신 최대 1/4를 대체하는 규칙을 적용해야 합니다.
이러한 설계에서는 이론적으로 하나의 슬롯 재구성을 구현하는 데 비용이 들지 않습니다(하나 이상의 슬롯은 허용되지 않음). 또한 그래프의 끝에서 "최종 완결성을 최대화하기 위한 슬롯까지""첫 번째 레벨 제목
특성
블록이 완료되면 경쟁 블록이 완료되려면 다음 중 하나가 발생해야 합니다.
➤ 위원회에 문제가 발생하여 유효성 검사기의 ≥1/3이 다른 블록을 이중 완료하여 삭감되었습니다.
➤ 가장 최근 위원회는 오프라인 상태이며 r/3 슬롯 이후 위원회는 삭감되지 않고 다른 블록을 완료할 수 있을 만큼 충분히 섞였습니다. 그러나 이것은 무거운 사보타주 페널티를 수반합니다(공격자 잔고의 ≥1/3).
어떤 경우든 최종 블록을 롤백하려면 최소 DEPOSIT_SIZE * COMMITTEE_SIZE / 3(입금 금액 * 위원회 크기 / 3) ETH가 소각되어야 합니다. COMMITTEE_SIZE = 131,072(Eth2 위원회의 슬롯당 검증자 수, 이론적 최대값은 4백만)로 설정하면 이 값은 1,398,101 ETH입니다.
솔루션의 다른 중요한 기능은 다음과 같습니다.
➤ 얼마나 많은 검증인이 입금되었든 슬롯당 COMMITTEE_SIZE(위원회 크기) 트랜잭션을 처리할 때 검증인 부하가 안정적입니다.
➤ 위원회에 참여할 필요가 없을 때 잠을 잘 수 있으므로 유효성 검사기 부하가 낮아집니다.
첫 번째 레벨 제목
확장: 소규모 위원회를 통한 체인 확인
효율성을 위해 COMMITTEE_SIZE를 줄여야 하는 경우 다음과 같이 조정할 수 있습니다.
➤ 단일 확인이 더 이상 진정한 최종성을 나타내지 않음을 반영하기 위해 "확정"을 "확인"으로 이름을 변경했습니다.
➤ 가장 최근에 확정된 블록을 선택하는 것과는 달리, 확정된 블록의 체인 헤드가 가장 긴 확정된 블록을 선택합니다.
➤ get_validator_set은 확인 전에 COMMITTEE_LOOKAHEAD가 아닌 상태 정보만 사용해야 합니다.
➤ 보기의 수는 슬롯의 수여야 합니다(이는 동일한 유효성 검사기 세트가 다른 체인에서 합의에 도달하려고 시도하고 일부 확인이 중단된 경우에만 발생할 수 있음을 더 쉽게 추론할 수 있음)
이 체계는 위의 모든 기능을 유지하지만 새로운 기능도 도입합니다. 블록이 여러 번 확인되면(예: 블록이 완료되고 체인의 하위 블록이 k-1 확인을 받습니다. 블록에 영향을 미침) 그런 다음 블록을 롤백하려면 여러 위원회의 합의 보장을 위반해야 합니다. 이를 통해 여러 위원회의 보안 수준이 쌓일 수 있습니다. k 확인을 롤백하려면 COMMITTEE_SIZE * DEPOSIT_SIZE * k / 3 ETH가 필요하고 위원회가 갈라지려면 k = COMMITTEE_LOOKAHEAD가 필요합니다.
첫 번째 레벨 제목
특정 값의 예
"최종성을 깨는 데 필요한 ETH"이 숫자는 공격자가 총 스테이킹된 ETH의 절반 이상(즉, 수백만 ETH)을 제어하는 것과 동일한 검증인의 수를 제어한다고 가정하며, 이 숫자는 공격자가 잃게 될 ETH입니다. 그러나 이것은 2,730,174,762 ETH를 가진 사람이 이 ETH를 임의로 소각하여 단일 슬롯을 롤백할 수 있다는 의미는 아닙니다.
원본 링크: https://ethresear.ch/t/a-model-for-cumulative-committee-based-finality/10259


