TVM’de Mesaj İşleme ve İşlemler Hakkında Bilmeniz Gerekenler

Blok zinciri teknolojisinde, akıllı sözleşmeler merkeziyetsiz uygulamaların işleyişini sağlar. Akıllı sözleşmelerin doğru şekilde çalışmasını güvence altına alan en önemli bileşenlerden biri TVM (TON Sanal Makinesi)’dir. Bu makalede, TVM’de mesajların nasıl işlendiğini ve işlemlerin ne anlama geldiğini inceleyerek işlem sürecinin aşamalarından bahs edeceğiz.

Gelen Mesajlar(incoming message): Sözleşme Durum Değişikliklerinin Temeli
Bir akıllı sözleşmenin durumunu değiştirebilmesi için, bir mesaj alması gerekir. Bu gelen mesaj, sözleşmenin içinde değişiklik yapma sürecini başlatan ana girdidir. Bir sözleşmeye iki tür gelen mesaj ulaşabilir: dışsal ve içsel mesajlar.

Dışsal Mesajlar(external messages)
Dışsal mesajlar, blok zinciri perspektifinden dışarıdan gelen veri dizileridir. Bu mesajlar:

Doğrulama içermez: Dışsal mesajlar kendiliğinden doğrulanmaz.
Para taşımaz: Dışsal mesajlarda toncoin (veya herhangi bir fon) bulunmaz.
Rastgele veri içerebilir: Sözleşmenin yazarı tarafından belirlenen her türlü veriyi içerebilir. Sözleşmenin bu verileri anlamlandırması ve doğru şekilde işlemesi gerekir.
İçsel Mesajlar(internal messages)
İçsel mesajlar, bir sözleşmenin başka bir sözleşmeye gönderdiği mesajlardır ve daha karmaşık bir yapıya sahiptir. İçsel mesajların öne çıkan özellikleri şunlardır:

Bakiye taşıma: İçsel mesajlar, toncoin gibi fonları sözleşmeler arasında taşıyabilir.
Güvenli doğrulama: TON mimarisi, mesajı gönderen sözleşmenin adresini güvenli bir şekilde doğrular. Bu, içsel mesajların kimlik doğrulaması açısından oldukça önemlidir.
Bir sözleşme mesaj aldığında, içsel ve dışsal mesajlar için ayrı işleyiciler çalıştırabilir. Her iki tür mesaj da keyfi yük verileri taşıyabilir ve bu veriler sözleşmenin yazarına göre özelleştirilebilir.

İşlem Kodları (Op Codes)
Farklı mesaj türlerini yönetmek için sözleşmeler genellikle işlem kodları (op codes) kullanır. İşlem kodları, sözleşmenin hangi işlemi gerçekleştirmesi gerektiğini belirten mesaj içindeki dört baytlık ön eklerdir. Yaygın olarak:

Sıra numaraları (örneğin, işlem 1, 2, 3 vb.) kullanılır.
CRC 32 kodları, mesaj arayüzünün tanımını belirtmek için kullanılır.
İşlem kodları, sözleşmelerin işlevselliğini genişletmeye olanak tanırken, mesaj çakışmalarını önler.

İşlem Nedir?
Bir işlem, bir sözleşmenin aldığı mesaj sonucunda durumunda meydana gelen değişikliklerin bütünüdür. Mesaj sadece bir girdidir; işlem ise mesajın işlenmesi sonucunda gerçekleşen:

Sözleşmenin durumundaki değişiklikler,
TVM işlemlerinin sonucu olarak yeni bir durumun oluşturulması,
Dışa gönderilen aksiyonların (mesajların) listesidir.
Bir işlem, beş aşamadan oluşur ve her aşama, işlem sürecinin kritik bir parçasıdır.

Bir İşlemin Beş Aşaması
TVM’de her işlem beş ayrı aşamadan geçer:

  1. Depolama Aşaması (Storage Phase)
    İlk aşama, blok zincirinin sözleşmenin kirasını ücretlendirdiği aşamadır. Kira, sözleşmenin blok zincirinde var olabilmesi için ödenmesi gereken bir bedeldir ve bit başına saniye başına ücret olarak hesaplanır.

İşlem başlamadan önce, blok zinciri gerekli kira ücretini sözleşmenin bakiyesinden çeker.
Sözleşmenin bakiyesi bu kirayı karşılayamıyorsa, işlem durdurulur ve sözleşme dondurulur. Dondurulan bir sözleşme, sahibinin bakiyeyi yenilemesine kadar pasif durumda kalır.
2. Kredi Aşaması (Credit Phase)
Bu aşama, gelen mesajla birlikte gelen toncoinlerin sözleşme bakiyesine kredilendirildiği aşamadır.

İçsel mesajlar genellikle fon taşır ve bu aşamada sözleşmeye eklenir.
Dışsal mesajlar, herhangi bir para taşıyamaz, bu nedenle bu aşama dışsal mesajlar için geçerli değildir.
3. Hesaplama Aşaması (Computation Phase)
Bu aşamada, sözleşmenin işlevselliği devreye girer. TVM, gelen mesajı sözleşmenin koduna göre işler.

Gaz kullanımı izlenir. Her işlem belirli bir miktar gaz tüketir ve bu gaz, işlemin maliyetini belirler.
Sözleşme geliştiricisi, gaz kullanımını sınırlayabilir. Örneğin, gelen paralarla sınırlı bir gaz limiti belirlenebilir. Aynı zamanda, sözleşme bakiyesine göre gaz limiti artırılabilir.
Bu aşamada geliştiricinin dikkat etmesi gereken, sözleşmenin parasının tükenmemesidir.
4. Aksiyon Aşaması (Action Phase)
Bu aşamada sözleşmenin durumu güncellenir ve dışa mesajlar gönderilir.

Yeni durum oluşturulur ve blok zincirine kaydedilir.
Sözleşme, başka sözleşmelere mesaj gönderebilir. Örneğin, bir cüzdan sözleşmesi, başka bir adrese toncoin gönderme işlemi yapabilir.
5. Zıplama Aşaması (Bounce Phase)
Zıplama aşaması, işlem başarısız olduğunda devreye girer.

Eğer gelen mesaj zıplama yapılabilir bir mesaj olarak işaretlenmişse ve işlem başarısız olursa, kalan para gönderene iade edilir.
Bu, kullanıcının fonlarını kurtarmasını sağlayan bir güvenlik özelliğidir. Geliştirici, zıplama mekanizmasını bir hata çözümü olarak değil, bir özellik olarak da kullanabilir. Örneğin, belirli koşullar karşılanmadığında, gelen mesaj geri döndürülerek para iade edilebilir.
Özet
TVM’de mesajların ve işlemlerin nasıl işlendiği, akıllı sözleşmelerin sorunsuz çalışması için kritik bir öneme sahiptir.

Özetle:

Mesajlar, sözleşmeler için giriş verileri olarak hizmet eder. Dışsal mesajlar doğrulanmaz ve para taşımazken, içsel mesajlar güvenli bir şekilde doğrulanır ve fon taşıyabilir.
İşlemler, sözleşmenin aldığı mesajların işlenmesi sonucunda oluşan durum değişiklikleri ve dışa gönderilen aksiyonlar bütünüdür.
Bir işlem beş aşamada gerçekleşir: Depolama, Kredi, Hesaplama, Aksiyon ve Zıplama aşamaları. Bu aşamalar, sözleşmenin durumunu, gelen parayı ve işlem sonucunda gerçekleşen aksiyonları etkiler.
Bu işlem aşamalarını anlamak, TON blok zincirinde sağlam ve güvenli akıllı sözleşmeler geliştirmek isteyen yazılımcılar için temel bir gerekliliktir. Bu yapı, akıllı sözleşmelerin sorunsuz çalışmasını sağlarken, kullanıcılara güvenlik sunar ve geliştiricilere esneklik kazandırır.