블록체인의 블록체인
이 문서에서는 '스마트 컨트랙트', '계정', '액터'라는 용어를 블록체인 주체를 설명할 때 혼용하여 사용합니다.
단일 배우
스마트 컨트랙트 하나를 예로 들어보겠습니다.
톤에서는 주소
, 코드
, 데이터
, 잔액
등의 속성을 가진 사물입니다. 다시 말해, 저장소와 행동을 가진 객체입니다.
그 동작에는 다음과 같은 패턴이 있습니다:
- 어떤 일이 발생합니다(가장 일반적인 상황은 계약이 메시지를 받는 경우입니다).
- 컨트랙트는 TON 가상 머신에서 '코드'를 실행하여 자체 속성에 따라 해당 이벤트를 처리합니다.
- 컨트랙트는 자체 속성(
코드
,데이터
및 기타)을 수정합니다. - 계약은 선택적으로 발신 메시지를 생성합니다.
- 컨트랙트는 다음 이벤트가 발생할 때까지 대기 모드로 전환됩니다.
이러한 단계의 조합을 트랜잭션이라고 합니다. 이벤트가 하나씩 처리되는 것이 중요하므로 트랜잭션은 엄격하게 순서가 정해져 있으며 서로 방해할 수 없습니다.
이러한 행동 패턴은 잘 알려져 있으며 '액터'라고 불립니다.
가장 낮은 레벨입니다: 계정 체인
트랜잭션의 시퀀스인 Tx1 -> Tx2 -> Tx3 -> ....
를 체인이라고 부를 수 있습니다. 그리고 고려되는 경우에는 단일 트랜잭션 계정의 체인이라는 점을 강조하기 위해 AccountChain이라고 부릅니다.
이제 트랜잭션을 처리하는 노드는 때때로 스마트 컨트랙트의 상태를 조정해야 하기 때문에(상태에 대한 합의에 도달하기 위해) 이러한 트랜잭션은 일괄 처리됩니다:
[Tx1 -> Tx2] -> [Tx3 -> Tx4 -> Tx5] -> [] -> [Tx6]
.
일괄 처리는 시퀀싱에 개입하지 않으며, 각 트랜잭션에는 여전히 하나의 '이전 tx'와 최대 하나의 '다음 tx'만 있지만 이제 이 시퀀스는 블록으로 잘립니다.
수신 및 발신 메시지 대기열을 blocks에 포함하는 것도 편리합니다. 이 경우 block에는 해당 블록 동안 스마트 컨트랙트에 발생한 일을 결정하고 설명하는 전체 정보 집합이 포함됩니다.
많은 계정 체인: 샤드
이제 많은 계정을 고려해 봅시다. 우리는 몇 개의 AccountChains를 가져와 함께 저장할 수 있으며, 이러한 AccountChains의 집합을 ShardChain이라고 합니다. 같은 방식으로 ShardChain을 개별 AccountBlocks의 집합인 ShardBlocks로 잘라낼 수 있습니다.
샤드체인의 동적 분할 및 병합
샤드체인은 쉽게 구분되는 계정체인으로 구성되어 있기 때문에 쉽게 분할할 수 있습니다. 예를 들어 100만 개의 계정에서 발생하는 이벤트를 설명하는 하나의 ShardChain이 있는데 초당 트랜잭션이 너무 많아 하나의 노드에서 처리하고 저장할 수 없다면, 해당 체인을 두 개의 작은 ShardChain으로 분할(또는 분할)하여 각 체인이 50만 개의 계정을 담당하고 각 체인은 별도의 하위 집합에서 처리되도록 하면 됩니다.
마찬가지로, 일부 샤드가 너무 비어 있으면 더 큰 하나의 샤드로 병합할 수 있습니다.
샤드에 하나의 계정만 포함된 경우(따라서 더 이상 분할할 수 없는 경우)와 샤드에 모든 계정이 포함된 경우의 두 가지 제한이 분명히 존재합니다.
계정은 메시지를 보내 서로 상호 작용할 수 있습니다. 발신 대기열에서 해당 수신 대기열로 메시지를 이동하고 1) 모든 메시지가 전달되고 2) 메시지가 연속적으로 전달되도록 하는 특별한 라우팅 메커니즘이 있습니다(먼저 보낸 메시지가 더 빨리 목적지에 도달).
분할과 병합을 결정론적으로 만들기 위해 계정 체인을 샤드로 집계하는 것은 계정 주소의 비트 표현을 기반으로 합니다. 예를 들어 주소는 (샤드 접두사, 주소)
처럼 보입니다. 이렇게 하면 샤드체인의 모든 계정은 정확히 동일한 바이너리 접두사를 갖게 됩니다(예: 모든 주소는 0b00101
로 시작).
블록체인
하나의 규칙 집합에 따라 작동하는 모든 계정을 포함하는 모든 샤드의 집합을 블록체인이라고 합니다.
TON에는 많은 규칙 세트가 있을 수 있으며, 따라서 동시에 작동하는 많은 블록체인이 있을 수 있으며, 한 체인의 계정이 서로 상호 작용할 수 있는 것과 같은 방식으로 메시지를 크로스체인으로 전송하여 서로 상호 작용할 수 있습니다.
워크체인: 나만의 규칙이 있는 블록체인
샤드체인 그룹의 규칙을 사용자 정의하고 싶다면 워크체인을 만들 수 있습니다. 좋은 예는 EVM 기반에서 작동하는 워크체인을 만들어 솔리디티 스마트 컨트랙트를 실행하는 것입니다.
이론적으로는 커뮤니티의 모든 사람이 자신의 워크체인을 만들 수 있습니다. 사실 워크체인을 만드는 것은 매우 복잡한 작업이며, 그 후 워크체인 생성에 드는 (비싼) 비용을 지불하고 검증인으로부터 2/3의 투표를 받아 워크체인 생성을 승인받아야 합니다.
TON은 최대 '2^32'개의 워크체인을 생성할 수 있으며, 각 워크체인은 최대 '2^60'개의 샤드로 세분화됩니다.
현재 TON에는 마스터체인과 베이스체인의 두 가지 워크체인만 존재합니다.
베이스체인은 매우 저렴하기 때문에 행위자 간의 일상적인 거래에 사용되며, 마스터체인은 TON에 중요한 기능을 가지고 있기 때문에 어떤 기능을 하는지 알아보겠습니다!
마스터체인 블록체인의 블록체인
메시지 라우팅과 트랜잭션 실행을 동기화해야 할 필요성이 있습니다. 즉, 네트워크의 노드들은 멀티체인 상태의 어떤 '지점'을 고정하고 해당 상태에 대한 합의에 도달할 수 있는 방법이 필요합니다. TON에서는 이를 위해 마스터체인이라는 특수 체인이 사용됩니다. 마스터체인의 블록에는 시스템의 다른 모든 체인에 대한 추가 정보(최신 블록 해시)가 포함되어 있으므로, 모든 관찰자는 단일 마스터체인 블록에서 모든 멀티체인 시스템의 상태를 명확하게 파악할 수 있습니다.