데이터 저장소로서의 셀
TON의 모든 데이터는 셀에 저장됩니다. 셀은 다음을 포함하는 데이터 구조입니다:
- 최대 1023비트의 데이터(바이트가 아님!)
- 다른 셀에 대한 최대 4개 참조까지
비트와 참조는 서로 섞이지 않습니다(별도로 저장됩니다). 순환 참조는 금지됩니다. 어떤 셀의 경우, 그 하위 셀은 이 원본 셀을 참조로 사용할 수 없습니다.
따라서 모든 셀은 방향성 비순환 그래프(DAG)를 구성합니다. 다음은 이를 설명하는 좋은 그림입니다:
셀 유형
현재 5가지 유형의 셀이 있습니다: 일반_과 4개의 이색. 이국적인 유형은 다음과 같습니다:
- 가지치기된 가지 셀
- 라이브러리 참조 셀
- 머클 프루프 셀
- 머클 업데이트 셀
팁
이색 세포에 대한 자세한 내용은 다음을 참조하세요: TVM 백서, 섹션 3을 참조하세요.
세포 맛
셀은 컴팩트한 저장 공간에 최적화된 불투명한 객체입니다.
특히, 서로 다른 브랜치에서 참조되는 동일한 하위 셀이 여러 개 있는 경우 그 콘텐츠는 한 번만 저장됩니다. 그러나 불투명성은 셀을 직접 수정하거나 읽을 수 없음을 의미합니다. 따라서 셀에는 두 가지 맛이 추가로 있습니다:
- 부분적으로 구성된 셀의 경우 비트 문자열, 정수, 다른 셀 및 다른 셀에 대한 참조를 추가하는 빠른 연산을 정의할 수 있는 Builder를 사용할 수 있습니다.
- 부분적으로 파싱된 셀의 나머지 부분 또는 해당 셀 내부에 존재하는 값(하위 셀)을 나타내는 '해부된' 셀의 경우 슬라이스 파싱 명령을 통해 셀에서 추출합니다.
TVM에는 또 다른 특수 셀 플레이버가 사용됩니다:
- 계속_ TON 가상 머신의 연산 코드(명령어)가 포함된 셀은 TVM 조감도를 참조하세요.
셀에 데이터 직렬화
TON의 모든 객체(메시지, 메시지 대기열, 블록, 전체 블록체인 상태, 컨트랙트 코드 및 데이터)는 셀로 직렬화됩니다.
직렬화 과정은 TL-B 스키마로 설명됩니다. 이 객체를 Builder로 직렬화하는 방법 또는 Slice에서 주어진 유형의 객체를 구문 분석하는 방법에 대한 공식적인 설명입니다. 셀에 대한 TL-B는 바이트 스트림에 대한 TL 또는 ProtoBuf와 동일합니다.
셀 (탈)직렬화에 대한 자세한 내용은 셀과 셀의 가방 문서를 참조하세요.