인피니티 샤딩 패러다임
톤 블록체인의 분할 병합 이해
TON (텔레그램 오픈 네트워크) 블록체인은 블록체인 확장성과 효율성을 위한 혁신적인 개념을 도입하였습니다. 이러한 개념 중 하나는 블록체인 아키텍처에 필수적인 분할 병합 기능입니다. 이 짧은 글에서는 무한 샤딩 패러다임(ISP) 내에서 분할 병합의 역할에 초점을 맞추어, TON 블록체인에서 분할 병합의 주요 측면을 살펴보도록 하겠습니다.
무한 샤딩 패러다임(ISP)과 애플리케이션
ISP는 각 계정을 별도의 "계정 체인"의 일부로 취급하는 TON 블록체인의 설계를 뒷받침합니다. 그런 다음 이러한 계정체인은 효율성을 위해 샤드체인 블록으로 통합됩니다. 샤드체인의 상태는 모든 계정체인의 상태로 구성됩니다. 따라서 샤드체인 블록은 본질적으로 할당된 가상 계정 블록의 모음입니다.
- 샤드 상태: 해시맵(n, AccountState)으로 근사화되며, 여기서 n은 계정_id의 비트 길이입니다.
- 샤드블록: 해시맵(n, AccountBlock)으로 근사화.
각 샤드체인, 더 정확하게는 각 샤드체인 블록은 workchain_id
와 계정_id의 이진 접두사 s
의 조합으로 식별됩니다.
메시지 및 인스턴트 하이퍼큐브 라우팅(인스턴트 하이퍼큐브 라우팅)
무한 샤딩 패러다임에서는 각 계정(또는 스마트 콘트랙트)이 마치 별도의 샤드체인에 있는 것처럼 취급됩니다. 계정 간의 상호 작용은 오직 메시지 전송을 통해서만 이루어지며, 이는 계정이 액터 역할을 하는 액터 모델의 일부입니다. 샤드체인 간의 효율적인 메시징 시스템은 TON 블록체인의 작동에 매우 중요합니다. TON의 특징은 인스턴트 하이퍼큐브 라우팅으로, 한 샤드체인의 블록에서 생성된 메시지가 시스템 내 수에 관계없이 대상 샤드체인의 다음 블록에서 처리되도록 하여 샤드체인 간 메시지를 빠르게 전달하고 처리할 수 있게 해줍니다.
샤딩 예시
제공된 그래픽 구성표에서:
- 워크체인 조각은 시간별로 나뉘며 점선으로 표시됩니다.
- 블록 222, 223, 224는 seqno=102인 마스터체인 블록과 관련이 있습니다. 여기서 222는 하나의 샤드에 있고, 223과 224는 다른 샤드에 있습니다.
- 분할 또는 병합 이벤트가 발생하면 영향을 받는 샤드는 다음 마스터체인 블록이 발생할 때까지 일시 정지됩니다.
요약하자면, TON 블록체인의 분할 병합은 블록체인 네트워크 내에서 확장성과 상호 작용을 향상시키는 복잡하지만 효율적인 메커니즘입니다. 이는 효율성과 글로벌 일관성을 강조하며 일반적인 블록체인 문제를 해결하기 위한 TON의 접근 방식을 보여줍니다.
샤딩 세부 정보
샤드체인의 분할 및 비분할 부분
샤드체인 블록과 상태는 두 부분으로 나뉩니다:
- 부분 분할: 계정별 데이터가 포함된 ISP 양식을 준수합니다.
- 비분할 부분: 블록과 다른 블록 및 외부 세계와의 상호작용과 관련된 데이터를 포함합니다.
다른 블록과의 상호작용
분할되지 않은 부분은 내부 및 외부 로컬 일관성 조건으로 축소되어 글로벌 일관성을 보장하는 데 매우 중요합니다. 다음과 같은 이유로 중요합니다:
- 샤드체인 간 메시지 전달.
- 여러 개의 샤드체인을 포함하는 트랜잭션.
- 이전 블록과 비교하여 블록의 초기 상태를 보장하고 검증합니다.
인바운드 및 아웃바운드 메시지
샤드체인 블록의 비분할 부분의 주요 구성 요소는 다음과 같습니다:
- InMsgDescr: 블록으로 가져온 모든 메시지에 대한 설명(즉, 블록에 포함된 트랜잭션에 의해 처리되거나 출력 대기열로 전달된 메시지,
Hypercube 라우팅
이 지정한 경로를 따라 이동하는 일시적 메시지의 경우). - OutMsgDescr: 블록에서 내보내거나 생성한 모든 메시지(즉, 블록에 포함된 트랜잭션에서 생성된 메시지 또는 현재 샤드체인에 속하지 않은 목적지를 가진
InMsgDescr
에서 전달된 트랜짓 메시지)에 대한 설명입니다.
블록 헤더 및 유효성 검사기 서명
또 다른 비분할 구성 요소인 블록 헤더에는 workchain_id
, account_ids
의 이진 접두사, 블록 시퀀스 번호(이전 블록의 시퀀스 번호보다 가장 작은 음수가 아닌 정수로 정의), 논리적 시간 및 유닉스 시간 생성 등의 필수 정보가 포함되어 있습니다. 또한 해당 블록의 직전 블록(또는 이전
샤드체인 병합 이벤트의 경우 두 개의 직전 블록)의 해시, 초기 및 최종 상태(즉, 현재 블록이 처리되기 직전과 직후의 샤드체인 상태)의 해시, 샤드체인 블록이 생성될 당시 알려진 가장 최근 마스터체인 블록의 해시도 포함됩니다. 서명되지 않은 블록에 검증자 서명이 추가되어 서명된 블록이 형성됩니다.
아웃바운드 메시지 큐
샤드체인 상태의 아웃메시지큐
는 중요한 비분할 부분입니다. 여기에는 이 상태로 이어지는 마지막 샤드체인 블록 또는 그 이전 블록 중 하나에 의해 OutMsgDescr
에 포함된 미전송 메시지가 포함됩니다.
처음에 각 발신 메시지는 처리되거나 목적지로 전달될 때까지 OutMsgQueue
에 포함되고 여기에 저장됩니다.
샤드 분할 및 병합 메커니즘
동적 샤딩의 경우, 분할 및 병합 이벤트로 인해 샤드 구성이 변경될 수 있습니다. 이러한 이벤트는 마스터체인 블록과 동기화됩니다. 예를 들어, 분할 또는 병합이 발생하면 영향을 받는 샤드는 다음 마스터체인 블록을 기다렸다가 진행합니다.