File Manifest

SubQuery TeamAbout 6 min

File Manifest

File Manifest project.yaml bisa dilihat sebagai titik masuk proyek Anda dan menentukan sebagian besar detil tentang bagaimana SubQuery akan mengindeks dan mengubah data chain.

Manifest bisa dalam format YAML atau JSON. Dalam dokumen ini, kita akan menggunakan YAML di semua contoh. Di bawah ini merupakan contoh standar project.yaml standar.

::: code-tabs @tab v0.2.0 yml specVersion: 0.2.0 name: example-project # Berikan nama proyek version: 1.0.0 # Versi proyek description: '' # Deskripsi dari proyek anda repository: 'https://github.com/subquery/subql-starter' # Alamat git repository dari proyek anda schema: file: ./schema.graphql # Lokasi file skema GraphQL Anda network: genesisHash: '0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3' # Genesis hash dari jaringan endpoint: 'wss://polkadot.api.onfinality.io/public-ws' # Secara opsional, berikan titik akhir HTTP dari dictionary chain lengkap untuk mempercepat pemrosesan dictionary: 'https://api.subquery.network/sq/subquery/dictionary-polkadot' dataSources: - kind: substrate/Runtime startBlock: 1 # Ini mengubah blok awal pengindeksan Anda, setel ini lebih tinggi untuk melewati blok awal dengan lebih sedikit data mapping: file: "./dist/index.js" handlers: - handler: handleBlock kind: substrate/BlockHandler - handler: handleEvent kind: substrate/EventHandler filter: #Filter adalah opsional module: balances method: Deposit - handler: handleCall kind: substrate/CallHandler ```` @tab v0.0.1 yml specVersion: "0.0.1" description: '' # Deskripsi dari proyek anda repository: 'https://github.com/subquery/subql-starter' # Alamat git repository dari proyek anda schema: ./schema.graphql # Lokasi file skema GraphQL Anda network: endpoint: 'wss://polkadot.api.onfinality.io/public-ws' # Secara opsional, berikan titik akhir HTTP dari dictionary chain lengkap untuk mempercepat pemrosesan dictionary: 'https://api.subquery.network/sq/subquery/dictionary-polkadot' dataSources: - name: main kind: substrate/Runtime startBlock: 1 # Ini mengubah blok awal pengindeksan Anda, setel ini lebih tinggi untuk melewati blok awal dengan lebih sedikit data mapping: handlers: - handler: handleBlock kind: substrate/BlockHandler - handler: handleEvent kind: substrate/EventHandler filter: #Filter bersifat opsional tetapi disarankan untuk mempercepat pemrosesan acara module: balances method: Deposit - handler: handleCall kind: substrate/CallHandler ```` :::

Migrasi dari v0.0.1 to v0.2.0 upgrade

Jika Anda memiliki proyek dengan specVersion v0.0.1, Anda dapat menggunakan subql migrate untuk melakukan upgrade dengan cepat. Lihat di sini untuk informasi lebih lanjut

Di bawah network:

  • Ada field wajib genesisHash baru yang membantu mengidentifikasi rantai yang digunakan.
  • Untuk v0.2.0 dan yang lebih baru, Anda dapat mereferensikan file jenis rantai eksternal jika Anda mereferensikan rantai khusus.

Dibawah dataSources:

  • Dapat langsung menautkan titik masuk index.js untuk pengendali pemetaan. Secara default index.js ini akan dihasilkan dari index.ts selama proses pembuatan.
  • Sumber data sekarang dapat berupa sumber data waktu proses reguler atau sumber data khusus.

CLI Options

Secara default, CLI akan menghasilkan proyek SubQuery untuk spesifikasi verison v0.2.0. Perilaku ini dapat diganti dengan menjalankan subql init --specVersion 0.0.1 PROJECT_NAME, meskipun ini tidak disarankan karena proyek tidak akan didukung oleh layanan yang dihosting SubQuery di masa mendatang

subql migrate dapat dijalankan di proyek yang ada untuk memigrasikan manifes proyek ke versi terbaru.

PENGGUNAAN $ subql init [PROJECTNAME]

ARGUMENTS PROJECTNAME Berikan nama proyek awal

| Pilihan | Deskripsi | | ----------------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------- | | -f, --force | | | -l, --location=location | folder lokal untuk membuat proyek di | | --install-dependencies | Instal dependensi juga | | --npm | Paksa menggunakan NPM alih-alih benang, hanya berfungsi dengan flag install-dependencies | | --specVersion=0.0.1 | 0.2.0 [default: 0.2.0] | Versi spesifikasi yang akan digunakan oleh proyek |

Gambaran

Spesifikasi Tingkat Atas

Fieldv0.0.1v0.2.0Deskripsi
specVersionStringString0.0.1 or 0.2.0 - versi spesifikasi file manifes
name𐄂StringNama proyek Anda
version𐄂StringVersi Proyek anda
descriptionStringStringDeskripsi Proyek anda
repositoryStringStringGit alamat repositori proyek Anda
schemaStringSchema SpecLokasi file skema GraphQL Anda
networkNetwork SpecNetwork SpecDetail jaringan yang akan diindeks
dataSourcesDataSource SpecDataSource Spec

Schema Spec

Fieldv0.0.1v0.2.0Deskripsi
file𐄂StringLokasi file skema GraphQL Anda

Network Spec

Fieldv0.0.1v0.2.0Deskripsi
genesisHash𐄂StringHash asal jaringan
endpointStringStringMenentukan endpoint wss atau ws dari blockchain yang akan diindeks - Ini harus berupa node arsip lengkap. Anda dapat mengambil endpoint untuk semua parachains secara gratis dari OnFinalityopen in new window
dictionaryStringStringDisarankan untuk menyediakan titik akhir HTTP dari kamus rantai lengkap untuk mempercepat pemrosesan - baca cara kerja Kamus Subkueri.
chaintypes𐄂{file:String}File jenis jalur ke rantai, terima format .json atau .yaml

Datasource Spec

Mendefinisikan data yang akan difilter dan diekstraksi dan lokasi pengendali fungsi pemetaan untuk transformasi data yang akan diterapkan.

Fieldv0.0.1v0.2.0Deskripsi
nameString𐄂Nama sumber data
jenissubstrate/Runtimesubstrate/Runtime, substrate/CustomDataSourceKami mendukung tipe data dari runtime substrat default seperti blok, acara, dan ekstrinsik (panggilan).
Dari v0.2.0, kami mendukung data dari runtime khusus, seperti kontrak pintar.
startBlockIntegerIntegerIni mengubah blok awal pengindeksan Anda, setel ini lebih tinggi untuk melewati blok awal dengan lebih sedikit data
mappingMapping SpecMapping Spec
filternetwork-filters𐄂Filter sumber data untuk dieksekusi dengan nama spesifikasi titik akhir jaringan

Mapping Spec

Fieldv0.0.1v0.2.0Deskripsi
fileString𐄂Jalur ke entri pemetaan
handlers & filtersPenangan dan filter defaultPenangan dan filter default,
Penangan dan filter khusus
Buat daftar semua fungsi pemetaan dan jenis handler yang sesuai, dengan filter pemetaan tambahan.

Untuk handler pemetaan runtime kustom, lihat Sumber data kustom

Sumber Data dan Pemetaan

Di bagian ini, kita akan berbicara tentang runtime media default dan pemetaannya. Berikut ini contohnya:

dataSources:
  - kind: substrate/Runtime # Menunjukkan bahwa ini adalah runtime default
    startBlock: 1 # Ini mengubah blok awal pengindeksan Anda, setel ini lebih tinggi untuk melewati blok awal dengan lebih sedikit data
    mapping:
      file: dist/index.js # entry path untuk pemetaan ini

Handler pemetaan dan Filter

Tabel berikut menjelaskan filter yang didukung oleh penangan yang berbeda.

Proyek SubQuery Anda akan jauh lebih efisien bila Anda hanya menggunakan event dan call handler dengan filter pemetaan yang sesuai

HandlerFilter yang didukung
BlockHandlerspecVersion
EventHandlermodule,method
CallHandlermodule,method ,success

Filter pemetaan runtime default adalah fitur yang sangat berguna untuk memutuskan blok, peristiwa, atau ekstrinsik apa yang akan memicu pengendali pemetaan.

Hanya data masuk yang memenuhi kondisi filter yang akan diproses oleh fungsi pemetaan. Hanya data masuk yang memenuhi kondisi filter yang akan diproses oleh fungsi pemetaan.

# Contoh filter dari callHandler
filter:
  module: balances
  method: Deposit
  success: true
  • Filter modul dan method didukung di chain apa pun yang berbasis substrate.
  • Filter success mengambil nilai boolean dan dapat digunakan untuk memfilter ekstrinsik berdasarkan status keberhasilannya.
  • Filter specVersion menentukan rentang versi spesifikasi untuk block substrate. Contoh berikut menjelaskan cara mengatur rentang versi.
filter:
  specVersion: [23, 24]   # Blok indeks dengan specVersion di antara 23 dan 24 (inklusif).
  specVersion: [100]      # Blok indeks dengan specVersion lebih besar dari atau sama dengan 100.
  specVersion: [null, 23] # Blok indeks dengan specVersion kurang dari atau sama dengan 23.

Chain Kustom

Network Spec

Saat menghubungkan ke parachain Polkadot yang berbeda atau bahkan rantai substrat khusus, Anda harus mengedit bagian Spesifikasi Jaringan dari manifes ini.

genesisHash harus selalu berupa hash dari blok pertama jaringan kustom. Anda dapat mengambilnya dengan mudah dengan membuka Polkadot Jsopen in new window dan mencari hash di blok 0 (lihat gambar di bawah).

Genesis Hash

Selain itu, Anda perlu memperbarui endpoint. Ini mendefinisikan endpoint wss dari blockchain yang akan diindeks - Ini harus berupa node arsip lengkap. Anda dapat mengambil endpoint untuk semua parachains secara gratis dari OnFinalityopen in new window

Tipe Chain

Anda dapat mengindeks data dari rantai kustom dengan juga menyertakan jenis rantai dalam manifes.

Kami mendukung jenis tambahan yang digunakan oleh modul waktu proses media, typesAlias, typesBundle, typesChain, dan typesSpec juga didukung.

Dalam contoh v0.2.0 di bawah ini, network.chaintypes menunjuk ke file yang memiliki semua tipe kustom yang disertakan, Ini adalah file chainspec standar yang menyatakan tipe spesifik yang didukung oleh blockchain ini di .json, .yaml atau .js format.

::: code-tabs @tab v0.2.0 yml network: genesisHash: '0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3' endpoint: 'ws://host.kittychain.io/public-ws' chaintypes: file: ./types.json # Filepath relatif ke tempat jenis kustom disimpan ...