Ethereum’un (ETH) yürütme istemcisi Geth’in gas tahmininin, işlem başarılı kaydedilse bile akıllı sözleşme içindeki bazı işlemlerin başarısız olduğu durumları gözden kaçırabileceği belirtildi. Bu sorunu azaltmak için bir düzeltme önerildi. Cüzdanın belirlediği gas limiti işlemin tamamına yetse bile kullanıcının talep ettiği iç işlem için yetersiz kalabilir.
Geth deposunda 8 Kasım’da taslak olarak yayımlanan PR #36084, mevcut gas tahmininin limiti işlemin genel başarı durumuna göre belirlediğini açıklıyor. Ethereum Execution API belgelerinde de eth_estimateGas, işlemin tamamlanması için gereken gas miktarını tahmin eden bir yöntem olarak tanımlanıyor. Öneri, bu ölçüte iç çağrıların yürütme sonuçlarını da ekliyor.
Bir akıllı sözleşme başka bir sözleşmeyi çağırdığında gas yetersiz kalırsa iç çağrı başarısız olabilir. Dıştaki sözleşme bu hatayı yakalayıp kalan işlemleri sürdürebilir ve yürütmeyi tamamlayabilir. Bu durumda işlem bütünüyle hatasız şekilde başarılı kaydedilir. Ancak bu, yalnızca dış yürütmenin tamamlandığı anlamına gelir; kullanıcının beklediği tüm adımların gerçekleştiğini garanti etmez.
Öneri, gas tahminindeki başarı koşulunu sıkılaştırıyor. Referans alınan yüksek gas limitli yürütmeye kıyasla daha fazla başarısız iç çağrı veya sözleşme oluşturma işlemi içeren bir limiti tahmin olarak kabul etmiyor. Yeterli gas verilse bile her zaman başarısız olan çağrılarda ise tahminin referans yürütmeye kıyasla sınırsız biçimde yükselmesini önlüyor. Benzer kurallar içeren Execution API spesifikasyonuna yönelik PR #971 de taslak olarak sunuldu.
Öneriyi sunan kişi, Amsterdam kurallarını uygulayarak ana ağdaki 432 işlemi EELS’te yeniden yürüttü. İç çağrı için gereken gas miktarının yetersiz kalabileceği 67 vakanın 64’ünü düzeltme doğru biçimde ele aldı; ilgili gas limitinin medyanı yüzde 4 yükseldi. Sorun bulunmayan 254 tahmin değişmedi, 3 vaka ise düzeltmeye rağmen gözden kaçtı. Bunlar öneri sahibinin yeniden üretim testlerinin sonuçları; tüm işlemlerde veya gerçek cüzdanlarda aynı oranda iyileşme görüleceği anlamına gelmiyor.
Konu, Glamsterdam yükseltmesinin EIP-8037 önerisiyle de bağlantılı. EIP-8037, yeni durum oluşturma maliyetinin ayrı bir gas boyutunda hesaplanmasını öngörüyor. Düzeltmenin yazarı, durum gas’ı iade kuralları uygulanırsa iç çağrı başarısız olduktan sonra üst çağrının alternatif işlemleri sürdürdüğü örüntünün daha sık görülebileceğini belirtti. Ethereum Vakfı da 6 Kasım’da akıllı sözleşme geliştiricileri ve denetçilerden Glamsterdam’da değişecek sekiz gas ücretlendirme varsayımını incelemelerini istedi.
Gas limitinin yükselmesi, işlem ücretinin aynı oranda artacağı anlamına gelmiyor. Limit, işlemin kullanabileceği azami gas miktarını gösteriyor. Ethereum’un resmi gas belgelerine göre gerçek ücret, kullanılan gas miktarı ile birim başına fiyatın çarpımıyla hesaplanıyor. Bu nedenle testlerde görülen yüzde 4’lük medyan artış, ücretlerin yüzde 4 artacağı şeklinde yorumlanamaz. Öneri ETH fiyatını değil, işlem için gereken gas miktarını tahmin etme yöntemini ele alıyor.
9 Kasım itibarıyla hem Geth düzeltmesi hem de Execution API spesifikasyonu taslak aşamasında. Geth PR sayfasında ilgili dal için bir dağıtım kaydı bulunmuyor; birleştirme veya dağıtım takvimi de açıklanmadı.
Comment 0