원문 내용입니다. http://www.pmg.csail.mit.edu/papers/bft-tocs.pdf 의 10페이지. normal case operation 이하에서 확인하실 수 있습니다.
A backup i accepts the PRE-PREPARE message provided (in addition to the
conditions above) it has not accepted a PRE-PREPARE for view v and sequence
number n containing a different digest. If a backup i accepts the PRE-PREPARE
and it has request m in its log, it enters the prepare phase by multicasting a
h<PREPARE, v, n, D(m)>, iiαi message with m’s digest to all other replicas;
in addition, it adds both the PRE-PREPARE and PREPARE messages to its log. Otherwise,
it does nothing.
The PREPARE message signals that the backup agreed to assign
sequence number n to m in view v. We say that a request is pre-prepared at a
particular replica if the replica sent a PRE-PREPARE or PREPARE message for the
request.
Pre-prepare 메세지를 확인한 backup 노드 i는 메세지에 문제가 없으면 prepare 메세지를 생성해 네트워크의 모든 노드에게 전송합니다. Pre-prepare 메세지를 검증한 결과 옳지 않으면 prepare 메세지 자체가 발생하지 않습니다.
Then each replica collects messages until it has a quorum certificate with the
PRE-PREPARE and 2 f matching PREPARE messages for sequence number n, view
v, and request m. We call this certificate the prepared certificate and we say
that the replica prepared the request.
quorum certificate에서 quorum은 정족수를 말합니다. 논문 서두에 The recovery mechanism allows the algorithm to tolerate any number of faults over the lifetime of the system provided fewer than 1/3 of the replicas become faulty within a small window of vulnerability라고 말했으므로, 비잔틴 노드의 개수가 f개라면 합의를 이루기 위한 정족수는 2f+1이 되겠죠.
Prepare가 2f인 이유는 검증하는 자기 자신을 제외했기 때문에 2f+1의 정족수에서 1을 뺀 것입니다. 애초에 Pre-prepare 메세지가 검증되지 않으면 Prepare 메세지를 보내지도 않기 때문에, 사실상 Prepare 메세지만 제대로 받았다면 prepare certificate상태가 되겠죠. 하지만 논문에서는 quorum certificate with the pre-prepare와 2f matching prepare message를 동시에 언급했기에 글에서도 두 가지를 동시에 적어 두었습니다. 논문에서 pre-prepare와 prepare 검증이 순차적으로 진행되는지는 확인할 수 없었기에 [4]에서처럼 "수집한 Pre-prepare 메시지 개수가 2f+1개이고 Prepare 메시지가 2f개 이상인 경우 "prepared certificate"라고 부르며" 라고 이해했습니다.
원문을 직접 확인하셨다고 했는데, 어떤 원문인지 알 수 있을까요? PBFT를 설명하는 다른 논문이거나, 같은 논문에서도 다른 설명을 보았을 수 있을 것 같습니다.
RE: [케블리] #48. 합의 알고리즘 이해하기 - PBFT Consensus Algorithm