Lock and Commit 패러다임은 많은 컨센서스 프로토콜 (PBFT, Tendermint, Hotstuff …) 에서 사용되는 기본적인 테크닉이다. Primary-backup, 즉 리더와 리더의 레플리카들이 존재하는 컨센서스에서 가장 큰 safety 위협은 레플리카들이 서로 다른 값을 커밋하는 것이다. 이러한 상황은 view-change의 경우에 발생할 수 있다. 이것이 많은 프로토콜들이 view-change를 신경써서 디자인하는 이유 중 하나이다. 아무튼 이런 상황을 방지하기 위한 해결책이 바로 lock and commit 패러다임이다. 말 그대로 어떤 값에 대해 커밋하기 전에 2f+1 개의 레플리카가 lock을 걸게끔 하는 디자인이다. 여기서 lock을 건다는 것은 커밋하기로 약속한 값을 보호하기로(다른 충돌하는 값을 커밋하지 않기로) 약속하는 것이다. Lock and Commit 패러다임에서는 다음 두 가지를 지킨다.
- Lock before commit : 값을 커밋하기 전에 2f+1개의 레플리카는 이 값을 lock 한다.
<작성중>