<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>@chernyaka</title><author><name>@chernyaka</name></author><id>https://teletype.in/atom/chernyaka</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/chernyaka?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@chernyaka?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=chernyaka"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/chernyaka?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-05-14T02:05:12.855Z</updated><entry><id>chernyaka:LmeMIsW8eDE</id><link rel="alternate" type="text/html" href="https://teletype.in/@chernyaka/LmeMIsW8eDE?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=chernyaka"></link><title>SubQuery Module 1 &amp; Module 2</title><published>2021-11-04T00:14:51.706Z</published><updated>2021-11-14T18:42:50.242Z</updated><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/47/9c/479c1981-848f-4f47-9e72-b88019094c28.png&quot;&gt;Задачи по модулям можно решить несколькими способами, в данном гайде будет описан тот способ, который помог мне прийти к результату. </summary><content type="html">
  &lt;blockquote id=&quot;eLEc&quot;&gt;Задачи по модулям можно решить несколькими способами, в данном гайде будет описан тот способ, который помог мне прийти к результату. &lt;/blockquote&gt;
  &lt;blockquote id=&quot;NzYV&quot;&gt;Начальная часть гайда будет взята с источника &lt;a href=&quot;https://medium.com/@AlexKaa/%D0%B0%D0%BA%D0%B0%D0%B4%D0%B5%D0%BC%D0%B8%D1%8F-subquery-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C-1-%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D0%BE-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-aac4e1ef5c41&quot; target=&quot;_blank&quot;&gt;https://medium.com/@AlexKaa/%D0%B0%D0%BA%D0%B0%D0%B4%D0%B5%D0%BC%D0%B8%D1%8F-subquery-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C-1-%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D0%BE-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-aac4e1ef5c41&lt;/a&gt; Спасибо большое ребятам @AlexKa и @Motiio&lt;/blockquote&gt;
  &lt;blockquote id=&quot;nWkV&quot;&gt;Ах, да, чуть не забыл, это мой первый в жизни гайд, поэтому не судите строго :)&lt;/blockquote&gt;
  &lt;p id=&quot;AFLS&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;CkJr&quot;&gt;Инструменты, которые понадобятся для работы:&lt;/h2&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;ul id=&quot;Ewux&quot;&gt;
      &lt;li id=&quot;h6ru&quot;&gt;&lt;strong&gt;Сервер.&lt;/strong&gt; Так как я запускаю ноды - у меня был сервер, который я арендую здесь: &lt;a href=&quot;https://www.digitalocean.com/products/droplets/&quot; target=&quot;_blank&quot;&gt;https://www.digitalocean.com/products/droplets/&lt;/a&gt;. Можете взять сервер там в аренду, самый простой стоит 5 у.е. в месяц. Я не буду в данном гайде расписывать инструкцию как правильно купить сервер и войти в него, но если у вас будут вопросы, как это сделать - обращайтесь ко мне в дискорде: &lt;strong&gt;&lt;u&gt;Alexander Chernyak#3490&lt;/u&gt;&lt;/strong&gt;&lt;/li&gt;
      &lt;li id=&quot;pteT&quot;&gt;&lt;strong&gt;PuTTY.&lt;/strong&gt; Инструмент, с помощью которого мы будем связываться с сервером и выполнять там команды: &lt;a href=&quot;https://www.putty.org/&quot; target=&quot;_blank&quot;&gt;https://www.putty.org/&lt;/a&gt;&lt;/li&gt;
      &lt;li id=&quot;7m4Q&quot;&gt;&lt;strong&gt;WinSCP.&lt;/strong&gt; С помощью данного инструмента мы будем заходить в директории наших проектов, редактировать, удалять, копировать файлы и т.д. &lt;a href=&quot;https://winscp.net/eng/download.php&quot; target=&quot;_blank&quot;&gt;https://winscp.net/eng/download.php&lt;/a&gt;&lt;/li&gt;
      &lt;li id=&quot;N9JC&quot;&gt;&lt;strong&gt;GitHub&lt;/strong&gt;. Репозиторий в котором мы будем хранить наш проект. Необходимо зарегистрироваться &lt;a href=&quot;https://github.com&quot; target=&quot;_blank&quot;&gt;https://github.com&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;At6m&quot;&gt;&lt;u&gt;МОДУЛЬ № 1&lt;/u&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;p49J&quot;&gt;Подключаемся к серверу через PuTTY.&lt;/p&gt;
  &lt;p id=&quot;HzJ9&quot;&gt;Обновляем список пакетов с помощью команды:&lt;/p&gt;
  &lt;pre id=&quot;KydI&quot; data-lang=&quot;typescript&quot;&gt;sudo apt update&lt;/pre&gt;
  &lt;p id=&quot;9CqU&quot;&gt;Установим Node.js&lt;/p&gt;
  &lt;pre id=&quot;Yh2w&quot;&gt;apt install nodejs&lt;/pre&gt;
  &lt;pre id=&quot;bhUM&quot;&gt;apt install npm&lt;/pre&gt;
  &lt;p id=&quot;i2Ne&quot;&gt;Поменяем версию на 14.18.0 (так как на более новой не работает)&lt;/p&gt;
  &lt;pre id=&quot;77kQ&quot;&gt;sudo npm install -g n&lt;/pre&gt;
  &lt;pre id=&quot;Hyhr&quot;&gt;n install 14.18.0&lt;/pre&gt;
  &lt;pre id=&quot;FNzp&quot;&gt;n&lt;/pre&gt;
  &lt;figure id=&quot;C9bs&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/47/9c/479c1981-848f-4f47-9e72-b88019094c28.png&quot; width=&quot;656&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;BYtJ&quot;&gt;нажимаем Enter (тем самым выбираем версию 14.18.0)&lt;/p&gt;
  &lt;p id=&quot;4bRV&quot;&gt;Обновляем npm:&lt;/p&gt;
  &lt;pre id=&quot;vTyz&quot;&gt;npm install npm -g&lt;/pre&gt;
  &lt;p id=&quot;LUBA&quot;&gt;Устанавливаем Docker:&lt;/p&gt;
  &lt;pre id=&quot;pJlU&quot;&gt;apt install docker-compose&lt;/pre&gt;
  &lt;p id=&quot;37MD&quot;&gt;Устанавливаем subql/cli:&lt;/p&gt;
  &lt;pre id=&quot;dVN8&quot;&gt;npm install -g @subql/cli&lt;/pre&gt;
  &lt;p id=&quot;h6iA&quot;&gt;Cоздаем директорию:&lt;/p&gt;
  &lt;pre id=&quot;zpgT&quot;&gt;mkdir SubQl&lt;/pre&gt;
  &lt;p id=&quot;JnZy&quot;&gt;Входим в директорию:&lt;/p&gt;
  &lt;pre id=&quot;fzF8&quot;&gt;cd SubQl&lt;/pre&gt;
  &lt;p id=&quot;vvBc&quot;&gt;Cоздаем проект:&lt;/p&gt;
  &lt;pre id=&quot;7234&quot;&gt;sudo subql init --starter HelloWorld&lt;/pre&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;8HZH&quot;&gt;Далее, Вас попросят ввести:&lt;/p&gt;
    &lt;p id=&quot;Plnl&quot;&gt;Git repository - не обязательно.&lt;/p&gt;
    &lt;p id=&quot;NgmT&quot;&gt;RPC endpoint - жмем Enter&lt;/p&gt;
    &lt;p id=&quot;w59c&quot;&gt;Authors - Ваше имя&lt;/p&gt;
    &lt;p id=&quot;rijU&quot;&gt;Description - По желанию краткое описание проекта (своими словами)&lt;/p&gt;
    &lt;p id=&quot;VuDo&quot;&gt;Version - жмем Enter&lt;/p&gt;
    &lt;p id=&quot;HBsI&quot;&gt;License - жмем Enter&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;vEQC&quot;&gt;По итогу, Вы должны увидеть такую строку:&lt;/p&gt;
  &lt;pre id=&quot;cBzi&quot;&gt;HelloWorld is ready&lt;/pre&gt;
  &lt;p id=&quot;BuI3&quot;&gt;Переходим в проект:&lt;/p&gt;
  &lt;pre id=&quot;DAe2&quot;&gt;cd HelloWorld&lt;/pre&gt;
  &lt;p id=&quot;G2Le&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;C7Zw&quot;&gt;Теперь, самая важная часть первого задания, многие выполнили ее не правильно.&lt;/p&gt;
  &lt;p id=&quot;1gIs&quot;&gt;Подключаем WinSCP и заходим в наш сервер. Для этого вам нужен будет:&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;VVvm&quot;&gt;IP вашего арендованного сервера  &lt;/p&gt;
    &lt;p id=&quot;O982&quot;&gt;логин: root&lt;/p&gt;
    &lt;p id=&quot;6pKc&quot;&gt;Пароль: Тот, что вы выбрали при установке Droplets на DigitalOcean&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;bIJ0&quot;&gt;Заходим в папку HelloWorld -&amp;gt; src -&amp;gt; mappings -&amp;gt; mappingHandlers.ts&lt;/p&gt;
  &lt;p id=&quot;ZAH0&quot;&gt;Нам необходимо отредактировать данный файл. Кликаем по нему два раза, он откроется через блокнот либо другую программу редактирования, которая имеется у Вас на компьютере.&lt;/p&gt;
  &lt;p id=&quot;MtYJ&quot;&gt;Изначально вы увидите образец файла с 3 функциями.&lt;br /&gt;handleBlock, handleEvent и handleCall. Мы сосредоточимся на первой.&lt;br /&gt;Функция называется handleBlock, поэтому удалите оставшиеся функции. &lt;/p&gt;
  &lt;p id=&quot;YvYL&quot;&gt;Файл &lt;strong&gt;mappingHandler.ts&lt;/strong&gt; должен выглядеть так:&lt;/p&gt;
  &lt;pre id=&quot;LzGY&quot;&gt;import {SubstrateExtrinsic,SubstrateEvent,SubstrateBlock} from &amp;quot;@subql/types&amp;quot;;
import {StarterEntity} from &amp;quot;../types&amp;quot;;
import {Balance} from &amp;quot;@polkadot/types/interfaces&amp;quot;;


export async function handleBlock(block: SubstrateBlock): Promise&amp;lt;void&amp;gt; {
    let record = new StarterEntity(block.block.header.hash.toString());
    record.blockHeight = block.block.header.number.toNumber();
    await record.save();
}&lt;/pre&gt;
  &lt;p id=&quot;kqGv&quot;&gt;После того, как вы отредактируете данный файл, сохраните его, и закройте.&lt;/p&gt;
  &lt;p id=&quot;KpQ3&quot;&gt;Далее, переходим к следующему файлу &lt;strong&gt;project.yaml&lt;/strong&gt;, для этого идем по иерархии:&lt;/p&gt;
  &lt;p id=&quot;GLLK&quot;&gt;HelloWorld -&amp;gt; project.yaml&lt;/p&gt;
  &lt;p id=&quot;YYyJ&quot;&gt;&lt;br /&gt;Поскольку мы удалили handleEvent и handleCall из файла &lt;strong&gt;mappingHandler.ts&lt;/strong&gt;, мы должны удалить их также из файла &lt;strong&gt;project.yaml&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;if3b&quot;&gt;&lt;br /&gt;Файл&lt;strong&gt; project.yaml&lt;/strong&gt; должен выглядеть так:&lt;/p&gt;
  &lt;pre id=&quot;GmJ6&quot;&gt;specVersion: 0.0.1
description: &amp;#x27;&amp;#x27;
repository: &amp;#x27;&amp;#x27;
schema: ./schema.graphql
network:
  endpoint: wss://polkadot.api.onfinality.io/public-ws
  dictionary: https://api.subquery.network/sq/subquery/dictionary-polkadot
dataSources:
  - name: main
    kind: substrate/Runtime
    startBlock: 1
    mapping:
      handlers:
        - handler: handleBlock
          kind: substrate/BlockHandler&lt;/pre&gt;
  &lt;p id=&quot;qlEL&quot;&gt;Точно также, сохраняем, закрываем, переходим дальше.&lt;/p&gt;
  &lt;p id=&quot;jMZq&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;KCP1&quot;&gt;Необходимо изменить файл &lt;strong&gt;schema.graphql &lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;lwtR&quot;&gt;(его иерархия: HelloWorld -&amp;gt; schema.graphql)&lt;/p&gt;
  &lt;p id=&quot;oLxA&quot;&gt;Файл &lt;strong&gt;schema.graphql&lt;/strong&gt; по умолчанию будет содержать 5 полей. Мы можем удалить поля со 2 по 5, и изменим &amp;quot;field1&amp;quot; на &amp;quot;blockHeight&amp;quot;.&lt;/p&gt;
  &lt;p id=&quot;faOm&quot;&gt;Файл в итоге должен выглядеть так:&lt;/p&gt;
  &lt;pre id=&quot;SB9n&quot;&gt;type StarterEntity @entity {

  id: ID! #id is a required field

  blockHeight: Int!

}&lt;/pre&gt;
  &lt;p id=&quot;meog&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ee2E&quot;&gt;С Редактированием файлов закончили&lt;/p&gt;
  &lt;p id=&quot;N8TZ&quot;&gt;Снова заходим в PuTTY &lt;/p&gt;
  &lt;p id=&quot;r2Fe&quot;&gt;&lt;strong&gt;ВАЖНО!&lt;/strong&gt; Убедитесь что Вы находитесь в директории вашего проекта, у меня это выглядит так:&lt;/p&gt;
  &lt;figure id=&quot;OD1D&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/48/d7/48d7ccb4-b410-4cb3-a4de-98deaa9c3c30.png&quot; width=&quot;662&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;jupW&quot;&gt;Устанавливаем зависимости:&lt;/p&gt;
  &lt;p id=&quot;3yIE&quot;&gt;&lt;code&gt;npm install&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;vsPw&quot;&gt;&lt;code&gt;npm run-script codegen&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;Xe73&quot;&gt;Вы должны увидеть новую папку с двумя новыми файлами:&lt;/p&gt;
  &lt;ul id=&quot;oNQ9&quot;&gt;
    &lt;li id=&quot;GrPQ&quot;&gt;index.ts&lt;/li&gt;
    &lt;li id=&quot;H8oh&quot;&gt;StarterEntity.ts&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;9bSN&quot;&gt;Если вы их видите, можно двигаться дальше:&lt;/p&gt;
  &lt;p id=&quot;QMbX&quot;&gt;Следующим шагом будет сборка проекта с помощью команды:&lt;/p&gt;
  &lt;p id=&quot;4ytH&quot;&gt;&lt;code&gt;npm run-script build&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;rN2W&quot;&gt;Запускаем команду Docker:&lt;/p&gt;
  &lt;p id=&quot;TwTv&quot;&gt;&lt;code&gt;docker-compose pull &amp;amp;&amp;amp; docker-compose up&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;i7WA&quot;&gt;Если вы выполняете данное задание на удаленном сервере, используйте IP вашего сервера.&lt;/p&gt;
  &lt;p id=&quot;GNbU&quot;&gt;В новой вкладке браузера вбиваем &lt;code&gt;вашIP:3000&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;anGG&quot;&gt;Пример, у меня это выглядит так:&lt;/p&gt;
  &lt;p id=&quot;3RVS&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;4Lpg&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/14/65/146565c0-4d94-4284-8790-26dd94c0e4b9.png&quot; width=&quot;834&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;THpm&quot;&gt;в левой части экрана, Вам необходимо написать запрос, который должен выглядеть так:&lt;/p&gt;
  &lt;pre id=&quot;ipxF&quot;&gt;{
   query{
      starterEntities(last:10, orderBy: ID_ASC){
         nodes{
            blockHeight
         }
      }
   }
}&lt;/pre&gt;
  &lt;p id=&quot;QDRf&quot;&gt;После этого запустите Ваш запрос. В правой стороне экрана Вы должны увидеть что-то похожее как на скрине:&lt;/p&gt;
  &lt;figure id=&quot;6y8Y&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/35/0c/350c54f6-95a2-40ea-b93d-e396bfeca218.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;bamr&quot;&gt;Возвращаемся в PuTTY и нажимаем Ctrl+C - тем самым останавливаем Docker.&lt;/p&gt;
  &lt;p id=&quot;RT41&quot;&gt;Необходимо наш проект залить на GitHub.&lt;/p&gt;
  &lt;p id=&quot;hUi5&quot;&gt;В консоли на сервере пишем команды:&lt;/p&gt;
  &lt;p id=&quot;ERdm&quot;&gt;&lt;code&gt;sudo apt install git&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;y6Nz&quot;&gt;&lt;code&gt;git config --global user.name &amp;quot;ИМЯ ИЗ ГИТХАБА&amp;quot;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;iFsI&quot;&gt;&lt;code&gt;git config --global user.email &amp;quot;свой email&amp;quot;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;Q0mV&quot;&gt;&lt;code&gt;eval ssh-agent -s&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;lPZk&quot;&gt;Далее выполняем команду:&lt;/p&gt;
  &lt;p id=&quot;7NnQ&quot;&gt;&lt;code&gt;ssh-keygen -t rsa -b 4096 -C &amp;quot;&lt;a href=&quot;mailto:my@emailaddress.com&quot; target=&quot;_blank&quot;&gt;my@emailaddress.com&lt;/a&gt;&amp;quot; -f ~/.ssh/id_rsa&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;NiMW&quot;&gt;где вместо &lt;a href=&quot;mailto:my@emailaddress.com&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;my@emailaddress.com &lt;/code&gt;&lt;/a&gt;подставляем значение своего email адреса&lt;/p&gt;
  &lt;p id=&quot;jsi8&quot;&gt;После этого два раза жмем Enter.&lt;/p&gt;
  &lt;p id=&quot;3TY1&quot;&gt;&lt;code&gt;cat ~/.ssh/id_rsa.pub&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;zbeI&quot;&gt;Команда указанная выше позволит Вам получить ваш ключ SSH&lt;/p&gt;
  &lt;figure id=&quot;bzpG&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ec/25/ec25bb12-498d-4a46-a7f8-840971f15d2c.png&quot; width=&quot;1187&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;DfG8&quot;&gt;Копируйте данный ключ от начала до конца.&lt;/p&gt;
  &lt;p id=&quot;MSUu&quot;&gt;Направляемся в &lt;a href=&quot;http://github.com&quot; target=&quot;_blank&quot;&gt;github.com&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;f6p3&quot;&gt;Создаем репозиторий&lt;/p&gt;
  &lt;figure id=&quot;DQ6n&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/cc/05/cc0533ef-3fb1-4c13-b3b0-e36f38d0fe43.png&quot; width=&quot;1317&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;G5rd&quot;&gt;В правом верхнем углу нажимаем на меню (круглый значок)&lt;/p&gt;
  &lt;p id=&quot;4X7A&quot;&gt;Переходим Settings -&amp;gt; SSH and GPG keys -&amp;gt; New SSH key&lt;/p&gt;
  &lt;p id=&quot;8xtM&quot;&gt;Вводим свой ключ, который мы копировали в консоли.&lt;/p&gt;
  &lt;p id=&quot;icPN&quot;&gt;Возвращаемся в PuTTY и пишем:&lt;/p&gt;
  &lt;pre id=&quot;LlM2&quot;&gt;git init&lt;/pre&gt;
  &lt;p id=&quot;6c4W&quot;&gt;&lt;code&gt;git remote add origin&lt;a href=&quot;https://github.com/&quot; target=&quot;_blank&quot;&gt;git@github.com&lt;/a&gt;:&amp;lt;ИмяГитАккаунта&amp;gt;/&amp;lt;имя репозитория&amp;gt;.git&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;FpPM&quot;&gt;например, &lt;code&gt;git remote add origin &lt;a href=&quot;https://github.com/AlexKa/AlexKa2.git&quot; target=&quot;_blank&quot;&gt;https://github.com/AlexKa/AlexKa2.git&lt;/a&gt;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;lTaP&quot;&gt;Далее:&lt;/p&gt;
  &lt;p id=&quot;x124&quot;&gt;&lt;code&gt;git add .&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;W3Ch&quot;&gt;&lt;code&gt;git commit -m &amp;#x27;create project&amp;#x27;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;kr5C&quot;&gt;&lt;code&gt;git push origin master&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;1CQD&quot;&gt;После этого вы должны ввести свой никнейм в гитхаб и пароль. &lt;/p&gt;
  &lt;p id=&quot;E2Rd&quot;&gt;Но пароль не от гитхаба а &amp;quot;Personal access token&amp;quot; создать который мы можем перейдя по шагам:&lt;/p&gt;
  &lt;p id=&quot;3mSL&quot;&gt;GitHub -&amp;gt; Menu (Круг справа вверху экрана) -&amp;gt; Settings -&amp;gt; Developer Settings -&amp;gt; Personal Access Token -&amp;gt; Generate new token -&amp;gt; Вводим пароль от Гитхаб, и затем сгенерированный код вставляем в PuTTY в поле Password.&lt;/p&gt;
  &lt;p id=&quot;VDVp&quot;&gt;Переходим на сайт &lt;a href=&quot;https://project.subquery.network/&quot; target=&quot;_blank&quot;&gt;https://project.subquery.network/&lt;/a&gt; и входим через него в свой GitHub.&lt;/p&gt;
  &lt;p id=&quot;w9dQ&quot;&gt;Нажимаем Create Project и заполняем:&lt;/p&gt;
  &lt;figure id=&quot;Crgr&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d0/13/d013320b-0279-4857-9dd3-1a0893279689.png&quot; width=&quot;1241&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;f67h&quot;&gt;Cнова нажимаем Create Project -&amp;gt; Deploy -&amp;gt; Deploy. Update&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;BdgI&quot;&gt;&lt;u&gt;&lt;strong&gt;Поздравляю! Первый модуль завершен!&lt;/strong&gt;&lt;/u&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;eVhO&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;v9QL&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;FTLy&quot;&gt;&lt;strong&gt;&lt;u&gt;Модуль № 2&lt;/u&gt;&lt;/strong&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;XKMd&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;d7Oo&quot;&gt;Входим в PuTTY&lt;/p&gt;
  &lt;p id=&quot;hCFq&quot;&gt;Вернемся в корневую папку, выполняем команду&lt;/p&gt;
  &lt;p id=&quot;2WRo&quot;&gt;&lt;code&gt;cd&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;3Ofr&quot;&gt;Заходим в папку SubQl&lt;/p&gt;
  &lt;p id=&quot;dB8i&quot;&gt;&lt;code&gt;cd SubQl&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;Ik8P&quot;&gt;Создаем новый проект:&lt;/p&gt;
  &lt;p id=&quot;2WM5&quot;&gt;&lt;code&gt;sudo subql init --starter AccountBalances&lt;/code&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;FL9Q&quot;&gt;Далее, Вас попросят ввести:&lt;/p&gt;
    &lt;p id=&quot;ghNc&quot;&gt;Git repository - не обязательно.&lt;/p&gt;
    &lt;p id=&quot;XcDP&quot;&gt;RPC endpoint - жмем Enter&lt;/p&gt;
    &lt;p id=&quot;O5Y6&quot;&gt;Authors - Ваше имя&lt;/p&gt;
    &lt;p id=&quot;AXrN&quot;&gt;Description - По желанию краткое описание проекта (своими словами)&lt;/p&gt;
    &lt;p id=&quot;hyBK&quot;&gt;Version - жмем Enter&lt;/p&gt;
    &lt;p id=&quot;hJJZ&quot;&gt;License - жмем Enter&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;3yWZ&quot;&gt;По итогу, Вы должны увидеть такую строку:&lt;/p&gt;
  &lt;pre id=&quot;RoQI&quot;&gt;AccountBalances is ready&lt;/pre&gt;
  &lt;p id=&quot;WKYK&quot;&gt;Переходим в проект:&lt;/p&gt;
  &lt;pre id=&quot;oxxo&quot;&gt;cd AccountBalances&lt;/pre&gt;
  &lt;p id=&quot;gnw2&quot;&gt;Переходим в WinSCP и начинаем редактировать файлы:&lt;/p&gt;
  &lt;p id=&quot;hN3j&quot;&gt;Начинаем с файла schema.graphql.&lt;/p&gt;
  &lt;p id=&quot;sGgl&quot;&gt;Файл schema.graphql по умолчанию содержит 5 полей. Переименуйте &lt;code&gt;field2&lt;/code&gt; в &lt;code&gt;account&lt;/code&gt; и &lt;code&gt;field3&lt;/code&gt; в &lt;code&gt;balance&lt;/code&gt;. Переименуйте &lt;code&gt;entity&lt;/code&gt; в &lt;code&gt;Account&lt;/code&gt;. Остальные поля можно удалить.&lt;/p&gt;
  &lt;p id=&quot;Ev43&quot;&gt;Файл schema.graphql после изменений должен выглядеть так:&lt;/p&gt;
  &lt;pre id=&quot;GdIV&quot;&gt;type Account @entity {

  id: ID! #id is a required field

  account: String #This is a Polkadot address

  balance: BigInt #This is the amount of DOT

}&lt;/pre&gt;
  &lt;p id=&quot;KV7n&quot;&gt;Исправляем project.yaml&lt;/p&gt;
  &lt;p id=&quot;N1Ez&quot;&gt;Поскольку мы фокусируемся только на &lt;code&gt;Events&lt;/code&gt;, давайте удалим &lt;code&gt;handleBlock&lt;/code&gt; и &lt;code&gt;handleCall&lt;/code&gt; из mappings файл. Файл project.yaml должен выглядеть так:&lt;/p&gt;
  &lt;pre id=&quot;WvSt&quot;&gt;specVersion: 0.0.1
description: AccountBalances
repository: &amp;#x27;&amp;#x27;
schema: ./schema.graphql
network:
  endpoint: wss://polkadot.api.onfinality.io/public-ws
  dictionary: https://api.subquery.network/sq/subquery/dictionary-polkadot
dataSources:
  - name: main
    kind: substrate/Runtime
    startBlock: 1
    mapping:
      handlers:
        - handler: handleEvent
          kind: substrate/EventHandler
          filter:
            module: balances
            method: Deposit&lt;/pre&gt;
  &lt;p id=&quot;12NX&quot;&gt;Корректируем mappings файлы&lt;/p&gt;
  &lt;p id=&quot;3qCd&quot;&gt;Путь: AccountBalances -&amp;gt; src -&amp;gt; mappings -&amp;gt; mappingHandlers.ts&lt;/p&gt;
  &lt;p id=&quot;3pNq&quot;&gt;Опять же, поскольку мы фокусируемся только на handleEvent,&lt;br /&gt;удалим оставшиеся функции:&lt;/p&gt;
  &lt;pre id=&quot;Gvgt&quot;&gt;import {SubstrateExtrinsic,SubstrateEvent,SubstrateBlock} from &amp;quot;@subql/types&amp;quot;;
import {Account} from &amp;quot;../types&amp;quot;;
import {Balance} from &amp;quot;@polkadot/types/interfaces&amp;quot;;

export async function handleEvent(event: SubstrateEvent): Promise&amp;lt;void&amp;gt; {
    const {event: {data: [account, balance]}} = event;
    //Create a new Account entity with ID using block hash
	let record = new
    Account(event.extrinsic.block.block.header.hash.toString());
    //Assign the Polkadot address to the account field
    record.account = account.toString();
    //Assigh the balance to the balance field &amp;quot;type cast as Balance&amp;quot;
    record.balance = (balance as Balance).toBigInt();
    await record.save();
}&lt;/pre&gt;
  &lt;p id=&quot;wLXj&quot;&gt;Закончили с редакцией файлов, возвращаемся в PuTTY и пишем команды:&lt;/p&gt;
  &lt;pre id=&quot;Qc8q&quot;&gt;npm install&lt;/pre&gt;
  &lt;pre id=&quot;c52x&quot;&gt;npm run-script codegen&lt;/pre&gt;
  &lt;pre id=&quot;rV2a&quot;&gt;npm run-script build&lt;/pre&gt;
  &lt;p id=&quot;Tn31&quot;&gt;Запускаем команду Docker:&lt;/p&gt;
  &lt;p id=&quot;gjvZ&quot;&gt;&lt;code&gt;docker-compose pull &amp;amp;&amp;amp; docker-compose up&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;erT6&quot;&gt;Если вы выполняете данное задание на удаленном сервере, используйте IP вашего сервера.&lt;/p&gt;
  &lt;p id=&quot;dSod&quot;&gt;В новой вкладке браузера вбиваем &lt;code&gt;вашIP:3000&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;nHqC&quot;&gt;Пример, у меня это выглядит так:&lt;/p&gt;
  &lt;figure id=&quot;Eu7k&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/14/65/146565c0-4d94-4284-8790-26dd94c0e4b9.png&quot; width=&quot;834&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;mzSl&quot;&gt;в левой части экрана, Вам необходимо написать запрос, который должен выглядеть так:&lt;/p&gt;
  &lt;pre id=&quot;Q8zb&quot;&gt;query {
   accounts(first:10 orderBy:BALANCE_DESC){
      nodes{
         account
         balance
      }
   }
}&lt;/pre&gt;
  &lt;p id=&quot;yowQ&quot;&gt;После этого запустите Ваш запрос. В правой стороне экрана Вы должны увидеть что-то похожее как на скрине:&lt;/p&gt;
  &lt;figure id=&quot;dFrc&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/52/88/5288cc17-bcbc-4024-82c4-ed652c384b4b.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;oRvT&quot;&gt;Возвращаемся в PuTTY и нажимаем Ctrl+C - тем самым останавливаем Docker.&lt;/p&gt;
  &lt;p id=&quot;eCVk&quot;&gt;Необходимо наш проект залить на GitHub.&lt;/p&gt;
  &lt;p id=&quot;tNWI&quot;&gt;Переходим в GitHub и создаем новый репозиторий, точно также, как мы это делали для HelloWorld.&lt;/p&gt;
  &lt;p id=&quot;H5GH&quot;&gt;Затем переходим в консоль и пишем:&lt;/p&gt;
  &lt;p id=&quot;J77W&quot;&gt;&lt;code&gt;git init&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;4vkA&quot;&gt;&lt;code&gt;git remote add origin&lt;a href=&quot;https://github.com/&quot; target=&quot;_blank&quot;&gt;git@github.com&lt;/a&gt;:&amp;lt;ИмяГитАккаунта&amp;gt;/&amp;lt;имя репозитория&amp;gt;.git&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;jtfG&quot;&gt;например &lt;code&gt;git remote add origin &lt;a href=&quot;https://github.com/AlexKa/AlexKa2.git&quot; target=&quot;_blank&quot;&gt;https://github.com/AlexKa/AlexKa2.git&lt;/a&gt;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;SzQT&quot;&gt;далее&lt;/p&gt;
  &lt;p id=&quot;KOjl&quot;&gt;&lt;code&gt;git add .&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;oR8J&quot;&gt;&lt;code&gt;git commit -m &amp;#x27;create project&amp;#x27;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;PwD8&quot;&gt;&lt;code&gt;git push origin master&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;FoL1&quot;&gt;Затем переходим на сайт &lt;a href=&quot;https://project.subquery.network/&quot; target=&quot;_blank&quot;&gt;https://project.subquery.network/&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;CvH5&quot;&gt;Снова нажимаем Create Project и заполняем все также, как мы делали для HelloWorld.&lt;/p&gt;
  &lt;p id=&quot;OZov&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;xBb4&quot;&gt;ГОТОВО!&lt;/p&gt;
  &lt;p id=&quot;ZBk4&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(55,  86%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;FFZH&quot;&gt;&lt;strong&gt;&lt;u&gt;Поздравляю! Вы выполнили задание второго модуля!&lt;/u&gt;&lt;/strong&gt;&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;7vUx&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;u9iS&quot;&gt;Гайд подготовил Александр Черняк. &lt;/p&gt;
  &lt;p id=&quot;fk0U&quot;&gt;Discord: Alexander Chernyak#3490&lt;/p&gt;
  &lt;p id=&quot;oAaL&quot;&gt;Информация по инициализации проекта и настройке Гитхаба взята у @AlexKa и @Motiio&lt;/p&gt;

</content></entry></feed>