Skip to main content
Uma carteira privada consiste em um par de chaves Solana para assinatura, uma chave nula e uma chave de visualização para criptografia – juntas estas chaves formam o par de chaves blindado. A gestão de suas chaves mantém o par de chaves blindado. O código da carteira usa a Interface de Privacidade e o SDK para construir transações privadas. A gestão de chaves e o SDK de Privacidade se conectam através da Interface de Privacidade. O SDK de Privacidade chama a API de Privacidade. A API de Privacidade submete a transação para Solana. A integração permite que seus usuários:
  1. Criem uma carteira privada autocustódia
  2. Recebam transferências privadas com um endereço Solana
  3. Depositem tokens para um saldo privado
  4. Enviem de forma privada para um endereço Solana
  5. Retirem para qualquer endereço Solana
  6. Desencriptem saldos privados e histórico de transações localmente
A integração inclui:
  1. Par de Chaves Blindado – na sua gestão de chaves para criptografia
  2. Interface de Privacidade e SDK – para construir transações privadas
  3. Fluxos de Usuário – para integrar na sua carteira

Contexto para sua IA

Add a Private Wallet to an existing Solana wallet

Abrir no Cursor
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:
Uma carteira pode criar o par de chaves blindado de duas maneiras:
  1. Para carteiras baseadas em seed escolha Derivar da frase seed.
  2. Para carteiras não baseadas em seed escolha 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.
  1. Interface de Assinatura para Construção de Transações com o SDK de Privacidade. Visualizar Fonte: TypeScript/Rust
  2. 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 dois passos:
  1. Derivar o par de chaves blindado
  2. Registrar o endereço Solana no registro on-chain.
O registro vincula a chave pública de assinatura às chaves públicas nullifier e de visualização – juntas estas chaves públicas formam o endereço blindado.
Cada registro é um PDA de propriedade do , que qualquer pessoa pode consultar para ver se um endereço Solana pode receber transferências privadas.

Sincronizar Saldo Privado & Histórico de Transações

A sincronização de saldo busca o estado encriptado do RPC e o desencripta na carteira.O RPC não desencripta. Apenas o proprietário pode desencriptar um saldo privado com uma chave de visualização.
Uma carteira deve desencriptar e atualizar saldos antes de transações privadas e sempre que realizar backfills: ao desbloquear a carteira, abrir carteira privada, retomar aplicativo, reconectar à rede, gap de streaming, ou restaurar a carteira.

Ler um Saldo Privado

Ler Histórico de Transações Privadas

Depositar em um Saldo Privado

Os usuários podem depositar em um saldo privado de duas maneiras:
  1. On-ramp de um saldo fiat para um saldo cripto privado
  2. Depositar de uma conta SPL pública para um saldo privado
On-ramp e depósito diferem em suas garantias de privacidade. Recomendamos o uso de on-ramp sobre depósito para melhor privacidade.

On-/Off-Ramp

On-/Off-ramp fiat diretamente para e de um saldo privado.

Depósito

Depositar a partir de um saldo cripto público.

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 procura o endereço da carteira no registro onchain para verificar se o destinatário possui uma carteira privada.O SDK de Privacidade pode resolver uma transferência privada para uma retirada privada para pública, quando o destinatário não possui uma Carteira Privada.
Recomendamos rotular a transação na interface do usuário como uma retirada para garantir que o usuário não retire para um saldo público por acidente.

Transferência Privada

Transferir de forma privada para um saldo privado.

Retirar para um Saldo Público

As retiradas podem ser usadas de duas maneiras:
  1. Como fallback para transferências privadas para destinatários que não possuem uma carteira privada, ou
  2. Retirada direta para uma conta de token SPL pública.
Para retiradas, recomendamos rotular claramente que o usuário está saindo do saldo privado, semelhante a uma exportação de frase seed ou chave privada.

Retirada

Retirar para um saldo cripto público.

Didn’t find what you were looking for?

Reach out! Telegram | E-Mail | Contact