O que são Saldos Confidenciais?
Saldos Confidenciais é uma extensão do Token-2022 que permite transferir tokens entre token accounts sem revelar o valor da transferência. Isso é útil para transações que preservam a privacidade. Apenas os valores das transferências e os saldos dos tokens são privados. Os endereços das token accounts permanecem públicos.
- Visão Geral do Protocolo - Detalhes sobre o protocolo criptográfico subjacente
- Guia de Início Rápido - Configuração e comandos básicos de CLI
- Cookbook de Saldos Confidenciais - Trechos de código mostrando como usar Saldos Confidenciais
Como funciona?
A extensão de Saldos Confidenciais adiciona instruções ao Token Extensions Program que permitem transferir tokens entre contas sem revelar o valor da transferência.
O fluxo básico das transferências confidenciais de tokens é o seguinte:
- Criar uma mint account com Saldos Confidenciais habilitados.
- Criar token accounts com Saldos Confidenciais habilitados para o remetente e o destinatário.
- Cunhar tokens na conta do remetente.
- Depositar o saldo público do remetente no saldo pendente confidencial.
- Aplicar o saldo pendente do remetente ao saldo disponível confidencial.
- Transferir confidencialmente os tokens da token account do remetente para a token account do destinatário.
- Aplicar o saldo pendente do destinatário ao saldo disponível confidencial.
- Sacar o saldo disponível confidencial do destinatário para o saldo público.
Chaves de auditor
Uma mint account de Saldos Confidenciais pode armazenar uma chave pública ElGamal de auditor global opcional. Quando configurada, cada transferência confidencial inclui o valor criptografado para o remetente, o destinatário e o auditor. A prova de transferência verifica que os três textos cifrados contêm o mesmo valor. O público ainda não consegue ler o valor, mas o detentor da chave secreta do auditor pode descriptografar os valores das transferências para aquela mint account.
A autoridade de Saldos Confidenciais define a chave do auditor ao inicializar a extensão ou a altera posteriormente com UpdateMint. A autoridade pode rotacionar ou remover a chave. Uma rotação se aplica apenas a transferências futuras, portanto, mantenha as chaves secretas anteriores quando o acesso histórico de auditoria for necessário. As chaves de auditor fornecem acesso de leitura; elas não autorizam transferências de tokens nem revelam o saldo confidencial completo de uma conta.
Para exemplos de configuração e rotação, consulte Configurar um auditor. Carteiras, exploradores, exchanges e provedores de conformidade também devem revisar as orientações de integração do auditor.
Para mais detalhes sobre as etapas do fluxo de transferência confidencial, consulte as páginas correspondentes:
Criar Mint Account
Como criar uma mint account com Saldos Confidenciais habilitados
Criar Token Account
Como configurar uma token account com Saldos Confidenciais habilitados
Depositar Tokens
Como depositar tokens no saldo pendente confidencial
Aplicar Saldo Pendente
Como aplicar o saldo pendente ao saldo confidencial disponível
Sacar Tokens
Como sacar tokens do saldo confidencial disponível
Transferir Tokens
Como transferir tokens confidencialmente entre token accounts
Guia de Integração
Como carteiras, exploradores e exchanges podem oferecer suporte a tokens de Saldos Confidenciais
Guia para Emissores
Como emitir e operar um token de Saldos Confidenciais (política de aprovação, auditores, taxas, emissão e queima)
O diagrama abaixo mostra uma sequência detalhada do fluxo básico para transferências confidenciais de tokens:
Instruções de Saldos Confidenciais
A lista completa de instruções da extensão de Saldos Confidenciais é a seguinte:
| Instrução | Descrição |
|---|---|
InitializeMint | Habilita Saldos Confidenciais em uma mint account. Esta instrução deve ser incluída na mesma transação que a instrução TokenInstruction::InitializeMint. |
UpdateMint | Atualiza a política de aprovação de contas da mint account e a chave pública ElGamal de auditor global opcional. |
ConfigureAccount | Habilita Saldos Confidenciais em uma token account. |
ApproveAccount | Aprova uma token account para Saldos Confidenciais caso a mint account exija aprovação para novas token accounts. |
EmptyAccount | Esvazia os saldos confidenciais pendentes e disponíveis para permitir o encerramento de um token account. |
Deposit | Converte o saldo público de tokens em saldo confidencial pendente. |
Withdraw | Converte o saldo confidencial disponível de volta para saldo público. |
Transfer | Transfere tokens entre token accounts de forma confidencial. |
ApplyPendingBalance | Converte o saldo pendente em saldo disponível após depósitos ou transferências. |
EnableConfidentialCredits | Permite que um token account receba transferências confidenciais de tokens. |
DisableConfidentialCredits | Bloqueia transferências confidenciais recebidas, permitindo ainda transferências públicas. |
EnableNonConfidentialCredits | Permite que um token account receba transferências públicas de tokens. |
DisableNonConfidentialCredits | Bloqueia transferências regulares para que a conta receba apenas transferências confidenciais. |
TransferWithFee | Transfere tokens entre token accounts de forma confidencial com uma taxa. |
ConfigureAccountWithRegistry | Forma alternativa de configurar token accounts para Saldos Confidenciais usando uma conta ElGamalRegistry em vez da prova VerifyPubkeyValidity. |
Is this page helpful?