본문으로 건너뛰기

무한 샤딩 패러다임

TON 블록체인에서의 분할 및 병합 이해하기

TON(텔레그램 오픈 네트워크) 블록체인은 블록체인의 확장성과 효율성을 위한 혁신적인 개념을 도입합니다. 그 중 하나가 블록체인 아키텍처의 핵심인 분할 및 병합(Split Merge) 기능입니다. 이 짧은 글에서는 무한 샤딩 패러다임(Infinite Sharding Paradigm, ISP) 내에서의 Split Merge의 주요 측면을 탐구합니다.

무한 샤딩 패러다임(ISP)과 애플리케이션

ISP는 TON 블록체인의 설계를 기반으로 하며, 각 계정을 별도의 "계정 체인(accountchain)"의 일부로 취급합니다. 이러한 계정 체인들은 효율성을 위해 샤드 체인 블록(shardchain blocks)으로 집계됩니다. 샤드 체인의 상태는 모든 계정 체인의 상태로 구성됩니다. 따라서 샤드 체인 블록은 본질적으로 자신에게 할당된 계정의 가상 블록 모음입니다.

  • ShardState: 계정 ID의 비트 길이를 n으로 하여 Hashmap(n, AccountState)로 근사화됩니다.
  • ShardBlock: Hashmap(n, AccountBlock)로 근사화합니다.

각 샤드 체인, 또는 더 정확히 말하면 각 샤드 체인 블록은 workchain_id와 계정 Id의 이진 접두사 s의 조합으로 식별됩니다.

메시지 및 인스턴트 하이퍼큐브 라우팅(Instant Hypercube Routing)

무한 샤딩 패러다임에서 각 계정(또는 스마트 컨트랙트)은 자체적으로 별도의 샤드 체인에 있는 것처럼 취급됩니다. 계정 간의 상호작용은 메시지를 전송하는 방식으로만 이루어지며, 이는 계정이 액터(actor)로 작용하는 액터 모델의 일부입니다. 샤드 체인 간의 효율적인 메시징 시스템은 TON 블록체인의 운영에 필수적입니다. TON의 특징 중 하나는 인스턴트 하이퍼큐브 라우팅(Instant Hypercube Routing)으로, 이는 샤드 체인 간의 메시지를 빠르게 전달하고 처리할 수 있게 해 주며, 한 샤드 체인의 블록에서 생성된 메시지가 대상 샤드 체인의 다음 블록에서 처리되도록 보장합니다. 이는 시스템 내의 메시지 수에 관계없이 이루어집니다.

샤딩 예시

제공된 그래픽 구성표에서:

  • 작업 체인의 샤드는 시간에 따라 나뉘며, 점선으로 표시됩니다.
  • 블록 222, 223 및 224는 seqno=102인 마스터 체인 블록과 관련이 있습니다. 여기서 222는 하나의 샤드에 있고, 223과 224는 다른 샤드에 있습니다.
  • 분할 또는 병합 이벤트가 발생하면 영향을 받는 샤드는 다음 마스터체인 블록이 발생할 때까지 일시 정지됩니다.

요약하자면, TON 블록체인의 분할 병합은 블록체인 네트워크 내에서 확장성과 상호작용을 향상시키는 복잡하지만 효율적인 메커니즘입니다. 이는 TON이 일반적인 블록체인 문제를 해결하는 접근 방식을 보여주며, 효율성과 글로벌 일관성을 강조합니다.

샤딩 세부 정보

샤드체인의 분할 및 비분할 부분

샤드체인 블록과 상태는 두 부분으로 나뉩니다:

  1. 분할 부분(Split Part): ISP 형식을 준수하며, 계정별 데이터를 포함합니다.
  2. 비분할 부분(Non-Split Part): 다른 블록 및 외부와의 상호작용과 관련된 데이터를 포함합니다.

다른 블록과의 상호작용

비분할 부분은 글로벌 일관성을 보장하는 데 중요하며, 내부 및 외부 지역 일관성 조건으로 축소됩니다. 이들은 다음과 같은 이유로 중요합니다:

  • 샤드체인 간 메시지 전달.
  • 여러 개의 샤드체인을 포함하는 트랜잭션.
  • 블록의 초기 상태를 이전 블록과 대조하여 전달 보장 및 검증.

인바운드 및 아웃바운드 메시지

샤드체인 블록의 비분할 부분의 주요 구성 요소는 다음과 같습니다:

  • InMsgDescr: 블록으로 가져온 모든 메시지에 대한 설명(즉, 블록에 포함된 트랜잭션에 의해 처리되거나 출력 대기열로 전달된 메시지, 하이퍼큐브 라우팅이 지정한 경로를 따라 이동하는 일시적 메시지의 경우).
  • OutMsgDescr: 블록에서 내보내거나 생성한 모든 메시지에 대한 설명(즉, 블록에 포함된 트랜잭션에서 생성된 메시지 또는 현재 샤드체인에 속하지 않은 목적지를 가진 InMsgDescr에서 전달된 트랜짓 메시지).

블록 헤더 및 검증자 서명

또 다른 비분할 구성 요소인 블록 헤더에는 workchain_id, account_ids의 이진 접두사, 블록 시퀀스 번호(이전 블록의 시퀀스 번호보다 가장 작은 음수가 아닌 정수로 정의), 논리적 시간 및 유닉스 시간 생성 등의 필수 정보가 포함되어 있습니다. 또한 해당 블록의 직전 블록(또는 이전 샤드체인 병합 이벤트의 경우 두 개의 직전 블록)의 해시, 초기 및 최종 상태(즉, 현재 블록이 처리되기 직전과 직후의 샤드체인 상태)의 해시, 샤드체인 블록이 생성될 당시 알려진 가장 최근 마스터체인 블록의 해시도 포함됩니다. 서명되지 않은 블록에 검증자 서명이 추가되어 서명된 블록이 형성됩니다.

아웃바운드 메시지 큐

OutMsgQueue는 샤드 체인 상태에서 중요한 비분할 부분입니다. 여기에는 이 상태로 이어지는 마지막 샤드 체인 블록 또는 그 이전 블록에 의해 포함된 미전달 메시지가 OutMsgDescr에 포함되어 있습니다. 초기에는 각 발신 메시지가 OutMsgQueue에 포함되어 저장되며, 처리가 되거나 목적지로 전달될 때까지 대기합니다.

샤드 분할 및 병합 메커니즘

동적 샤딩의 맥락에서, 샤드 구성은 분할 및 병합 이벤트로 인해 변경될 수 있습니다. 이러한 이벤트는 마스터 체인 블록과 동기화됩니다. 예를 들어, 분할 또는 병합이 발생하면 영향을 받는 샤드는 다음 마스터 체인 블록을 기다린 후에 진행합니다.

참고 항목