Skip to main content

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.
Dois cartões de transação Solana lado a lado. O cartão confidencial mostra o hash da transação, remetente e destinatário enquanto o ativo e a quantidade estão ocultos. O cartão anônimo mostra apenas o hash da transação; o remetente, ativo, quantidade e destinatário estão todos ocultos. O hash da transação permanece público em ambos. Existem diferentes tipos de Anéis:
  1. 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.
  2. 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.
Saldos privados mostrados como uma zona onchain pontilhada contendo dois anéis. O Anel Padrão é confidencial, autogestão e sem permissão. O Anel Personalizado é confidencial ou anônimo, autogestão, e adiciona política personalizada e conformidade personalizada. Uma transferência privada conecta os anéis, e cada um deposita e saca de uma camada de saldos públicos Solana abaixo.

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.
As autoridades dos anéis são declaradas na criação do anel, para que os usuários possam inspecionar a política antes de escolher um anel. O Anel Padrão é sem permissão e não possui autoridade personalizada ou auditor.
Se você deseja configurar seu próprio Anel Personalizado, contate-nos e vamos ajudá-lo a configurar. Você pode trazer sua própria conformidade ou usar a solução gerenciada de KYC e triagem de sanções da Helius.

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. Diagrama do ciclo de vida do Anel. Um saldo público de 100 USDC deposita-se em um Anel e um saldo fiduciário de USD / EUR / ... entra no mesmo Anel, fundos se movem entre dois saldos privados via transferência privada, depois são sacados para um saldo público ou saem para um saldo fiduciário. Usuários enviam tokens para um endereço de carteira Solana, assim como fazem com saldos públicos. A Privacy API roteia a transferência automaticamente para a Carteira Privada, se o destinatário tiver uma. Caso contrário, a transferência é um saque para o endereço público do destinatário. Qualquer pessoa pode depositar em qualquer Carteira Privada conhecendo apenas o endereço da carteira pública do destinatário. Quando o aplicativo do remetente não suporta privacidade, o destinatário recebe os fundos publicamente e pode criptografá-los para o seu próprio saldo privado em um segundo passo.

Depósito em um Saldo Privado: O Que É Privado

Os usuários podem depositar em um saldo privado de duas maneiras:
  1. On-ramp de um saldo fiduciário para um saldo cripto privado
  2. Depósito de um saldo cripto público para um privado

Transferência Privada: O Que É Privado

Os usuários podem enviar uma transferência privada de duas maneiras:
  1. Transferir no mesmo Anel
  2. 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.

Saque de um Saldo Privado: O Que É Privado

Os usuários podem sacar de um saldo privado de duas maneiras:
  1. Off-ramp de cripto privado para um saldo fiduciário
  2. Saque de cripto privado para um saldo cripto público

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.
  1. O saldo de SOL ou SPL do usuário é criptografado onchain.
  2. Buscar estado criptografado e descriptografar localmente, ou um provedor delegado descriptografa e serve o estado descriptografado.
  3. A carteira define a quantidade e o destinatário, em seguida solicita uma prova ZK.
  4. O provedor RPC gera a prova ZK por padrão e a retorna. Um Anel Personalizado também requer uma prova de política.
  5. 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:
  1. O aplicativo acompanha o status por meio do hash da transação Solana.

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 o inbox. 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. Carteira do usuário mostrando duas carteiras Solana públicas e uma carteira privada. Uma seta de entrada conecta a chave pública da Carteira Pública A ao Endereço Protegido da carteira privada.
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.
  1. 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.
  2. 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. Uma Carteira Privada conectada por linhas pontilhadas a várias notas UTXO, cada uma com um valor de um ativo. O saldo da carteira é a soma das notas.
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 amount vai 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.
Alice envia 35 dos seus 50 USDC para Bob. Em uma conta de token Solana o campo de quantidade muda no local de 50 para 15. Com UTXOs, a única nota de 50 USDC de Alice é gasta e duas novas notas são criadas: uma nota de 35 USDC para Bob e uma nota de troco de 15 USDC para Alice.
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.
Uma Carteira Privada pode manter saldos em vários Anéis ao mesmo tempo, sem limites para o número de Anéis. A qual Anel um saldo pertence não é uma propriedade da carteira. É uma propriedade de cada UTXO, armazenada no seu campo 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.
Ainda assim, as Contas de Token Privadas Solana armazenam os mesmos dados, como:
  • 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 asset manté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.
Uma Conta de Token Privada Solana. O Programa de Privacidade Solana possui uma Conta de Token Privada, que se expande para seus campos PrivateAccount: proprietário, ativo, quantidade, dados de política e id. do programa de política.
Uma Conta de Token Solana. O Programa de Token possui uma Conta de Token, expandida em seus campos AccountInfo (Data, Executável, Lamports, Proprietário) e o campo Data expandido em Dados da Conta (Emitir, Proprietário, Quantidade).

Sobre Concurrência

Os usuários podem gastar saldos privados assim que as transações forem finais. Ou seja, o saldo de um par de chaves pode ser usado simultaneamente quando é dividido entre um número de UTXOs. A carteira seleciona quais UTXOs gastar. Uma árvore de Merkle armazena o estado privado para o Anel Padrão sem permissão e todos os Anéis Personalizados. A árvore é armazenada em uma conta Solana gravável. Transferências privadas que escrevem para essa conta compartilham o limite de trava de gravação de 12 milhões de CU por conta por bloco do Solana. Uma transferência privada consome aproximadamente 220.000 CU. Uma árvore, portanto, suporta aproximadamente 54 transferências privadas por bloco, ou aproximadamente 130 transações por segundo nos tempos de bloco atuais do Solana de cerca de 400 milissegundos. O protocolo pode adicionar mais árvores para aumentar o throughput. Cada árvore é uma conta gravável separada com seu próprio orçamento de computação por conta, então transações em diferentes árvores não competem pelo mesmo orçamento de trava de gravação.

Sobre o Tempo de Geração de Provas

Atualmente, provas de conhecimento zero são geradas por um servidor provedor; uma transferência confidencial típica prova em dezenas de milissegundos; a prova local para Anéis Confidenciais está planejada. O tempo de prova está sendo ativamente otimizado para garantir uma experiência de usuário suave.

Termos

Didn’t find what you were looking for?

Reach out! Telegram | E-Mail | Contact