2 минуты
Изменения в учетной записи Solana
Узнайте, как использовать данные изменений учетных записей Solana с помощью субпотоков.
Введение
Это руководство проведет Вас через процесс настройки вашей среды, конфигурирования Ваших первых субпотоков и эффективного потребления изменений учетных записей. К концу этого руководства у Вас будут рабочие субпотоки, которые позволят отслеживать изменения учетных записей в реальном времени на блокчейне Solana, а также получать исторические данные об изменениях учетных записей.
Примечание: история изменений учетных записей Solana начинается с 2025 года, блок 310629601.
Для каждого субпотока Solana, фиксируется только последнее обновление для каждой учетной записи. См. Protobuf справочник. Если учетная запись была удалена, в payload будет указано deleted == True
. Кроме того, события с низким приоритетом, такие как изменения с участием специального владельца “Vote11111111…” или изменения, не влияющие на данные учетной записи (например, изменения лампортов), были опущены.
ПРИМЕЧАНИЕ: чтобы проверить задержку субпотоков для аккаунтов Solana, измеряемую как отклонение от головного блока, установите Substreams CLI и выполните команду substreams run solana-common blocks_without_votes -s -1 -o clock
.
Начало работы
Предварительные требования
Прежде чем начать, убедитесь, что у Вас есть следующее:
- Субпотоки CLI установлены.
- Ключ субпотока для доступа к данным об изменении учетной записи Солана.
- Базовые знания о том, как использовать интерфейс командной строки (CLI).
Шаг 1: Настройка подключения к субпотокам изменений аккаунтов Solana
Теперь, когда у вас установлен CLI субпотоков, Вы можете настроить подключение к потоку изменений аккаунтов Solana в субпотоках.
- Используя основной модуль аккаунтов Solana, Вы можете либо транслировать данные напрямую, либо использовать графический интерфейс (GUI) для более наглядного взаимодействия. В следующем примере
gui
выполняется фильтрация данных аккаунта токена Honey.
1substreams gui solana-accounts-foundational filtered_accounts -t +10 -p filtered_accounts="owner:TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA || account:4vMsoUT2BWatFweudnQM1xedRLfJgJ7hswhcpz4xgBTy"
- Эта команда будет транслировать изменения аккаунта непосредственно в ваш терминал.
1substreams run solana-accounts-foundational filtered_accounts -s -1 -o clock
Основной модуль поддерживает фильтрацию по конкретным аккаунтам и/или владельцам. Вы можете настроить запрос в соответствии с Вашими потребностями.
Шаг 2: Подключение субпотоков
Используйте поток данных аккаунтов напрямую в вашем приложении, используя callback-функцию, или сделайте его доступным для запросов, используя SQL-DB sink.
Шаг 3: Настройка политики переподключения
Управление курсором обеспечивает бесперебойную непрерывность и возможность возврата, позволяя возобновить обработку с последнего потребленного блока в случае разрыва соединения. Эта функция предотвращает потерю данных и поддерживает стабильный поток.
При создании или использовании sink, основной задачей пользователя является предоставление реализаций BlockScopedDataHandler и BlockUndoSignalHandler, которая должна иметь следующий интерфейс:
1import (2 pbsubstreamsrpc "github.com/streamingfast/substreams/pb/sf/substreams/rpc/v2"3)45type BlockScopedDataHandler = func(ctx context.Context, cursor *Cursor, data *pbsubstreamsrpc.BlockScopedData) error6type BlockUndoSignalHandler = func(ctx context.Context, cursor *Cursor, undoSignal *pbsubstreamsrpc.BlockUndoSignal) error