Bildirim Dosyası

... 2022-10-5 About 6 min

# Bildirim Dosyası

Manifest project.yaml dosyası projenizin giriş noktası olarak görülebilir ve SubQuery'nin zincir verilerini nasıl dizine alacağı ve dönüştüreceğine ilişkin ayrıntıların çoğunu tanımlar.

Bildirim YAML veya JSON biçiminde olabilir. Bu belgede, tüm örneklerde YAML kullanacağız. Aşağıda temel project.yaml standart bir örneği verilmiştir.

# Migrating from v0.0.1 to v0.2.0 upgrade

**If you have a project with specVersion v0.0.1, you can use subql migrate to quickly upgrade. Daha fazla bilgi için buraya bakın **

network altında:

  • Kullanılan zinciri tanımlamaya yardımcı olan yeni bir gerekli genesisHash alanı vardır.
  • V0.2.0 ve üstü için, özel bir zincire başvuruyorsanız, harici bir zincir türü dosyasına başvurabilirsiniz.

Under dataSources:

  • Doğrudan eşleme işleyicileri için index.js giriş noktası bağlantı kurabilirsiniz. Varsayılan olarak, bu index.jsoluşturma işlemi sırasında index.ts'den oluşturulur.
  • Veri kaynakları artık normal bir çalışma zamanı veri kaynağı veya özel veri kaynağı olabilir.

# CLI Secenekler

Varsayılan olarak CLI, spec verison v0.2.0 için alt sorgu projeleri oluşturur. Bu davranış subql init --specVersion 0.0.1 PROJECT_NAME çalıştırılarak geçersiz kılınabilir, ancak proje gelecekte barındırılan alt sorgu hizmeti tarafından desteklenmeyeceğinden bu önerilmez

subql migrate proje bildirimini en son sürüme geçirmek için varolan bir projede çalıştırılabilir.

USAGE $ subql init [PROJECTNAME]

DEĞİŞKENLER PROJECTNAME Başlangıç projesi adını ver

Seçenekler Tanım
-f, --force
-l, --location=location projeyi oluşturmak için yerel klasör
--install-dependencies Bağımlılıkları da yükleyin
--npm İplik yerine NPM kullanan kuvvet, sadeceinstall-dependencies flag
--specVersion=0.0.1 0.2.0 [default: 0.2.0]

# Genel bakış

# Üst Düzey Spec

Field v0.0.1 v0.2.0 Tanım
spekversiyon String String 0.0.1 or 0.2.0 - bildirim dosyasının özel sürümü
isim 𐄂 String Projenizin adı
sürüm 𐄂 String Projenizin sürümü
tanım String String Projenizin tanımı
repository String String Projenizin Git repository adresi
şema String Şema Özellikleri GraphQL şema dosyanızın konumu
[Ağ Tanımlama](#ağ Tanımlama) Ağ Tanımlama Dizine eklenecek ağın ayrıntısı
dataSources [DataSource Spec](#datasource Spec) DataSource Spec

# Şema Özellikleri

Field v0.0.1 v0.2.0 Tanım
dosya 𐄂 String GraphQL şema dosyanızın konumu

# Ağ Tanımlama

Field v0.0.1 v0.2.0 Tanım
genesisHash 𐄂 String Ağın oluşum karma işlevi
uç nokta String String Dizine eklenecek blok zincirinin wss veya ws uç noktasını tanımlar - Bu tam bir arşiv düğümü olmalıdır. Tüm parachain'ler için uç noktaları OnFinality (opens new window)'dan ücretsiz olarak alabilirsiniz
sözlük String String İşlemeyi hızlandırmak için tam zincir sözlüğünün HTTP uç noktasının sağlanması önerilir - SubQuery sözlüğünün nasıl çalıştığını okuyun.
zincir tipleri 𐄂 {file:String} Zincir türleri dosyasının yolu, .json veya .yaml biçimini kabul edin

# Datasource Spec

Uygulanacak veri dönüşümü için eşleme fonksiyonu işleyicisinin konumunun yanı sıra filtrelenecek ve ayıklanacak verileri tanımlar.

Field v0.0.1 v0.2.0 Tanım
isim String 𐄂 Veri kaynağının adı
tür substrat/Çalışma Zamanı substrat/Çalışma Zamanı, substrate/CustomDataSource Blok, olay ve harici (çağrı) gibi varsayılan substrat çalışma zamanından veri türünü destekliyoruz.
v0.2.0'dan itibaren akıllı sözleşme gibi özel çalışma zamanından gelen verileri destekliyoruz.
startBlock Integer Integer Bu, indeksleyici başlangıç bloğunuzu değiştirir, daha az veri içeren ilk blokları atlamak için bunu daha yükseğe ayarlayın
eşleme Eşleme Tanımlama Eşleme Tanımlama
filtre ağ filtreleri 𐄂 Ağ uç noktası tanımlama adına göre yürütülecek veri kaynağını filtrele

# Eşleme Tanımlama

Field v0.0.1 v0.2.0 Tanım
dosya String 𐄂 Eşleme girdisinin yolu
işleyiciler & filtreler Varsayılan işleyiciler ve filtreler Varsayılan işleyiciler ve filtreler,
Özel işleyiciler ve filtreler
Ek eşleme filtreleriyle birlikte tüm mapping işlevlerini ve karşılık gelen işleyici türlerini listeleyin.

Özel çalışma zamanları eşleme işleyicileri için lütfen Özel veri kaynaklarını görüntüleyin

# Veri Kaynakları ve Eşleme

Bu bölümde, varsayılan substrat çalışma zamanı ve haritalaması hakkında konuşacağız. İşte bir örnek:

dataSources:
  - kind: substrate/Runtime # Bunun varsayılan çalışma zamanı başlangıcı olduğunu
 gösterir
    startBlock: 1 # Bu, dizin oluşturma başlangıç bloğunuzu değiştirir, bunu daha az veri eşlemesi olan ilk blokları atlamak için daha yükseğe ayarlayın:
      file: dist/index.js # Bu eşleme için giriş yolu
1
2
3
4
5

# Eşleme işleyicileri ve Filtreler

Aşağıdaki tabloda, farklı işleyiciler tarafından desteklenen filtreler açıklanmaktadır.

Yalnızca uygun eşleme filtrelerine sahip olay ve çağrı işleyicilerini kullandığınızda SubQuery projeniz çok daha verimli olacaktır

Handler Desteklenen filtre
BlockHandler spekversiyon
EventHandler module,method
CallHandler module,method ,success

Varsayılan çalışma zamanı eşleme filtreleri, hangi bloğun, olayın veya dış kaynağın bir eşleme işleyicisini tetikleyeceğine karar vermek için son derece yararlı bir özelliktir.

Yalnızca filtre koşullarını karşılayan gelen veriler, eşleme işlevleri tarafından işlenir. Eşleme filtreleri isteğe bağlıdır, ancak SubQuery projeniz tarafından işlenen veri miktarını önemli ölçüde azalttıkları ve indeksleme performansını artıracakları için şiddetle tavsiye edilir.

# callHandler filtresinden örnek
filter:
  module: balances
  method: Deposit
  success: true
1
2
3
4
5
  • Modül ve yöntem filtreleri herhangi bir substrat tabanlı zincirde desteklenir.
  • success filtresi bir boolean değeri alır ve dış çizgiyi başarı durumuna göre filtrelemek için kullanılabilir.
  • specVersion filtresi, bir substrat bloğunun tanımlama sürüm aralığını belirtir. Aşağıdaki örneklerde sürüm aralıklarının nasıl ayarlandırılacağı açıklanmaktadır.
filter:
  specVersion: [23, 24]   # 23 ile 24 arasında specVersion olan dizin bloğu (24 dahil).
  specVersion: [100]      # specVersion olan dizin bloğu 100'den büyük veya eşit.
  specVersion: [null, 23] # specVersion olan dizin bloğu 23'ten küçük veya eşit.
1
2
3
4

# Özel Zincirler

# Ağ Tanımlama

Farklı bir Polkadot parachain veya hatta özel bir substrat zincirine bağlanırken, bu bildirinin Network Spec bölümünü düzenlemeniz gerekir.

genesisHash her zaman özel ağın ilk bloğunun karma işlevi olmalıdır. PolkadotJS (opens new window)’a giderek ve ** blok 0 **'da karma işlevini arayarak bunu kolayca geri alabilirsiniz.

Genesis Hash

Ayrıca, endpoint'i güncelleştirmeniz gerekecektir. Bu, dizine eklenecek blok zincirinin wss uç noktasını tanımlar - Bu tam bir arşiv düğümü olmalıdır. Tüm parachain'ler için uç noktaları OnFinality (opens new window)'dan ücretsiz olarak alabilirsiniz

# Zincir Türleri

Bildiriye zincir türlerini de dahil ederek özel zincirlerden veri indeksleyebilirsiniz.

Substrat çalışma zamanı modülleri tarafından kullanılan ek türleri destekliyoruz, typesAlias, typesBundle, typesChain, ve typesSpec da desteklenmektedir.

Aşağıdaki v0.2.0 örneğinde, network.chaintypes tüm özel türleri içeren bir dosyaya işaret ediyor, bu, bu blok zinciri tarafından desteklenen belirli türleri .json, .yaml veya .js şeklinde belirten standart bir chainspec dosyasıdır.

Zincir türleri dosyanızda typescript kullanmak için src klasörüne ekleyin (örn. ./src/types.ts), yarn build’i çalıştırın ve dist klasöründe bulunan oluşturulmuş js dosyası seçeneğine gelin.

network:
  chaintypes:
    file: ./dist/types.js # Yarn run yapısından sonra oluşturulacak
1
2
3

.ts veya .js uzantılı zincir türleri dosyasını kullanma hakkında dikkat edilmesi gerekenler:

  • Bildiri sürümünüz v0.2.0 veya üstü olmalıdır.
  • Bloklar getirilirken polkadot api (opens new window)’de yalnızca varsayılan dışa aktarma dahil edilecektir.

Aşağıda .ts zincir türleri dosyasına bir örnek verilmiştir:

# Özel Veri Kaynakları

Özel Veri Kaynakları, verilerle başa çıkmayı kolaylaştıran ağa özgü işlevsellik sağlar. Ekstra filtreleme ve veri dönüşümü sağlayabilen bir ara yazılım görevi görürler.

EVM desteği buna iyi bir örnektir. EVM için özel bir veri kaynağı işlemcisine sahip olmak, EVM düzeyinde filtreleyebileceğiniz anlamına gelir (örneğin, sözleşme yöntemlerini veya günlüklerini filtreleyin) ve veriler, API'lerle parametreleri ayrıştırmanın yanı sıra Ethereum ekosistemine benzer yapılara dönüştürülür.

Özel Veri Kaynakları normal veri kaynaklarıyla kullanılabilir.

Aşağıda desteklenen özel veri kaynaklarının bir listesi bulunmaktadır:

Tür Desteklenen İşleyiciler Filtreler Açıklama
substrate/Moonbeam substrate/MoonbeamEvent, substrate/MoonbeamCall Her işleyicinin altındaki filtreye göz atın Moonbeams ağlarındaki EVM işlemleri ve etkinlikleriyle kolay etkileşim sağlar

# Ağ Filtreleri

Ağ filtreleri yalnızca spec v0.0.1 için geçerlidir.

Genellikle kullanıcı bir SubQuery oluşturacak ve hem testnet hem de mainnet ortamları (örneğin Polkadot ve Kusama) için yeniden kullanmayı bekleyecektir. Ağlar arasında, çeşitli seçeneklerin farklı olması muhtemeldir (örneğin, dizin başlangıç bloğu). Bu nedenle, kullanıcıların her veri kaynağı için farklı ayrıntılar tanımlamasına izin veririz, bu da bir SubQuery projesinin birden çok ağda kullanılabileceği anlamına gelir.

Kullanıcılar, her ağda hangi veri kaynağının çalıştırılacağına karar vermek için dataSources’a filtre ekleyebilir.

Aşağıda, hem Polkadot hem de Kusama ağları için farklı veri kaynaklarını gösteren bir örnek verilmiştir.

Last update: October 5, 2022 01:44