Skip to main content
  1. Uma transferência privada move tokens em um anel entre carteiras privadas.
  2. As transferências privadas são enviadas em uma única transação Solana para um endereço de carteira Solana.

Transferência: o que é privado

O anel sem permissão é confidencial com quantidade e ativo criptografados. Um anel personalizado pode ser configurado como confidencial ou anônimo (remetente, destinatário, ativo e quantia criptografados).

Como Funcionamento de uma Transferência

Uma transferência privada se comporta de forma semelhante a uma transferência pública da Solana:
  1. O saldo SOL ou SPL do usuário é criptografado no blockchain.
  2. O usuário descriptografa o estado privado, a carteira constrói uma transferência e o proprietário assina.
    • Buscar estado criptografado com métodos dedicados RPC. Apenas o usuário pode descriptografar saldos localmente.
    • A carteira define a quantidade e o destinatário, então solicita uma prova ZK. O provedor RPC gera a prova ZK por padrão e a retorna.
  3. O runtime Solana verifica as assinaturas e invoca o Solana Privacy Program, que verifica a prova ZK sem revelar o estado criptografado.
  4. O aplicativo rastreia o status por meio do hash da transação Solana.
  1. O saldo SOL ou SPL do usuário é público no blockchain.
  2. A carteira lê o estado público, constrói uma transferência e o proprietário assina.
  3. O runtime Solana verifica as assinaturas e invoca o System Program ou Token Program, que atualiza o saldo público.
  4. O aplicativo rastreia o status por meio do hash da transação Solana.
Este é o fluxo de transação em alto nível para o anel confidencial sem permissão. Compare com anéis personalizados em conceitos.

Comece Agora

1

Pré-requisitos

The TypeScript examples require Node.js 24 or later, pnpm 11.18.0, and the Solana CLI.
Source: sdk-libs/ts
Add a Helius API key:
.env
The examples use the Solana CLI wallet as the payer by default. The payer must hold devnet SOL. See How to Get Devnet SOL.
2

Transferir para um Saldo Privado

  • O SDK retorna instruções. O aplicativo as assina e as envia.
  • sendAndConfirmFactory constrói uma transação Kit, submete-a e retorna a assinatura mais o slot atingido.
  • O exemplo gasta a conta de token privada da Solana criada pelo depósito anterior. Uma transferência pode gastar vários UTXOs.
  • transferUtxo seleciona uma conta de token privada da Solana desse saldo.
  • ProofInputUtxo.fromKeypair prepara o UTXO selecionado como uma entrada de prova com o par de chaves da carteira privada do remetente.
  • O par de chaves deriva o anulador que marca o UTXO de entrada como gasto enquanto o ativo e a quantidade permanecem criptografados.
  • senderAddress é o do remetente. A transferência é feita a partir dessa carteira.
  • [transferInput] lista os UTXOs selecionados pelo remetente. Uma transferência pode gastar vários UTXOs.
  • senderSigner.address é o endereço Solana do pagador da taxa. Um patrocinador de gás pode ocupar esse papel em uma transferência confidencial.
  • recipient é o endereço protegido do destinatário. A saída transferida é criptografada na chave de visualização do destinatário.
  • SOL_MINT seleciona SOL. Uma transferência de SPL ou Token 2022 passa a cunhagem do token.
  • TRANSFER_AMOUNT é denominada nas unidades base do ativo. SOL usa lamports. Os ativos SPL e Token 2022 usam as unidades base do token.
  • transfer.sign autoriza a transição de estado, criptografa o ativo e a quantia e produz as entradas para o provador de conhecimento zero.
  • assets é o registro de ativos usado para resolver ativos privados suportados.
  • client.proveTransact gera a prova de conhecimento zero a partir da transferência assinada e retorna os dados de instrução serializados.
  • A prova demonstra que o remetente possui e pode gastar as entradas sem revelar o ativo ou quantia criptografados.
  • payer assina e paga pela transação Solana. Um patrocinador de gás pode ocupar esse papel em uma transferência confidencial.
  • inputTree e outputTree são client.tree, a árvore Merkle de estado que contém os UTXOs gastos e recebe a saída do destinatário e a mudança do remetente.
  • data contém a prova de conhecimento zero e as saídas criptografadas produzidas na etapa anterior.
  • Uma transferência privada move o ativo apenas entre saldos privados. Não passa por contas públicas da Solana ou contas de tokens.
  • sendAndConfirm assina e submete transferInstruction como uma transação Solana.
  • A confirmação produz o slot atingido usado para limitar a busca do indexador.

Exemplo Completo de Código

Clone e execute o exemplo:
Os exemplos usam um anel confidencial no local/devnet aqui.
deposit_transfer_withdraw.ts

Guias Relacionados

Depósito

Saque

Ler um Saldo Privado

Ler Histórico Privado

Didn’t find what you were looking for?

Reach out! Telegram | E-Mail | Contact