> For the complete documentation index, see [llms.txt](https://irina-1.gitbook.io/analiz-subgraph/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://irina-1.gitbook.io/analiz-subgraph/komponenty-podgrapha/poetapnyi-analiz/etap-3.-github.md).

# Этап 3. GitHub

Изучение GitHub проекта

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

![](https://1284049588-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMA6c4WEfM19HWtC_Gd%2F-MMEeqLznvc3Ub-P1n-u%2F-MMG2_InKdiQSsRpfPhW%2F13.png?alt=media\&token=95d57290-1afd-4f7a-aaa6-8defecc1c020)

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

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

![](https://1284049588-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMA6c4WEfM19HWtC_Gd%2F-MMK2Y5wfuhm6pjLmRRx%2F-MMK9MHF0MHstXI_EzQm%2F22.png?alt=media\&token=ea950351-daef-4b6c-859c-93076c6a87df)

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

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

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

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

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

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

![Манифест подграфа subgraph.yaml](https://1284049588-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMA6c4WEfM19HWtC_Gd%2F-MMEeqLznvc3Ub-P1n-u%2F-MMG9SDFdWtL9mletC0L%2F14.png?alt=media\&token=12ee122c-9094-4189-a3b5-2bdccde23272)

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`

![](https://1284049588-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMA6c4WEfM19HWtC_Gd%2F-MMGFNfo9N2EbqI7hAxe%2F-MMGIptuiI5k5iTl662b%2F16.png?alt=media\&token=f5a16175-df5e-41a9-bc26-ddb2b774eb89)

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

![](https://1284049588-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MMA6c4WEfM19HWtC_Gd%2F-MMGFNfo9N2EbqI7hAxe%2F-MMGJ2blf8R5O0Pmzik9%2F15.png?alt=media\&token=2d954beb-dfcc-417e-a7de-7e22e48b432b)

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

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