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

Adicionar uma Carteira Privada a uma carteira Solana existente

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 duas etapas:
  1. Derive o par de chaves protegido
  2. Registre o endereço Solana em um registro on-chain.
A criação de uma carteira privada não exige um depósito no saldo privado.O registro vincula a chave pública de assinatura às chaves públicas de nullifier e de visualização. Juntas, essas chaves públicas formam o endereço protegido.
Cada registro é um PDA de propriedade do , que qualquer pessoa pode consultar para verificar se um endereço Solana pode receber transferências privadas.
  • owner é o endereço Solana do usuário, usado para derivar o PDA do registro.
  • address é o endereço protegido do usuário.
  • buildRegistrationTransaction retorna uma transação compilada de registro ou atualização de chave. Ele retorna undefined se a carteira já estiver registrada.
  • sendTransaction assina e envia a transação.
  • isWalletRegistered lê 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:
  1. Fazer on-ramp de um saldo em moeda fiduciária para um saldo privado em criptomoedas
  2. Depositar de uma conta SPL pública em um saldo privado
O on-ramp e o depósito oferecem garantias de privacidade diferentes. Para obter maior privacidade, recomendamos usar o on-ramp em vez do depósito.

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:
  1. Como alternativa para transferências privadas a destinatários que não têm uma carteira privada ou
  2. Como retirada direta para uma conta pública de tokens SPL.
Para retiradas, recomendamos indicar claramente que o usuário está saindo do saldo privado, assim como em uma exportação de frase-semente ou chave privada.

Withdraw

Retire para um saldo público em criptomoedas.

Não encontrou o que estava procurando?

Entre em contato! Telegram | E-Mail | Typeform