Конфиденциальные переводы

Что такое конфиденциальные переводы?

Конфиденциальные переводы позволяют передавать токены между token accounts без раскрытия суммы перевода. Это полезно для транзакций с защитой конфиденциальности. Только суммы переводов и балансы токенов остаются приватными. Адреса token accounts остаются публичными.

Как это работает?

Расширение конфиденциального перевода добавляет инструкции в Token Extensions Program, которые позволяют передавать токены между аккаунтами без раскрытия суммы перевода.

Confidential Transfer Basic Overview

Базовый процесс конфиденциальных переводов токенов выглядит следующим образом:

  1. Создайте mint account с расширением конфиденциального перевода.
  2. Создайте token accounts с расширением конфиденциального перевода для отправителя и получателя.
  3. Выпустите токены на аккаунт отправителя.
  4. Внесите публичный баланс отправителя в конфиденциальный ожидающий баланс.
  5. Примените ожидающий баланс отправителя к конфиденциальному доступному балансу.
  6. Конфиденциально переведите токены с token account отправителя на token account получателя.
  7. Примените ожидающий баланс получателя к конфиденциальному доступному балансу.
  8. Выведите конфиденциальный доступный баланс получателя в публичный баланс.

Подробнее о каждом шаге процесса конфиденциального перевода см. в соответствующих разделах:

На диаграмме ниже показана подробная последовательность базового процесса конфиденциальных переводов токенов:

Confidential Transfer Detailed Overview

Инструкции конфиденциальных переводов

Полный список инструкций расширения конфиденциальных переводов выглядит следующим образом:

ИнструкцияОписание
InitializeMintНастраивает mint account для конфиденциальных переводов. Эта инструкция должна быть включена в ту же транзакцию, что и инструкция TokenInstruction::InitializeMint.
UpdateMintОбновляет настройки конфиденциальных переводов для mint account.
ConfigureAccountНастраивает token account для конфиденциальных переводов.
ApproveAccountПодтверждает token account для конфиденциальных переводов, если mint требует подтверждения для новых token account.
EmptyAccountОчищает ожидающие и доступные конфиденциальные балансы, чтобы разрешить закрытие token account.
DepositКонвертирует публичный баланс токенов в ожидающий конфиденциальный баланс.
WithdrawКонвертирует доступный конфиденциальный баланс обратно в публичный баланс.
TransferКонфиденциально переводит токены между token account.
ApplyPendingBalanceКонвертирует ожидающий баланс в доступный после депозитов или переводов.
EnableConfidentialCreditsПозволяет token account получать конфиденциальные переводы токенов.
DisableConfidentialCreditsБлокирует входящие конфиденциальные переводы, сохраняя при этом возможность публичных переводов.
EnableNonConfidentialCreditsПозволяет token account получать публичные переводы токенов.
DisableNonConfidentialCreditsБлокирует обычные переводы, чтобы аккаунт принимал только конфиденциальные переводы.
TransferWithFeeКонфиденциально переводит токены между token account с комиссией.
ConfigureAccountWithRegistryАльтернативный способ настройки token account для конфиденциальных переводов с использованием аккаунта ElGamalRegistry вместо доказательства VerifyPubkeyValidity.

Is this page helpful?

Содержание

Редактировать страницу