Все статьи

2026-05-26

Как проверить, что мой депозит прошёл?

После того как Вы нажимаете «депозит», возникают три независимых артефакта. Любого из них достаточно, чтобы подтвердить, что Ваши средства в пуле. Вместе они позволяют проверить депозит, не доверяя интерфейсу SolMask вообще — это правильный уровень паранойи для протокола приватности.

Проверить стоит как минимум первый и третий. Если Вы осторожны — проверьте все три.

Проверка первая: подпись транзакции в блокчейне

Инструкция депозита — это обычная транзакция Solana. После её подтверждения интерфейс показывает Вам подпись — строку в base58 примерно из 88 символов. Эта подпись и есть канонический чек о том, что депозит произошёл.

Вы можете проверить её с помощью Solana CLI:

solana confirm <signature>

Ответ Finalized означает, что транзакция постоянна и необратима. Что-либо ещё (Confirmed, Processed или отсутствие результата) означает, что кластер ещё догоняет; подождите ещё несколько секунд.

Вы также можете подставить подпись в любой обозреватель блокчейна Solana — Solscan, SolanaFM или официальный explorer.solana.com — и изучить инструкцию. Вы должны увидеть последовательность CPI, переводящую Ваш актив со счёта токена Вашего кошелька на два назначения: fee_vault пула (получающий 0,23% Вашего депозита) и vault пула (получающий оставшиеся 99,77%). Также Вы должны увидеть строку лога DepositEvent, включающую хеш Вашего обязательства, индекс листа и реально защищённую сумму, а ещё зашифрованный кошельком блоб для восстановления (encrypted_note), который позволяет тому же кошельку заново обнаружить ноту на любом устройстве.

Если транзакция в блокчейне и финализирована, Ваши средства в пуле. Криптография не зависит от того, что считает интерфейс, — она зависит от того, что реально в блокчейне.

Проверка вторая: лист в эндпоинте дерева Меркла у релейера

В течение нескольких секунд после подтверждения индексатор SolMask подхватывает DepositEvent Вашего депозита и добавляет обязательство в свою копию дерева Меркла. Вы можете проверить это напрямую, обратившись к эндпоинту листьев релейера по mint Вашего актива:

GET /merkle/<mint>/leaves?from=<your-leaf-index>&limit=1

Индекс листа был выведен в событии депозита и показан в тосте «депозит прошёл» в интерфейсе. Ответ — небольшой JSON-блок, содержащий Ваше обязательство в виде hex-строки и слот, на котором оно было проиндексировано. Если обязательство в JSON совпадает с тем, что интерфейс показал Вам в момент депозита, индексатор его получил, и Ваш вывод будет возможен, как только наступит Ваш слот разблокировки.

На здоровом mainnet-RPC индексатор обычно догоняет в течение примерно пяти секунд после финализации. Тихие пулы и просадки трафика в выходные могут увеличить это до пятнадцати-двадцати секунд. Если Ваш лист не появился через минуту, релейер, возможно, отстаёт — Ваш депозит по-прежнему в безопасности в блокчейне, но Вам нужно будет подождать, пока индексатор догонит, прежде чем сможете вывести.

Есть параллельный эндпоинт, возвращающий только текущий tree_size пула — полезно, если Вы хотите подтвердить, что индекс Вашего листа находится в границах живого дерева, не перечисляя листья.

Проверка третья: восстановление кошельком

Это та проверка, которая доказывает, что Вы действительно сможете потратить депозит позже — и, в отличие от старых схем, нет ни файла, который надо хранить, ни пароля, который надо помнить.

Когда Вы делаете депозит, Ваш браузер выводит четыре секрета ноты — секрет траты, секрет нуллификатора, сумму и слот разблокировки — из Вашего кошелька. Он делает это, попросив кошелёк подписать одно фиксированное сообщение; подпись детерминирована, поэтому тот же кошелёк всегда воспроизводит те же секреты, и ничего не записывается в файл. Депозит также шифрует небольшой блоб для восстановления — { leaf_index, amount, unlock_slot } — на ключе, который может вывести только Ваш кошелёк, и этот шифртекст публикуется ончейн внутри DepositEvent как encrypted_note.

Чтобы убедиться, что восстановление работает, отключите и снова подключите кошелёк (или откройте приложение в новом профиле браузера) и дайте ему заново просканировать пул. SolMask получает каждый блоб для восстановления в пуле, пробует расшифровать их, и те, что зашифрованы на Ваш кошелёк, проявляют Ваш баланс — включая депозит, который Вы только что сделали. Если Ваш баланс появляется на устройстве, которое никогда не видело депозита, восстановление подтверждено от начала и до конца.

Поскольку источником прав является Ваш кошелёк, сценарий отказа отличается от парольной схемы: терять нечего, кроме доступа к самому кошельку. Храните сид-фразу кошелька в безопасности так, как делали бы это всегда, — этот единственный секрет восстанавливает каждую ноту. SolMask не хранит ничего, что могло бы восстановить Ваши ноты; расшифровать их может только Ваш кошелёк — именно это и делает протокол некастодиальным.

Как выглядит «проверено»

Вы проверили депозит, когда верны все три условия: подпись транзакции финализирована в блокчейне, эндпоинт листьев релейера возвращает Ваше обязательство по Вашему индексу листа, и Ваш баланс снова появляется при повторном подключении того же кошелька — это доказывает, что ончейн-блоб для восстановления расшифровывается для Вас.

После этого Вы можете закрыть вкладку. Пул будет держать Ваши средства сколько угодно — срока действия нет, — и между Вами и выводом стоит только выбранная при депозите задержка приватности плюс повторное подключение того же кошелька, который автоматически заново выводит ноту.

Как проверить, что мой депозит прошёл? · SolMask