Ноды
November 27, 2021

SubQuery Module 1

Выполнение 1 модуля для получения статуса Спартанца в проекте SubQuery

Что нам понадобиться для успешного запуска модуля:

  • Сервер - арендуем любой самый дешевый сервер, он на нам необходим исключительно для запуска ноды, далее мы будем его гасить. если используем Hetzner подойдет даже CX11 за 5 евро в месяц, учитывая , что на запуск нам понадобиться максимум пару часов в итого заплатим 10 центов.
  • Putty или MobaXterm тут дело каждого, мне больше нравиться MobaXterm скачать можно тут https://mobaxterm.mobatek.net/download.html
  • WinSCP при помощи данной приложухи без проблем закинем необходимые нам файлы. одним словом обязательно к установки, качаем тут - https://winscp.net/eng/download.php
  • GitHub тут мы будем хранить наши результаты работы . регистрация тут -https://github.com

Module 1 - начинаем установку

Подключаемся к наше арендованному серверу через MobaXterm

1. Для начала обновляем пакеты используя команду (все команды просто копируем с гайда и при помощи правой кнопки мыши вставляем в MobaXterm ):

sudo apt update

и нажимаем Enter по аналогии мы будем вводить все последующие команды

2. Ожидаем пока обновятся все пакеты и вводим следующие команды

apt install nodejs - нас попросят подтвердить действие, нажимаем Y и Enter

apt install npm - так же подтверждаем Y и Enter

3. Далее меняем версию на 14.18.0

sudo npm install -g n

n install 14.18.0

n

после того как мы введем команду "n" у нас выскачит вот такое окно:

нажимаем Enter тем самым соглашаемся поменять версию на v14.18.0

4. Опять обновляемся:

npm install npm -g

5. устанавливаем докер:

apt install docker-compose - нас попросят подтвердить действие, нажимаем Y и Enter

6. Устанавливаем subql/cli:

npm install -g @subql/cli - если выскачит ошибка не обращаем внимания

7. Создаем папку:

mkdir SubQl

8. Входим в нее :

cd SubQl

9. Приступаем к созданию проекта:

sudo subql init --starter HelloWorld

после того как вставим команду "sudo subql init --starter HelloWorld" нас попросят ввести информацию :

  • Git repository - жмем просто Enter
  • RPC endpoint - жмем Enter и ждем секунд 5-10
  • Authors - вводим Ваше имя (к примеру я ввожу ник дискорда leader2869)
  • Description - жмем просто Enter
  • Version - жмем Enter
  • License - жмем Enter

Если видим вот такую строчку, значит делаем все правильно:

10. Двигаемся дальше, заходим в наш проект

cd HelloWorld

ТЕПЕРЬ ОЧЕНЬ ВАЖНАЯ ЧАСТЬ ПРОЕКТА!!!! НЕОБХОДИМО ЗАМЕНИТЬ СОДЕРЖИМОЕ 3 ФАЙЛОВ В ПРОЕКТЕ.

Для этого нам понадобиться программа которую мы скачали вот тут - https://winscp.net/eng/download.php.

устанавливаем себе на компа, подключаемся к арендованному серверу

1- нажимаем новое подключение

2 - пишем IP aдрес VPS сервера

3- имя пользователя (стандартно root )

4- пароль который пришел нам на почту при аренде сервера(если не меняли)

5 - сохраняем подключение

После того как сохранили себе подключение нажимаем войти

После подключения к серверу нам необходимо полностью изменить 3 файла,а именно находим файл project.yaml.

путь к нему root->SubQk->HelloWorld-> project.yaml

11. открываем файл и полностью удаляем содержимое и вставляем следующий код:

specVersion: 0.0.1
description: ''
repository: ''
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

12. сохраняем файл и теперь ищем файл в этой же папке с названием schema.graphql

открываем файл и полностью удаляем содержимое и вставляем следующий код:

type StarterEntity @entity {

id: ID! #id is a required field

blockHeight: Int!

}

13. и последний файл mappingHandler.ts находится по следующему пути

root->SubQk->HelloWorld->src->mappings->mappingHandler.ts

открываем файл и полностью удаляем содержимое и вставляем следующий код:

import {SubstrateExtrinsic,SubstrateEvent,SubstrateBlock} from "@subql/types"; import {StarterEntity} from "../types"; import {Balance} from "@polkadot/types/interfaces"; export async function handleBlock(block: SubstrateBlock): Promise<void> { let record = new StarterEntity(block.block.header.hash.toString()); record.blockHeight = block.block.header.number.toNumber(); await record.save();

}

cохраняем файл и на этом с редактированием в этом модуле закончили!!

14. открываем снова наш MobaXterm

ОЧЕНЬ ВАЖНО!!!!! главное, что бы вы находитесь в директории нашего проекта, это должно выглядеть вот так:

Если находимся в нужной нам директории переходим сразу к установки зависимостей, если вдруг вы в корне пути , пишем пункт 1 и 2, а потом идем к установки зависимостей

пункт 1 - cd SubQl

пункт 2- cd HelloWorld

15. УСТАНОВКА ЗАВИСИМОСТЕЙ

npm install

ждем пока установится (может выдать ошибку, не обращаем внимания) и идем

16. дальше

npm run-script codegen

npm run-script build

docker-compose pull && docker-compose up

далее открываем браузер на вашем компьютере и вписываем следующее:

http:\\ IP адрес вашего арендованного VPS сервера:3000

пример: http:\\65.108.59.163:3000

должно открыться следующее окно :

в левой его части пишем следующий код (копируем с гайда и вставляем) :

{
query{
starterEntities(last:10, orderBy: ID_ASC){
nodes{
blockHeight
}
}
}
}

после вставки и нажатия кнопки (указано стрелкой) должно появиться в правом окне примерно похожий текст, это означает, что задание мы выполнили правильно и теперь неjбходимо залить его на GitHub.

вкладку можем закрыть, возвращаемся обратно MobaXterm и нажимаем Ctrl+C тем самым останавливаем нашу ноду.

17. дальше пишем следующие команды

sudo apt install git

git config --global user.name "ИМЯ ИЗ ГИТХАБА"

указываем ваше имя на GitHabe которое вы зарегистрировали !! ковычки оставляем!!! ,пример:

git config --global user.name "leader2869"

18. далее

git config --global user.email "свой email" - указываем свой E-mail !! ковычки оставляем!!!

eval ssh-agent -s

ssh-keygen -t rsa -b 4096 -C "свой email" -f ~/.ssh/id_rsa

опять не забываем вставить свой e-mail

ssh-keygen -t rsa -b 4096 -C "vitaly.create@gmail.com" -f ~/.ssh/id_rsa

далее жмем 3 подряд раза Enter

cat ~/.ssh/id_rsa.pub

и нам выдаст ваш SSH ключ

копируем все что выделено красным и записываем куда нибудь в блокнот.

далее открываем в вашем браузере сайт

https://github.com/

19.Создаем новый репозиторий:

20. Далее вводим имя названия репозитория и выбираем Public и жмем create repository

21. Далее переходим в настройки

22. теперь добавляем ключ SSH ключ который мы скопировали в терминале

23. вставляем ключ и жмем Add SSH key:

24. Теперь создаем свой Personal access tokens который будем использовать и в первом и втором модуле:

Идем по пути Settings -> Developer Settings -> Personal Access Token -> Generate new token

25. Даем название своему токену, выбираем период который он будет действовать, выбираем галочки как на скрине и создаем его.

26. ВНИМАНИЕ!!! После того как мы нажмем Generate token нам покажут acess token один раз, после этого нигде увидеть мы его не сможем, поэтому сохраняем и не теряем, тем более он нам сейчас понадобиться.

27. Возвращаемся в наш терминал и пишем следующие команды:

git init

git remote add origin https://github.com/ник_гитхаб/название_репозитория.git

не забываем изменить ник гитхаба и названия вашего репозитория, полностью готовую ссылку вы можете взять тут:

28. Двигаемся дальше

git add .

git commit -m 'create project'

git push origin master

29. далее вас попросит ввести свой ник на GitHub, в моем случае leader2869 и жмем Enter

и теперь вводим наш acess token и жмем Enter

Если видите эту строку, значит вы всё правильно подключили
* [new branch] master -> master.

30. Осталось совсем чуть чуть, заходим на сайт https://project.subquery.network/ и логинимся через GitHub

Создаем новый проект- Create Project.

Заполняем Project Name и вставляем ссылку на свой репозиторий и нажимаем Create Ptoject

31. Дальше будут два таких поля, жмем Deploy и внутри еще одна кнопка Deploy update%

ПОЗДРАВЛЯЮ!!! ВЫ ЗАВЕРШИЛИ ПЕРВЫЙ МОДУЛЬ!!!!