Конфіденційні баланси

Що таке Confidential Balances?

Confidential Balances — це розширення Token-2022, яке дозволяє переказувати токени між token account без розкриття суми переказу. Це корисно для транзакцій із захистом конфіденційності. Приватними є лише суми переказів і баланси токенів. Адреси token account залишаються публічними.

Як це працює?

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

Confidential Balances Basic Overview

Базовий процес конфіденційних переказів токенів виглядає так:

  1. Створіть mint account з увімкненим Confidential Balances.
  2. Створіть token account з увімкненим 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 account.
EmptyAccountОчищує очікувані та доступні конфіденційні баланси, щоб дозволити закриття token account.
DepositКонвертує публічний баланс токенів у очікуваний конфіденційний баланс.
WithdrawКонвертує доступний конфіденційний баланс назад у публічний баланс.
TransferКонфіденційно переказує токени між token accounts.
ApplyPendingBalanceКонвертує очікуваний баланс у доступний баланс після депозитів або переказів.
EnableConfidentialCreditsДозволяє token account отримувати конфіденційні перекази токенів.
DisableConfidentialCreditsБлокує вхідні конфіденційні перекази, водночас дозволяючи публічні перекази.
EnableNonConfidentialCreditsДозволяє token account отримувати публічні перекази токенів.
DisableNonConfidentialCreditsБлокує звичайні перекази, щоб token account міг отримувати лише конфіденційні перекази.
TransferWithFeeКонфіденційно переказує токени між token accounts з комісією.
ConfigureAccountWithRegistryАльтернативний спосіб налаштування token account для Confidential Balances з використанням акаунта ElGamalRegistry замість доказу VerifyPubkeyValidity.

Is this page helpful?

Зміст

Редагувати сторінку