Често задавани въпроси

... 2022-10-5 Less than 1 minute

# Често задавани въпроси

# Какво е SubQuery?

SubQuery представлява блокчейн индексатор на данни с отворен код за разработчици, който предоставя бързи, гъвкави, надеждни и децентрализирани API за управление на водещи мулти-чейн приложения.

Нашата цел е да спестим време и пари на разработчиците, като елиминираме необходимостта от изграждане на собствено решение за индексиране. Затова, те ще могат напълно да се съсредоточат върху разработването на своите приложения. SubQuery помага на разработчиците да създават децентрализираните продукти от бъдещето.

Управлявана услуга на SubQuery

SubQuery също така предоставя безплатен хостинг на проекти за разработчици. Нашата управлявана услуга премахва отговорността за управление на инфраструктурата, така че разработчиците получават възможността да правят това, което правят най-добре – да изграждат. Научете повече тук.

Мрежата на SubQuery

SubQuery Network позволява на разработчиците напълно да децентрализират своят инфраструктурен стек. Това е най-отворена, производителна, надеждна и мащабируема услуга за данни за dApps. SubQuery Network индексира и предоставя данни за глобалната общност по стимулиран начин, който подлежи на проверка. След като публикувате вашия проект в SubQuery Network, всеки получава възможност да го индексира и хоства - предоставяйки данни на потребителите по целия свят по-бързо и надеждно.

Повече информация тук.

# Кой е най-добрият начин да стартирате работа със SubQuery?

Най-добрият начин да започнете със SubQuery е да опитате нашето ръководство за употреба Hello World. Това е просто 5-минутен бърз преглед на ръководството. Изтеглете стартовия шаблон, създайте проекта, използвайте Docker, за да стартирате нодата на вашия локален хост и изпълнете проста заявка.

# По какъв начин мога да допринеса или да дам обратна връзка към SubQuery?

Ние харесваме приноса и обратната връзка от общността. За да използвате с ваш код, направете "форк" на интересуващото ви хранилището и направете промените си. След това изпратете PR или Pull Request. Не забравяйте да тествате също. Проверете също така нашето ръководство за участие.

За да дадете обратна връзка, свържете се с нас на hello@subquery.network или преминете към нашия канал на discord (opens new window).

# Колко струва хостването на моя проект в SubQuery Projects?

Тази услуга се предоставя на общността напълно безплатно! Можете да хоствате първите си два SubQuery проекта абсолютно безплатно!

# Какво представляват слотовете за разполагане?

Слотовете за внедряване са функция в SubQuery Projects (opens new window), която е еквивалент на среда за разработка. Например, във всяка софтуерна организация обикновено има среда за разработка и среда за производство като минимум (игнорирайки localhost). Обикновено се включват допълнителни среди, като сценична и предварителна продукция или дори QA, в зависимост от нуждите на организацията и нейната настройка за развитие.

В момента SubQuery има два налични слота. Слот за подготовка и слот за производство. Това позволява на разработчиците да разположат своите SubQuery в промежутъчната среда и всичко да върви добре, да се „повишат до производство“ с едно натискане на бутон.

# Какво е предимството на етапния слот?

Основното предимство от използването на етапен слот е, че ви позволява да подготвите ново издание на вашия проект SubQuery, без да го излагате публично. Можете да изчакате междинният слот да преиндексира всички данни, без това да повлияе на производствените ви приложения.

Промежутъчният слот не се показва публично в Explorer (opens new window) и има уникален URL адрес, който се вижда само от вас. И разбира се, отделната среда ви позволява да тествате новия си код, без да засягате производството.

# Какви са външните характеристики на Polkadot?

Ако вече сте запознати с блокчейн концепциите, можете да мислите за външните елементи като сравними с транзакциите. По-формално обаче, външната е част от информацията, която идва извън веригата и е включена в блок. Има три категории външни елементи. Те са присъщи, подписани транзакции и неподписани транзакции.

Присъщите външни елементи са части от информация, които не са подписани и са вмъкнати в блок само от автора на блока.

Подписани външни транзакции са транзакции, които съдържат подпис на акаунта, който е издал транзакцията. Те трябва да платят такса, за да бъде включена транзакцията във веригата.

Външни неподписани транзакции са транзакции, които не съдържат подпис на акаунта, който е издал транзакцията. Неподписаните външни транзакции трябва да се използват внимателно, защото никой не плаща такса, защото те не са подписани. Поради това на опашката за транзакции липсва икономическа логика за предотвратяване на спам.

За повече информация щракнете тук (opens new window).

# Каква е крайната точка за мрежата Kusama?

Network.endpoint за мрежата Kusama е wss://kusama.api.onfinality.io/public-ws.

# Каква е крайната точка за основната мрежа на Polkadot?

Network.endpoint за мрежата Polkadot е wss://polkadot.api.onfinality.io/public-ws.

# Как да разработя итеративно моята проектна схема?

Известен проблем при разработването на променяща се схема на проект е, че при стартиране на вашия възел на подзаявка за тестване, индексираните по-рано блокове ще бъдат несъвместими с новата ви схема. За да се разработят итеративно схеми, индексираните блокове, съхранени в базата данни, трябва да бъдат изчистени, това може да се постигне чрез стартиране на вашия възел с флага --force-clean. Например:

subql-node -f . --force-clean --subquery-name=<project-name>
1

Обърнете внимание, че се препоръчва да използвате --force-clean, когато променяте startBlock в манифеста на проекта (project.yaml), за да започнете преиндексиране от конфигурирания блок. Ако startBlock се промени без --force-clean на проекта, тогава индексаторът ще продължи да индексира с предварително конфигурирания startBlock.

# Как мога да оптимизирам проекта си, за да го направя по-бърз?

Производителността решаващ фактор във всеки един проект. За щастие има няколко неща, които можете да направите, за подобряването и. Представяме Ви списък с някои предложения:

  • Избягвайте използването на блокови манипулатори, когато е възможно.
  • Заявявайте само необходимите полета.
  • Опитайте се да използвате условия на филтъра, за да намалите размера на отговора. Създавйте възможно най-специфични филтри, за да избегнете заявки за ненужни данни.
  • За големи таблици с данни избягвайте да правите заявки totalCount без допълнителни условия.
  • Добавете индекси към полетата на обекти за изпълнение на заявките, това е особено важно за проекти с историческа важност.
  • Задайте началния блок в момента, в който контракта е инициализиран.
  • Винаги използвайте dictionary (можем да ви помогнем да създадете такъв за вашата нова мрежа).
  • Оптимизирайте дизайна на вашата схема, организирайте я по възможно най-опростен начин.
    • Опитайте се да намалите ненужните полета и колони.
    • Създайте толкова индекси, колкото е необхидимо.
  • Използвайте паралелна/групова обработка възможно най-често.
    • Използвайте api.queryMulti() за оптимизиране на Polkadot API повикванията вътре във функциите за картографиране и поисквайте ги периодично. Това е по-бързият начин.
    • Използвайте Promise.all(). В случай на множество асинхронни функции е по-добре да ги изпълните и разрешите паралелно.
    • Ако искате да създадете много обекти в рамките на един манипулатор, можете да използвате store.bulkCreate(entityName: string, entities: Entity[]). Можете да ги създавате паралелно, няма нужда да правите това по отделно.
  • Осъществяването на API повиквания към състояние на заявка може да бъде бавно. Можете да опитате да сведете до минимум повикванията, където е възможно, и да използвате данни за външни/транзакции/събития.
  • Използвайте worker threads, за да преместите обработката на блоковете в собствена работна нишка. Може да се ускори индексирането до 4 пъти (в зависимост от конкретния проект). Можете лесно да активирате това с помощта на flag -workers=<number>. Имайте предвид, че броят на наличните процесорни ядра стриктно ограничава използването на работните потоци. Засега, тези функции са налични само за Substrate и Cosmos и скоро ще бъдат интегрирани към Avalanche.
  • Забележете, че JSON.stringify не подкрепя нативния BigInts. Нашата библиотека за регистриране ще направи това вътрешно, при опит за регистрирате на обект. Търсим заобиколно решение за това.
  • Използвайте удобен филтър modulo, за да стартирате манипулатор само веднъж към определен блок. Този филтър позволява обработка на произволен брой блокове, което е изключително полезно за групиране и изчисляване на данни на зададен интервал. Например, ако модулът е зададен на 50, манипулаторът на блокове ще работи на всеки 50 блока. Той осигурява дори повече контрол върху индексирането на данни на разработчиците и може да бъде внедрен като такъв в манифеста на вашия проект.
Last update: October 5, 2022 01:44