Документація Ноди DSRCH

Повна технічна документація з запуску, налаштування та керування нодою децентралізованого пошуку DSRCH.

v329.11.81 · Chain: dsrch-mainnet-1

Огляд

DSRCH (Decentralized Search Ranking Consensus Hypernetwork) — це спеціалізований блокчейн Layer 1 для децентралізованого веб-пошуку. Кожна нода сканує веб, будує локальний пошуковий індекс, обслуговує запити та отримує токени DSRCH через консенсус Proof-of-Index.

Ключові технології
КомпонентТехнологія
МоваGo 1.26+
БлокчейнCosmos SDK
Мережаlibp2p (GossipSub, DHT, mDNS)
ПошукBluge повнотекстовий рушій
КонсенсусProof-of-Index
КонфігураціяYAML
РозгортанняDocker

Архітектура

HTTP
:8080
P2P
:9090
DSRCH Node
API Server
REST + WebSocket
Explorer / Dashboard
Web Interfaces
Crawler + AutoSeeder
56+ seed sources
Bluge Index
Full-text search engine
libp2p Network Layer
GossipSubDHTmDNSSync
Epoch Manager
Proof-of-Index consensus
DSRCH Blockchain App
srchtokennoderegistryrewardsslashinggovcrawlproofqueryproofindexregistry
ПортПротоколОпис
8080HTTP/HTTPSAPI, Оглядач, Панель, Пошук, Документація
9090TCP/UDPlibp2p P2P мережа

Швидкий старт

Варіант 1: З бінарного файлу

# Збірка з вихідного коду
cd dsrch && go build -o dsrchd ./cmd/dsrchd

# Ініціалізація ноди
./dsrchd init --mode full --port 9090

# Запуск ноди
./dsrchd start --api-port 8080 --epoch-duration 30s

Варіант 2: Docker

# Збірка та запуск
docker build -t dsrch-node .
docker run -d --name dsrch \
  -p 8080:8080 -p 9090:9090 \
  -v dsrch-data:/home/dsrch/.dsrch \
  --restart unless-stopped \
  dsrch-node start --api-port 8080 --epoch-duration 30s

Варіант 3: Docker Compose (тестнет з 3 нод)

docker compose up -d

CLI Довідка

dsrch init

Ініціалізація нової ноди DSRCH. Генерує ключову пару Ed25519 та конфігурацію за замовчуванням.

ПрапорецьЗа замовч.Опис
--modefullРежим ноди: light, full, validator
--port9090P2P порт

Згенеровані файли:

~/.dsrch/
├── config.yaml    # Конфігурація ноди
└── node.key       # Приватний ключ Ed25519 (зберігайте надійно!)

dsrch start

Запуск повної ноди DSRCH з усіма підсистемами.

ПрапорецьЗа замовч.Опис
--api-portfrom configHTTP API порт
--epoch-duration1hТривалість епохи (e.g. 30s для тестнету)
--bootstrapbuilt-in seedsМультиадреси бутстрап-пірів
--crawl-seedURL для автоматичного сканування при старті
--no-seedsfalseВимкнути вбудовані seed-ноди
--external-ipПублічна IP для Docker/NAT
--tls-certШлях до TLS сертифікату
--tls-keyШлях до приватного ключа TLS

dsrch status

Відображення поточного статусу ноди та кількості документів.

Конфігурація

Конфігурація зберігається в ~/.dsrch/config.yaml:

node:
  mode: "full"           # light | full | validator
  dataDir: "/home/user/.dsrch"
  apiPort: 8080

p2p:
  listenPort: 9090
  bootstrapPeers: []
  enableMDNS: true
  enableDHT: true
  externalIP: ""         # Public IP for NAT/Docker

Режими ноди

РежимСкануєІндексуєОбслуговує запитиОтримує токени
lightNoNoЛише ретрансляціяNo
fullYesYesYesYes
validatorYesYesYesТак (більше)

Директорія даних

~/.dsrch/
├── config.yaml      # Конфігурація
├── node.key         # Приватний ключ Ed25519
├── index/           # Повнотекстовий індекс Bluge
├── state.json       # Стан блокчейну
└── query.log        # Журнал пошукових запитів

API Довідка

Base URL: https://api.dsrch.net · Повна інтерактивна документація: api.dsrch.net

Пошук

GET /api/search

Пошук у децентралізованому індексі.

ПараметрТипОпис
qstringПошуковий запит (обовʼязковий)
limitintМакс. результатів (за замовч.: 10, макс.: 100)
curl "https://api.dsrch.net/api/search?q=ukraine&limit=5"

Статус ноди

GET /api/status

Повертає ID ноди, статус, кількість документів, версію та chain ID.

{
  "nodeId": "12D3KooW...",
  "status": "running",
  "documents": 2921,
  "version": "329.11.81",
  "chainId": "dsrch-mainnet-1"
}

Мережа

GET /api/peers

Список підключених P2P пірів.

GET /api/network-stats

Агреговані мережеві статистики всіх пірів.

POST /api/connect

Підключення до конкретного піра за мультиадресою.

Епоха та консенсус

GET /api/epoch

Поточний номер епохи, трекер активності та дані звіту про роботу.

GET /api/rewards

Історія токенових винагород цієї ноди.

Стейкінг

POST /api/stake

Стейкінг токенів DSRCH. Params: nodeId, amount

POST /api/unstake

Зняття токенів зі стейкінгу (з періодом розблокування). Params: nodeId, amount

Управління

GET /api/gov/proposals

Список усіх пропозицій управління.

POST /api/gov/propose

Створити пропозицію. Params: title, description, type, proposer

POST /api/gov/vote

Голосувати за пропозицію. Params: proposalId, voter, vote (yes/no/abstain/veto)

Краулер

POST /api/crawl/add

Додати URL до черги сканування. Params: url, depth, maxPages

curl -X POST "https://api.dsrch.net/api/crawl/add?url=https://example.com&depth=3&maxPages=200"
GET /api/crawl/status

Статус черги краулера та статистика авто-сідера.

Інструменти вебмайстра

POST /api/webmaster/submit · /verify · GET /stats · /domains

Подати URL, підтвердити власність домену, переглянути статистику індексації.

Інші ендпоінти

ЕндпоінтМетодОпис
/api/suggestGETАвтодоповнення
/api/analyticsGETАналітика пошуку
/api/faucetPOSTОтримати 100 тестових токенів DSRCH
/api/shardsGETРозподіл шардів
/api/keysGET/POSTУправління API ключами
/metricsGETМетрики Prometheus
/openapi.jsonGETСпецифікація OpenAPI

P2P Мережа

DSRCH uses libp2p для всього пірингового зв'язку.

Протоколи

ПротоколОпис
/dsrch/search/1.0.0Розподілені пошукові запити
/dsrch/crawl/1.0.0Делегування завдань сканування
/dsrch/sync/1.0.0Реплікація індексу
GossipSub dsrch/v1Трансляція звітів про роботу
GossipSub dsrch/crawl/v1Оголошення сканування

Виявлення пірів

Рушій краулера

Компоненти

КомпонентОпис
CrawlerHTTP краулер з обмеженням частоти
FrontierЧерга пріоритетів для планування URL
ParserHTML парсер (текст, посилання, мета)
DomainFilterБілий/чорний список доменів
RobotsCheckerДотримання robots.txt
SimHashВиявлення близьких дублікатів
SchedulerЧерга завдань з інтеграцією авто-сідера
AutoSeederБезперервний провайдер URL (56+ джерел)
DomainAssignerКонсистентне хешування для розподілу доменів
CrawlCoordinatorРозподілена маршрутизація завдань сканування

Авто-сідер

Забезпечує безперервну індексацію, надаючи нові URL коли черга порожня:

Параметри сканування

ParameterDefaultDescription
Max depth2Глибина переходу за посиланнями
Max pages/job50Сторінок за сесію сканування
Delay300msОбмеження частоти на домен
Timeout/job5 minМакс. тривалість сканування
Max body5 MBОбмеження розміру сторінки
Max redirects3Ліміт ланцюга перенаправлень
User-AgentDSRCHBot/1.0Ідентифікація краулера

Консенсус: Proof-of-Index

DSRCH використовує власний механізм консенсусу Proof-of-Index.

Епохи

Default duration: 1 hour (configurable, 30s для тестнету). At epoch end, each node generates a Work Report:

{
  "nodeId": "12D3KooW...",
  "epoch": 42,
  "pageCount": 150,
  "queriesServed": 89,
  "avgLatency": "15ms",
  "shardsStored": 3,
  "crawlMerkle": "a1b2c3d4..."
}

Процес валідації

  1. Нода сканує сторінки та обслуговує запити впродовж епохи
  2. Активність відстежується через ActivityTracker
  3. В кінці епохи звіт генерується та транслюється через GossipSub
  4. DSRCHApp.ProcessEpochWithValidation валідує всі звіти
  5. Валідні ноди отримують винагороди в токенах DSRCH
  6. Стан зберігається на диск

Модулі блокчейну

МодульОпис
x/srchtokenНативний токен DSRCH — чеканка, трансфери, емісія
x/noderegistryРеєстрація нод, типи, відстеження статусу
x/rewardsРозрахунок та розподіл винагород за епоху
x/slashingМеханізми штрафів для недобросовісних нод
x/govОнчейн-управління — пропозиції, голосування, підрахунок
x/indexregistryВідстежує що проіндексувала кожна нода
x/crawlproofКриптографічні докази сканування
x/queryproofКриптографічні докази обслуговування запитів

Управління

DSRCH має ончейн-управління для оновлення протоколу та зміни параметрів.

Стейкінг та винагороди

Винагороди розподіляються на основі:

Тестнет кран: curl -X POST "https://api.dsrch.net/api/faucet?address=dsrch1..." — отримати 100 безкоштовних токенів DSRCH.

Docker розгортання

# Одна нода
docker build -t dsrch-node .
docker run -d --name dsrch \
  -p 8080:8080 -p 9090:9090 \
  -v dsrch-data:/home/dsrch/.dsrch \
  --restart unless-stopped \
  dsrch-node start --api-port 8080 --external-ip YOUR_PUBLIC_IP

# Тестнет з 3 нод
docker compose up -d
Вбудована перевірка здоров'я пінгує /api/status кожні 30 секунд.

Продакшн налаштування

Рекомендації

Конфігурація Caddy

explorer.dsrch.net {
    reverse_proxy localhost:8080
}
api.dsrch.net {
    reverse_proxy localhost:8080
}
docs.dsrch.net {
    reverse_proxy localhost:8080
}

Моніторинг

Безпека

Увага: Ніколи не розкривайте node.key — він контролює ідентичність вашої ноди та застейкані токени.

Усунення проблем

Нода не запускається

Run dsrch init спочатку для генерації конфігурації та ключів.

Немає підключених пірів

Черга сканування порожня

Авто-сідер надає URL автоматично. Якщо все одно зупинено, додайте вручну:

curl -X POST "https://api.dsrch.net/api/crawl/add?url=https://example.com"

Пошук не повертає результатів

Перевірте кількість документів через curl https://api.dsrch.net/api/status. Якщо 0, зачекайте поки краулер проіндексує сторінки.

DSRCH — Пошукова система інтернету, що належить кожному.