한 때 Meta( 구 페이스북)의 블록체인 사업인 Diem (전 Libra) 프로젝트로부터 파생된 신생 Layer1(L1) 프로젝트 이다.
L1 레이어에서 확장성 문제를 해결하려는 초고속 블록체인이며, 자유로운 개발 환경을 갖춘 객체(Object) 중심의 블록체인으로 셀프 브랜딩을 하고 있다.
web3 서비스를 개발 할 수 있는 블록체인이 목표이며 구체적으로, 게임부터 금융 서비스 까지 모든 산업에서 적용 할 수 있는 플랫폼을 구축하는것이다.
이를 위해 강력한 SDK와 수평적 확장(horizontal scaling)이 가능한 L1블록체인을 개발 한다
기존 Diem이 결제 트래픽을 처리하는데 특화 되어 있었따면, sui는 그것을 넘어 개발에 한계가 없는 Smart Contract 플랫폼을 지향한다.
Sui는 120,000 TPS의 처리속도를 자랑한다. (이더리움, 아비트럼, VISA 각각 15, 500, 65,000) 다소 비현실적으로 느껴지긴하지만 비결은 BlockSTM 기술에 있다.
BlockSTM(Software Transactional Memory)
ACID 속성을 만족하는 데이터베이스 트랜젝션의 속성을 병렬프로그래밍에 적용한 기법
BlockSTM을 활용한 스마트컨트랙트 병렬 처리 엔진(Smart Contract parallel execution engine)이 있다 이 기술은 블록순서에 따라 트랜잭션을 순차적으로 처리하는 전통적인 블록체인 방식과 다르다
독립적인 트랜젝션에 대해서는 여러쓰레드(thread)에 나눠 동시에 병렬적으로 실행(executuion) #참고: 솔라나도 sealevel으로 병렬 처리 가능.
트랜잭션 순서를 미리 결정 (Pre-defined order)
트랜젝션을 우선 실행한 뒤 검증(Validation) 및 합의 과정은 나중에 거침으로써 블록체인의 bottleneck를 해소하고 속도를 대폭 향상
다만, 실제로 트랜잭션의 검증 과정에서 충돌(conflict)이 생겨 롤백을 해야하거나 어떠한 이유로 커밋 작업이 중단되는 경우 TPS는 이보다 현저히 낮아질 수 있다.
낙관적 동시성 제어 (Optimistic Concurrency Control)
사용자들이 같은 데이터를 동시에 수정하지 않을 것이라고 가정하고 멀티 쓰레드를 사용하는 방식
트랜젝션을 우선 병렬로 처리하고 검증과정에서 충돌(Conflict)이 생겨 트랜젝션이 커밋되지 않으면, 롤백(rollback)하고 다시 실행 한다 .
모든 트랜잭션이 이상없다고 가정하고 우선 실행하는 Optimistic RollUp과 유사한 작동방식이다
대부분의 트랜젝션은 문제없이 처리 될 가능성이 높기에 해당방식을 사용 할 경우 속도가 비약적 상승함.
Dynamic dependency estimation
검증에 실패하는 트랜젝션을 최대한 빨리 포착함으로써 비효율성을 줄이기 위한 장치이자, Commit 규칙을 정하는 방식이다.
검증자가 어떠한 트랜젝션 검증에 실패하는 경우 ESTIMATION이라고 태그해 논다.
다른 검증자가 해당 트랜젝션을 성공적으로 검증할 때까지 해당 트랜젝션과 의존성(dependency)이 존재하는 모든 트랜젝션들을 실행 및 검증하지 않고 우선 다음 트랜젝션으로 건너 뛰는 방식
만약 트랜젝션 검증에 실패하는데도 불구하고해당 트랜젝션과 의존성이 존재하는 트랜젝션들을 실행해 버리게 되면, 모든 작업을 RollBack 해야 하는 리스크가 존재하기에 해당 장치를 마련
Collaborative scheduler
트랜젝션의 검증과 실행 작업을 쓰레드에 할당해주는 기술로, 트랜젝션의 순서를 미리(pre-defined order) 정해줄 수 있도록 해준다.
트랜젝션 순서는 low transaction 위주로 먼저 처리하는데, 그 이유는 트랜젝션 실행과 검증 작업이 분리된 BlockSTM 구조 상 트랜젝션이 성공적으로 실행되었다고 해서 해당트랜젝션이 완전히 Commit 되는 것이 아니기 때문
트랜젝션 검증 과정 중 합의를 이루지 못하면 해당 트랜젝션 뿐 아니라, 그 이후에 발생한 트랜젝션까지 모두 롤백 해야 하기에, 최대한 시간 낭비 없이 효율적으로 블록체인을 운영하고자 high transaction을 먼저 실행하는 일은 피하도록 설계 됨.
FastPay + Narwhal and Tusk DAG 기반의 멤풀과 효율적인 BFT컨센서스 투트랙 방식
Sui는 객체를 두 종류로 나누어 소유 객체(owned object)와 관련된 단순한 트랜젝션에 대해서는 합의 과정을 생략하여 처리 즉시 완결성을 보장한다, 공유 객체(shared object)와 관련된 복잡한 트랜젝션에 대해서는 Narwhal and Tusk DAG(Direct Acyclic Graph) 합의 알고리즘을 사용한다.
------ 위 까진 FastPay와 동일하다 ----------
Sui는
1) 트랜젝션을 병렬적으로 처리할 수 있을 뿐만 아니라
2) 트랜젝션의 성격에 따라 합의 알고리즘을 투트랙으로 운영하여 블록체인 속도를 극대화하였다.
특정한 소유자만 수정할 수 있는 소유 객체(owned object) 특정한 소유자가 따로 없고 여러 사람들이 수정할 수 있는 공유 객체(shared object)
객체마다 고유한 ID값이 있고 해당 ID값은 객체가 어떤 트랜젝션으로부터 생성되었는지 혹은 다른 객체들과 어떠한 종속관계가 있는지의 내용이 포함 됨
ID값을 확인하면 역사를 나타내는 데이터를 확인 할 수 있음.
따라서 Sui 검증자들은 ID값을 통해 각 객체들의 인과관계를파악하여 이중 지불의 문제를 발생하지 않도록 병렬적으로 처리 할 수 있음.