Docs
Vyhledávání⌘ K
  • Domov
  • O Grafu
  • Podporované sítě
  • Protocol Contracts
  • Podgrafy
    • Substreams
      • Token API
        • AI Suite
          • Indexing
            • Resources
              Podgrafy > How-to Guides

              8 minutes

              Vytváření podgrafů v NEAR

              This guide is an introduction to building Subgraphs indexing smart contracts on the NEAR blockchain⁠.

              Co je NEAR?

              NEAR⁠ is a smart contract platform for building decentralized applications. Visit the official documentation⁠ for more information.

              What are NEAR Subgraphs?

              The Graph gives developers tools to process blockchain events and make the resulting data easily available via a GraphQL API, known individually as a Subgraph. Graph Node⁠ is now able to process NEAR events, which means that NEAR developers can now build Subgraphs to index their smart contracts.

              Subgraphs are event-based, which means that they listen for and then process onchain events. There are currently two types of handlers supported for NEAR Subgraphs:

              • Obsluhy bloků: jsou spouštěny při každém novém bloku.
              • Obsluhy příjmu: spouštějí se pokaždé, když je zpráva provedena na zadaném účtu.

              From the NEAR documentation⁠:

              Příjemka je jediným objektem, který lze v systému použít. Když na platformě NEAR hovoříme o “zpracování transakce”, znamená to v určitém okamžiku “použití účtenky”.

              Sestavení podgrafu NEAR

              @graphprotocol/graph-cli is a command-line tool for building and deploying Subgraphs.

              @graphprotocol/graph-ts is a library of Subgraph-specific types.

              NEAR Subgraph development requires graph-cli above version 0.23.0, and graph-ts above version 0.23.0.

              Building a NEAR Subgraph is very similar to building a Subgraph that indexes Ethereum.

              There are three aspects of Subgraph definition:

              subgraph.yaml: the Subgraph manifest, defining the data sources of interest, and how they should be processed. NEAR is a new kind of data source.

              schema.graphql: a schema file that defines what data is stored for your Subgraph, and how to query it via GraphQL. The requirements for NEAR Subgraphs are covered by the existing documentation.

              AssemblyScript Mappings: AssemblyScript code that translates from the event data to the entities defined in your schema. NEAR support introduces NEAR-specific data types and new JSON parsing functionality.

              During Subgraph development there are two key commands:

              1$ graph codegen # generates types from the schema file identified in the manifest2$ graph build # generates Web Assembly from the AssemblyScript files, and prepares all the Subgraph files in a /build folder

              Definice podgrafu Manifest

              The Subgraph manifest (subgraph.yaml) identifies the data sources for the Subgraph, the triggers of interest, and the functions that should be run in response to those triggers. See below for an example Subgraph manifest for a NEAR Subgraph:

              1specVersion: 1.3.02schema:3  file: ./src/schema.graphql # link to the schema file4dataSources:5  - kind: near6    network: near-mainnet7    source:8      account: app.good-morning.near # This data source will monitor this account9      startBlock: 10662188 # Required for NEAR10    mapping:11      apiVersion: 0.0.912      language: wasm/assemblyscript13      blockHandlers:14        - handler: handleNewBlock # the function name in the mapping file15      receiptHandlers:16        - handler: handleReceipt # the function name in the mapping file17      file: ./src/mapping.ts # link to the file with the Assemblyscript mappings
              • NEAR Subgraphs introduce a new kind of data source (near)
              • The network should correspond to a network on the hosting Graph Node. On Subgraph Studio, NEAR’s mainnet is near-mainnet, and NEAR’s testnet is near-testnet
              • NEAR data sources introduce an optional source.account field, which is a human-readable ID corresponding to a NEAR account⁠. This can be an account or a sub-account.
              • NEAR data sources introduce an alternative optional source.accounts field, which contains optional suffixes and prefixes. At least prefix or suffix must be specified, they will match the any account starting or ending with the list of values respectively. The example below would match: [app|good].*[morning.near|morning.testnet]. If only a list of prefixes or suffixes is necessary the other field can be omitted.
              1accounts:2  prefixes:3    - app4    - good5  suffixes:6    - morning.near7    - morning.testnet

              Zdroje dat NEAR podporují dva typy zpracovatelů:

              • blockHandlers: run on every new NEAR block. No source.account is required.
              • receiptHandlers: run on every receipt where the data source’s source.account is the recipient. Note that only exact matches are processed (subaccounts⁠ must be added as independent data sources).

              Definice schématu

              Schema definition describes the structure of the resulting Subgraph database and the relationships between entities. This is agnostic of the original data source. There are more details on Subgraph schema definition here.

              AssemblyScript Mapování

              The handlers for processing events are written in AssemblyScript⁠.

              NEAR indexing introduces NEAR-specific data types to the AssemblyScript API.

              1class ExecutionOutcome {2      gasBurnt: u64,3      blockHash: Bytes,4      id: Bytes,5      logs: Array<string>,6      receiptIds: Array<Bytes>,7      tokensBurnt: BigInt,8      executorId: string,9  }1011class ActionReceipt {12      predecessorId: string,13      receiverId: string,14      id: CryptoHash,15      signerId: string,16      gasPrice: BigInt,17      outputDataReceivers: Array<DataReceiver>,18      inputDataIds: Array<CryptoHash>,19      actions: Array<ActionValue>,20  }2122class BlockHeader {23      height: u64,24      prevHeight: u64,// Always zero when version < V325      epochId: Bytes,26      nextEpochId: Bytes,27      chunksIncluded: u64,28      hash: Bytes,29      prevHash: Bytes,30      timestampNanosec: u64,31      randomValue: Bytes,32      gasPrice: BigInt,33      totalSupply: BigInt,34      latestProtocolVersion: u32,35  }3637class ChunkHeader {38      gasUsed: u64,39      gasLimit: u64,40      shardId: u64,41      chunkHash: Bytes,42      prevBlockHash: Bytes,43      balanceBurnt: BigInt,44  }4546class Block {47      author: string,48      header: BlockHeader,49      chunks: Array<ChunkHeader>,50  }5152class ReceiptWithOutcome {53      outcome: ExecutionOutcome,54      receipt: ActionReceipt,55      block: Block,56  }

              These types are passed to block & receipt handlers:

              • Block handlers will receive a Block
              • Receipt handlers will receive a ReceiptWithOutcome

              Otherwise, the rest of the AssemblyScript API is available to NEAR Subgraph developers during mapping execution.

              This includes a new JSON parsing function - logs on NEAR are frequently emitted as stringified JSONs. A new json.fromString(...) function is available as part of the JSON API to allow developers to easily process these logs.

              Nasazení podgrafu NEAR

              Once you have a built Subgraph, it is time to deploy it to Graph Node for indexing. NEAR Subgraphs can be deployed to any Graph Node >=v0.26.x (this version has not yet been tagged & released).

              Subgraph Studio and the upgrade Indexer on The Graph Network currently supports indexing NEAR mainnet and testnet in beta, with the following network names:

              • near-mainnet
              • near-testnet

              More information on creating and deploying Subgraphs on Subgraph Studio can be found here.

              As a quick primer - the first step is to “create” your Subgraph - this only needs to be done once. On Subgraph Studio, this can be done from your Dashboard: “Create a Subgraph”.

              Once your Subgraph has been created, you can deploy your Subgraph by using the graph deploy CLI command:

              1$ graph create --node <graph-node-url> <subgraph-name> # creates a Subgraph on a local Graph Node (on Subgraph Studio, this is done via the UI)2$ graph deploy --node <graph-node-url> --ipfs https://ipfs.thegraph.com <subgraph-name> # uploads the build files to a specified IPFS endpoint, and then deploys the Subgraph to a specified Graph Node based on the manifest IPFS hash

              The node configuration will depend on where the Subgraph is being deployed.

              Podgraf Studio

              1graph auth2graph deploy <subgraph-name>

              Místní uzel grafu (na základě výchozí konfigurace)

              1graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 <subgraph-name>

              Once your Subgraph has been deployed, it will be indexed by Graph Node. You can check its progress by querying the Subgraph itself:

              1{2  _meta {3    block {4      number5    }6  }7}

              Indexování NEAR pomocí místního uzlu grafu

              Spuštění grafu uzlu, který indexuje NEAR, má následující provozní požadavky:

              • Framework NEAR Indexer s instrumentací Firehose
              • Komponenta(y) NEAR Firehose
              • Uzel Graph s nakonfigurovaným koncovým bodem Firehose

              Brzy vám poskytneme další informace o provozu výše uvedených komponent.

              Dotazování podgrafu NEAR

              The GraphQL endpoint for NEAR Subgraphs is determined by the schema definition, with the existing API interface. Please visit the GraphQL API documentation for more information.

              Příklady podgrafů

              Here are some example Subgraphs for reference:

              NEAR Blocks⁠

              NEAR Receipts⁠

              FAQ

              Jak funguje beta verze?

              NEAR support is in beta, which means that there may be changes to the API as we continue to work on improving the integration. Please email [email protected]⁠ so that we can support you in building NEAR Subgraphs, and keep you up to date on the latest developments!

              Can a Subgraph index both NEAR and EVM chains?

              No, a Subgraph can only support data sources from one chain/network.

              Can Subgraphs react to more specific triggers?

              V současné době jsou podporovány pouze spouštěče Blok a Příjem. Zkoumáme spouštěče pro volání funkcí na zadaném účtu. Máme také zájem o podporu spouštěčů událostí, jakmile bude mít NEAR nativní podporu událostí.

              Budou se obsluhy příjmu spouštět pro účty a jejich podúčty?

              If an account is specified, that will only match the exact account name. It is possible to match sub-accounts by specifying an accounts field, with suffixes and prefixes specified to match accounts and sub-accounts, for example the following would match all mintbase1.near sub-accounts:

              1accounts:2  suffixes:3    - mintbase1.near

              Can NEAR Subgraphs make view calls to NEAR accounts during mappings?

              To není podporováno. Vyhodnocujeme, zda je tato funkce pro indexování nutná.

              Can I use data source templates in my NEAR Subgraph?

              Tato funkce není v současné době podporována. Vyhodnocujeme, zda je tato funkce pro indexování nutná.

              Ethereum Subgraphs support “pending” and “current” versions, how can I deploy a “pending” version of a NEAR Subgraph?

              Pending functionality is not yet supported for NEAR Subgraphs. In the interim, you can deploy a new version to a different “named” Subgraph, and then when that is synced with the chain head, you can redeploy to your primary “named” Subgraph, which will use the same underlying deployment ID, so the main Subgraph will be instantly synced.

              My question hasn’t been answered, where can I get more help building NEAR Subgraphs?

              If it is a general question about Subgraph development, there is a lot more information in the rest of the Developer documentation. Otherwise please join The Graph Protocol Discord⁠ and ask in the #near channel or email [email protected]⁠.

              Odkazy:

              • NEAR developer documentation⁠
              ⁠Edit on GitHub⁠

              Rychlé a snadné ladění podgrafů pomocí vidličekVytváření podgrafů na Arweave
              On this page
              • Co je NEAR?
              • What are NEAR Subgraphs?
              • Sestavení podgrafu NEAR
              • Definice podgrafu Manifest
              • Definice schématu
              • AssemblyScript Mapování
              • Nasazení podgrafu NEAR
              • Podgraf Studio
              • Místní uzel grafu (na základě výchozí konfigurace)
              • Indexování NEAR pomocí místního uzlu grafu
              • Dotazování podgrafu NEAR
              • Příklady podgrafů
              • FAQ
              • Jak funguje beta verze?
              • Can a Subgraph index both NEAR and EVM chains?
              • Can Subgraphs react to more specific triggers?
              • Budou se obsluhy příjmu spouštět pro účty a jejich podúčty?
              • Can NEAR Subgraphs make view calls to NEAR accounts during mappings?
              • Can I use data source templates in my NEAR Subgraph?
              • Ethereum Subgraphs support “pending” and “current” versions, how can I deploy a “pending” version of a NEAR Subgraph?
              • My question hasn’t been answered, where can I get more help building NEAR Subgraphs?
              • Odkazy:
              The GraphStatusTestnetBrand AssetsForumSecurityPrivacy PolicyTerms of Service