- Criem uma carteira privada autocustódia
- Recebam transferências privadas com um endereço Solana
- Depositem tokens para um saldo privado
- Enviem de forma privada para um endereço Solana
- Retirem para qualquer endereço Solana
- Desencriptem saldos privados e histórico de transações localmente
- Par de Chaves Blindado – na sua gestão de chaves para criptografia
- Interface de Privacidade e SDK – para construir transações privadas
- Fluxos de Usuário – para integrar na sua carteira
Contexto para sua IA
Adicionar uma Carteira Privada a uma carteira Solana existente
Ver prompt
Ver prompt
1
Integrar o Par de Chaves Blindado
Uma integração de carteira privada adiciona um par de chaves blindado à sua gestão de chaves. Um par de chaves blindado assina, encripta e desencripta transações.O par de chaves blindado é um conjunto das chaves de assinatura, nullifier e visualização.- Chave de assinatura: O par de chaves Ed25519 Solana da carteira para assinar transações.
- Chave de visualização: Um par de chaves P-256, usado para encriptar e desencriptar transações.
- Chave nullifier:
- Para carteiras baseadas em seed escolha Derivar da frase seed.
- Para carteiras não baseadas em seed escolha Derivar da assinatura EdDSA.
- Derivar da frase seed
- Derivar da assinatura EdDSA
Uma carteira baseada em seed deriva o par de chaves blindado de uma única frase mnemônica BIP-39 e um índice de conta (
0, 1, …).Cada índice de conta mapeia um par de chaves Solana para um par de chaves blindado.
Você pode recuperar o par de chaves blindado da mesma forma que recupera o par de chaves Solana.Por exemplo:- Conta 0: Par de chaves Solana 0 e par de chaves blindado 0
- Conta 1: Par de chaves Solana 1 e par de chaves blindado 1
A chave de assinatura blindada é a chave Ed25519 Solana dessa conta.
As chaves nullifier e de visualização são chaves adicionais derivadas do mesmo seed.
Implementação de Exemplo: Exemplo em TypeScript · Exemplo em Rust
2
Integrar a Interface de Privacidade e SDK
A Interface de Privacidade permite que seu código use o SDK de Privacidade para construir transações privadas sem acessar diretamente o material das chaves. Sua gestão de chaves implementa a Interface de Privacidade em duas partes.- Interface de Assinatura para Construção de Transações com o SDK de Privacidade. Visualizar Fonte: TypeScript/Rust
- Interface de Criptografia e Descriptografia. Visualizar Fonte: TypeScript/Rust
A Interface de Privacidade é sem estado e, portanto, não armazena saldos ou histórico de transações.
Para desempenho, recomendamos o cache local dos saldos e histórico de transações do usuário.
Sobre a Geração de Prova
A geração de prova de conhecimento zero requer entradas de texto simples de todos os dados de transação do usuário e chaves nullifier.Atualmente, a geração de provas no servidor está disponível através do URL padrão do Helius RPC.A geração de provas local estará disponível em breve. A geração de provas no servidor encriptada de ponta a ponta no AWS Nitro está planejada antes do lançamento na mainnet.3
Integrar Fluxos de Usuário
Criar Carteira Privada
Uma carteira privada é criada em duas etapas:- Derive o par de chaves protegido
- Registre o endereço Solana em um registro on-chain.
Cada registro é um PDA de propriedade do , que qualquer pessoa pode consultar para verificar se um endereço Solana pode receber transferências privadas.
- TypeScript Client
- Rust Client
owneré o endereço Solana do usuário, usado para derivar o PDA do registro.addressé o endereço protegido do usuário.buildRegistrationTransactionretorna uma transação compilada de registro ou atualização de chave. Ele retornaundefinedse a carteira já estiver registrada.sendTransactionassina e envia a transação.isWalletRegisteredlê o PDA do registro para verificar o registro.
Exemplos completos de registro: TypeScript · Rust
Sincronizar saldo privado e histórico de transações
A sincronização do saldo busca o estado criptografado no RPC e o descriptografa na carteira.O RPC não descriptografa. Somente o proprietário pode descriptografar um saldo privado com uma chave de visualização.Uma carteira deve descriptografar e atualizar os saldos antes de transações privadas e sempre que executar preenchimentos retroativos: ao desbloquear a carteira, abrir a carteira privada, retomar o aplicativo, reconectar à rede, detectar uma lacuna no stream ou restaurar a carteira.
Read a Private Balance
Read Private Transaction History
Depositar em um saldo privado
Os usuários podem depositar em um saldo privado de duas maneiras:- Fazer on-ramp de um saldo em moeda fiduciária para um saldo privado em criptomoedas
- Depositar de uma conta SPL pública em um saldo privado
On-/Off-Ramp
Faça on-ramp ou off-ramp de moeda fiduciária diretamente para ou de um saldo privado.
Deposit
Deposite a partir de um saldo público em criptomoedas.
Transferências privadas
Os usuários podem enviar transferências privadas para qualquer endereço de carteira Solana.Para cada transferência privada, o SDK de privacidade consulta o endereço da carteira no registro on-chain para verificar se o destinatário tem uma carteira privada.O SDK de privacidade pode converter uma transferência privada em uma retirada de saldo privado para público quando o destinatário não tem uma carteira privada.Recomendamos identificar a transação na interface como uma retirada para evitar que o usuário retire fundos para um saldo público por acidente.
Private Transfer
Transfira de forma privada para um saldo privado.
Retirar para um saldo público
As retiradas podem ser usadas de duas maneiras:- Como alternativa para transferências privadas a destinatários que não têm uma carteira privada ou
- Como retirada direta para uma conta pública de tokens SPL.
Withdraw
Retire para um saldo público em criptomoedas.