Що таке Confidential Balances?
Confidential Balances — це розширення Token-2022, яке дозволяє переказувати токени між token account без розкриття суми переказу. Це корисно для транзакцій із захистом конфіденційності. Приватними є лише суми переказів і баланси токенів. Адреси token account залишаються публічними.
- Огляд протоколу — Деталі щодо базового криптографічного протоколу
- Посібник із швидкого старту — Налаштування та основні команди CLI
- Confidential Balances Cookbook - Фрагменти коду з прикладами використання Confidential Balances
Як це працює?
Розширення Confidential Balances додає інструкції до програми Token Extension, які дозволяють переказувати токени між акаунтами без розкриття суми переказу.
Базовий процес конфіденційних переказів токенів виглядає так:
- Створіть mint account з увімкненим Confidential Balances.
- Створіть token account з увімкненим 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 та керувати ним (політика затвердження, аудитори, комісії, mint та burn)
Діаграма нижче показує детальну послідовність основного процесу конфіденційних переказів токенів:
Інструкції 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?