Конфиденциальные балансы

Что такое Confidential Balances?

Confidential Balances — это расширение Token-2022, которое позволяет переводить токены между token accounts, не раскрывая сумму перевода. Это полезно для транзакций с сохранением конфиденциальности. Только суммы переводов и балансы токенов остаются приватными. Адреса token accounts остаются общедоступными.

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

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

Confidential Balances Basic Overview

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

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

Ключи аудитора

Mint account с расширением Confidential Balances может хранить необязательный глобальный публичный ключ ElGamal аудитора. Если он настроен, каждый конфиденциальный перевод включает сумму, зашифрованную для отправителя, получателя и аудитора. Доказательство перевода подтверждает, что все три шифротекста содержат одинаковую сумму. Публичный доступ к сумме по-прежнему закрыт, однако владелец секретного ключа аудитора может расшифровывать суммы переводов для данного mint.

Полномочный орган Confidential Balances задаёт ключ аудитора при инициализации расширения или изменяет его впоследствии с помощью UpdateMint. Полномочный орган может сменить или удалить ключ. Смена ключа распространяется только на будущие переводы, поэтому сохраняйте предыдущие секретные ключи, если требуется доступ к историческим данным аудита. Ключи аудитора предоставляют доступ на чтение; они не авторизуют переводы токенов и не раскрывают полный конфиденциальный баланс аккаунта.

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

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

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

Confidential Balances Detailed Overview

Инструкции Confidential Balances

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

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

Is this page helpful?

Содержание

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