trace_ ile debug_: hangi tracing namespace'ine uzanmalı
Bir işlemin tam olarak ne yaptığını — her iç call'u, her state değişikliğini — bilmeniz gerektiği bir an olduysa, iki EVM tracing namespace'iyle karşılaşmışsınızdır. Kafa karıştıracak kadar örtüşür ve önemli olacak kadar farklılaşırlar. Bu, pratik bir harita.
debug_ namespace'i
debug_traceTransaction ve debug_traceCall geth-native'dir. Yapılandırılabilir bir tracer (varsayılan struct logger veya callTracer ve prestateTracer gibi yerleşikler) çalıştırır ve opcode düzeyinde veya call düzeyinde ayrıntı döndürürler. callTracer iş atıdır: değerler, gas ve revert nedenleriyle birlikte tam iç call ağacını döndürür, ki bu çoğu uygulama geliştiricisinin aslında istediği şeydir.
trace_ namespace'i
trace_transaction, trace_block ve trace_filter, OpenEthereum/Erigon kökenlidir. trace_filter öne çıkanıdır: işlemleri kendiniz yeniden oynatmadan bir block aralığındaki iç call'ları from/to adrese göre sorgulamanıza olanak tanır — değer akışını takip etmek veya bir adresin etkinliğini yeniden yapılandırmak için paha biçilmez. Bu aralık-filtre kalıbı için temiz bir debug_ eşdeğeri yoktur.
İkisi arasında seçim yapmak
Belirli bir işlem hash'iniz olduğunda ve onun call ağacını istediğinizde debug_ callTracer'a uzanın. Bir adresiniz veya block aralığınız olduğunda ve ona dokunan her iç call'u istediğinizde trace_filter'a uzanın. Opcode düzeyinde gas profilleme için, struct logger ile debug_ kullanın. Bunların tümü, geçmiş block'lara karşı çalıştırmak için archive state gerektirir — bir full node yalnızca yakın geçmişi trace eder.
Sıkça sorulanlar
Her iki namespace de her zincirde mevcut mu?
Hayır. Mevcudiyet client'a bağlıdır. Erigon tabanlı node'lar hem trace_ hem de debug_'ı sunar; bazı op-stack ve diğer client'lar debug_'ı sunar ancak trace_ setinin tamamını sunmaz. İlgili zincir için method referansını kontrol edin.
Tracing neden normal bir call'dan çok daha pahalı?
Tracing, işlemi enstrümantasyonla EVM üzerinden yeniden oynatır ve geçmiş tracing, o block'taki archive state'e ihtiyaç duyar. Hem hesaplama hem de depolama, basit bir güncel-state okumasından daha ağırdır.
İlgili
Bakiye yükle, anahtarını al, yayına çık.
Self servis. Kripto ya da kartla öde. Krediyle ölçümlenir — ağır ilkel yapılar daha pahalı, basitler ucuz.
API anahtarı al