Skip to main content
  1. Депозит переводит токены с публичного баланса пользователя в Solana на его собственный или чужой приватный баланс.
  2. Депозиты отправляются одной транзакцией Solana на адрес кошелька Solana.

Депозит: что остается приватным

Общедоступное кольцо является конфиденциальным: сумма и актив зашифрованы. Пользовательское кольцо можно настроить как конфиденциальное или анонимное (отправитель, получатель, актив и сумма зашифрованы).

Как работает депозит

Депозит — это публичный перевод в Solana, в результате которого средства поступают на приватный баланс.
  1. Баланс SOL или SPL пользователя публично доступен в блокчейне.
  2. Кошелек задает сумму и получателя, формирует депозит, а владелец подписывает его. Для депозита не требуется доказательство с нулевым разглашением.
  3. Среда выполнения Solana проверяет подписи и вызывает программу конфиденциальности Solana.
  4. Приложение отслеживает статус по хешу транзакции Solana.
  1. Баланс SOL или SPL пользователя публично доступен в блокчейне.
  2. Кошелек считывает публичное состояние, формирует перевод, а владелец подписывает его.
  3. Среда выполнения Solana проверяет подписи и вызывает системную программу или программу токенов, которая обновляет публичный баланс.
  4. Приложение отслеживает статус по хешу транзакции Solana.
Это высокоуровневая схема транзакции для общедоступного конфиденциального кольца. Сравните ее с пользовательскими кольцами в разделе «Высокоуровневая схема транзакции».

Начало работы

1

Предварительные требования

Для примеров на TypeScript требуются Node.js 24 или более поздней версии, pnpm 11.18.0 и Solana CLI.
Источник: sdk-libs/ts
Добавьте ключ API Helius:
.env
По умолчанию в примерах в качестве плательщика используется кошелёк Solana CLI. На балансе плательщика должны быть SOL в devnet. См. Как получить SOL в devnet.
2

Внесение средств на приватный баланс

  • SDK возвращает инструкции. Приложение подписывает и отправляет их.
  • sendAndConfirmFactory формирует транзакцию Kit, отправляет ее и возвращает подпись вместе со слотом включения.
Для каждого выпуска SPL требуется интерфейс токена, в котором будут храниться внесенные токены. Если интерфейс не существует, создайте его в той же транзакции, что и депозит. Создатель оплачивает аренду аккаунта.
  • senderAddress — это получателя. В этом примере средства вносятся на баланс отправителя. Получателем может быть отправитель или сторонний кошелек.
  • senderViewTag — это senderAddress.confidentialViewTag(), публичный ключ отправителя в Solana для конфиденциальных колец. Индексатор использует его, чтобы возвращать соответствующие зашифрованные выходы.
  • client.tree — это дерево Меркла состояния, которое получает новое обязательство выхода.
  • depositor / senderSigner финансирует и подписывает депозит из публичного баланса в приватный.
  • DepositAsset.sol() выбирает SOL. DepositAsset.spl принимает адрес выпуска, исходный аккаунт токенов и программу токенов для активов SPL и Token 2022.
  • recipientOwnerHash — это senderAddress.ownerHash(). Этот хеш публичных ключей подписи и нуллификатора получателя записывается в поле владельца нового приватного аккаунта токенов.
  • DEPOSIT_AMOUNT использует лампорты для SOL или базовые единицы токена для активов SPL и Token 2022.
  • sendAndConfirm подписывает и отправляет depositIx как транзакцию Solana.
  • При подтверждении возвращается слот включения, который используется для ограничения запроса к индексатору.

Полный пример кода

Клонируйте и запустите пример:
В примерах используется конфиденциальное кольцо в локальной сети или devnet, доступное здесь.
deposit_transfer_withdraw.ts

Связанные руководства

Create a Private Wallet

Transfer

Withdraw

Read a Private Balance

Read Private History

Не нашли то, что искали?

Свяжитесь с нами! Telegram | Электронная почта | Контакты