RE: [케블리] #48. 합의 알고리즘 이해하기 - PBFT Consensus Algorithm

You are viewing a single comment's thread from:

[케블리] #48. 합의 알고리즘 이해하기 - PBFT Consensus Algorithm

in consensus •  7 years ago  (edited)

답변 감사합니다. 그러한 이유로 위 내용과 같이 서술하셨던 것이군요. 결론을 먼저 말씀드리자면 완전히 잘못 이해하셨습니다.

일단 제가 언급한 '직접 확인한 원문'은 작성자께서 참고하신 그 논문과 '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가 최초로 제시된 논문이며 작성자께서 참고하신 논문의 레퍼에서도 해당 원문을 확인하실 수 있습니다.

본론으로 돌아가, 제가 문제 삼은 부분이 명백히 틀렸고 작성자께서 잘못 이해하셨다는 근거를 말씀드립니다.

  1. 애초에 Pre-prepare 메시지를 2f+1개 수집한다는 것이 말이 안 됩니다. Pre-prepare 메시지를 발생시켜 멀티캐스트하는 것은 프라이머리 노드 하나입니다. 모든 노드가 Pre-prepare 메시지를 멀티캐스트한다면 가능하겠지만, 프라이머리 노드 하나가 멀티캐스트 하는 이상 다른 백업 노드 중에서는 Pre-prepare 메시지를 2f+1개 수집할 수 없습니다.

  2. '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'라고 부르겠다라는 의미입니다.

  3. 혹시나 작성자께서 원문에서 논란의 내용을 찾지 못하실까하여 원문의 내용도 복붙해놓겠습니다. 확인하시면 훨씬 이해가 잘 되실 겁니다.

제가 설명드린 내용이 옳다면 잘못 설명되었다고 본문에 명시하시는 것이 좋을 것 같습니다. 또 다른 누군가가 PBFT에 대해 공부할 때 혼란스러워하지 않기를 바라기 때문입니다.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

아아 맞네요. 제가 오해했습니다. 지적해주신 대로, Pre-prepare 상태를 모든 노드가 멀티캐스팅 하는 것은 불가능합니다. Pre-prepare 메세지는 최초에 요청받은 노드 - Primary Node - 하나가 네트워크에 발송하는 것이고, 그 노드가 보낸 메세지가 옳다고 검증될 경우 다른 노드가 prepare 메세지를 네트워크에 멀티캐스팅 하는 절차로 진행되는 것이 맞습니다. 마찬가지로 certificate 구문도 지적해주신 내용이 옳습니다.

내용 오류를 바로잡아 주셔서 감사드립니다. 안타깝게도 스팀잇에 게시한 지 일주일이 이미 지나서, 본문 수정은 현재 불가능한 상태입니다. 올바른 내용을 적어 주신 댓글이 PBFT 알고리즘을 공부할 때 혼란을 방지할 수 있었으면 좋겠습니다. 잘못된 내용전달을 바로잡아 주셔서 다시 한 번 감사드립니다.