파이프라인화된 투-페이즈의 HotStuff 컨센서스
MonadBFT는 비잔틴 액터의 존재하에서 부분적으로 동기화된 상황에서 트랜잭션 오더링에 대한 합의를 달성하기 위한 고성능 합의 메커니즘입니다. MonadBFT는 HotStuff의 파생물로서, 리더 타임아웃 이벤트에서 이차 통신 복잡도를 활용하여 세 라운드에서 두 라운드로 감소시킨 Jolteon/DiemBFT/Fast-HotStuff에서 제안된 개선을 적용한 것입니다.
MonadBFT는 긍정적인 응답성을 갖춘 파이프라인화된 투-페이즈의 BFT 알고리즘으로, 일반적인 경우에는 선형 통신 오버헤드를 가지며 타임아웃이 발생하는 경우에는 이차 통신을 가지고 있습니다. 대부분의 BFT 알고리즘과 마찬가지로 통신은 단계별로 진행됩니다. 각 단계에서 리더는 유권자들에게 서명된 메시지를 보내고, 유권자들은 다음 리더에게 서명된 응답을 보냅니다. 파이프라이닝은 블록k에 대한 쿼럼 인증서(QC) 또는 타임아웃 인증서(TC)가 블록k+1의 제안에 동반되도록 허용합니다.
| Sybil 저항 메커니즘 | 지분증명 (PoS) |
|---|---|
| 블록 시간 | 1초 |
| 최종성 | 싱글 슬롯 |
| 위임 허용 | 예 |
공유된 멤풀 를 참고.
MonadBFT는 라운드로 진행되는 파이프라인 컨센서스 메커니즘입니다. 프로토콜에 대한 좀더 직관적인 이해를 위해 아래 설명을 참고하십시오.
통상적으로n = 3f+1노드가 있도록 가정하겠습니다. 여기서 f는 최대 비잔틴 노드의 수이며, 즉 2f+1(즉, 2/3)는 비잔틴이 아닌 노드입니다. 아래 토론에서는 실제로 모든 노드의 지분 가중치가 동일하다고 가정하겠습니다. 실제로는 모든 임계값을 노드 수가 아닌 지분 가중치로 표현할 수 있습니다.
2f+1개의 검증자로부터의 YES 투표를 (임계 서명을 통해) 집계하여 QC(쿼럼 인증서)를 파생합니다. 이 경우 통신은 선형적입니다: 리더가 블록을 검증자에게 보내고, 검증자가 직접 다음 리더에게 투표를 보냅니다.
2f+1개의 타임아웃 메시지를 누적하면, 이를 (다시 한 번 임계 서명을 통해) TC(타임아웃 인증서)로 조립하여 그 다음 리더에게 직접 보냅니다.k+1에 대한 QC(라운드k+2의 리더로부터의 통신)를 받으면 라운드k에서 제안된 블록을 확정합니다. 구체적으로:
k-1에 대한 QC 또는 TC와 함께; 중요하지 않으므로 무시하겠습니다).2f+1개의 검증자가 그 블록에 대해 YES 투표를 보내면(투표를 Bob/’라운드 k+1의 리더’에게 보내면), k+1의 블록에는 라운드k에 대한 QC가 포함됩니다. 그러나 이 시점에서 라운드k의 블록이 확정된 것을 알 수 있는지 여부를 알기 위해선(예를 들어) Bob이 악의적일 수 있고 블록을 Valerie에게만 보낸 것일 수 있습니다. Valerie가 할 수 있는 것은 라운드 k+1에 투표하여 투표를 Charlie(라운드k+2의 리더)에게 보내는 것뿐입니다.2f+1개의 검증자가 블록 k+1에 대해 YES로 투표하면, Charlie는 라운드k+1에 대한 QC와 라운드k+2에 대한 블록 제안을 게시합니다. Valerie가 이 블록을 받으면 즉시 라운드k의 블록(Alice의 블록)이 확정되었음을 알 수 있습니다.k+1에서 잘못된 블록 제안을 보내거나2f+1개의 검증자에게만 보낸 경우, 최소한f+1개의 검증자가 타임아웃이 발생하고 다른 non-Byzantine (비-바이잔틴) 검증자들도 타임아웃이 발생하여 라운드k+1에 대한 TC를 생성할 것입니다. 그럼 Charlie는 제안에서 라운드k+1에 대한 TC를 게시할 것입니다(라운드k+1에 대한 QC가 없기 때문에 제안을 하려면 반드시 그렇게 해야 합니다).B와B'를 볼 때 즉시B와 모든 엔세스터를 커밋할 수 있기 때문입니다.참조 :