Ноды
November 28, 2021

SubQuery Module 2

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

Все необходимые инструменты для выполнения данного задания можете взять отсюда https://teletype.in/@leader2869/Modul1 , если вы уже выполнили 1 модуль идем дальше)

Входим в MobaXterm

Возвращаемся в корневую папку, командой

cd

Далее заходим в папку SubQl

cd SubQl

и создаем новый проект:

sudo subql init --starter AccountBalances

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

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

Заходим в наш проект, командой:

cd AccountBalances

ТЕПЕРЬ СНОВА ОЧЕНЬ ВАЖНАЯ ЧАСТЬ ПРОЕКТА!!!! НЕОБХОДИМО ЗАМЕНИТЬ СОДЕРЖИМОЕ 3 ФАЙЛОВ В ПРОЕКТЕ, делаем по аналогии первого модуля
Для этого нам понадобиться программа которую мы скачали вот тут - https://winscp.net/eng/download.php.

устанавливаем себе на компа, подключаемся к арендованному серверу по аналогии с первым модулем, находим и полностью меняем содержимое 3 файлов. путь к файла AccountBalances -> src ->mappings ->

файл mappingHandlers.ts

import {SubstrateExtrinsic,SubstrateEvent,SubstrateBlock} from "@subql/types";
import {Account} from "../types";
import {Balance} from "@polkadot/types/interfaces";

export async function handleEvent(event: SubstrateEvent): Promise<void> {
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 "type cast as Balance"
record.balance = (balance as Balance).toBigInt();
await record.save();
}

AccountBalances -> src ->

файл project.yaml

specVersion: 0.0.1
description: AccountBalances
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: handleEvent
kind: substrate/EventHandler
filter:
module: balances
method: Deposit

AccountBalances -> src ->

файл schema.graphql

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

}

Закончили с редактированием файлов, возвращаемся в MobaXterm и пишем следующие команды:

npm install

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 {
accounts(first:10 orderBy:BALANCE_DESC){
nodes{
account
balance
}
}
}

Жмем на кнопку по центру и в правой колонке увидим похожий текст как на картинке

Возвращаемся в MobaXterm и нажимаем Ctrl+C - тем самым останавливаем нашу ноду

Теперь снова необходимо наш проект залить на GitHub.

Переходим в GitHub и создаем новый репозиторий, точно также, как мы это делали для HelloWorld, только теперь указываем новое имя проекта, к примеру Modul2

Затем переходим в консоль и пишем:

git init

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

в моем случае git remote add origin https://github.com/leader2869/modul2.git вы же указываете свои данные

далее

git add .

git commit -m 'create project'

git push origin master

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

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

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

Затем переходим на сайт https://project.subquery.network/

Снова нажимаем Create Project и заполняем все также, как мы делали для HelloWorld. указываем только новое имя репозитория, к примеру Modul2

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

УРА!!!! МЫ ВЫПОЛНИЛИ ВТОРОЕ ЗАДАНИЕ

Все ссылки на репозитории копируем себе в блокнот, они нам будут необходимы когда будем отправлять форму для получения статуса спартанца , ссылка на форму:

https://tally.so/r/w88Plw

Гайд подготовил Виталий Литвинюк

Discord: leader#2869

За помощь в подготовке данного гайда выражаю @chernyaka

@elrmcfteam