[BlockChain] Sui

91Savage·2022년 9월 19일
0

블록체인 정리

목록 보기
8/9

Sui

  • 한 때 Meta( 구 페이스북)의 블록체인 사업인 Diem (전 Libra) 프로젝트로부터 파생된 신생 Layer1(L1) 프로젝트 이다.

  • L1 레이어에서 확장성 문제를 해결하려는 초고속 블록체인이며, 자유로운 개발 환경을 갖춘 객체(Object) 중심의 블록체인으로 셀프 브랜딩을 하고 있다.

Sui (Build Without Boundaries) 경계없이 빌드 한다.

  • 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)이 있다 이 기술은 블록순서에 따라 트랜잭션을 순차적으로 처리하는 전통적인 블록체인 방식과 다르다

BlockSTM

  • 독립적인 트랜젝션에 대해서는 여러쓰레드(thread)에 나눠 동시에 병렬적으로 실행(executuion) #참고: 솔라나도 sealevel으로 병렬 처리 가능.

  • 트랜잭션 순서를 미리 결정 (Pre-defined order)

  • 트랜젝션을 우선 실행한 뒤 검증(Validation) 및 합의 과정은 나중에 거침으로써 블록체인의 bottleneck를 해소하고 속도를 대폭 향상

  • 다만, 실제로 트랜잭션의 검증 과정에서 충돌(conflict)이 생겨 롤백을 해야하거나 어떠한 이유로 커밋 작업이 중단되는 경우 TPS는 이보다 현저히 낮아질 수 있다.

BlockSTM 핵심 기술

낙관적 동시성 제어 (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을 먼저 실행하는 일은 피하도록 설계 됨.

Sui 합의 알고리즘

  • FastPay + Narwhal and Tusk DAG 기반의 멤풀과 효율적인 BFT컨센서스 투트랙 방식

  • Sui는 객체를 두 종류로 나누어 소유 객체(owned object)와 관련된 단순한 트랜젝션에 대해서는 합의 과정을 생략하여 처리 즉시 완결성을 보장한다, 공유 객체(shared object)와 관련된 복잡한 트랜젝션에 대해서는 Narwhal and Tusk DAG(Direct Acyclic Graph) 합의 알고리즘을 사용한다.

FastPay

  1. 발송인 (리더노드와 유사)이 모든 Sui검증자들에게 트랜젝션을 전파한다.
  2. Sui 검증자들은 발송인에게 투표를 보낸다. 투표는 DPoS구조에 따라 검증자가 소유하고 있는 Sui지분에 비례하여 가중치를 부여 받음.
  3. 발송인은 비잔틴 저항 요건을 충족하는 해당 표들을 증명서 (Certificate)로 모은 뒤 검증자들에게 다시 전파하고 트랜젝션을 완결 함.

Narwhal DAG

  1. 발송인 (리더노드와 유사)이 모든 Sui검증자들에게 트랜젝션을 전파한다.
  2. Sui 검증자들은 발송인에게 투표를 보낸다. 투표는 DPoS구조에 따라 검증자가 소유하고 있는 Sui지분에 비례하여 가중치를 부여 받음.
  3. 발송인은 비잔틴 저항 요건을 충족하는 해당 표들을 증명서 (Certificate)로 모은 뒤 검증자들에게 다시 전파한다 해당 증명서가 비잔틴 합의를 통해 순차적으로 처리된다.

------ 위 까진 FastPay와 동일하다 ----------

  1. 증명서가 순차적으로 나서 발송인은 트랜젝션을 완결시키기위해 최종적으로 증명서를 검증자들에게 다시 한 번 전파한다.

Sui
1) 트랜젝션을 병렬적으로 처리할 수 있을 뿐만 아니라
2) 트랜젝션의 성격에 따라 합의 알고리즘을 투트랙으로 운영하여 블록체인 속도를 극대화하였다.

Sui의 4가지 속성

  • 여러 TX를 블록으로 묶어 검증하는 다른 블록체인과 달리 Sui는 TX가 실행되는 대로 바로 검증하고 체인에 저장한다. 그리고 요청자와 검증자 간 양방향 통신을 보장하게 되면서
    낮은 지연시간 (latency)과 즉각적인 완결성(finality)를 자랑한다.
  • Sui는 객체(object)의 집합을 저장하는 블록체인이다. Sui의 기본적인 저장 단위는 account가 아닌 Object이며, Sui는 상태(state)의 집합이 아니라 객체를 관리하기 위한 블록체인이다.
    여기서 말하는 객체란 Move에 의해 생성되고 프로그래밍이 가능한 객체이며, Move패키지 자체도 객체이다.
  • Sui 객체 두가지 종류
특정한 소유자만 수정할 수 있는 소유 객체(owned object)
특정한 소유자가 따로 없고 여러 사람들이 수정할 수 있는 공유 객체(shared object)
  • 객체마다 고유한 ID값이 있고 해당 ID값은 객체가 어떤 트랜젝션으로부터 생성되었는지 혹은 다른 객체들과 어떠한 종속관계가 있는지의 내용이 포함 됨

    ID값을 확인하면 역사를 나타내는 데이터를 확인 할 수 있음.

    따라서 Sui 검증자들은 ID값을 통해 각 객체들의 인과관계를파악하여 이중 지불의 문제를 발생하지 않도록 병렬적으로 처리 할 수 있음.

    프로그래밍 언어 - Move

  • 두 블록체인 모두 러스트(Rust) 기반의 Move 프로그래밍 언어를 사용하고 있다.
  • Meta에서 블록체인에 사용하기 위해 개발한 오픈소스 언어이다.
  • Solidity 대비 디지털 자산에 대한 표현력이 뛰어나고, 높은 수준의 보안성을 가지고 있으며, Move Prover라는 검증 툴을 통해 개발자의 의도대로 코드를 작동시킬 수 있다
  • 또한 Rust와 유사하게 Memory 안전성(Memory Safe)을 제공하여 메모리 관리를 손쉽게 할 수 있게 해준다.

0개의 댓글