清單文件(Manifest File)

Manifest project.yaml 文件可以被看作是項目的入口,它定義了關于 SubQuery 如何索引和轉換鏈數據的大部分細節。

Manifest 可以是 YAML 或 JSON 格式, 在本文檔中,我們將在所有示例中使用 YAML格式。 以下是一個基本 project.yaml 的標準示例。

specVersion: “0.0.1”

description: “”

repository: “https://github.com/subquery/subql-starter”

schema: “./schema.graphql”

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

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

• network.endpoint 定義了要編入索引的區塊鏈的 wss 或 ws 端點——這必須是一個完整的存檔節點,

• network.dictionary 選擇性地提供完整鏈字典的 HTTP 端點以加快處理速度 – 點擊鏈接:https://doc.subquery.network/tutorials_examples/dictionary.html 查看 SubQuery 字典的工作原理,

• dataSources 定義了將被過濾和提取的數據,以及要應用的數據轉換的映射函數處理程式的位置,

◦ Kind 目前只支持 substrate/Runtime

◦ startBlock 詳細說明了開始索引的塊高度,

◦ filter 將根據網路端點規范名稱過濾要執行的數據源,請參閱網路過濾器:https://doc.subquery.network/create/manifest.html#network-filters

◦ mapping.handlers 將列出所有映射函數及其相應的處理程式類型(https://doc.subquery.network/create/mapping.html),以及額外的映射過濾器(https://doc.subquery.network/create/manifest.html#mapping-filters),

網路過濾器(Network Filters)

通常用戶會創建一個 SubQuery 項目,并希望在他們的測試網和主網環境(例如 Polkadot 和 Kusama)中重復使用它。 在網路之間,各種選項可能不同(例如索引起始塊)。 因此,我們允許用戶為每個數據源定義不同的細節,這意味著一個 SubQuery 項目仍然可以跨多個網路使用,

用戶可以在 dataSources 命令上添加 filter 命令來決定在網路上運行哪個數據源。

下面的示例顯示了 Polkadot 和 Kusama 網路的不同數據源。

network:

endpoint: “wss://polkadot.api.onfinality.io/public-ws”

#Create a template to avoid redundancy

definitions:

mapping: &mymapping

handlers:

– handler: handleBlock

kind: substrate/BlockHandler

dataSources:

– name: polkadotRuntime

kind: substrate/Runtime

filter: #Optional

specName: polkadot

startBlock: 1000

mapping: *mymapping #use template here

– name: kusamaRuntime

kind: substrate/Runtime

filter:

specName: kusama

startBlock: 12000

mapping: *mymapping # can reuse or change

映射過濾器(Mapping Filters)

Mapping filters 是一個非常有用的功能,它可以決定什么塊、事件或外在因素會觸發映射處理程式。

只有滿足過濾條件的傳入數據才會被映射函數處理, 映射過濾器是選擇性使用的,但我們建議使用,因為它們會顯著減少 SubQuery 項目處理的數據量并提高索引性能,

#Example filter from callHandler

filter:

module: balances

method: Deposit

success: true

下表說明了不同處理程式支持的過濾器,

處理程式

支持的過濾器

BlockHandler

specVersion

EventHandler

module,method

CallHandler

module,method ,success

• 任何基于底層的鏈都支持 module 和 method filters,

• success filter 采用布爾值,可用于按成功狀態過濾外在因素,

• specVersion filter 指定了substrate 區塊的spec 版本范圍,以下示例描述如何設置版本范圍。

filter:

specVersion: [23, 24] #Index block with specVersion in between 23 and 24 (inclusive).

specVersion: [100] #Index block with specVersion greater than or equal 100.

specVersion: [null, 23] #Index block with specVersion less than or equal 23.

定制鏈(Custom Chains)

您還可以通過在 project.yaml 中加入鏈類型來索引自定義鏈中的數據, 在 network.types 中聲明此區塊鏈支持的特定類型。 我們支持底層運行模塊時使用的其他類型,

我們還支持 typesAlias、typesBundle、typesChain 和 typesSpec,

0 条回复 A文章作者 M管理員
    暫無討論,說說你的看法吧