Ana içeriğe geç

TVM Çıkış Kodları

TVM, keyfi bir 16-bit unsigned tam sayı exit_code ile çıkıyorsa ve exit_code 1'den büyükse, bu bir hata kodu olarak kabul edilir. Bu nedenle, böyle bir kod ile bir çıkış, işlemin geri alınmasına veya atlamasına neden olabilir.

Standart Çıkış Kodları

bilgi

Standart çıkış kodları listesi, TON Blockchain için tanımlanan tüm evrensel TVM çıkış kodlarını içerir. Alternatif çıkış kodları, ilgili sözleşmenin kaynak kodunda aranmalıdır.

Çıkış KoduTVM AşamasıTanım
0Hesaplama AşamasıStandart başarılı yürütme çıkış kodu.
1Hesaplama AşamasıAlternatif başarılı yürütme çıkış kodu.
2Hesaplama AşamasıYığın alt akışı. Son op-kodu, yığınlarda bulunanlardan daha fazla eleman tüketti. 1
3Hesaplama AşamasıYığın aşımı. Bu TVM sürümü tarafından izin verilen yığındaki değerlerden daha fazla değer depolandı.
4Hesaplama AşamasıTam sayı aşımı. Tam sayı −2256 ≤ x 256 aralığına sığmıyor veya sıfıra bölme gerçekleşti.
5Hesaplama AşamasıTam sayı beklenen aralığın dışındadır.
6Hesaplama AşamasıGeçersiz op-kodu. Bu komut, mevcut TVM sürümünde bilinmiyor.
7Hesaplama AşamasıTür kontrol hatası. Bir primitife verilen bir argümanın değer türü hatalı. 1
8Hesaplama AşamasıHücre aşımı. İşlemden sonra 1023 bit veya 4 referansın üzerinde bir yazma işlemi mümkün değil.
9Hesaplama AşamasıHücre alt akışı. Dilim primitifi üzerinden okuma işlemi, mevcut olanlardan daha fazla bit veya referans okuma girişiminde bulundu.
10Hesaplama AşamasıSözlük hatası. Sözlük (hashmap'ler) ile manipülasyon sırasında bir hata.
11Hesaplama AşamasıGenellikle, kodda bulunmayan get-yöntemini çağırmaya çalışmaktan kaynaklanır (eksik method_id değiştiricisi veya yanlış get-yöntem adı belirtilmiştir). TVM belgelerinde "Bilinmeyen hata, kullanıcı programları tarafından atılabilir" olarak tanımlanmıştır.
12Hesaplama AşamasıTVM tarafından imkansız olarak değerlendirilen durumlarda atılır.
13Hesaplama AşamasıGaz kalmadı hatası. Kalan gaz negatif hale geldiğinde TVM tarafından atılır.
-14Hesaplama AşamasıBu, bir gaz kalmadı hatasını gösterir; 13. kodla aynıdır. Negatiftir çünkü fake'lenemez.
32Eylem AşamasıEylem listesi geçersiz. Eylem aşamasında, yürütmeden sonra c5 kaydedicisi ayrıştırılamayan bir nesne içeriyorsa ayarlanır.
-32Eylem Aşaması(önceki 32 ile aynı) - Yöntem ID bulunamadı. Mevcut olmayan get yöntemini yürütme girişiminde TonLib tarafından döndürülür.
33Eylem AşamasıEylem listesi çok uzun.
34Eylem AşamasıEylem geçersiz veya desteklenmiyor. Mevcut eylem uygulandığında ayarlanır.
35Eylem AşamasıÇıkış mesajındaki geçersiz kaynak adresi.
36Eylem AşamasıÇıkış mesajındaki geçersiz hedef adresi.
37Eylem AşamasıYeterli TON yok. Mesaj çok fazla TON gönderiyor veya ücretler düşüldükten sonra yeterli TON kalmıyor.
38Eylem AşamasıYeterli ek para birimi yok.
40Eylem AşamasıMesajı işlemek için yeterli fon yok. Bu hata, mesajı tamamen kaplamak için yeterli gaz olmadığında, mesajı kısmen karşılamak için yeterli gaz olduğunda atılır.
43Eylem AşamasıKütüphanedeki hücrelerin maksimum sayısı aşıldı veya Merkle ağacının maksimum derinliği aşıldı.

1 Eğer böyle bir istisna ile karşılaşırsanız, bu muhtemelen asm bildirimlerinde bir tür hatası olduğunu gösterir.

bilgi

Genellikle çıkış kodu 0xffff (onaltılık biçimde 65535) olarak görülebilir. Bu genellikle alınan op-kodun sözleşme için bilinmediğini gösterir. Sözleşmeleri yazarken, bu kod geliştirici tarafından ayarlanır.