Saltar al contenido principal
Una billetera privada consta de un par de claves de Solana para firmar, una clave de anulador y una clave de visualización para el cifrado. En conjunto, estas claves forman el par de claves protegido. Tu sistema de gestión de claves almacena el par de claves protegido. El código de la billetera usa la interfaz de privacidad y el SDK para crear transacciones privadas. Key management and the Privacy SDK connect through the Privacy Interface. The Privacy SDK calls the Privacy API. The Privacy API submits the transaction to Solana. La integración permite que tus usuarios:
  1. Creen una billetera privada de autocustodia
  2. Reciban transferencias privadas con una dirección de Solana
  3. Depositen tokens en un saldo privado
  4. Envíen fondos de forma privada a una dirección de Solana
  5. Retiren fondos a cualquier dirección de Solana
  6. Descifren localmente los saldos privados y el historial de transacciones
La integración incluye:
  1. Par de claves protegido – en tu sistema de gestión de claves para el cifrado
  2. Interfaz de privacidad y SDK – para crear transacciones privadas
  3. Flujos de usuario – para integrarlos en tu billetera

Contexto para tu IA

Add a Private Wallet to an existing Solana wallet

Abrir en Cursor
1

Integra el par de claves protegido

Una integración de billetera privada agrega un par de claves protegido a tu sistema de gestión de claves. Un par de claves protegido firma, cifra y descifra transacciones.El par de claves protegido agrupa las claves de firma, de anulador y de visualización.
  • Clave de firma: El par de claves Ed25519 de Solana de la billetera para firmar transacciones.
  • Clave de visualización: Un par de claves X25519 que se usa para cifrar y descifrar transacciones.
  • Clave de anulador:
Una billetera puede derivar el par de claves protegido a partir de una firma EdDSA de un mensaje fijo.Las firmas EdDSA son deterministas, por lo que firmar el mismo mensaje con el mismo par de claves de Solana siempre produce el mismo par de claves protegido. Usamos la firma como semilla para derivar un par de claves protegido.La carga útil del mensaje fijo es "TSPP/derive/v1", codificada como un mensaje fuera de cadena v0 de Solana.La clave de firma protegida es la clave EdDSA de Solana de la billetera. Las claves de anulador y de visualización son claves adicionales derivadas de la firma.
La firma es la semilla de derivación. Quien la tenga puede derivar las claves de anulador y de visualización, y descifrar las transacciones del usuario. Rechaza cualquier solicitud de firma de un tercero para el mensaje "TSPP/derive/v1".
Pseudocódigo para derivar un par de claves protegido a partir de una firma de Solana:
Implementación de ejemplo: TypeScript · Rust
2

Integra la interfaz de privacidad y el SDK

La interfaz de privacidad permite que tu código use el SDK de privacidad para crear transacciones privadas sin acceder directamente al material criptográfico de las claves. Tu sistema de gestión de claves implementa la interfaz de privacidad en dos partes.
  1. Interfaz de firma para crear transacciones con el SDK de privacidad. Consulta el código fuente: TypeScript/ Rust
  2. Interfaz de cifrado y descifrado. Consulta el código fuente: TypeScript/ Rust
La interfaz de privacidad no tiene estado y, por lo tanto, no almacena saldos ni el historial de transacciones. Para mejorar el rendimiento, recomendamos almacenar localmente en caché los saldos y el historial de transacciones de los usuarios.

Acerca de la generación de pruebas

La generación de pruebas de conocimiento cero requiere como entradas en texto sin formato todos los datos de la transacción del usuario y las claves de anulador.Actualmente, la generación de pruebas en el servidor está disponible mediante la URL RPC estándar de Helius.La generación local de pruebas estará disponible próximamente. El demostrador predeterminado de los SDK es un enclave AWS Nitro con certificación.
3

Integra los flujos de usuario

Crea una billetera privada

Una billetera privada se crea en dos pasos:
  1. Deriva el par de claves protegido
  2. Registra la dirección de Solana en un registro en cadena.
Crear una billetera privada no requiere depositar fondos en el saldo privado.
En tu aplicación de billetera, puedes permitir que tus usuarios creen billeteras privadas solo para una clave pública dedicada de «Billetera privada» o para cualquier clave pública.
El registro vincula la clave pública de firma con las claves públicas de anulador y de visualización. En conjunto, estas claves públicas forman la dirección protegida.
Cada registro es una PDA propiedad del , que cualquiera puede consultar para comprobar si una dirección de Solana puede recibir transferencias privadas.
  • owner es el firmante de Solana del usuario y se usa para derivar la PDA del registro.
  • address es la dirección protegida del usuario.
  • getRegisterInstructionAsync registra las claves de la dirección protegida.
  • getSetMergeEncryptionInstructionAsync activa la fusión de las UTXO del usuario. Una transferencia puede gastar como máximo 40 UTXO, por lo que la fusión garantiza que los usuarios siempre puedan gastar todo su saldo en una sola transferencia. Obtén más información sobre la fusión de UTXO.
  • sendTransaction firma y envía la transacción.
  • isWalletRegistered lee la PDA del registro para comprobar el registro.
Ejemplos completos de registro: TypeScript · Rust

Sincroniza el saldo privado y el historial de transacciones

La sincronización del saldo obtiene el estado cifrado desde el RPC y lo descifra en la billetera.El RPC no descifra los datos. Solo el propietario puede descifrar un saldo privado con una clave de visualización.
Una billetera debe descifrar y actualizar los saldos antes de las transacciones privadas y siempre que ejecute recuperaciones históricas: al desbloquear la billetera, abrir la billetera privada, reanudar la aplicación, volver a conectarse a la red, detectar una interrupción del flujo o restaurar la billetera.

Read a Private Balance

Read Private Transaction History

Deposita fondos en un saldo privado

Los usuarios pueden depositar fondos en un saldo privado de dos maneras:
  1. Convertir un saldo en moneda fiduciaria en un saldo privado de criptomonedas
  2. Depositar desde una cuenta SPL pública en un saldo privado
La conversión y el depósito ofrecen distintas garantías de privacidad. Para obtener mayor privacidad, recomendamos usar la conversión en lugar del depósito.

On-/Off-Ramp

Convierte moneda fiduciaria directamente hacia y desde un saldo privado.

Deposit

Deposita desde un saldo público de criptomonedas.

Transferencias privadas

Los usuarios pueden enviar transferencias privadas a cualquier dirección de billetera de Solana.Para cada transferencia privada, el SDK de privacidad busca la dirección de la billetera en el registro en cadena para comprobar si el destinatario tiene una billetera privada.El SDK de privacidad puede convertir una transferencia privada en un retiro de un saldo privado a uno público cuando el destinatario no tiene una billetera privada.
Recomendamos etiquetar la transacción en la interfaz de usuario como un retiro para evitar que el usuario retire fondos accidentalmente a un saldo público.Recomendamos solicitar una firma adicional del usuario en la interfaz de usuario para evitar que retire fondos accidentalmente a un saldo público.

Private Transfer

Transfiere fondos de forma privada a un saldo privado.

Retira fondos a un saldo público

Los retiros se pueden usar de dos maneras:
  1. Como alternativa para las transferencias privadas a destinatarios que no tienen una billetera privada, o
  2. Como retiro directo a una cuenta pública de tokens SPL.
Para los retiros, recomendamos indicar claramente que el usuario está saliendo del saldo privado, de forma similar a una exportación de una frase semilla o una clave privada.

Withdraw

Retira fondos a un saldo público de criptomonedas.

¿No encontraste lo que buscabas?