Sui에서 합의 프로토콜은 Myiticeti 프로토콜을 사용한다.
기존의 합의 알고리즘보다 빠르고 효율적이다.
DAG(Directed Acyclic Graph, 방향성 비순환 그래프) 기반의 합의 방식
-> 모든 검증자가 동시에 블록을 제안할 수 있음 여러 검증자가 병렬로 블록을 만들고 연결 가능, 여러 개의 부모 블록을 가질 수 있음
즉, 병렬 합의가 가능하기 때문에 더많은 트랜잭션 처리가 가능함
(1) 데이터 일관성 유지 어려움 (Race Condition)
예를 들어:
A가 100 SUI를 B와 C에게 각각 100 SUI씩 송금하는 트랜잭션을 동시에 제출하면?
병렬로 실행하면 두 개의 트랜잭션이 동시에 성공할 가능성이 있음.
하지만 A의 계좌에는 100 SUI밖에 없기 때문에 일관성 오류 발생 가능.
해결책: Mysticeti 같은 DAG 기반 시스템에서는 이런 충돌을 감지하고 처리해야 함.
Sui에서는 트랜잭션 간 종속성을 분석하여 충돌을 방지하는 기법을 사용.
but 검증 복잡도가 증가함
1) Mysticeti의 합의 과정 (3단계 메시지 교환)
Mysticeti는 DAG(Directed Acyclic Graph) 기반으로 여러 노드가 동시에 블록을 제안하고 합의하는 구조
모든 검증자가 동시에 블록을 제안 가능.
기존 pBFT에서는 리더만 블록을 제안하지만, Mysticeti에서는 여러 검증자가 동시에 블록을 생성할 수 있음.
검증자들은 다른 블록을 보고 투표(3단계 메시지 교환 수행).
기존 pBFT처럼 Pre-Prepare → Prepare → Commit 단계를 거치지만, 각 노드가 독립적으로 메시지를 주고받아 병렬 합의 가능.
3라운드(라운드당 1번의 메시지 교환) 후 합의 완료.
2/3 이상의 검증자가 특정 블록을 인정하면 즉시 확정(Finality).
pBFT처럼 추가적인 리더 선출 과정이 필요하지 않음.