Skip to main content
Glama

SatRank

Надежность маршрутов для платежей Lightning. Создано для экономики агентов.

SatRank оценивает надежность конечных точек Lightning. Перед каждым платежом агент запрашивает у SatRank решение GO/NO-GO — один запрос, один ответ, 1 сат.

Начало работы

npm install
npm run dev     # Start development server on :3000

Архитектура

routes → controllers → services → repositories → SQLite

Слои:

  • Routes — определения конечных точек Express

  • Controllers — валидация входных данных (zod), форматирование ответов

  • Services — бизнес-логика и оркестрация

  • Repositories — доступ к данным SQLite (better-sqlite3)

Ручное внедрение зависимостей в src/app.ts для обеспечения тестируемости.

Алгоритм оценки

Составная оценка от 0 до 100, вычисляемая на основе 5 взвешенных факторов:

Фактор

Вес

Описание

Объем

25%

Верифицированные транзакции, логарифмически нормализованные

Репутация

30%

Центральность графа + доверие коллег (BTC/каналы). Бонус за рейтинги LN+ (макс. +8)

Стаж

15%

Дней с момента первого обнаружения, убывающая отдача

Регулярность

15%

Обратный коэффициент вариации интервалов транзакций

Разнообразие

15%

Уникальные контрагенты, логарифмически нормализованные

Защита от манипуляций:

  • Обнаружение циклов взаимной аттестации (A↔B) со штрафом 95%

  • Обнаружение циклических кластеров (A→B→C→A) со штрафом 90%

  • Обнаружение расширенных циклов через BFS (A→B→C→D→A, до 4 переходов) со штрафом 90%

  • Требуется минимальный стаж 7 дней для аттестации

  • Взвешивание оценок аттестаторов (рекурсия типа PageRank)

  • Штраф за концентрацию источников аттестации

API

Decision API (основной интерфейс для агентов)

# GO / NO-GO decision with success probability
curl -X POST http://localhost:3000/api/decide \
  -H "Content-Type: application/json" \
  -d '{"target": "<hash>", "caller": "<your-hash>"}'

# Report transaction outcome (free — no L402)
curl -X POST http://localhost:3000/api/report \
  -H "Content-Type: application/json" \
  -H "X-API-Key: <key>" \
  -d '{"target": "<hash>", "reporter": "<your-hash>", "outcome": "success"}'

# Agent profile with reports, uptime, rank
curl http://localhost:3000/api/profile/<hash>

Score & Verdict API

curl http://localhost:3000/api/agent/<hash>/verdict
# Returns: SAFE / RISKY / UNKNOWN with confidence, flags, risk profile

Batch Verdicts

curl -X POST http://localhost:3000/api/verdicts \
  -H "Content-Type: application/json" \
  -d '{"hashes": ["abc123...", "def456..."]}'

Agent Score

curl http://localhost:3000/api/agent/<hash>
# Returns: score, components, evidence, delta, alerts

Score History

curl http://localhost:3000/api/agent/<hash>/history?limit=10

Received Attestations

curl http://localhost:3000/api/agent/<hash>/attestations?limit=20

Leaderboard

curl http://localhost:3000/api/agents/top?limit=20&sort_by=score

Top Movers

curl http://localhost:3000/api/agents/movers

Search by Alias

curl http://localhost:3000/api/agents/search?alias=atlas

Submit Attestation (бесплатно — без L402)

curl -X POST http://localhost:3000/api/attestations \
  -H "Content-Type: application/json" \
  -H "X-API-Key: <your-key>" \
  -d '{"txId": "...", "attesterHash": "...", "subjectHash": "...", "score": 85, "category": "successful_transaction"}'

Health & Stats

curl http://localhost:3000/api/health
curl http://localhost:3000/api/stats

MCP Server

SatRank предоставляет сервер MCP (Model Context Protocol) для доступа агентов через stdio. 11 инструментов, охватывающих принятие решений о доверии, оценку, поиск и отчетность.

Установка в Claude Code

claude mcp add satrank -- npx tsx src/mcp/server.ts

Или с переменными окружения:

claude mcp add satrank -e DB_PATH=./data/satrank.db -e SATRANK_API_KEY=<key> -- npx tsx src/mcp/server.ts

Установка в Cursor / VS Code

Добавьте в .cursor/mcp.json или .vscode/mcp.json:

{
  "mcpServers": {
    "satrank": {
      "command": "npx",
      "args": ["tsx", "src/mcp/server.ts"],
      "cwd": "/path/to/satrank",
      "env": {
        "DB_PATH": "./data/satrank.db",
        "SATRANK_API_KEY": "your-api-key"
      }
    }
  }
}

Доступные инструменты (11)

Инструмент

Описание

decide

GO/NO-GO с вероятностью успеха — основной инструмент перед транзакцией

report

Сообщить о результате (успех/неудача/тайм-аут) — требуется API-ключ

get_profile

Полный профиль агента с отчетами, временем работы, рангом, доказательствами

get_agent_score

Детальная оценка доверия с компонентами и доказательствами

get_verdict

SAFE/RISKY/UNKNOWN с профилем риска и поиском пути

get_batch_verdicts

Пакетный вердикт для 100 агентов

get_top_agents

Таблица лидеров по оценке

search_agents

Поиск по псевдониму (частичное совпадение)

get_network_stats

Глобальная статистика сети

get_top_movers

Агенты с наибольшими изменениями оценки за 7 дней

submit_attestation

Отправить аттестацию доверия — требуется API-ключ

Запуск вручную

npm run mcp        # Development
npm run mcp:prod   # Production

SDK

npm install @satrank/sdk
import { SatRankClient } from '@satrank/sdk';

const client = new SatRankClient('http://localhost:3000');

// Full cycle in one line: decide → pay → report
const result = await client.transact('<target-hash>', '<your-hash>', async () => {
  const payment = await myWallet.pay(invoice);
  return { success: payment.ok, preimage: payment.preimage, paymentHash: payment.hash };
});
// result.paid, result.decision.go, result.report.weight

// Or step by step
const decision = await client.decide({ target: '<hash>', caller: '<your-hash>' });
const profile = await client.getProfile('<hash>');
const verdict = await client.getVerdict('<hash>');

Интеграция с Nostr

SatRank публикует оценки доверия для узлов Lightning как NIP-85 Trusted Assertions (тип 30382).

Что публикуется: составная оценка (0-100), вердикт (SAFE/RISKY/UNKNOWN), доступность, прогноз выживаемости и 5 компонентов оценки для ~3900 узлов с оценкой >= 30.

Частота: каждые 6 часов.

Формат события:

{
  "kind": 30382,
  "tags": [
    ["d", "<lightning_pubkey>"],
    ["n", "lightning"],
    ["alias", "Kraken"],
    ["score", "94"],
    ["verdict", "SAFE"],
    ["reachable", "true"],
    ["survival", "stable"],
    ["volume", "100"],
    ["reputation", "79"],
    ["seniority", "87"],
    ["regularity", "100"],
    ["diversity", "100"]
  ],
  "content": ""
}

Запрос утверждений из любого клиента Nostr:

["REQ", "satrank", {"kinds": [30382], "authors": ["<SATRANK_NOSTR_PUBKEY>"]}]

Почему бесплатно? Глобальные оценки — это трейлер. Персонализированный /api/decide (поиск пути из ВАШЕЙ позиции, выживаемость, P_empirical) — это фильм — 1 сат через L402.

Технологический стек

  • TypeScript в строгом режиме

  • Express — REST API

  • better-sqlite3 — встроенная база данных, режим WAL

  • zod — валидация входных данных

  • pino — структурированное логирование

  • helmet — заголовки безопасности

  • express-rate-limit — защита от злоупотреблений

Скрипты

Скрипт

Описание

npm run dev

Разработка с горячей перезагрузкой (tsx watch)

npm run build

Компиляция TypeScript

npm start

Продакшн

npm test

Тесты (vitest)

npm run lint

Проверка TypeScript

npm run crawl

Краулер Observer Protocol

npm run crawl:cron

Краулер в режиме cron

npm run mcp

Сервер MCP (dev)

npm run mcp:prod

Сервер MCP (продакшн)

npm run purge

Очистка устаревших данных

npm run backup

Резервное копирование базы данных

npm run rollback

Откат базы данных

npm run calibrate

Отчет о калибровке оценки

npm run demo

Демо-скрипт аттестации

npm run sdk:build

Сборка TypeScript SDK

Дорожная карта

  • [x] Decision API — GO/NO-GO с вероятностью успеха, отчетами о результатах, профилями агентов

  • [x] Персонализированный поиск пути — маршрут в реальном времени от вызывающего к цели через LND QueryRoutes

  • [x] Интеграция Aperture (обратный прокси L402) — монетизация запросов в сатах

  • [x] Краулер Observer Protocol — автоматическое получение данных из блокчейна

  • [x] Краулер графа Lightning — топология каналов и емкость через узел LND

  • [x] Краулер зондирования маршрутов — проверка доступности для индексированных узлов

  • [x] TypeScript SDK для агентов (@satrank/sdk)

  • [x] Verdict API — бинарное решение SAFE/RISKY/UNKNOWN

  • [x] Сервер MCP — доступ для агентов через stdio

  • [x] Автоиндексация — неизвестные pubkey индексируются по запросу

  • [ ] Коннектор 4tress — верифицированные аттестации

  • [ ] Панель визуализации сети доверия

Видение

SatRank — это проверка надежности перед каждым платежом Lightning. 66% сети — это фантомные узлы, мы подскажем вам, какие конечные точки активны.

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/proofoftrust21/satrank'

If you have feedback or need assistance with the MCP directory API, please join our Discord server