Интеграция с 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 integration | Чтение состояния, reward claims |
| Мониторинг | Alerting по DC balance, device health |
Срок типичной интеграции — 3–6 недель в зависимости от числа устройств и требований к Network Server.







