Установка Graph CLI
Reading time: 4 minutes
In order to use your subgraph on The Graph’s decentralized network, you will need to create an API key in Subgraph Studio. It is recommended that you add signal to your subgraph with at least 3,000 GRT to attract 2-3 Indexers. To learn more about signaling, check out curating.
Обзор
The Graph CLI is a command-line interface that facilitates developers’ commands for The Graph. It processes a subgraph manifest and compiles the mappings to create the files you will need to deploy the subgraph to Subgraph Studio and the network.
Начало работы
Установка Graph CLI
The Graph CLI is written in TypeScript, and you must have node
and either npm
or yarn
installed to use it. Check for the most recent CLI version.
Выполните одну из следующих команд на своём локальном компьютере:
Using npm
npm install -g @graphprotocol/graph-cli@latest
Using yarn
yarn global add @graphprotocol/graph-cli
The graph init
command can be used to set up a new subgraph project, either from an existing contract or from an example subgraph. If you already have a smart contract deployed to your preferred network, you can bootstrap a new subgraph from that contract to get started.
Создайте субграф
Из существующего контракта
Следующая команда создает субграф, индексирующий все события существующего контракта:
graph init \ --product subgraph-studio --from-contract <CONTRACT_ADDRESS> \ [--network <ETHEREUM_NETWORK>] \ [--abi <FILE>] \ <SUBGRAPH_SLUG> [<DIRECTORY>]
-
Команда пытается получить ABI контракта из Etherscan.
- Интерфейс командной строки The Graph использует общедоступную конечную точку RPC. Несмотря на то, что возможны периодические сбои, повторные попытки обычно решают эту проблему. Если сбои продолжаются, рассмотрите возможность использования локального ABI.
-
Если какой-либо из необязательных аргументов отсутствует, Вам будет предложено воспользоваться интерактивной формой.
-
The
<SUBGRAPH_SLUG>
is the ID of your subgraph in Subgraph Studio. It can be found on your subgraph details page.
Из примера подграфа
Следующая команда инициализирует новый проект на примере субграфа:
graph init <SUBGRAPH_SLUG> --from-example=example-subgraph
-
The example subgraph is based on the Gravity contract by Dani Grant, which manages user avatars and emits
NewGravatar
orUpdateGravatar
events whenever avatars are created or updated. -
The subgraph handles these events by writing
Gravatar
entities to the Graph Node store and ensuring these are updated according to the events.
Add New dataSources
to an Existing Subgraph
dataSources
are key components of subgraphs. They define the sources of data that the subgraph indexes and processes. A dataSource
specifies which smart contract to listen to, which events to process, and how to handle them.
Recent versions of the Graph CLI supports adding new dataSources
to an existing subgraph through the graph add
command:
graph add <address> [<subgraph-manifest default: "./subgraph.yaml">]Options: --abi <path> Path to the contract ABI (default: download from Etherscan) --contract-name Name of the contract (default: Contract) --merge-entities Whether to merge entities with the same name (default: false) --network-file <path> Networks config file path (default: "./networks.json")
Специфические особенности
The graph add
command will fetch the ABI from Etherscan (unless an ABI path is specified with the --abi
option) and creates a new dataSource
, similar to how the graph init
command creates a dataSource
--from-contract
, updating the schema and mappings accordingly. This allows you to index implementation contracts from their proxy contracts.
-
The
--merge-entities
option identifies how the developer would like to handleentity
andevent
name conflicts:-
If
true
: the newdataSource
should use existingeventHandlers
&entities
. -
If
false
: a newentity
&event
handler should be created with${dataSourceName}{EventName}
.
-
-
The contract
address
will be written to thenetworks.json
for the relevant network.
Note: When using the interactive CLI, after successfully running graph init
, you’ll be prompted to add a new dataSource
.
Получение ABIs
Файл(ы) ABI должен(ы) соответствовать Вашему контракту (контрактам). Существует несколько способов получения файлов ABI:
- Если Вы создаете свой собственный проект, у Вас, скорее всего, будет доступ к наиболее актуальным ABIS.
- If you are building a subgraph for a public project, you can download that project to your computer and get the ABI by using
npx hardhat compile
or usingsolc
to compile. - You can also find the ABI on Etherscan, but this isn’t always reliable, as the ABI that is uploaded there may be out of date. Make sure you have the right ABI, otherwise running your subgraph will fail.
Релизы SpecVersion
Версия | Примечания к релизу |
---|---|
1.2.0 | Added support for Indexed Argument Filtering & declared eth_call |
1.1.0 | Supports Timeseries & Aggregations. Added support for type Int8 for id . |
1.0.0 | Supports indexerHints feature to prune subgraphs |
0.0.9 | Supports endBlock feature |
0.0.8 | Added support for polling Block Handlers and Initialisation Handlers. |
0.0.7 | Added support for File Data Sources. |
0.0.6 | Supports fast Proof of Indexing calculation variant. |
0.0.5 | Добавлена поддержка обработчиков событий, имеющих доступ к чекам транзакций. |
0.0.4 | Добавлена поддержка управления функциями субграфа. |