TON Blockchain Architecture データを保存・管理するシステム TON:
- 組織として bag of cells;
- シャードリング アカウントレベル (ISP) で
- コンセンサスとバリダーションの条件
- masterchain ネットワークの全てのシャードとパラメータを調整します
Bag of Cells#
すべてのTONデータはコレクションで表示されています 細胞 (cells) 各セルには
- それまで 1023 ビット データ
- それまで 4つのリンク 他のセルに (SHA-256-ヘッシュで);
- 2バイトの記述子 + データ自体
細胞は 樹木やDAG (Directed Acyclic Graph) 図面で を連続化する TL-B (Type Language — Binary).
Infinite Sharding Paradigm (ISP)#
各アカウントは 個別です accountchainアカウントチェーンの仮想ブロック グループ化される 効率化のために シャードチェーンのブロックに組み込まれます
シャードチェーンの状態 シャーダの全ての口座の状況です シャードチェーンのブロック 仮想ブロックのコレクションです
TONでは"スマート契約"と"アカウント"の違いはありません.
シャードチェーンのブロック構造#
2つの部分に分かれています.
分割されていない (non-split)
| コンポーネント | 内容 |
|---|---|
| InMsgDescr | 入力メッセージの記述 |
| OutMsgDescr | 出力メッセージの記述 |
| Block header | ハッシュ,ブロックのパラメータ |
| OutMsgQueue | 届いていないメッセージの列 (隣接したシャードに届いた後に削除されます) |
分裂した (split)
Hashmap **account_id → account_state**アカウントの状態:
- バランスはGramsで
- スマート契約コード
- 契約の常時データ
- 貯蔵庫の使用統計
- インターフェースのオプション形式の記述
- 公開されたユーザー情報です
Masterchain#
- 分かれたり合わしたりしない (single chain);
- 一つの前身 (初期設定のゼロブロックを除く);
- 含有する すべてのアクティブ・シャードのリスト そして各ブロックの最後のブロック
- 保存している 設定可能なパラメータ 特殊なコンフィギュレーション・コントラクトで
コンフィギュレーション
- バリダーターの最低料金
- バリダータグループの最大サイズ
- グループが担当するブロックの最大数
- バリダーターの選出と処罰のプロセス
- バリダータの現在のセットと次のセット
- パラメータ変更のプロセスです
初期値とコード 基本的スマート・コントラクト に ゼロブロック masterchain.
コンセンスの条件#
データの変更が正しいのは 妥当なトランザクションによってのみ保証されます
| タイプ | 記述 |
|---|---|
| グローバル | ネットワーク全体のための変数 (例えば,メッセージ配信保証) |
| 内部ローカル | 一つのブロック内 (例えば,受信メッセージ処理) |
| 外部ローカル | ブロックの間,通常は隣接するシャード |
ブロックは有効です検証者の責任は 生成と検証です
ロジカルタイム (LT)#
64 ビットの非負の整数この項目は,以下の出来事に対して適用されます.
- 依存したイベント LTはすべての依存関係の中で最も多く
- 独立イベント LT = 0 がある場合
- 送信するメッセージ トランザクションからLTを継承する
- トランザクションとブロック 持っています 時間間隔タイトルに記されています
LTは事件を整理するために必要だ グローバルクロックなし.
一般状態と可視性#
- マスターチェーンのブロック すべてのシャードの状態を最後のブロックのハッシュで記録する
- シャードチェーンのブロック マスターチェーンの最後のブロックのヘッシュをヘッダーに含みます.
- 見えるブロック このブロックに記載されているもの マスターチェイン+その前身
- シャードブロック 輸入する OutMsgQueueのメッセージは,目に見える隣人からのメッセージです.見えないブロックからのメッセージは入れません.
スマート契約#
設立
ベース・ウォークチェインとマスターチェインに適用される (他のウォークチェーンには独自のメカニズムがあるかもしれない):
- 前述していないアドレスへのメッセージ その意味について →作成する 初期化されていないアカウント バランスがあるがコードやデータがない
- コンストラクターメッセージ initial code + data → スマートコントラクトを作成する
- Constructor は通常,初期バランスの値である (最小値は storage-fee に依存する).
- スマートコントラクトは 自分で作る 新しいスマートコントラクトが 取引に登場します
改変
- 恒常データ このコードを実行するときに変更されます. TVM;
- コードが変更を想定していない場合 → データは変更されません.
- コード自体 変更できるのは 既存のコードが許す限りです
破壊と凍結
- 契約書 破壊できない,バランス > 最低まで
- について 負のバランス アカウント 凍っている code + data は 32 バイトのハッシュに置き換えます
- ハッシュはしばらく保存されます → 口座所有者は資金を転送し,コード+データでメッセージを送ることでアカウントを再構築することができます.