Aptos için Veri Analisti Rehberi (Çeviri)

Bu çevirinin orijinali “Data Analyst Guide to Aptos (pt.1)” adlı yazıya buradan ulaşabilirsiniz.


Giriş

Aptos, anında kesinlik ile saniyede birden fazla blok üretir (AptosBFT mutabakatını kullanarak). ir blok içindeki en ilginç işlem türü kullanıcı işlemidir. Bir blok içindeki işlemler, bir MoveVM içerisinde BlockSTM kullanılarak paralel olarak yürütülür. Blok üretimi genellikle gecikme süresi (hızlı bloklar) için optimize edilir, ancak blok başına birkaç bin işleme kadar daha yüksek yük sırasında verimi optimize etmek için yavaşlayabilir (örn. 79432868, 140517934). Bloklar dönemler halinde gruplandırılır (ana ağda her ~2 saatte bir) ve bu, doğrulayıcı değişikliklerinin gerçekleşebileceği zamandır.

Merkeziyetsizliği sağlamak ve işlem gönderimlerindeki gecikmeyi azaltmak için coğrafi olarak dağıtılmış 100+ doğrulayıcımız var. Bir doğrulayıcı çalıştırmak için oldukça yüksek bir stake gereksinimi vardır, ancak devredilmiş staking için yalnızca 10 APT gereklidir.

Şu anda 3 ağ barındırıyoruz: Mainnet, Testnet ve Devnet (her ~2 haftada bir sıfırlanır).

Kullanıcı İşlemleri

Kullanıcı işlemleri için, bir adres bir işlemi şunlarla gönderir

  • çağrılan sözleşme (sözleşme yükü ile birlikte) — diğer adıyla entry_function
  • işlemi imzalayanlar (genellikle yalnızca gönderen)
  • işlemin durumu (başarı veya VM iptal mesajı)
  • maksimum gaz limiti ve işlem sona erme zaman damgası

İşlem için gaz ödemesi octa cinsinden (1e8 octa = 1 APT) şu formül kullanılarak yapılır: gas_fee = gas_unit_price * gas_used - storage_refund . gas_unit_price varsayılan olarak 100 octa’dır. Bloklar içinde önceliklendirme gas_unit_price artırılarak yapılabilir ve cüzdanlar yoğunluk sırasında (blok alanı sınırlı olduğunda) daha yüksek gas_unit_price önerebilir.

İşlemler en az bir etkinliğe sahip olacaktır (I/O, depolama ve depolama iadesi için harcanan gaz miktarını listeleyen gaz ücreti beyanı) ve kaynaklarda bazı değişiklikler olacaktır. Bu değişiklikler yalnızca işlemin neden olduğu farklılıkları gösterdiğinden, sözleşmelerin hangi eylemlerin gerçekleştiğine dair bağlam sağlamak için etkinlikler yayması tercih edilir (değişikliklerden çıkarım yapmaya çalışmak yerine). Ancak, etkinliklere diğer işlemler tarafından erişilemez ve bunun yerine bir indeksleyici tarafından tüketilmesi amaçlanır.

İşlemler, işlem hash’i kullanılarak tanımlanabilir, ancak Aptos işlemleri ayrıca monoton olarak artan bir sayı olan bir işlem versiyonu içerir ve versiyon genellikle işlem tanımlaması için kullanılır.

Coin’ler ve Token’lar

Varlıkları bir zincir üzerinde temsil ederken, bir varlığın ne kadar ‘istiflenebilir’ olduğu göz önünde bulundurulabilir. Coin’leri temsil eden varlıklar değiştirilebilir (takas edilebilir) ve bir arada istiflenmelidir, oysa sanatı temsil eden varlıklar benzersizdir (ve istifleme için daha üst düzey bir koleksiyon gruplaması gerekir). Dayanıklılığı olan öğeleri temsil etmek gri bir alandır.

‘İstiflenebilir’ varlıklar için iki temsilimiz var.

  1. Coin’ler (eski)
  • 0x1::coin::CoinStore<type> içinde depolanır (varsayılan)
  • 0x1::coin:: fonksiyonları kullanılarak manipüle edilir
  • Coin’lerden değiştirilebilir varlığa geçiş için 0xa kullanılır
  1. Değiştirilebilir varlıklar, diğer adıyla FA
  • 0x1::fungible_asset:: fonksiyonları kullanılarak manipüle edilir.

İstiflenemeyen varlıklar için de iki temsilimiz vardır.

  1. Token’lar (eski) diğer adıyla token v1
  • 0x3::token::TokenStore içinde depolanır
  • 0x3:: fonksiyonları kullanılarak manipüle edilir
  1. Dijital varlıklar diğer adıyla token v2
  • 0x4:: fonksiyonları kullanılarak manipüle edilir

Coin’ler için arz takibi isteğe bağlıdır. Eski olmayan temsiller nesnelerdir, bu da onları izlemeyi kolaylaştırır ve daha karmaşık izin yetkilendirme olanakları sağlar. Nesneler, coin’leri değiştirilebilir bir varlık deposuna gönderme gibi ilginç temsillere de yol açabilir ve ayrıca bir hesabın sahip olduğu tüm nesneleri bulmak için bir indeksleyici gerektirir (nesnenin adresi tutarlı bir hash ile üretilir).

İstiflenebilir varlıklar CoinStore ve FungibleAssetStore’a girdiğinde ve çıktığında, çekme ve yatırma olayları yayılır (çift girişli muhasebe).

İstiflenemeyen varlıklar hareket ettiklerinde, Transfer etkinlikleri veya Yatırma etkinlikleri yayarlar. Ayrıca bu varlıklar mint ve burn etkinliklerini de yaymaktadır.

Aptos, varlıklar için (değiştirilebilir varlık için işlemci kodu, dijital varlık için işlemci kodu) aktivite (transferler), bakiye (sahiplik) ve meta veri (ondalık sayısı, ad vb.) tablosu sağlayan açık kaynaklı bir indeksleyici uygulamasına (dokümanlar) sahiptir. Bu tablolara genel sorgu erişimi graphql uç noktası (tablo referansı) üzerinden yapılır, ancak daha yüksek hız limitleri için ücretsiz bir geliştirici API anahtarı talep etmeniz şiddetle tavsiye edilir.

Veri Erişimi

Aptos verilerine erişim sağlayan birden fazla sağlayıcı bulunmaktadır. Daha popüler olanlardan bazıları dune, flipside, bigquery’dir (örnek sorgular). Ham tablolar, aşağıdaki kaba ilişki ile API tarafından döndürülen verilere benzer şekilde yapılandırılmıştır.

Dune’dan günlük aktif kullanıcı sorgusu üzerinden gitmek (genellikle kullanıcı ve hesabı birbirinin yerine kullanırız)

WITH final AS (
  SELECT
    tx_version,
    block_date,
    signer_address,
    tx_success,
    signer_type,
    type
  FROM aptos.signatures s
)
SELECT
  block_date,
  COUNT(1) as n_sig,
  COUNT(DISTINCT tx_version) as n_txn,
  COUNT(DISTINCT signer_address) as daily_active_user,
  MIN(tx_version),
  MAX(tx_version)
FROM final
WHERE 1=1
  AND block_date
    BETWEEN DATE_ADD('day', -31, current_date)
    AND DATE_ADD('day', -1, current_date)
  -- AND tx_version BETWEEN 1669545227 AND 1670475367
  AND tx_success
  AND signer_type != 'fee_payer'
GROUP BY 1
ORDER BY 1

Aptos’ta aktif bir hesabı, bir işlemi imzalayan bir adres olarak tanımlarız. Bir işlemde birden fazla imza olabilir (çoklu imza), bu nedenle bir işlem yalnızca bir gönderen hesaba sahip olmasına rağmen birden fazla aktif hesabı temsil edebilir (gönderen genellikle vekil olarak kullanılır).

Yukarıdaki sorgu, imzalar tablosundan veri alır ve son 30 gün içinde ücret ödemeyen imzalar için başarılı işlemleri filtreler, ardından günlük toplam imza sayısını (n_sig), işlem sayısını (n_txn), aktif hesap sayısını (daily_active_user) ve hata ayıklama için faydalı olan min/max sürümünü toplar.

Bireysel işlemleri kontrol etmek için (örn. 2203280000), blok gezgini ve diğer Aptos API’leri üzerinden sorgular yapılabilir.

Sonuç

Umarım bu genel bakış, diğerlerinin Aptos verilerini sorgulamaya başlamalarına yardımcı olur. 2. bölümde, şu gibi konularda daha derinlemesine bir inceleme yapacağım:

  • Defi AMM işlemleri için veri değişiklikleri
  • NFT pazar yeri işlemleri için veri değişiklikleri
  • CoinStore’a girmeyen coin transferlerinin izlenmesi
  • Coin’lerde arz tahmini yapmak
  • Devredilen staking ve ödül yüzdesinin izlenmesi
  • Farklı imza türlerinin anlaşılması
  • Yarı değiştirilebilir token’lar (örn. dayanıklılığı olan oyun öğeleri gibi varlıklar)

Sorgulama için daha yüksek hız limitleri sağlamak amacıyla ücretsiz bir geliştirici hesabı oluşturmayı unutmayın. Topluluğun hazırladığı gösterge tablolarını görmek için sabırsızlanıyorum.

9 Likes

Eline sağlık hocam