- Permissionless Confidential Ring
- Custom Confidential Ring
- Custom Anonymous Ring
Carteira privada e usuário
Os usuários mantêm o saldo criptografado em uma Carteira Privada e assinam transações privadas com a chave Solana Ed25519 existente. Uma integração de carteira privada adiciona um par de chaves protegido ao seu gerenciamento de chaves. Você pode fazer a integração por conta própria ou usar a Carteira Privada Incorporada.Transações privadas
Transferências privadas são transações Solana comuns. O runtime da Solana verifica as assinaturas e invoca o Solana Privacy Program, que verifica a prova ZK sem revelar o estado criptografado. Uma transferência confidencial típica utiliza cerca de 927 bytes, bem abaixo do limite de 4.096 bytes da v1.Example Confidential Transfer
Example Confidential Transfer
Para o exemplo de transferência confidencial com 2 entradas e 3 saídas da especificação.
Veja o código-fonte: Especificação · xtask/src/main.rsConsulte o layout de transações da Solana v1.
RPC
Uma disponibiliza o RPC da Solana, o indexador e um provador remoto.- RPC da Solana – Retorna o saldo público e envia transações para a rede Solana.
- Indexador – O indexador fornece o estado criptografado de que uma carteira precisa para consultar saldos e criar transações privadas. Qualquer pessoa também pode executar seu próprio indexador sem permissão como alternativa.
- Provador – As provas de conhecimento zero podem ser geradas localmente ou por um servidor provador em milissegundos, dependendo da transação e do hardware. A Helius usa GPUs para gerar provas.
Privacidade e programas Solana
O Solana Privacy Program (SPP) é o programa principal que verifica e executa todas as transições de estado privado. Programas de Ring personalizado e programas ZK da Solana adicionam lógica de conformidade ou de aplicação e, em seguida, invocam o SPP para atualizar o estado privado. Outros programas Solana podem interagir com esses programas por meio de CPI na mesma transação, dentro dos limites de transação da Solana, como o limite de profundidade de CPI de 5.ZK Program Transaction Flow
ZK Program Transaction Flow
- Permissionless Ring
- Custom Rings
- ZK Program alone
- ZK Program and additional Solana Program
Solana Privacy Program (SPP)
O Solana Privacy Program verifica provas de conhecimento zero e atualiza o estado privado. Use-o para depositar tokens, transferir saldos privados e sacar tokens para contas públicas. Outros programas invocam o SPP por meio de CPI para executar transições de estado privado.Programa de Ring personalizado
Um programa de Ring personalizado define permissões de transferência e quaisquer autoridades adicionais, de forma semelhante ao Token-2022. Use-o para configurar auditores, exigir um cossignatário ou permitir que uma autoridade congele saldos. Ele verifica uma prova ZK para aplicar sua lógica personalizada de conformidade e, em seguida, invoca o SPP para atualizar o estado privado.Programa ZK da Solana
Os programas de conhecimento zero (ZK) da Solana permitem que depósitos em garantia privados em programas Solana apliquem lógica de aplicação a saldos privados. Você pode criar swaps privados, staking, empréstimos e muito mais com programas ZK da Solana. Por exemplo, um swap confidencial pode aplicar os valores e o preço acordados sem torná-los públicos. O programa verifica uma prova ZK da sua lógica de aplicação e, em seguida, invoca o SPP, diretamente ou por meio de um programa de Ring personalizado, para atualizar o estado privado.Árvore de Merkle de estado e Forester
O Ring Padrão e todos os Rings personalizados armazenam o estado privado em uma conta de árvore de Merkle de estado, mantida por um nó Forester. As contas de árvore registram compromissos com o estado privado sem armazená-lo em contas Solana separadas. Portanto, você consulta saldos e o histórico de transações com métodos RPC dedicados do indexador, comogetShieldedTransactionsByTags, em vez de métodos de contas Solana como getAccountInfo. Consulte Consultar um saldo privado e Consultar o histórico de transações privadas.
Taxa de transferência
A árvore é armazenada em uma conta Solana gravável. As transferências privadas que gravam nessa conta compartilham o limite de bloqueio de gravação por conta de 12 milhões de CU por bloco da Solana. UTXOs diferentes podem ser gastos de forma independente, mas as transações que gravam na mesma árvore ainda compartilham os bloqueios de conta e os limites de computação da Solana. Uma transferência confidencial consome aproximadamente 140.000 CU no benchmark da instrução. Portanto, uma árvore comporta aproximadamente 86 transferências privadas por bloco ou cerca de 215 transações por segundo com os tempos atuais de bloco da Solana, de aproximadamente 400 milissegundos. O protocolo pode adicionar mais árvores para aumentar a taxa de transferência. Cada árvore é uma conta gravável separada com seu próprio orçamento de computação por conta. Assim, transações em árvores diferentes não disputam o mesmo orçamento de bloqueio de gravação.Interface SPL
A interface SPL permite a interoperabilidade entre tokens mantidos de forma pública e privada. Ela é um depósito em garantia por mint, que pode ser criado sem permissão, mas precisa ser criado uma única vez por mint.- Ao depositar SOL e ativos SPL em um saldo privado, uma PDA de interface pertencente ao Solana Privacy Program mantém os tokens em depósito em garantia e cria UTXOs com o usuário como proprietário.
- Ao sacar para um saldo público, as UTXOs existentes são marcadas como gastas e os tokens são liberados para as contas de token da Solana.
Saiba mais
Overview
Rings, garantias de privacidade e fluxo de transações.
Private State and UTXOs
Como os saldos privados são armazenados e gastos.
Encryption and Privacy Guarantees
Como os ativos são criptografados e qual é a função do par de chaves protegido.
Custom Enterprise Rings
Saiba como configurar um Ring personalizado.