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ış Kodu | TVM Aşaması | Tanım |
---|---|---|
0 | Hesaplama Aşaması | Standart başarılı yürütme çıkış kodu. |
1 | Hesaplama Aşaması | Alternatif başarılı yürütme çıkış kodu. |
2 | Hesaplama Aşaması | Yığın alt akışı. Son op-kodu, yığınlarda bulunanlardan daha fazla eleman tüketti. 1 |
3 | Hesaplama Aşaması | Yığın aşımı. Bu TVM sürümü tarafından izin verilen yığındaki değerlerden daha fazla değer depolandı. |
4 | Hesaplama 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. |
5 | Hesaplama Aşaması | Tam sayı beklenen aralığın dışındadır. |
6 | Hesaplama Aşaması | Geçersiz op-kodu. Bu komut, mevcut TVM sürümünde bilinmiyor. |
7 | Hesaplama Aşaması | Tür kontrol hatası. Bir primitife verilen bir argümanın değer türü hatalı. 1 |
8 | Hesaplama Aşaması | Hücre aşımı. İşlemden sonra 1023 bit veya 4 referansın üzerinde bir yazma işlemi mümkün değil. |
9 | Hesaplama Aşaması | Hücre alt akışı. Dilim primitifi üzerinden okuma işlemi, mevcut olanlardan daha fazla bit veya referans okuma girişiminde bulundu. |
10 | Hesaplama Aşaması | Sözlük hatası. Sözlük (hashmap'ler) ile manipülasyon sırasında bir hata. |
11 | Hesaplama 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. |
12 | Hesaplama Aşaması | TVM tarafından imkansız olarak değerlendirilen durumlarda atılır. |
13 | Hesaplama Aşaması | Gaz kalmadı hatası. Kalan gaz negatif hale geldiğinde TVM tarafından atılır. |
-14 | Hesaplama Aşaması | Bu, bir gaz kalmadı hatasını gösterir; 13. kodla aynıdır. Negatiftir çünkü fake'lenemez. |
32 | Eylem 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. |
-32 | Eylem 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. |
33 | Eylem Aşaması | Eylem listesi çok uzun. |
34 | Eylem Aşaması | Eylem geçersiz veya desteklenmiyor. Mevcut eylem uygulandığında ayarlanır. |
35 | Eylem Aşaması | Çıkış mesajındaki geçersiz kaynak adresi. |
36 | Eylem Aşaması | Çıkış mesajındaki geçersiz hedef adresi. |
37 | Eylem Aşaması | Yeterli TON yok. Mesaj çok fazla TON gönderiyor veya ücretler düşüldükten sonra yeterli TON kalmıyor. |
38 | Eylem Aşaması | Yeterli ek para birimi yok. |
40 | Eylem 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. |
43 | Eylem 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.