# Этап 3. GitHub

Если вы обнаружили, что у подграфа есть ссылка на **GitHub**, переходим в репозиторий, и видим следующее:

![](/files/-MMG2_InKdiQSsRpfPhW)

1. &#x20; `schema.graphql` Схема для вашего подграфа находится в этом файле&#x20;

> Ознакомиться с тем, что такое схема **GraphQL** подробнее, можно по этой [сылке](https://graphql.org/learn/schema/#type-language)&#x20;

![](/files/-MMK9MHF0MHstXI_EzQm)

> *Под цифрами 1,2,3,4 распологаются основные блоки типов объектов (данных) схемы, из которых мы можем понять структуру данных, которые в дальнейшем запрашиваются через ноду **Graph**. Каждый тип должен быть объектом и представлен  **@entity** директивой.*

&#x20;**2.**       `subgraph.yaml` Манифест подграфа&#x20;

> Манифест подграфа находится в этом файле, он определяет смарт-контракты, которые индексирует ваш подграф, на какие события из этих контрактов следует обращать внимание.

&#x20;  **3.**      Автор проекта, при желании можно связаться с ним и попросить ответить на некоторые вопросы связанные с подграфом, если вам тяжело разобраться с технической точки зрения. Например, какие именно мы получаем данные с помощью этого подграфа.

**Разберем файл `subgraph.yaml`**&#x20;

> Этот файл так называемый манифест подграфа. Манифест подграфа определяет смарт-контракт который индексирует подграф, на какие события из этого контракта следует обращать внимание и их отслеживать, как сопоставлять данные событий с объектами *`"entities"`*, которые нода **Graph** хранит и позволяет запрашивать.

![Манифест подграфа subgraph.yaml](/files/-MMG9SDFdWtL9mletC0L)

1. Расположение файла **`schema.graphql`**, находится в корневом каталоге.
2. Имя контракта Ethereum: **Solo Margin** по названию можно сделать вывод, что контракт нужен для создания одиночной (индивидуальной) маржинальной торговли, так как **dYdX** это проект децентрализованной торговой площадки для торговли с плечами (маржинальной торговли).
3. **Mainnet** в какой сети развернут данный контракт, в нашем случае в основной сети Ethereum.
4. Адрес смарт контракта `address: "0x1E0447b19BB6EcFdAe1e4AE1694b0C3659614e4e"`
5. События (***event***) Это события которые подграф *"слушает"* со смарт контракта, те данные которые разработчик хочет получить по средством подграфа в свое конечное приложение, а именно в нашем случае:&#x20;

* &#x20;**a** - количество депозита (полученых средств)
* &#x20;**b** - количество выводов (выведенных средств)
* &#x20;**с** - переводы
* &#x20;**d** - покупки
* &#x20;**e** - продажи
* &#x20;**f** - торговля
* &#x20;**g** - ликвидации

Найдем этот контракт на [etherscan.io](https://etherscan.io/address/0x1E0447b19BB6EcFdAe1e4AE1694b0C3659614e4e#code), открываем вкладку`Contract`

![](/files/-MMGIptuiI5k5iTl662b)

Далее можно увидеть код смарт-контракта который имеет большие размеры: 5698 строк! Сразу можно сделать вывод, что проект солидный. Конечно прочитать этот код это задача, доступная немногим, и для ее решения требуются навыки владения языком программирования ***Solidity.*** Но, Вам это и не зачем , если вы конечно не проводите его аудит. Да и найти в нем события **`events`** которые мы бы хотели посмотреть, скажем слегка трудновато, однако, мы можем воспользоваться поиском внутри контракта и найти по ключевым словам нужный нам раздел с событиями "***Events**"*.  Это строка 4037.

![](/files/-MMGJ2blf8R5O0Pmzik9)

Исходя из этих данных можно сделать вывод, что подграф собирает информацию о совершенных торговых сделках для определенного аккаунта.

6\. Application Binary Interface name: **dYdX.**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://irina-1.gitbook.io/analiz-subgraph/komponenty-podgrapha/poetapnyi-analiz/etap-3.-github.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
