Что такое Confidential Balances?
Confidential Balances — это расширение Token-2022, которое позволяет переводить токены между token accounts, не раскрывая сумму перевода. Это полезно для транзакций с сохранением конфиденциальности. Только суммы переводов и балансы токенов остаются приватными. Адреса token accounts остаются общедоступными.
- Обзор протокола - Подробная информация о лежащем в основе криптографическом протоколе
- Руководство по быстрому старту - Настройка и основные команды CLI
- Confidential Balances Cookbook - Фрагменты кода, демонстрирующие использование Confidential Balances
Как это работает?
Расширение Confidential Balances добавляет инструкции в программу Token Extension, позволяющие переводить токены между аккаунтами, не раскрывая сумму перевода.
Базовый процесс конфиденциальных переводов токенов выглядит следующим образом:
- Создайте mint account с включённым расширением Confidential Balances.
- Создайте token accounts с включённым расширением Confidential Balances для отправителя и получателя.
- Выпустите токены на аккаунт отправителя.
- Внесите публичный баланс отправителя в конфиденциальный ожидающий баланс.
- Примените ожидающий баланс отправителя к конфиденциальному доступному балансу.
- Конфиденциально переведите токены с token account отправителя на token account получателя.
- Примените ожидающий баланс получателя к конфиденциальному доступному балансу.
- Выведите конфиденциальный доступный баланс получателя в публичный баланс.
Ключи аудитора
Mint account с расширением Confidential Balances может хранить необязательный глобальный публичный ключ ElGamal аудитора. Если он настроен, каждый конфиденциальный перевод включает сумму, зашифрованную для отправителя, получателя и аудитора. Доказательство перевода подтверждает, что все три шифротекста содержат одинаковую сумму. Публичный доступ к сумме по-прежнему закрыт, однако владелец секретного ключа аудитора может расшифровывать суммы переводов для данного mint.
Полномочный орган Confidential Balances задаёт ключ аудитора при инициализации расширения или изменяет его впоследствии с помощью UpdateMint. Полномочный орган может сменить или удалить ключ. Смена ключа распространяется только на будущие переводы, поэтому сохраняйте предыдущие секретные ключи, если требуется доступ к историческим данным аудита. Ключи аудитора предоставляют доступ на чтение; они не авторизуют переводы токенов и не раскрывают полный конфиденциальный баланс аккаунта.
Примеры настройки и смены ключа см. в разделе Настройка аудитора. Кошелькам, обозревателям, биржам и провайдерам комплаенса также рекомендуется ознакомиться с руководством по интеграции аудитора.
Подробнее о каждом шаге процесса конфиденциального перевода см. в соответствующих разделах:
Создание mint account
Как создать mint account с включённым расширением Confidential Balances
Создание token account
Как настроить token account с включённым расширением Confidential Balances
Внесение токенов
Как внести токены в конфиденциальный ожидающий баланс
Применение ожидающего баланса
Как применить ожидающий баланс к доступному конфиденциальному балансу
Вывод токенов
Как вывести токены из конфиденциального доступного баланса
Перевод токенов
Как конфиденциально переводить токены между token accounts
Руководство по интеграции
Как кошельки, обозреватели и биржи могут поддерживать токены Confidential Balances
Руководство для эмитента
Как выпустить токен Confidential Balances и управлять им (политика одобрения, аудиторы, комиссии, выпуск и сжигание)
На диаграмме ниже показана подробная последовательность базового процесса конфиденциальных переводов токенов:
Инструкции 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?