Интеграция с Mysterium Network

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Интеграция с Mysterium Network
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1056
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Интеграция с Mysterium Network

Конкретная ситуация: вы строите приложение, которому нужен децентрализованный VPN или residential proxy — без единого провайдера, без KYC на пользователей, с оплатой в крипте. Mysterium Network — это p2p сеть из ~13k нод, где любой может продавать трафик за MYST токены. Для разработчика задача не в том, чтобы "подключиться к VPN", а в том, чтобы встроить Mysterium в своё приложение как программируемый транспортный слой.

Архитектура Mysterium: что под капотом

Mysterium работает поверх нескольких протоколов:

  • Wireguard — основной протокол для VPN-подключений (UDP, быстрый, широко поддерживается)
  • OpenVPN — legacy, поддерживается для совместимости
  • NATS — брокер сообщений для discovery и signaling между нодами
  • Hermes — payment settlement смарт-контракт на Polygon (ранее был на Ethereum)

Ключевой компонент для разработчика — mysterium-vpn-js SDK (TypeScript) и myst-provider API (REST HTTP сервер, который запускается вместе с нодой).

Программная работа с Mysterium через SDK

Запуск и подключение к ноде

import { TequilapiClientFactory, NodeHttpTransport } from "mysterium-vpn-js";

const factory = new TequilapiClientFactory(
  "http://127.0.0.1:4050",  // tequilapi — REST API ноды
  5000                        // timeout ms
);

const api = factory.build(NodeHttpTransport());

// Проверка состояния ноды
const nodeInfo = await api.healthCheck();
console.log("Node version:", nodeInfo.version);

// Список доступных провайдеров (выборка из Discovery)
const proposals = await api.findProposals({
  serviceType: "wireguard",   // или "openvpn"
  qualityMin: 0.9,            // фильтр по quality score (0-1)
  locationCountry: "DE",      // страна выходной ноды
});

Создание и управление сессией

// Identity — ваш "кошелёк" в сети Mysterium
const identities = await api.identityList();
if (identities.length === 0) {
  const identity = await api.identityCreate("your_passphrase");
  await api.identityRegister(identity.id, {
    token: undefined,  // referral token опционален
  });
}

const identity = identities[0];

// Убеждаемся что identity зарегистрирован on-chain
const status = await api.identityStatus(identity.id);
if (status.registrationStatus !== "Registered") {
  // Нужно пополнить баланс MYST для оплаты регистрации
  throw new Error("Identity not registered");
}

// Подключение к выбранному провайдеру
const connection = await api.connectionCreate({
  consumerId: identity.id,
  providerId: proposals[0].providerId,
  serviceType: "wireguard",
  connectOptions: {
    dnsOption: "auto",   // или конкретный DNS сервер
  }
});

console.log("Session ID:", connection.sessionId);
console.log("Status:", connection.status); // "Connected"

Мониторинг сессии и статистика

// Текущее состояние подключения
const stats = await api.connectionStatistics();
console.log({
  bytesSent: stats.bytesSent,
  bytesReceived: stats.bytesReceived,
  tokensSpent: stats.tokensSpent,  // потрачено MYST
  duration: stats.duration,         // секунды
});

// Текущий IP (для верификации что трафик идёт через ноду)
const location = await api.connectionLocation();
console.log("Exit IP:", location.ip, "Country:", location.country);

// Отключение
await api.connectionCancel();

Payment интеграция: MYST на Polygon

Mysterium использует payment channels через Hermes контракт на Polygon. Это не прямые on-chain транзакции за каждый мегабайт — это off-chain micropayments, которые settlement происходит периодически.

Пополнение баланса

// Получить адрес для пополнения баланса consumer identity
const channelAddress = await api.paymentOrderGetChannelAddress(
  identity.id
);
// channelAddress — это Polygon адрес, на него отправляем MYST

// Создание order через встроенный шлюз (если хотим on-ramp через карту)
const order = await api.paymentOrderCreate(identity.id, {
  mystAmount: "10.0",
  payCurrency: "USD",
  gateway: "coingate",  // или "paypal"
  country: "US",
  callerData: "{}",
});
console.log("Payment URL:", order.publicGatewayData.paymentUrl);

Для programmatic use case (ваше приложение само пополняет балансы пользователей) — прямой transfer MYST на Polygon через ethers.js:

import { ethers } from "ethers";

const MYST_POLYGON = "0x1379e8886a0d08c7902c843f5c6353d3e8e99a18";
const mystContract = new ethers.Contract(MYST_POLYGON, ERC20_ABI, signer);

// channelAddress — адрес из api.paymentOrderGetChannelAddress()
await mystContract.transfer(channelAddress, ethers.parseUnits("10", 18));

Собственный Discovery Service

По умолчанию Mysterium node использует централизованный Discovery сервис Mysterium Foundation для поиска провайдеров. Для enterprise использования или собственной закрытой сети — нужен свой Discovery.

Mysterium использует NATS как discovery broker. Можно развернуть self-hosted:

# docker-compose.yml для self-hosted discovery
version: '3.8'
services:
  nats:
    image: nats:2.9-alpine
    ports:
      - "4222:4222"
      - "8222:8222"  # monitoring
    command: "--jetstream --cluster_name mysterium-private"
  
  discovery:
    image: mysteriumnetwork/discovery:latest
    environment:
      - NATS_URL=nats://nats:4222
      - BROKER_ADDRESS=nats://nats:4222
    depends_on:
      - nats

Ноды в вашей частной сети конфигурируются с --discovery.address указывающим на ваш NATS.

Типичные сценарии применения

Decentralized proxy для web scraping — вместо rotating residential proxies от Oxylabs/Brightdata, используете Mysterium ноды. Стоимость в 3–10x ниже, но reliability варьируется (p2p сеть ≠ enterprise SLA).

Privacy-preserving API вызовы — мобильное приложение делает запросы к внешним API через Mysterium, скрывая IP пользователя от сервиса назначения.

Geo-distributed тестирование — тестирование приложения из разных геолокаций программно, без аренды VPS в каждом регионе.

Ограничения, которые нужно учитывать: Mysterium не даёт гарантий bandwidth или uptime от конкретной ноды. Для приложений с требованиями к latency <100ms — p2p VPN не оптимальный выбор. Нужен fallback mechanism и логика переключения между провайдерами.

Базовая интеграция через mysterium-vpn-js в существующее приложение: 2–3 недели. Полная с биллингом, нодой под управлением вашего бэкенда и custom discovery: 6–10 недель.