TONboard

TON Virtual Machine (TVM)

4 min readupdated 2026-06-03✏️ Suggest an edit🕑 History
🌐 Машинный перевод. Возможны неточности.
On this page (12)

TON Virtual Machine (TVM, bazen TON VM) — blokzincir TON içinde akıllı sözleşmeleri çalıştıran sanal makine. Bu, ağın yürütme katmanıdır: her akıllı sözleşme bir TVM programı olarak depolanır ve çalıştırılır. Makine gelen mesajları işler, sözleşmenin kalıcı durumunu değiştirir ve diğer sözleşmelere çıkış mesajları oluşturur.

TVM mimarisi üç gereksinime uyar: yürütmenin tam deterministik olması (aynı girdi her düğümde aynı sonucu verir), kod yoğunluğunun yüksek olması (blokzincirde az yer kaplaması) ve talimat seti genişletildiğinde geriye dönük uyumluluk.

Tarihçe#

TVM, Telegram ekibi tarafından 2018 yılında ilk TON protokolü sürümüyle birlikte geliştirildi. Gelişim aşamalı olarak gerçekleşti:

  • 2018 — test ağı TON ile birlikte yayınlanan TVM’nin ilk sürümü. Odak noktası akıllı sözleşme işlevselliği ve protokol entegrasyonu idi.
  • Mart 2020 — veri tipleri, optimizasyonlar ve talimat sözleşmesi açıklamaları içeren ayrıntılı teknik dokümantasyonun yayınlanması.
  • 2020 (mainnet lansmanı) — TVM, tam bir operasyon setini destekleyerek üretim ağında deterministik yürütme sağladı.

Proje topluluğa devredildikten sonra TVM geliştirmesi TEP süreci aracılığıyla devam ediyor — güncellemeler iyileştirme önerileriyle ekleniyor ve doğrulayıcıların uzlaşısı ile aktif hâle geliyor.

Temeller#

TVM, verilerin temel temsili olarak bit dizilerini kullanır. Bu diziler iki gösterimde sunulur:

  • Hexadecimal gösterim — dört bite bölünmüş, her grup bir hex rakamı (0–F) ile temsil edilen dizeler. Uzunluk dört bite bölünemiyorsa, modifikasyonu işaretlemek için özel bir bitiş etiketi eklenir.
  • Octet serileştirmesi — dizi sekiz bitlik gruplara ayrılır ve bayt dizisi olarak kaydedilir; gerekirse 8’e hizalama eklenir.

Yığın Modeli#

TVM bir yığın tabanlı sanal makinedir. Bu, verilerin adlandırılmış değişkenler veya kayıtlar yerine “yığın” (last‑in‑first‑out) yapısında saklandığı anlamına gelir. Çoğu işlem (aritmetik, karşılaştırma, parametre aktarımı) yığından argüman alır ve sonucu aynı yere koyar. Yığın modeli, kayıt tabanlı yaklaşıma göre daha basittir ve talimat kodlamasını daha yoğun hâle getirir — bu, zincir üzerindeki depolama maliyetini azaltmak için kritiktir.

Değer Türleri

TVM yığını aşağıdaki sabit primitif türlerle çalışır:

  • Integer — 257‑bit işaretli tam sayı (bit genişliği, 256‑bit hash’leri işaret kaybı olmadan tutmaya izin verir).
  • Cell — 1023 bite kadar veri ve 4’e kadar diğer hücreye referans içeren nesne. TVM’nin temel hafıza birimidir.
  • Tuple — farklı türlerde değerlerin sıralı koleksiyonu.
  • Slice — hücrenin “dilim”i: okuma sırasında kalan veri ve referansları gösteren işaretçi.
  • Builder — yeni bir Cell oluşturmak için ardışık tampon.
  • Continuation — yürütme noktasının temsili; aşağıya bakınız.
  • Null — değer yokluğu; başlatılmamış alanlar için işaretçi.

Talimat Kategorileri

TVM talimatları amaçlarına göre gruplanır:

  • yığın ve tuple — yığın yeniden düzenlemeleri, tuple işlemleri;
  • sabit — önceden tanımlı değerlerin yığına eklenmesi;
  • aritmetik — taşma kontrolüyle standart aritmetik işlemler;
  • hücre işlemleri — Slice okuma, Builder yazma, referanslara erişim;
  • akış kontrolü — koşullu dallanma, döngüler, continuation çağrıları;
  • uygulama primitifleri — TON’a özgü adres, imza, mesaj aktüatörü gibi işlemler.

Hücreler ve Türleri#

Cell — TVM ve TON blokzincirinde depolamanın atomik birimi. Her Cell 1023 bite kadar veri ve 4’e kadar başka Cell’e referans içerir. Referanslarla oluşan hücre grafiği yönlendirilmiş, döngüsüz bir grafik (DAG) olup döngülere izin vermez. Blokzincir verileri (akıllı sözleşmeler, durumlar, mesajlar, bloklar) bu grafik şeklinde saklanır.

Hücre Türleri

  • Normal (tip‑1) — veri ve referansların standart taşıyıcısı.
  • Exotic (exotic cells) — 2‑255 arası tipler, serileştirme ve hashleme özellikleri farklıdır. Kesilmiş dallar (truncated branches), kütüphane referansları ve Merkle kanıtları için kullanılır.

Exotic hücreler, örneğin kriptografik kanıtlarla hafif TON istemcileri için temel oluşturan kısmi blockchain snapshot’larını iletmeye olanak tanır.

Continuations (Devamlar)#

Continuation, TVM’nin akış kontrolü için merkezi yapısıdır. Esasen “ertelenmiş hesaplama”dır: yürütülecek kod, mevcut yığın ve kaydedilmiş kontrol kayıtlarını içeren bir işaretçi. Continuation yığına konulabilir, parametre olarak geçirilebilir, etkinleştirilebilir ve kaydedilmiş noktadan yürütmeye devam edilebilir.

Continuation’lar, alt program çağrıları, koşullu işlemler, döngüler ve istisna yönetimi için temel oluşturur. Daha tanıdık dillerdeki karşılığı first‑class function’dır; TVM’de continuation daha güçlüdür ve programın eksik kalan kısmını da kapsar.

Continuation Türleri

  • Normal — kod, yığın, kaydedilmiş kayıt listesi ve kod sayfasını (bkz. aşağıda) içerir.
  • Basit — sadece kod ve kod sayfası, yığın verisi yoktur.
  • Current (cc, current continuation) — şu anda yürütülen kodu yansıtır; makinenin durumunun kilit parçasıdır.

Yönetim, JMP (atlama) ve RET (geri dönüş) talimatlarıyla continuation’lar arasında geçiş yapar. İstisnalar, hata oluştuğunda etkinleştirilen özel continuation’lardır; hata parametrelerini alır ve sonraki davranışı belirler. Koşullu ve yinelemeli yapılar (IF, WHILE, REPEAT) continuation’lar üzerine inşa edilmiştir.

Kod Sayfaları#

Her normal continuation 16‑bit bir kod sayfası (cp) alanı taşır; bu alan talimatların nasıl çözüleceğini belirler. Bu, geriye dönük uyumluluk mekanizmasıdır: ağda farklı TVM talimat seti sürümleriyle derlenmiş sözleşmeler aynı anda bulunabilir.

Talimatlar ikili ön ek kodlamasıyla kodlanır; bu, tekil çözümleme ve yoğun temsili sağlar. Ön ek, mevcut kod sayfasının geçerli bir talimatına uymuyorsa, geçersiz opcode istisnası üretilir.

Kod sayfaları arasında otomatik geçiş, yürütülen işleme bağlı olarak gerçekleşebilir; bu, sık kullanılan işlemler (yığın manipülasyonu, veri işleme) için sayfaların özelleştirilmesini ve kod hacminin azaltılmasını sağlar.

TVM vs Ethereum Virtual Machine#

TVM ve EVM her ikisi de akıllı sözleşmeler için yığın tabanlı sanal makineler olsa da temel farklılıklar gösterir.

ÖzellikTVMEVM
Temel veri modeliHücre grafiği (Cell, 1023 bit + 4 referans)256‑bit kelimeler + Merkle Patricia Trie
Integer boyutu257 bit256 bit
Taşma kontrolüOtomatikManuel (Solidity ≥0.8)
KriptografiCurve25519, Weil pairings (zk‑SNARKs), sha256secp256k1, keccak256
Ana sözleşme diliFunC (statik tip, ADT)Solidity
Durum depolamaSözleşme hücreleri arasında dağıtıkGlobal MPT

Hücre grafiği, ağaç ve DAG gibi karmaşık yapılarla çalışmayı basitleştirir, MPT’ye göre daha az bellek ve işlem gücü gerektirir. Otomatik taşma kontrolü tipik güvenlik açıklarını azaltır. Curve25519 ve Weil pairings desteği, EVM’nin kutudan çıkmaz kriptografik yeteneklerine ek bir avantaj sağlar.

Ayrıca bakınızAyrıca bakınız#

ℹ️ Bilgi doğrulandı: 2025

Prepared by

TONboard

Support the project with a TON tip.

Comments

Posting a comment costs a small on-chain fee that keeps spam out.
  • No comments yet — be the first.