Ethereum'da Blok Gezginlerini Okumak ve İşlemleri, İzleri ve Günlükleri Anlamak için Nasıl Okunur (EVM)

İleri SeviyeSep 13, 2024
Etherscan gibi keşif araçlarını okumayı öğrenin ve bu üç önemli veri yapısı üzerinde verileri gezinin, sorgulamanız gereken tabloları nasıl bulacağınızı öğrenin.
Ethereum'da Blok Gezginlerini Okumak ve İşlemleri, İzleri ve Günlükleri Anlamak için Nasıl Okunur (EVM)

Bir işlemde neler var?

Eğer Ethereum'da (veya herhangi bir akıllı sözleşme etkinleştirilmiş blok zincirinde) işlem yaptıysanız, muhtemelen etherscan.io gibi bir blok gezgini üzerinde araştırma yaptınız ve bu bilgi yığınını gördünüz:

İşlem Genel Bakış Sekmesi

Ve eğer kayıtlara veya izlemelere (iç işlemler) bakmaya çalıştıysanız, muhtemelen bu kafa karıştırıcı sayfaları görmüşsünüzdür:

Kütükler sekmesi (eğer bunlar güzel bir şekilde çözümlenmişse şanslısınız)

İzler sekmesi (evet, bir sürü saçmalık gibi görünüyor)

Blok gezginlerinde bir işlemin ayrıntılarını okumayı öğrenmek, tüm Ethereum veri analizi ve bilginiz için temel olacaktır, bu nedenle tüm parçaları ve bunlarla nasıl çalışılacağını SQL'de ele alalım.

Sadece bu kavramları genel bir seviyede anlamayı gösteriyorum; eğer bunları el ile çözmeyi öğrenmek istiyorsanız, o zaman nasıl aşina olmanız gerektiğini öğrenmeniz gerekecektir.veri kodlanmıştır (işlemler/izler/kayıtlar için aynıdır) ve nasıl kullanılır Dune’nin bytearray/hex fonksiyonlarıfarklı tipler arasında geçmek.

Bu kılavuzun sonunda, bu işlem tablosu bulma sorgusu kullanarak herhangi bir sözleşme için veri tablolarını anlayabilir ve yönetebilirsiniz.

Sorgu Bağlantısı (Herhangi bir işlem karma, zincir ve blok numarasını takın)

Bu kılavuzdaki kavramları öğrendikten sonra, ayrıca kullanmayı da öğrenmelisiniz.EVM hızlı başlangıç gösterge paneliherhangi bir sözleşme analizine başlamak için.

Beş Dakikada Herhangi Bir Ethereum Protokolü veya Ürünü Nasıl Analiz Edilir

Andrew Hong

·

30 Aralık 2022

Hikayenin tamamını okuyun

İşlemler

İşlemler yalnızca veri buzdağının ucu, tüm izler ve günlükler, başlangıç giriş verisi üst düzey işlevi başlattıktan SONRA çağrılır. İlk olarak, blok gezgininin işlem sayfasında göreceğiniz tüm alanları etiketleyelim:

Bu, Dune'da "ethereum.transactions" sorgusu yaptığınızda göreceğiniz aynı alanlardır. Burada tanımlamayı öğrenmeniz gereken temel öğe 'to'nun bir sözleşme olup olmadığıdır. Normalde, sözleşmeler açıkça etiketlenir. Eğer bir sözleşmeyse, bir fonksiyon çağrısı içeren "input data" olmalıdır.

işlem bağlantısı

Tüm bu kavramlar arasında, iyi öğrenilmesi gereken ilk kavram, bir EOA'nın bir sözleşme adresine karşı olanıdır. Sözleşmeler, EOA'lar tarafından dağıtılır ve bir işlemin "to" alanında çağrılabilirler. Bir adresin üzerine tıklarsanız, gezginler sol üstte onun bir sözleşme mi yoksa bir hesap mı olduğunu gösterecektir. Dune'da, bir sözleşme olup olmadığını kontrol etmek için ethereum.creation_traces tablosuna katılabilirsiniz. Unutmayın ki yalnızca EOA'lar tx "from" imzalayıcısı olabilir.

Doğrudan onchain'den gelen verilerin ne olduğunu öğrenmek ve keşifçi/ön uçların eklediği verilerin ne olduğunu öğrenmek önemlidir. Blok zincirindeki her şey onaltılık (bazen ikili veya bayt olarak adlandırılır) olarak temsil edilir, bu nedenle 1inch takas çağrısının bu giriş veri dizisi olacaktır:

örnek işlem

İlk 4 bayt (8 karakter), 'işlev imzası' olarak adlandırılan şeydir,keccak özetiişlev adı ve giriş türlerinin yanı sıra. Etherscan, bazı sözleşmelere bu okunabilir formu sağlayan güzel bir “çöz” düğmesine sahiptir.

örnek işlem

Gördüğünüz gibi, önceden uzun altıgen dizgeden bir araya getirilmiş birçok değişken var. Kodlandıkları şekil akıllı sözleşmelerin uygulama ikili arabirim (ABI) özelliklerini takip eder.

ABI'ler, akıllı sözleşmeler için API belgeleri gibidir (OpenAPI özellikleri gibi), daha fazla bilgi edinebilirsiniz. teknik detaylar burada. Çoğu geliştirici, ABI'nin sözleşmeyle eşleştiğini doğrular ve kod çözme için herkesin başvurabileceği ABI'yi yükler. Birçok sözleşme MEV/ticaretle ilgili olabilir, burada geliştirici şeyleri kapalı kaynak ve özel tutmak istiyor - bu yüzden onlardan herhangi bir kod çözme almıyoruz.

Dune'da tabloları çözdüksunulan sözleşme ABIsına dayalıbir kontratlar tablosuna (yani ethereum.kontratlarına) dönüştürülür, işlevler ve olaylar bayt imzalarına (ethereum.imzaları) dönüştürülür, ardından izlere ve günlüklere karşı eşleştirilir ve size Uniswap v2 çift fabrikası tarafından oluşturulan tüm çift kontratları için tüm takasları depolayan uniswap_v2_ethereum.Pair_evt_Swap gibi çözülmüş tabloları verir. Belirli bir çift için takasları filtreleyebilirsiniz, olaylar için kontrat_adresi tablosuna bakarak.

Dune'da, bu işlev çağrısı için bu tabloyu sorgulamak istersiniz: oneinch_ethereum.AggregationRouterV6_call_swap. Kılavuzun başında tablo bulucuda sorgu sonuçlarının en üstünde bu tablo adını göreceksiniz.

İzler ve günlüklerle ilgili aşağıdaki bölümler için, kullanacağız aynı 1inch aracısı takas işlemi. Bu, bir yönlendiricinin çok sayıda DEX sözleşmesi arasında jetonları takas edeceği için, araştırmak için iyi bir çeşitlilikte iz ve günlük elde edeceğimiz iyi bir örnektir.

Kütükler

Şimdi olay günlükleri hakkında konuşalım. Günlükler, bir işlev çağrısının herhangi bir noktasında yayınlanabilir. Geliştiriciler genellikle bir işlevin sonunda, tüm transferler/mantık hataları olmadan tamamlandıktan sonra bir günlük yayınlarlar. Önceki işlemden yayınlanan uniswap v3 takası etkinliğine bakalım:

örnek işlem

Bir topic0, topic1, topic2 ve data alanı olduğunu göreceksiniz. topic0, yalnızca 4 bayt yerine 32 bayt olması dışında işlev imzasına benzer (yine aynı şekilde karma hale getirilir). Olaylar, daha hızlı veri filtreleme için konu1, konu2 veya konu3'te görünebilen "dizine alınmış" alanlara sahip olabilir. Diğer tüm alanlar "data" nesnesinde birlikte kodlanır. Yine, işlemler ve izlemelerle aynı kodlama kurallarını izlerler. "28", tüm bloktaki olayın indeksidir. Bir tx'te ilk takas veya transferi istediğinizde katılmak bazen yararlı olabilir.

Bu olayın nerede ve nasıl yayıldığının ardındaki mantığı bulmak için solidity koduna dalmam gerekecek. Olayın bağlantılı adresine tıklayacağım, sözleşme sekmesine gideceğim ve "emit swap" araması yapacağım çünkü tüm olayların kodda çağrılmadan hemen önce "emit" olduğunu biliyorum.

Bu uniswapv3pool sözleşmesidirher bir çift için fabrika tarafından oluşturulan.

Bunun, "takas" işlevinin bir parçası olarak sözleşmenin 786. satırında yayıldığını görebiliyorum.

Sözleşmeler arasında fonksiyonları ve etkinlikleri izleyebilmek, sorguladığınız verilerin soyunu doğru bir şekilde anlamanız için edinmeniz gereken temel bir beceri olacaktır. Bu dosyaları izlemek için derinlemesine solidity öğrenmenize gerek yok, sadece anlamayı bilmelisiniz sözleşme arabirimlerive işlevler/etkinlikler çağrıldığında (fonksiyon ve emit anahtar kelimeleriniz).

Fonksiyonlar ve olaylar için kodun derinlemesine araştırılması için örnek olarak,Sudoswap kontratlarının ve verilerinin bu ayrıntılarına bir göz atın.

Önceki tablo bulucu sorgusunu kullanarak, bu takas için sorgulamam gereken tablonun uniswap_v3_ethereum.Pair_evt_Swap olduğunu ve takas() işlevinin çağrıldıktan sonra yayınlandığını görebilirim.

İzler (Ethereum izleri)

Izler farklı sözleşmeler arasında yapılan iç içe geçmiş çağrılar nedeniyle hızlı bir şekilde gezinilmesi çok zor olabilir. İz türlerini önce anlayalım:

  • CREATE: bu, yeni bir sözleşme dağıtıldığında yayılan bir izi temsil eder. Bir işlem başlığında doğrudan bir sözleşme dağıtabilirsiniz, bu durumda işlem verilerinde bir “to” adresi olmayacaktır. Ayrıca bir işlev çağrısı içinde bir sözleşme dağıtabilirsiniz, bu nedenle sözleşme fabrikalarının varlığı söz konusudur. Bu konuda daha basit bir görünüm için ethereum.creation_traces tablosuna göz atın.
  • DELEGateCALL: Bu, bir işlemi inceleyerek zihinsel olarak "yoksayma" listesine eklemeniz gereken bir durumdur. Bu, mantığı değiştirmeden bir isteği bir sunucudan diğerine iletmek olarak düşünülebilir. Bu, proxy'ler ve depolama ile ilgilidir, @bansaltushar014/deleGatecall-in-solidity-4138b121cbe" >burada daha fazla detayı kontrol edebilirsiniz.
  • ÇAĞRI: Bu en yaygın ve genel izdir. Bir çağrı, herhangi bir sözleşme olmadan sadece ETH değerinin transferi olabilir. Ayrıca, herhangi bir sözleşmedeki herhangi bir işlev çağrısı da olabilir.
  • STATICCALL: Bu, herhangi bir durumu DEĞİŞTİRMEYEN ve yalnızca hesaplamalar için kullanılan bir işlev çağrısıdır. Oracle fiyat beslemeleri, AMM fiyat hesaplamaları, tasfiye oranı kontrolleri, bakiye kontrolleri vb. gibi şeylerin tümü statik çağrılarda gerçekleşir. Katılıkta genellikle "görünüm" veya "saf" fonksiyon türleri olarak görülür.

Ayrıca, trace_address sütununu/indeksini anlamanız da gerekecek. Bu genellikle gördüğünüz [0,1,1,1,1] desenidir. Bunu, sıralı işlev çağrılarının derinliğini ve sırasını gösteren bir madde işareti gibi hayal edin.

Bir (null) - işlemin ilk girişi [] iz_bilgisi ile

ÇAĞRILAR B (0)

ÇAĞRILAR C (0,0)

CALLs D (1)

CALLs E (1,0)  CALLs F (1,0,0)CALLs G (1,1)

CALLs H (2)

Daha önceki iç işlemlerimizden (izler) ekran görüntüsüne bakarak anlayabileceğiniz gibi, etherscan izleri görüntülemek için dostane bir yer değil. Bunun yerine işlemi şu şekilde açan phalcon blocksec'i tercih ediyorum:

Gezgin Bağlantısı

Bu görünüşü sizi korkutabilir ama aslında bir işlemin akışındaki tüm işlevleri, olayları ve argümanları keşfetmek için süper kolay bir yoludur. Bunun anlaşılabilmesi durumunda, bir işlemin tüm verilerini anladığınızı güvenle söyleyebilirsiniz. Bir işlemin tüm verilerini anlayabildiğinizde, fark edin ki benim...tablo bulucu sorgusubu düzenin neredeyse tam bir kopyasıdır, onlardan büyük ölçüde ilham aldım!

Dune'da, aynı işlev adının işlem çağrılarını ve izlerini otomatik olarak aynı tabloya kodlarız. Phalcon'da gösterilen güzel düzenleme ile olayları ve izleri / işlemleri kolayca birleştirebileceğinizi merak ediyor olabilirsiniz. Dune'da, genellikle verileri bağlamak için işlem karmaşasında birleştirebilirsiniz, ancak etkileşimlerin tam sıralamasını yeniden oluşturmak için herhangi bir dizinde birleştiremezsiniz. Şu anda özel bir indeksleyici gerektiren üzücü bir sınırlama.

İleri doğru, kripto dünyasının karanlık ormanına daha derine doğru

Bu kılavuzda ortaya koyduğum kavramları anlıyorsanız, daha derine inmeye ve daha karmaşık sorgular yazmaya hazırsınız demektir. Birden çok farklı araç kullanarak işlemler arasında verilerde gezinmek, bu alanda başarılı olmak için ihtiyaç duyacağınız en önemli becerilerden biri olacaktır.

Muhtemelen her hafta kullandığım 10 farklı gezgin var ve araç sayısı ise 10 katı. Veri araçları yığının nasıl geliştiğini ve her aracı hangi amaçla kullanmanız gerektiğini kapsayan yıllık bir rehber yazıyorum.

Rehber Bağlantısı

Disclaimer:

  1. Bu makale [den yeniden basılmıştırcryptodatabytes], Tüm telif hakları orijinal yazarına aittir [Andrew Hong]. Bu yeniden basım konusunda itirazlarınız varsa, lütfen iletişime geçin.Gate Öğren takım ve derhal halledecekler.
  2. Sorumluluk Reddi: Bu makalede ifade edilen görüşler yalnızca yazarın kendi görüşleridir ve herhangi bir yatırım tavsiyesi oluşturmaz.
  3. Makalenin diğer dillere çevirileri Gate Learn ekibi tarafından yapılmaktadır. Belirtilmedikçe, çevrilen makalelerin kopyalanması, dağıtılması veya kopya çekilmesi yasaktır.

Ethereum'da Blok Gezginlerini Okumak ve İşlemleri, İzleri ve Günlükleri Anlamak için Nasıl Okunur (EVM)

İleri SeviyeSep 13, 2024
Etherscan gibi keşif araçlarını okumayı öğrenin ve bu üç önemli veri yapısı üzerinde verileri gezinin, sorgulamanız gereken tabloları nasıl bulacağınızı öğrenin.
Ethereum'da Blok Gezginlerini Okumak ve İşlemleri, İzleri ve Günlükleri Anlamak için Nasıl Okunur (EVM)

Bir işlemde neler var?

Eğer Ethereum'da (veya herhangi bir akıllı sözleşme etkinleştirilmiş blok zincirinde) işlem yaptıysanız, muhtemelen etherscan.io gibi bir blok gezgini üzerinde araştırma yaptınız ve bu bilgi yığınını gördünüz:

İşlem Genel Bakış Sekmesi

Ve eğer kayıtlara veya izlemelere (iç işlemler) bakmaya çalıştıysanız, muhtemelen bu kafa karıştırıcı sayfaları görmüşsünüzdür:

Kütükler sekmesi (eğer bunlar güzel bir şekilde çözümlenmişse şanslısınız)

İzler sekmesi (evet, bir sürü saçmalık gibi görünüyor)

Blok gezginlerinde bir işlemin ayrıntılarını okumayı öğrenmek, tüm Ethereum veri analizi ve bilginiz için temel olacaktır, bu nedenle tüm parçaları ve bunlarla nasıl çalışılacağını SQL'de ele alalım.

Sadece bu kavramları genel bir seviyede anlamayı gösteriyorum; eğer bunları el ile çözmeyi öğrenmek istiyorsanız, o zaman nasıl aşina olmanız gerektiğini öğrenmeniz gerekecektir.veri kodlanmıştır (işlemler/izler/kayıtlar için aynıdır) ve nasıl kullanılır Dune’nin bytearray/hex fonksiyonlarıfarklı tipler arasında geçmek.

Bu kılavuzun sonunda, bu işlem tablosu bulma sorgusu kullanarak herhangi bir sözleşme için veri tablolarını anlayabilir ve yönetebilirsiniz.

Sorgu Bağlantısı (Herhangi bir işlem karma, zincir ve blok numarasını takın)

Bu kılavuzdaki kavramları öğrendikten sonra, ayrıca kullanmayı da öğrenmelisiniz.EVM hızlı başlangıç gösterge paneliherhangi bir sözleşme analizine başlamak için.

Beş Dakikada Herhangi Bir Ethereum Protokolü veya Ürünü Nasıl Analiz Edilir

Andrew Hong

·

30 Aralık 2022

Hikayenin tamamını okuyun

İşlemler

İşlemler yalnızca veri buzdağının ucu, tüm izler ve günlükler, başlangıç giriş verisi üst düzey işlevi başlattıktan SONRA çağrılır. İlk olarak, blok gezgininin işlem sayfasında göreceğiniz tüm alanları etiketleyelim:

Bu, Dune'da "ethereum.transactions" sorgusu yaptığınızda göreceğiniz aynı alanlardır. Burada tanımlamayı öğrenmeniz gereken temel öğe 'to'nun bir sözleşme olup olmadığıdır. Normalde, sözleşmeler açıkça etiketlenir. Eğer bir sözleşmeyse, bir fonksiyon çağrısı içeren "input data" olmalıdır.

işlem bağlantısı

Tüm bu kavramlar arasında, iyi öğrenilmesi gereken ilk kavram, bir EOA'nın bir sözleşme adresine karşı olanıdır. Sözleşmeler, EOA'lar tarafından dağıtılır ve bir işlemin "to" alanında çağrılabilirler. Bir adresin üzerine tıklarsanız, gezginler sol üstte onun bir sözleşme mi yoksa bir hesap mı olduğunu gösterecektir. Dune'da, bir sözleşme olup olmadığını kontrol etmek için ethereum.creation_traces tablosuna katılabilirsiniz. Unutmayın ki yalnızca EOA'lar tx "from" imzalayıcısı olabilir.

Doğrudan onchain'den gelen verilerin ne olduğunu öğrenmek ve keşifçi/ön uçların eklediği verilerin ne olduğunu öğrenmek önemlidir. Blok zincirindeki her şey onaltılık (bazen ikili veya bayt olarak adlandırılır) olarak temsil edilir, bu nedenle 1inch takas çağrısının bu giriş veri dizisi olacaktır:

örnek işlem

İlk 4 bayt (8 karakter), 'işlev imzası' olarak adlandırılan şeydir,keccak özetiişlev adı ve giriş türlerinin yanı sıra. Etherscan, bazı sözleşmelere bu okunabilir formu sağlayan güzel bir “çöz” düğmesine sahiptir.

örnek işlem

Gördüğünüz gibi, önceden uzun altıgen dizgeden bir araya getirilmiş birçok değişken var. Kodlandıkları şekil akıllı sözleşmelerin uygulama ikili arabirim (ABI) özelliklerini takip eder.

ABI'ler, akıllı sözleşmeler için API belgeleri gibidir (OpenAPI özellikleri gibi), daha fazla bilgi edinebilirsiniz. teknik detaylar burada. Çoğu geliştirici, ABI'nin sözleşmeyle eşleştiğini doğrular ve kod çözme için herkesin başvurabileceği ABI'yi yükler. Birçok sözleşme MEV/ticaretle ilgili olabilir, burada geliştirici şeyleri kapalı kaynak ve özel tutmak istiyor - bu yüzden onlardan herhangi bir kod çözme almıyoruz.

Dune'da tabloları çözdüksunulan sözleşme ABIsına dayalıbir kontratlar tablosuna (yani ethereum.kontratlarına) dönüştürülür, işlevler ve olaylar bayt imzalarına (ethereum.imzaları) dönüştürülür, ardından izlere ve günlüklere karşı eşleştirilir ve size Uniswap v2 çift fabrikası tarafından oluşturulan tüm çift kontratları için tüm takasları depolayan uniswap_v2_ethereum.Pair_evt_Swap gibi çözülmüş tabloları verir. Belirli bir çift için takasları filtreleyebilirsiniz, olaylar için kontrat_adresi tablosuna bakarak.

Dune'da, bu işlev çağrısı için bu tabloyu sorgulamak istersiniz: oneinch_ethereum.AggregationRouterV6_call_swap. Kılavuzun başında tablo bulucuda sorgu sonuçlarının en üstünde bu tablo adını göreceksiniz.

İzler ve günlüklerle ilgili aşağıdaki bölümler için, kullanacağız aynı 1inch aracısı takas işlemi. Bu, bir yönlendiricinin çok sayıda DEX sözleşmesi arasında jetonları takas edeceği için, araştırmak için iyi bir çeşitlilikte iz ve günlük elde edeceğimiz iyi bir örnektir.

Kütükler

Şimdi olay günlükleri hakkında konuşalım. Günlükler, bir işlev çağrısının herhangi bir noktasında yayınlanabilir. Geliştiriciler genellikle bir işlevin sonunda, tüm transferler/mantık hataları olmadan tamamlandıktan sonra bir günlük yayınlarlar. Önceki işlemden yayınlanan uniswap v3 takası etkinliğine bakalım:

örnek işlem

Bir topic0, topic1, topic2 ve data alanı olduğunu göreceksiniz. topic0, yalnızca 4 bayt yerine 32 bayt olması dışında işlev imzasına benzer (yine aynı şekilde karma hale getirilir). Olaylar, daha hızlı veri filtreleme için konu1, konu2 veya konu3'te görünebilen "dizine alınmış" alanlara sahip olabilir. Diğer tüm alanlar "data" nesnesinde birlikte kodlanır. Yine, işlemler ve izlemelerle aynı kodlama kurallarını izlerler. "28", tüm bloktaki olayın indeksidir. Bir tx'te ilk takas veya transferi istediğinizde katılmak bazen yararlı olabilir.

Bu olayın nerede ve nasıl yayıldığının ardındaki mantığı bulmak için solidity koduna dalmam gerekecek. Olayın bağlantılı adresine tıklayacağım, sözleşme sekmesine gideceğim ve "emit swap" araması yapacağım çünkü tüm olayların kodda çağrılmadan hemen önce "emit" olduğunu biliyorum.

Bu uniswapv3pool sözleşmesidirher bir çift için fabrika tarafından oluşturulan.

Bunun, "takas" işlevinin bir parçası olarak sözleşmenin 786. satırında yayıldığını görebiliyorum.

Sözleşmeler arasında fonksiyonları ve etkinlikleri izleyebilmek, sorguladığınız verilerin soyunu doğru bir şekilde anlamanız için edinmeniz gereken temel bir beceri olacaktır. Bu dosyaları izlemek için derinlemesine solidity öğrenmenize gerek yok, sadece anlamayı bilmelisiniz sözleşme arabirimlerive işlevler/etkinlikler çağrıldığında (fonksiyon ve emit anahtar kelimeleriniz).

Fonksiyonlar ve olaylar için kodun derinlemesine araştırılması için örnek olarak,Sudoswap kontratlarının ve verilerinin bu ayrıntılarına bir göz atın.

Önceki tablo bulucu sorgusunu kullanarak, bu takas için sorgulamam gereken tablonun uniswap_v3_ethereum.Pair_evt_Swap olduğunu ve takas() işlevinin çağrıldıktan sonra yayınlandığını görebilirim.

İzler (Ethereum izleri)

Izler farklı sözleşmeler arasında yapılan iç içe geçmiş çağrılar nedeniyle hızlı bir şekilde gezinilmesi çok zor olabilir. İz türlerini önce anlayalım:

  • CREATE: bu, yeni bir sözleşme dağıtıldığında yayılan bir izi temsil eder. Bir işlem başlığında doğrudan bir sözleşme dağıtabilirsiniz, bu durumda işlem verilerinde bir “to” adresi olmayacaktır. Ayrıca bir işlev çağrısı içinde bir sözleşme dağıtabilirsiniz, bu nedenle sözleşme fabrikalarının varlığı söz konusudur. Bu konuda daha basit bir görünüm için ethereum.creation_traces tablosuna göz atın.
  • DELEGateCALL: Bu, bir işlemi inceleyerek zihinsel olarak "yoksayma" listesine eklemeniz gereken bir durumdur. Bu, mantığı değiştirmeden bir isteği bir sunucudan diğerine iletmek olarak düşünülebilir. Bu, proxy'ler ve depolama ile ilgilidir, @bansaltushar014/deleGatecall-in-solidity-4138b121cbe" >burada daha fazla detayı kontrol edebilirsiniz.
  • ÇAĞRI: Bu en yaygın ve genel izdir. Bir çağrı, herhangi bir sözleşme olmadan sadece ETH değerinin transferi olabilir. Ayrıca, herhangi bir sözleşmedeki herhangi bir işlev çağrısı da olabilir.
  • STATICCALL: Bu, herhangi bir durumu DEĞİŞTİRMEYEN ve yalnızca hesaplamalar için kullanılan bir işlev çağrısıdır. Oracle fiyat beslemeleri, AMM fiyat hesaplamaları, tasfiye oranı kontrolleri, bakiye kontrolleri vb. gibi şeylerin tümü statik çağrılarda gerçekleşir. Katılıkta genellikle "görünüm" veya "saf" fonksiyon türleri olarak görülür.

Ayrıca, trace_address sütununu/indeksini anlamanız da gerekecek. Bu genellikle gördüğünüz [0,1,1,1,1] desenidir. Bunu, sıralı işlev çağrılarının derinliğini ve sırasını gösteren bir madde işareti gibi hayal edin.

Bir (null) - işlemin ilk girişi [] iz_bilgisi ile

ÇAĞRILAR B (0)

ÇAĞRILAR C (0,0)

CALLs D (1)

CALLs E (1,0)  CALLs F (1,0,0)CALLs G (1,1)

CALLs H (2)

Daha önceki iç işlemlerimizden (izler) ekran görüntüsüne bakarak anlayabileceğiniz gibi, etherscan izleri görüntülemek için dostane bir yer değil. Bunun yerine işlemi şu şekilde açan phalcon blocksec'i tercih ediyorum:

Gezgin Bağlantısı

Bu görünüşü sizi korkutabilir ama aslında bir işlemin akışındaki tüm işlevleri, olayları ve argümanları keşfetmek için süper kolay bir yoludur. Bunun anlaşılabilmesi durumunda, bir işlemin tüm verilerini anladığınızı güvenle söyleyebilirsiniz. Bir işlemin tüm verilerini anlayabildiğinizde, fark edin ki benim...tablo bulucu sorgusubu düzenin neredeyse tam bir kopyasıdır, onlardan büyük ölçüde ilham aldım!

Dune'da, aynı işlev adının işlem çağrılarını ve izlerini otomatik olarak aynı tabloya kodlarız. Phalcon'da gösterilen güzel düzenleme ile olayları ve izleri / işlemleri kolayca birleştirebileceğinizi merak ediyor olabilirsiniz. Dune'da, genellikle verileri bağlamak için işlem karmaşasında birleştirebilirsiniz, ancak etkileşimlerin tam sıralamasını yeniden oluşturmak için herhangi bir dizinde birleştiremezsiniz. Şu anda özel bir indeksleyici gerektiren üzücü bir sınırlama.

İleri doğru, kripto dünyasının karanlık ormanına daha derine doğru

Bu kılavuzda ortaya koyduğum kavramları anlıyorsanız, daha derine inmeye ve daha karmaşık sorgular yazmaya hazırsınız demektir. Birden çok farklı araç kullanarak işlemler arasında verilerde gezinmek, bu alanda başarılı olmak için ihtiyaç duyacağınız en önemli becerilerden biri olacaktır.

Muhtemelen her hafta kullandığım 10 farklı gezgin var ve araç sayısı ise 10 katı. Veri araçları yığının nasıl geliştiğini ve her aracı hangi amaçla kullanmanız gerektiğini kapsayan yıllık bir rehber yazıyorum.

Rehber Bağlantısı

Disclaimer:

  1. Bu makale [den yeniden basılmıştırcryptodatabytes], Tüm telif hakları orijinal yazarına aittir [Andrew Hong]. Bu yeniden basım konusunda itirazlarınız varsa, lütfen iletişime geçin.Gate Öğren takım ve derhal halledecekler.
  2. Sorumluluk Reddi: Bu makalede ifade edilen görüşler yalnızca yazarın kendi görüşleridir ve herhangi bir yatırım tavsiyesi oluşturmaz.
  3. Makalenin diğer dillere çevirileri Gate Learn ekibi tarafından yapılmaktadır. Belirtilmedikçe, çevrilen makalelerin kopyalanması, dağıtılması veya kopya çekilmesi yasaktır.
Şimdi Başlayın
Kaydolun ve
100 USD
değerinde Kupon kazanın!