요약
- “트랜잭션 제출 - 블록 제안 - 블록 전파 - 블록 승인 - 커밋 - 다음 라운드 준비”
- 2/3 이상의 검증자의 동의를 받은 블록이 새로운 블록이 된다.
내용
1. 트랜잭션 제출
- 사용자가 트랜잭션을 제출하면 메모리 풀(Mempool)에 저장된다.
- 메모리 풀은 트랜잭션 대기열 역할을 하며, 아직 블록에 포함되지 않은 트랜잭션을 임시로 저장한다.
2. 블록 제안 단계 (Propose)
- 검증자(Validator)들이 차례대로 블록을 제안한다.
- 라운드 로빈 방식으로 순서를 정한다.
- 블록 제안자로 선택된 검증자는 메모리 풀에서 유효한 트랜잭션을 선택하여 새로운 블록을 제안한다.
- 이 블록에는 트랜잭션 목록과 블록 생성 시간, 이전 블록의 해시 등이 포함된다.
3. 블록 전파 (Pre-vote)
- 블록 제안자가 새로운 블록을 제안하면, 다른 검증자들에게 이 블록을 전파한다.
- 블록을 받은 검증자들은 제안된 블록의 유효성을 검증한다. 여기에는 트랜잭션의 유효성, 서명 검증, 블록 구조 확인이 포함된다.
- 검증이 완료된 검증자들은 해당 블록에 대해서 사전 투표(pre-vote)를 한다.
4. 블록 승인 (Pre-commit)
- 사전 투표가 끝나면, 각 검증자는 다른 검증자들이 보낸 사전 투표를 수집한다.
- 전체 검증자 중 2/3 이상이 동일한 블록을 선택하면 해당 블록이 승인될 가능성이 높아진다.
- 검증자들은 블록을 실제로 커밋할지 여부를 결정하는 사전 커밋(Pre-commit) 투표를 진행한다.
5. 블록 커밋 (Commit)
- 사전 커밋 투표가 완료되면, 2/3 이상의 검증자가 동일한 블록에 대해 커밋에 동의해야 최종적으로 블록이 생성된다.
- 최종 블록이 승인되면, 검증자들은 이 블록을 블록체인에 추가하며, 블록에 포함된 모든 트랜잭션이 기록된다.
- 새로운 블록이 생성되고, 블록에 포함된 트랜잭션은 확정된다.
6. 다음 라운드 준비
- 블록이 최종적으로 커밋되면, 검증자들은 새로운 블록 생성 라운드에 대비하여 다음 제안자를 선정하고, 1.로 돌아가서 반복된다.
참고