Infinity Sharding Paradigm
Understanding Split Merge in TON Blockchain
TON(Telegram Open Network) 블록체인은 블록체인의 확장성과 효율성을 위한 혁신적인 개념을 도입합니다. 그 중 하나가 블록체인 아키텍처의 핵심인 Split Merge 기능입니다. 이 짧은 글에서는 무한 샤딩 패러다임(ISP) 내에서의 역할에 중점을 두고 TON 블록체인의 Split Merge의 핵심 측면을 살펴봅니다.
무한 샤딩 패러다임(ISP)과 그 적용
ISP는 TON 블록체인 설계의 기초가 되며, 각 계정을 별도의 "계정체인"의 일부로 취급합니다. 이러한 계정체인들은 효율성을 위해 샤드체인 블록으로 집계됩니다. 샤드체인의 상태는 모든 계정체인의 상태로 구성됩니다. 따라서 샤드체인 블록은 본질적으로 할당된 계정들의 가상 블록의 모음입니다.
- ShardState: Hashmap(n, AccountState)로 근사됨, 여기서 n은 account_id의 비트 길이입니다.
- ShardBlock: Hashmap(n, AccountBlock)으로 근사됨.
각 샤드체인, 더 정확히는 각 샤드체인 블록은 workchain_id
와 account_id의 이진 접두사 s
의 조합으로 식별됩니다.
분할 또는 병합을 결정하는 알고리즘
검증자들은 다음과 같은 방식으로 샤드를 분할하거나 병합할지 결정합니다:
- 각 블록에 대해 블록 크기, 가스 소비량, lt 델타가 계산됩니다.
- 이러한 값들을 사용하여 블록이 과부하 또는 부족부하 상태인지 판단할 수 있습니다.
- 각 샤드는 부족부하와 과부하 이력을 유지합니다. 최근 블록들이 충분히 부족부하 또는 과부하 상태였다면,
want_merge
또는want_split
플래그가 설정됩니다. - 검증자들은 이러한 플래그를 사용하여 샤드를 병합하거나 분할합니다.
1. 현재 블록 상태 평가
각 블록은 다음과 같은 매개변수를 가집니다. 이들은 과부하와 부족부하를 판단하는 데 사용됩니다.
- 블록 크기 추정 - 실제 블록 크기가 아닌, 병합 중에 계산된 추정치입니다.
- 가스 소비량 - 모든 트랜잭션에서 소비된 총 가스량(ticktock 및 mint/recover 특수 트랜잭션 제외).
- Lt 델타 - 블록의 시작 lt와 종료 lt의 차이.