Bildirim Dosyası

SubQuery TeamYaklaşık 6 dakika

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.

::: code-tabs @tab v0.2.0 yml specVersion: 0.2.0 name: example-project # Provide the project name version: 1.0.0 # Project version description: '' # Description of your project repository: 'https://github.com/subquery/subql-starter' # Git repository address of your project schema: file: ./schema.graphql # The location of your GraphQL schema file network: genesisHash: '0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3' # Genesis hash of the network endpoint: 'wss://polkadot.api.onfinality.io/public-ws' # Optionally provide the HTTP endpoint of a full chain dictionary to speed up processing dictionary: 'https://api.subquery.network/sq/subquery/dictionary-polkadot' dataSources: - kind: substrate/Runtime startBlock: 1 # This changes your indexing start block, set this higher to skip initial blocks with less data mapping: file: "./dist/index.js" handlers: - handler: handleBlock kind: substrate/BlockHandler - handler: handleEvent kind: substrate/EventHandler filter: #Filter is optional module: balances method: Deposit - handler: handleCall kind: substrate/CallHandler ```` @tab v0.0.1 yml specVersion: "0.0.1" description: '' # Description of your project repository: 'https://github.com/subquery/subql-starter' # Git repository address of your project schema: ./schema.graphql # The location of your GraphQL schema file network: endpoint: 'wss://polkadot.api.onfinality.io/public-ws' # Optionally provide the HTTP endpoint of a full chain dictionary to speed up processing dictionary: 'https://api.subquery.network/sq/subquery/dictionary-polkadot' dataSources: - name: main kind: substrate/Runtime startBlock: 1 # This changes your indexing start block, set this higher to skip initial blocks with less data mapping: handlers: - handler: handleBlock kind: substrate/BlockHandler - handler: handleEvent kind: substrate/EventHandler filter: #Filter is optional but suggested to speed up event processing module: balances method: Deposit - handler: handleCall kind: substrate/CallHandler ```` :::

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] | Proje tarafından kullanılacak spec sürümü |

Genel bakış

Üst Düzey Spec

Fieldv0.0.1v0.2.0Tanım
spekversiyonStringString0.0.1 or 0.2.0 - bildirim dosyasının özel sürümü
isim𐄂StringProjenizin adı
sürüm𐄂StringProjenizin sürümü
tanımStringStringProjenizin tanımı
repositoryStringStringProjenizin Git repository adresi
şemaStringŞema ÖzellikleriGraphQL şema dosyanızın konumu
[Ağ Tanımlama](#ağ Tanımlama)Ağ TanımlamaDizine eklenecek ağın ayrıntısı
dataSources[DataSource Spec](#datasource Spec)DataSource Spec

Şema Özellikleri

Fieldv0.0.1v0.2.0Tanım
dosya𐄂StringGraphQL şema dosyanızın konumu

Ağ Tanımlama

Fieldv0.0.1v0.2.0Tanım
genesisHash𐄂StringAğın oluşum karma işlevi
uç noktaStringStringDizine 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ı OnFinalityopen in new window'dan ücretsiz olarak alabilirsiniz
sözlükStringStringİş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.

Fieldv0.0.1v0.2.0Tanım
isimString𐄂Veri kaynağının adı
türsubstrat/Çalışma Zamanısubstrat/Çalışma Zamanı, substrate/CustomDataSourceBlok, 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.
startBlockIntegerIntegerBu, 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şlemeEşleme TanımlamaEşleme Tanımlama
filtreağ filtreleri𐄂Ağ uç noktası tanımlama adına göre yürütülecek veri kaynağını filtrele

Eşleme Tanımlama

Fieldv0.0.1v0.2.0Tanım
dosyaString𐄂Eşleme girdisinin yolu
işleyiciler & filtrelerVarsayılan işleyiciler ve filtrelerVarsayı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

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

HandlerDesteklenen filtre
BlockHandlerspekversiyon
EventHandlermodule,method
CallHandlermodule,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
  • 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.

Ö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. PolkadotJSopen in 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ı OnFinalityopen in 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.

::: code-tabs @tab v0.2.0 yml network: genesisHash: '0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3' endpoint: 'ws://host.kittychain.io/public-ws' chaintypes: file: ./types.json # Özel türlerin depolandığı ilgili dosya yolu ...