TON Blockchain Architecture sistem penyimpanan dan manajemen data di TON:
- organisasi data sebagai bag of cells;
- Pembuatan kardus di tingkat akun (ISP);
- kondisi konsensus dan validasi;
- masterchain mengkoordinasikan semua chard dan parameter jaringan.
Bag of Cells#
Semua data TON adalah koleksi sel-sel (cells) Setiap sel berisi:
- sampai 1023 bit data;
- sampai 4 tautan pada sel lain (menurut SHA-256-hash);
- 2 byte deskriptor + data itu sendiri.
Sel disusun dalam pohon atau DAG (Directed Acyclic Graph). TL-B (Type Language — Binary).
Infinite Sharding Paradigm (ISP)#
Setiap akun adalah terpisah accountchain. Blok virtual accountchain Berkumpul di blok shardchain untuk efisiensi.
Status Chardchain = status semua akun Chard. Blok shardchain = koleksi blok virtual untuk beberapa akun.
Di TON, tidak ada perbedaan antara Smart Contract dan Account.
Struktur blok shardchain#
Terbagi menjadi 2 bagian:
Tidak terpecah (non-split)
| Komponent | Konten |
|---|---|
| InMsgDescr | Deskripsi pesan masuk |
| OutMsgDescr | Deskripsi pesan keluar |
| Block header | Hash, parameter blok |
| OutMsgQueue | Baris pesan yang belum dikirim (dihapus setelah dikirim ke shard tetangga) |
Pembagian (split)
Hashmap account_id → account_state. Status akun:
- saldo dalam Grams;
- kode kontrak pintar;
- data kontrak tetap;
- statistik penggunaan gudang;
- deskripsi formal pilihan dari interface;
- informasi publik pengguna.
Masterchain#
- Tidak dibagi dan tidak bergabung (single chain);
- Satu pendahulunya (kecuali blok nol dengan initial config);
- Berisi daftar semua chord aktif dan blok terakhir masing-masing;
- Menyimpan parameter yang dapat dikonfigurasi melalui kontrak konfigurasi khusus.
Konfigurasi
- Bayaran minimum validator;
- Ukuran maksimum kelompok validator;
- Jumlah blok maksimum yang bertanggung jawab oleh kelompok;
- Proses pemilihan dan hukuman validator;
- Set Validator saat ini dan berikutnya;
- Proses perubahan parameter.
Nilai awal dan kode kontrak-kontrak cerdas fundamental di Blok nol masterchain.
Kondisi Konsensus#
Mereka hanya menjamin perubahan data yang benar melalui transaksi yang valid.
| Jenis | Deskripsi |
|---|---|
| Global | Invarian untuk seluruh jaringan (misalnya, jaminan pengiriman pesan) |
| Lokal internal | Di dalam satu blok (misalnya, pengolahan pesan masuk) |
| Eksternal lokal | Di antara blok, biasanya chord yang berdekatan |
Blok yang validTanggung jawab validator Generasi dan pengujian.
Waktu Logis (LT)#
Bilangan bulat non-negatif 64-bit, diberikan pada peristiwa:
- Acara Tergantung LT memiliki ketergantungan yang lebih besar;
- Acara independen memiliki LT = 0;
- Pesan yang keluar mewarisi LT dari transaksi;
- Transaksi dan Blok memiliki interval waktu, yang tercatat dalam judul.
LT diperlukan untuk mengatur kejadian. tanpa jam global.
Kondisi Umum dan Visibilitas#
- Blok masterchain mencatat keadaan semua chord melalui hash blok terakhir mereka;
- Blok shardchain berisi hash dari blok masterchain terakhir di header;
- Blok terlihat mereka yang tercantum dalam blok ini masterchain + pendahulunya;
- Blok Chard Mengimpor pesan dari OutMsgQueue tetangga yang terlihat; tidak dapat mengaktifkan pesan dari blok yang tidak terlihat.
Smart-kontrak#
Penciptaan
Dilakukan pada rantai dasar dan rantai master (rantai lain mungkin memiliki mekanisme mereka sendiri):
- Pesan ke alamat yang tidak disebutkan sebelumnya dari dengan arti → membuat ** akun yang belum di-inisialisasi ** dengan neraca, tapi tanpa kode dan data;
- Pesan Konstruktor berisi initial code + data → membuat kontrak pintar;
- Constructor biasanya membawa nilai untuk saldo awal (minimal tergantung pada storage-fee);
- Kontrak pintar dapat membuat sendiri kontrak pintar baru untuk transaksi.
Modifikasi
- Data permanen berubah saat kode di TVM;
- Jika kode tidak memberikan perubahan → data tidak berubah;
- Kode itu sendiri hanya bisa diubah jika kode saat ini mengizinkannya.
Penghancuran dan pembekuan
- Kontrak Tidak bisa dihapus, sementara saldo > minimum;
- Saat saldo negatif akun membeku. code + data diganti dengan hash 32-byte;
- Hash disimpan untuk sementara waktu → pemilik dapat mengembalikan akun dengan mentransfer dana dan mengirim pesan dengan kode + data.