master
Helius PDA Sync Test
Минимальное Java 21 приложение для проверки realtime-синхронизации:
Solana Program -> Helius WebSocket -> programSubscribe -> SQLite
Что делает
- подключается к Helius WebSocket;
- подписывается через
programSubscribeна изменения аккаунтов программы; - сохраняет каждый полученный аккаунт в SQLite;
- обновляет запись только если новый
slotне старее сохранённого; - автоматически переподключается после обрыва соединения.
На этом этапе приложение хранит raw base64 данные PDA и не декодирует Anchor/Borsh.
Требования
- Java 21+
- Maven 3.9+
Настройка
export HELIUS_API_KEY="your_key"
export SOLANA_PROGRAM_ID="your_program_id"
export SQLITE_PATH="./data/solana.db"
export SOLANA_COMMITMENT="confirmed"
Запуск
mvn clean compile exec:java
Ожидаемый лог:
Database initialized: ...
Connecting to Helius WebSocket...
WebSocket connected
Subscription request sent for program: ...
Subscribed successfully. Subscription id: ...
После создания или изменения PDA:
Account update: ...
Saved account ...
Проверка SQLite
sqlite3 data/solana.db
.headers on
.mode column
SELECT
address,
owner,
lamports,
slot,
length(data_base64) AS base64_length,
updated_at
FROM program_accounts
ORDER BY slot DESC;
Первый тест
- Запусти приложение.
- Дождись
Subscribed successfully. - Создай или измени PDA через контракт.
- Убедись, что пришёл
programNotification. - Проверь запись в SQLite.
Следующий шаг после проверки realtime: добавить getProgramAccounts на старте и декодирование конкретного PDA по IDL.
Languages
Java
100%