답변 감사합니다. 그러한 이유로 위 내용과 같이 서술하셨던 것이군요. 결론을 먼저 말씀드리자면 완전히 잘못 이해하셨습니다.
일단 제가 언급한 '직접 확인한 원문'은 작성자께서 참고하신 그 논문과 'CASTRO, M.AND LISKOV, B. 1999b. Practical Byzantine fault tolerance. In Proceedings of the Third Symposium on Operating Systems Design and Implementation (OSDI), USENIX, New Orleans'을 말씀드린 것입니다. 후자는 PBFT가 최초로 제시된 논문이며 작성자께서 참고하신 논문의 레퍼에서도 해당 원문을 확인하실 수 있습니다.
본론으로 돌아가, 제가 문제 삼은 부분이 명백히 틀렸고 작성자께서 잘못 이해하셨다는 근거를 말씀드립니다.
애초에 Pre-prepare 메시지를 2f+1개 수집한다는 것이 말이 안 됩니다. Pre-prepare 메시지를 발생시켜 멀티캐스트하는 것은 프라이머리 노드 하나입니다. 모든 노드가 Pre-prepare 메시지를 멀티캐스트한다면 가능하겠지만, 프라이머리 노드 하나가 멀티캐스트 하는 이상 다른 백업 노드 중에서는 Pre-prepare 메시지를 2f+1개 수집할 수 없습니다.
'quorum certificate'에 대한 이해를 잘못 하셨을뿐만 아니라, 'quorum certificate with the PRE-PREPARE and 2f matching PREPARE messages for ~' 구문에 대해서도 잘못 해석하셨습니다.
우선 quorum이 정족수를 말하는 것은 맞습니다. 그러나 'quorum certificate'는 그저 어떤 상태를 이야기 하는 것이지 그것이 2f+1개의 특정 갯수를 의미하지 않습니다. 논문 중 이어서 나오는 내용도 읽어 보시면 아실겁니다.
또한 'quorum certificate with the PRE-PREPARE'와 '2f matching prepare message'로 잘못 끊어서 해석하셨습니다. 'quorum certificate'와 'with the PRE-PREPARE and 2f matching PREPARE message'로 끊으셨어야 합니다. 해석하자면 PRE-PREPARE' 메시지를 2f개의 PREPARE 메시지에 대조시킨다는 의미입니다. 해당 구문에 이어서 나오는 'for sequence number n, view v, and request m.' 구문을 참고하면 의미는 더 명확해질 것입니다. 백업 노드 본인이 받았던 PRE-PREPARE 메시지의 n, v, m 필드와 자신을 제외한 나머지 백업 노드로부터 받은 PREPARE 메시지들의 n, v, m 필드가 일치하는지 확인합니다. 조건을 만족하는 PREPARE 메시지가 2f개가 될 때까지 메시지를 수집합니다. 그러한 상황이 될 때 'quorum certificate'라는 상태가 되며, 이를 'prepared certificate'라고 부르겠다라는 의미입니다.혹시나 작성자께서 원문에서 논란의 내용을 찾지 못하실까하여 원문의 내용도 복붙해놓겠습니다. 확인하시면 훨씬 이해가 잘 되실 겁니다.
제가 설명드린 내용이 옳다면 잘못 설명되었다고 본문에 명시하시는 것이 좋을 것 같습니다. 또 다른 누군가가 PBFT에 대해 공부할 때 혼란스러워하지 않기를 바라기 때문입니다.
RE: [케블리] #48. 합의 알고리즘 이해하기 - PBFT Consensus Algorithm