
Bir hatalı çağrıdan sonra çalışmaya devam eden bir sözleşme, bugün çağrılan tarafın kasıtlı olarak geri döndüğünü mü yoksa basitçe gazını tükettiğini mi belirlemek için güvenilir bir yola sahip değil. Bu boşluk, yetersiz gaz nedeniyle oluşan rahatsızlık sorununun kökünü oluşturuyor ve yeni bir taslak önerisi, EVM seviyesinde bu boşluğu kapatmayı amaçlıyor. Pazartesi günü Ethereum Magicians'ta tartışma için açılan EIP-8456, geçici olarak 2 gaz maliyetiyle 0xA5 opcode'unda CALLSTATUS adlı bir komut ekliyor. Bu komut, mevcut çerçevedeki en son çağrı veya oluşturma işleminin tamamlanma durumunu üç bit olarak itiyor. Bit 0, geri dönmeyi; bit 1, gaz tükenmesi gibi istisnai bir durdurmayı; bit 2 ise alttaki bir çerçevede durdurma olduğunu gösteriyor. Yazar, bugünün tek kanıttan gazleft() aritmetiğinden ibaret olduğunu ve her repricing çatallanmasının bu eşikleri bozduğunu belirtiyor. Önerilen EIP-8037'in iki boyutlu gaz sistemi, bu aritmetiği daha da zayıflatacak, çünkü rezervu GAS opcode'u aracılığıyla görünmez olacak. Peki üçüncü bit neden gerekli? Çoğu gerçek çağrı, proxy'ler, OpenZeppelin'in functionCall sarmalayıcısı, Multicall3 veya ERC-1271 imza denetleyicileri gibi ara birimlerden geçer. Sadece doğrudan çağrılanın son durumu raporlanırsa, gaz tükenmesi durdurmasını yakalayıp nedenle geri dönen bir sarmalayıcı, kasıtlı bir geri dönüş gibi görünecektir. Taslak, her çerçeve boyunca ilerleyen bir tutucu bayrak tutar; böylece sadece gazı kontrol eden bir gönderici, bir çağrının basit bir geri dönüş okumasını asla sağlayamaz. Bu sistem nedenleri değil sonuçları raporlar ve bir çağrılan hala INVALID ile kasıtlı bir durdurma üretebilir. Yalnızca yayınlandıktan sonra yazılan kodları korur, çünkü dağıtılmış sözleşmeler bunu okumaz. Henüz dış incelemeler yoktur, opcode numarası hâlâ açık olup, 58 listelenen durum için bir prototype ve testler hâlâ beklenmektedir. Bağlantı - https://t.co/KnByUBgWrY
