Introdução aos Anéis
Toda transação no Solana é publicamente legível: endereços, saldos e histórico de transferências são visíveis para qualquer pessoa. Os anéis criptografam saldos onchain e são sempre não-custodiais por padrão:- Em anéis confidenciais, o ativo e a quantidade são privados, enquanto o remetente e o destinatário permanecem visíveis.
- Em anéis anônimos, o ativo, a quantidade, o remetente e o destinatário são privados.
- O Anel Padrão é sem permissão e confidencial. Ele criptografa o ativo e a quantidade, pode ser usado por qualquer pessoa e não possui controles de política personalizados.
- Anéis Personalizados são programas Solana que tornam a privacidade no Solana programável, semelhante ao Token-2022. Um Anel Personalizado pode ser confidencial ou anônimo com política personalizada, relatórios e regras de visibilidade.
Para a maioria das aplicações, recomendamos o Anel Padrão, confidencial e sem permissão.
Para controles de política e conformidade personalizados, contate-nos para começar com um Anel Personalizado.
Anéis Personalizados São Programáveis
Anéis personalizados são programas Solana simples que tornam a privacidade programável, com recursos semelhantes ao Token-2022. Um Anel Personalizado pode definir regras totalmente customizadas para transferências e visibilidade/auditoria.Exemplos de políticas de Anéis Personalizados
Exemplos de políticas de Anéis Personalizados
Fluxos de Usuário e Garantias de Privacidade
Transações com Helius Privacy são executadas nativamente onchain e se compõem com outros programas Solana em uma única transação. Os usuários podem entrar, transferir de forma privada dentro ou sair de um Anel: 1. Depósito ou on ramp. Os usuários enviam tokens de um saldo público Solana ou de um saldo fiduciário, diretamente para um saldo privado. 2. Transferência privada. Os usuários enviam tokens entre saldos privados no mesmo Anel ou para um diferente. 3. Saque ou off ramp. Os usuários enviam tokens de um saldo privado para um saldo público Solana ou diretamente para um saldo fiduciário.Depósito em um Saldo Privado: O Que É Privado
Os usuários podem depositar em um saldo privado de duas maneiras:- On-ramp de um saldo fiduciário para um saldo cripto privado
- Depósito de um saldo cripto público para um privado
- On-ramp from fiat balance
- Deposit from public crypto balance
Transferência Privada: O Que É Privado
Os usuários podem enviar uma transferência privada de duas maneiras:- Transferir no mesmo Anel
- Transferir para um Anel diferente
Para a maioria das aplicações, recomendamos o Anel Padrão, confidencial e sem permissão.
Para controles de política e conformidade personalizados, contate-nos para começar com um Anel Personalizado.
- Permissionless Confidential Ring
- Custom Rings
Saque de um Saldo Privado: O Que É Privado
Os usuários podem sacar de um saldo privado de duas maneiras:- Off-ramp de cripto privado para um saldo fiduciário
- Saque de cripto privado para um saldo cripto público
- Off-ramp to fiat balance
- Withdraw to public crypto balance
Fluxo de Transação em Alto Nível
Uma transferência privada se comporta de maneira semelhante às transferências públicas e é executada em uma única transação Solana.- Transferência privada
- Transferência Solana
- O saldo de SOL ou SPL do usuário é criptografado onchain.
- Buscar estado criptografado e descriptografar localmente, ou um provedor delegado descriptografa e serve o estado descriptografado.
- A carteira define a quantidade e o destinatário, em seguida solicita uma prova ZK.
- O provedor RPC gera a prova ZK por padrão e a retorna. Um Anel Personalizado também requer uma prova de política.
- A carteira constrói a transação Solana. As provas ZK são verificadas sem revelar o estado criptografado. Os programas invocados e quem assina e submete dependem do Anel:
- O aplicativo acompanha o status por meio do hash da transação Solana.
- Anel Confidencial Sem Permissão
- Anel Confidencial Personalizado
- Anel Anônimo Personalizado
Carteira Privada
Os usuários mantêm seu saldo criptografado em uma Carteira Privada. A Carteira Privada recebe transferências no endereço público Solana do usuário, servindo como oinbox.
Desta forma, o remetente sempre insere o endereço Solana do destinatário, assim como fazem com transferências públicas.
Criação de uma Carteira Privada
Após a criação de uma carteira privada, o endereço Solana é registrado em um registro onchain. O registro mapeia um endereço Solana para um . As transferências são criptografadas nos bastidores para o Endereço Protegido. Vários endereços Solana não podem compartilhar um Endereço Protegido. Cada registro é um PDA de propriedade do , que qualquer pessoa pode consultar para ver se um endereço Solana pode receber transferências privadas.No aplicativo de carteira, você pode permitir que seus usuários criem carteiras privadas apenas para uma chave pública “Carteira Privada” dedicada,
ou para qualquer chave pública.
Transferências para uma Carteira Privada
Em cada transferência, a Privacy API consulta o endereço da carteira no registro onchain para verificar se o destinatário tem uma carteira privada. Em um acerto, ela utiliza o Endereço Protegido nos bastidores para criptografar a transferência.Quando o destinatário de uma transferência privada não possui uma Carteira Privada, a Privacy API resolve a transferência para um saque privado-para-público.Recomendamos solicitar uma assinatura separada do usuário na interface para garantir que o usuário não saque acidentalmente para um saldo público.
Gerenciamento de Chaves
Uma Carteira Privada adiciona um par de chaves protegido a uma carteira Solana a partir do seu par de chaves Solana.
O par de chaves protegido é um conjunto das chaves de assinatura, nulo e visualização. Não é um par de chaves Solana.
O Endereço Protegido é as chaves públicas do par de chaves protegidos. As transferências são criptografadas para ele.
Criando um Par de Chaves Protegidos
Uma carteira pode criar o par de chaves protegidos de duas maneiras.-
Derivar chaves da Frase Semente.
- A abordagem recomendada para carteiras baseadas em semente.
- Anéis Confidenciais: a chave de assinatura é a mesma chave Ed25519 que uma carteira Solana deriva da semente. As chaves nulo e visualização são chaves adicionais derivadas da mesma semente.
- Anéis Anônimos Personalizados: a chave de assinatura é uma chave P-256 adicional derivada da semente da carteira.
- Você sempre pode recriar o par de chaves protegidos da mesma forma que recria a carteira Solana.
-
Derivar chaves de uma mensagem fixa com a chave Solana existente.
- Assinaturas Solana são determinísticas, portanto o mesmo par de chaves Solana sempre produz o mesmo par de chaves protegidos. O aplicativo nunca recebe a chave privada.
- A abordagem recomendada para testes e carteiras que não usam uma frase semeadura. A carteira integradora deve garantir que a assinatura não seja exposta a terceiros.
Integrando um Par de Chaves Protegidos
Uma carteira pode manter o par de chaves protegidos ela mesma através da Integração de Carteira nativa. Com a Carteira de Privacidade Incorporada, um Provedor de Carteira mantém o par de chaves protegidos e executa suas operações de chave em vez disso.Modos de Descriptografia e Sincronização da Carteira
Somente o proprietário pode descriptografar um Saldo de Carteira Privada com uma Chave de Visualização. Para divulgação seletiva, um proprietário pode compartilhar uma chave de visualização com um auditor, para que o auditor possa ler a atividade sem poder gastar. Em anéis personalizados, a política pode declarar um auditor que pode descriptografar todos os saldos desse anel personalizado. Anéis confidenciais (o Anel Padrão e Anéis Personalizados confidenciais) suportam descriptografia local e delegada. Anéis anônimos (apenas Anéis Personalizados) suportam apenas descriptografia delegada.Uma carteira deve descriptografar e atualizar saldos sempre que executar backfills: ao desbloquear a carteira,
abertura de carteira privada, retomar de app, reconectar à rede, gap de stream, ou restauração de carteira.
Descriptografia Local
No modo de descriptografia local, a carteira descriptografa e sincroniza saldos e histórico localmente. Os servidores Helius não recebem a mnemônica, a semente, a chave privada de assinatura, chaves privadas de visualização ou segredo nulo.Descriptografia Delegada
No modo de descriptografia delegada, a carteira e um provedor selecionado compartilham uma chave de visualização. Isso permite que o provedor descriptografe saldos e histórico, mas não concede autoridade de gastos. Uma carteira também pode compartilhar chaves de visualização anteriores quando autoriza o provedor a sincronizar a atividade histórica. O acesso de auditoria é separado da descriptografia delegada. Um auditor recebe visibilidade do Anel definida pela política, enquanto um provedor delegado recebe acesso de sincronização com escopo de carteira.O Indexador Serve o Estado Criptografado
Assim como as carteiras públicas dependem de um RPC Solana, as Carteiras Privadas dependem de um indexador. O indexador serve o estado criptografado que uma carteira precisa para ler saldos e construir transações privadas. Por padrão, o indexador é acessível via ; qualquer pessoa também pode executar seu próprio indexador sem permissão como alternativa.Saldo da Carteira Privada
O Saldo da Carteira Privada é mantido onchain em Contas de Token Privadas Solana como UTXOs (saídas de transação não gastas), não uma conta de token Solana. O Anel Padrão e todos os Anéis Personalizados armazenam saldos privados em uma árvore de Merkle de estado único. O Saldo da Carteira Privada é a soma de todos os UTXOs de propriedade de uma Carteira Privada. Programas Solana podem possuir UTXOs semelhantes a contas Solana regulares. Esta documentação usa Contas de Token Privadas Solana e UTXOs de forma intercambiável.Saldos em UTXOs vs contas Solana
Saldos em UTXOs vs contas Solana
Para a experiência do usuário, não importa se o saldo é mantido em UTXOs ou contas de token Solana.A nível técnico, gastar um saldo público reduz o 
amount em uma conta de token Solana.
Gastar um Saldo Privado não sobrescreve o campo amount de um UTXO.
Em vez disso, transações privadas usam UTXOs existentes como inputs (automaticamente escolhidos pelo SDK),
consomem os inputs e criam novos outputs para o destinatário e para o saldo restante do remetente.Por exemplo, Alice tem 50 USDC e envia 35 para Bob.- Em uma conta de token Solana, seu campo
amountvai de 50 para 15, e o de Bob aumenta em 35. O número muda no local. - Com UTXOs, Alice possui uma nota de 50 USDC. A transação gasta-a e cria duas novas notas: uma nota de 35 USDC para Bob e uma nota de troco de 15 USDC para Alice. Sua nota de 50 antiga agora está gasta.
- Uma nota de input
- Várias notas de input
No depósito para um saldo privado de ativos SOL e SPL, uma PDA de interface de propriedade do Programa de Privacidade Solana guarda tokens e cria UTXOs com o usuário como proprietário.No saque para um saldo público, UTXOs existentes são marcados como gastos, e tokens são liberados para as contas de token Solana.
policy_program_id.
Contas de Token Privadas Solana
Uma Conta de Token Privada Solana é um UTXO que se comporta de maneira semelhante a uma conta de token Solana com duas diferenças principais:- uma Conta de Token Privada Solana não requer isenção de aluguel após a criação, e
- seu saldo é criptografado onchain.
- Ativo: a emissão que o UTXO mantém unidades. SOL é o endereço de emissão padrão. O ativo pode ser SOL ou qualquer ativo SPL ou Token-2022.
- Quantidade: o número de unidades que a nota
assetmantém, na menor unidade do ativo. - Programa e dados de política: dados opcionais para a política do anel configurado adicionar funcionalidade semelhante ao Token-2022.
- Diagrama
- Código
Visualizar conta de token Solana
Visualizar conta de token Solana
- Diagrama
- Código