Інтеграція з Helium Network
Helium — це не просто IoT-мережа з токенами. Після міграції з нативного блокчейна на Solana (квітень 2023) архітектура радикально змінилася: тепер це набір subDAO на Solana з Helium Program Library (HPL), а не окремий L1. Більшість команд, що приходять з завданням «підключити пристрої до Helium», стикаються з цим розривом — документація застаріла, приклади коду написані під старий блокчейн, а нова архітектура HPL вимагає розуміння Solana Account Model.
Архітектура після міграції на Solana
Ключові програми HPL
Helium функціонує через три основних on-chain програми:
helium_entity_manager — керує hotspot NFT (ENTITY). Кожен хотспот після міграції — це compressed NFT (cNFT) за стандартом Metaplex Bubblegum. Важливо: мерклізовані NFT не зберігаються в звичайних token accounts — їх стан доказується через Merkle proof.
helium_sub_daos — керує економікою subDAO (IoT, MOBILE, ENERGY). Реварди, epoch-переходи, delegation — все тут.
data_credits — керує DC (Data Credits). DC спалюються при передачі даних. Курс спалювання фіксований: $0.00001 за 24 байта payload. DC не можна передавати — лише спалювати.
Як працює передача даних
Пристрій → Hotspot (LoRaWAN/5G) → Router/OUI → Data Credits спалюються → Payload доставлено
OUI (Organizational Unique Identifier) — це on-chain сущність, яку потрібно зареєструвати щоб маршрутизувати трафік. Реєстрація OUI коштує 1,000,000 DC ($10) + staking 0.5% від загального обсягу DC на рахунку.
Якщо завдання — просто відправляти дані з пристроїв без власного OUI, є community-operated Network Servers (Chirpstack-based), але втрачається контроль над routing rules та приватністю даних.
Інтеграція: практичні паттерни
Робота з Helium API та Oracles
Після міграції Helium видалив власний блокчейн-explorer та API. Дані доступні через:
- Solana RPC — напрямку, але потрібно знати адреси програм та десеріалізовувати Anchor-структури
- Helium Foundation oracles — off-chain сервіси для location/reward claims
-
@helium/helium-react-hooksта@helium/spl-utils— офіційні бібліотеки
import { init } from '@helium/helium-entity-manager-sdk'
import { AnchorProvider } from '@coral-xyz/anchor'
async function getHotspotInfo(hotspotKey: PublicKey, provider: AnchorProvider) {
const program = await init(provider)
// Хотспот — це compressedNFT, пошук через asset proof
const hotspot = await program.account.hotspotV0.fetchNullable(hotspotKey)
if (!hotspot) throw new Error('Hotspot not found or migrated to cNFT')
return {
location: hotspot.location?.toString(16), // H3 hex index
elevation: hotspot.elevation,
gain: hotspot.gain,
isFullHotspot: hotspot.isFullHotspot,
}
}
Onboarding нового пристрою
Додавання хотспота — багатокроковий процес з кількома on-chain транзакціями:
- Створення Maker account — виробник пристрою отримує Maker NFT, стейкує HNT
-
Issue hotspot — мінтинг cNFT для конкретного пристрою через
issue_entity - Assert location — прив'язка H3 геохеша до хотспота (коштує DC)
- Config hotspot — передача даних про gain/elevation
Для кожного кроку потрібні підписи як maker, так і owner. Це design decision Helium для запобігання спаму пристроїв.
Децентралізований Network Server
Якщо будується власний Network Server (для enterprise IoT), рекомендований стек:
- Chirpstack v4 — open-source LNS, підтримує Helium packet routing
- Helium packet router — сервіс маршрутизації LoRa-пакетів (Rust, open-source)
- gRPC endpoint — для отримання uplink пакетів від роутера
# Конфігурація Chirpstack для Helium backend
[network]
net_id="000024" # Helium net_id
[[regions]]
name="EU868"
common_name="EU868"
[backend.basic_station]
bind="0.0.0.0:3001"
Packet router використовує ED25519 ключі для аутентифікації — ті ж ключі, що й Solana keypair (Ed25519 curve), що спрощує управління.
Економіка DC та автоматизація пополнення
Критичне production питання: як забезпечити бесперервну роботу при спалюванні DC. Сценарій: у вас 1000 сенсорів, кожен відправляє дані раз на 15 хвилин → ~2.8M транзакцій/день → ~2.8M DC/день ≈ $28/день.
Автоматизація пополнення:
import { burnAndMint } from '@helium/data-credits-sdk'
async function ensureDCBalance(
provider: AnchorProvider,
targetDC: BN,
currentDC: BN
) {
if (currentDC.lt(targetDC.muln(0.2))) { // менше 20% від цілі
const hntToBurn = await estimateHNTForDC(targetDC.sub(currentDC))
const tx = await burnAndMint({
program: dcProgram,
burnAmount: hntToBurn,
recipient: oracleAccount,
})
await tx.rpc()
}
}
Курс HNT→DC оновлюється через Oracle Price кожні 6 годин. Не використовуйте захардкоджений курс — це типична помилка.
Тестування та devnet
Helium має testnet на Solana devnet. Але є нюанс: testnet хотспоти не приносять реальних реварди та не з'являються в production explorer. Для розробки:
# Solana CLI з Helium devnet
solana config set --url https://solana-devnet.rpcpool.com
export HELIUM_NETWORK=devnet
# Отримати тестові токени
helium-admin create-maker --name "TestMaker" --staking-amount 1000000
Що входить в інтеграцію
| Компонент | Опис |
|---|---|
| OUI реєстрація | On-chain, staking, routing rules |
| Hotspot onboarding SDK | Кастомний flow для виробників |
| Network Server setup | Chirpstack + packet router |
| DC management | Автоматичне пополнення, мониторинг |
| Solana інтеграція | Читання стану, reward claims |
| Мониторинг | Alerting по DC balance, device health |
Строк типової інтеграції — 3–6 тижнів залежно від кількості пристроїв та вимог до Network Server.







