Інтеграція з Orchid Protocol
Orchid — це децентралізована VPN мережа, де користувачі платять за bandwidth за допомогою вероятностних нанопеймент тикетів (nanopayments), а провайдери продають bandwidth за OXT токени. Технічно це не просто VPN з блокчейн оплатою — це система probabilistic micropayments, застосована до мережевого трафіку.
Причина, по якій це цікаво з інженерної точки зору: класичні мікроплатежі за кожен пакет даних убивають продуктивність — on-chain транзакція за кожні 100KB bandwidth нежизнеспособна. Orchid вирішує це через вероятностні тикети: клієнт відправляє тикет з номіналом $1, який з ймовірністю 1% виплачує $100. Очікувана вартість тикета — $1. Провайдер приймає тикети як оплату, зрідка отримуючи виграшний.
Архітектура Orchid nanopayments
Lottery контракт
Orchid Lottery контракт (Ethereum mainnet + кілька L2) управляє deposit/withdrawal провайдерів та верифікацією тикетів.
// Спрощена схема Orchid Lottery
contract OrchidLottery {
struct Pot {
uint128 amount; // основний депозит (stake)
uint128 escrow; // locked для pending tix
}
mapping(address => mapping(address => Pot)) public pots; // sender → token → pot
// Клієнт депозитирует OXT як залог
function push(address token, uint128 amount, uint128 escrow) external;
// Провайдер клеймит виграшний тикет
function grab(
uint256 secret, // секрет провайдера (розголошується при claim)
bytes32 hash, // hash(secret) — відомий з тикета
address payable target,
uint256 nonce, // захист від replay
uint256 ratio, // ймовірність виграшу
uint128 amount, // номінал тикета
uint256 expire, // deadline
bytes memory sig // підпись клієнта
) external;
}
Тикет — це signed message від клієнта з параметрами: номінал, ймовірність, публічний ключ провайдера, expire. Провайдер тримає тикет і при бажанні вызивает grab, передаючи випадковий секрет. Якщо hash(secret) < ratio * 2^256 — тикет виграшний, провайдер отримує amount.
Ticket flow у деталях
1. Клієнт: генерирує session keypair (secp256k1)
2. Клієнт → Lottery контракт: pushFunds(OXT amount, escrow)
3. Клієнт → Провайдер: negotiate (вибір exit node, согласуй параметри)
4. При відправці даних:
- клієнт кожні ~10 секунд генерирует тикет
- ticket = sign({faceValue, winProb, providerKey, nonce, expire})
- відправляє тикет провайдеру by opaque channel
5. Провайдер: акумулює тикети
6. При отримації виграшного: grab() → receive OXT
7. Non-winning тикети: discarded (gas не тратится)
Економіка: клієнт тратит OXT рівномірно за час сесії. Провайдер отримує статистично очікувану оплату за bandwidth, періодично збираючи виграшні тикети.
Інтеграція: варіанти застосування
Як оператор exit node
Якщо ви хочете монетизувати bandwidth (VPS провайдер, CDN узел):
# Запуск Orchid провайдера
docker run -d \
--name orchid-provider \
--network host \
-e ORCHID_SECRET="0x...your-provider-private-key..." \
-e ORCHID_STAKE="1000" \ # OXT stake у Lottery контракті
orchidtech/orchid-server:latest
# Регістрація в Orchid directory (on-chain)
# Stake OXT у directory контракті для discovery
Клієнти вибирають провайдерів зважено по стейку: більше OXT у стейке → вища ймовірність бути вибраним. Це ринковий механізм проти Sybil атак.
Вбудований VPN у dApp
// Orchid Web3 SDK інтеграція
import { OrchidSDK, Account } from '@orchid-protocol/web3-sdk'
const orchid = new OrchidSDK({
rpcUrl: 'https://mainnet.infura.io/v3/YOUR_KEY',
// Можна використовувати Gnosis Chain для дешевших транзакцій
lotteryContract: '0x6dB8381b2B41b74E17F5D4eB82E8d5b04ddA0a82'
})
// Створити або завантажити Orchid аккаунт
const account = await Account.load(privateKey)
await account.fundAccount(orchid, oxtAmount) // депозит у Lottery
// Створити VPN з'єднання через Orchid
const connection = await orchid.connect({
account,
hops: 2, // multi-hop для додаткової приватності
currency: 'OXT',
provider: null // null = випадковий вибір по стейку
})
connection.on('stats', ({ bytesSent, bytesReceived, cost }) => {
console.log(`Used ${bytesReceived} bytes, cost: ${cost} OXT`)
})
Інтеграція Nanopayment контракту у свій проект
Паттерн вероятностних мікроплатежів застосовний не тільки до bandwidth. Будь-який сервіс з високочастотними мікроплатежами (AI inference, compute, storage) може використовувати ту ж модель.
// Адаптація Orchid-паттерну для compute marketplace
contract ComputeLottery {
// Кожні N inference запитів — один тикет з ймовірністю 1/N
// Очікуваний платіж = faceValue
// Gas: одна транзакція на N запитів замість N транзакцій
function verifyAndClaim(
bytes32 ticketHash,
uint256 randomness, // від VRF або commit-reveal
uint128 faceValue,
uint32 probability, // out of 2^32
bytes calldata sig
) external {
// Верифікуємо підпись клієнта
address client = recoverSigner(ticketHash, sig);
// Вероятностна перевірка
uint256 roll = uint256(keccak256(abi.encodePacked(randomness, ticketHash)));
require(roll < uint256(probability) * (type(uint256).max / type(uint32).max),
"Not a winner");
// Платіж провайдеру
_transfer(client, msg.sender, faceValue);
}
}
Мультихоп і приватність
Orchid підтримує ланцюги з кількох hopів: трафік шифрується на кожному рівні, кожний hop знає тільки попереднього й наступного узла. Два хопи — стандартна конфігурація, даючи приватність близьку до Tor при кращій продуктивності.
Кожен hop платить незалежно через Orchid nanopayments. Клієнт депозитирует средства для кожного hop окремо. Overhead nanopayments мінімальний — тикет це просто signed bytes, передається in-band з даними.
Технічні обмеження
OXT ліквідність. OXT — не найліквідніший токен. Для продукту з широкою аудиторією: розглянути Orchid на Gnosis Chain (xDAI як оплата, дешевше газ). Orchid підтримує кілька ланцюгів.
Latency. Кожен hop додає ~20-50ms. Два хопи → +100ms. Для відео помітно, для web browsing — приємне.
Provider discovery. Orchid directory on-chain, але вибір провайдера — клієнтська логіка. Слабий провайдер з високим стейком може отримати трафік. Нема вбудованої reputation system — тільки стейк.
Процес розробки
Аналітика (2-3 дні). Визначаємо use case: вбудовуємо VPN у існуючий продукт або будуємо новий сервіс на базі Orchid nanopayment паттерну. Різні задачі — різний scope.
Розробка (3-6 тижнів). SDK інтеграція для VPN use case — 2-3 тижні. Кастомний lottery контракт для нового застосування мікроплатежів — 4-6 тижнів включаючи тестування.
Тестування. Обов'язково тестувати тикет grinding: переконатися що провайдер не може передбачити winning tickets заздалегідь. Randomness source критична для fairness.







