- Creen una billetera privada de autocustodia
- Reciban transferencias privadas con una dirección de Solana
- Depositen tokens en un saldo privado
- Envíen fondos de forma privada a una dirección de Solana
- Retiren fondos a cualquier dirección de Solana
- Descifren localmente los saldos privados y el historial de transacciones
- Par de claves protegido – en tu sistema de gestión de claves para el cifrado
- Interfaz de privacidad y SDK – para crear transacciones privadas
- Flujos de usuario – para integrarlos en tu billetera
Contexto para tu IA
Add a Private Wallet to an existing Solana wallet
View prompt
View prompt
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:
"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.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.- Interfaz de firma para crear transacciones con el SDK de privacidad. Consulta el código fuente: TypeScript/ Rust
- 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:- Deriva el par de claves protegido
- Registra la dirección de Solana en un registro en cadena.
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.
Cada registro es una PDA propiedad del , que cualquiera puede consultar para comprobar si una dirección de Solana puede recibir transferencias privadas.
- TypeScript Client
- Rust Client
owneres el firmante de Solana del usuario y se usa para derivar la PDA del registro.addresses la dirección protegida del usuario.getRegisterInstructionAsyncregistra las claves de la dirección protegida.getSetMergeEncryptionInstructionAsyncactiva 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.sendTransactionfirma y envía la transacción.isWalletRegisteredlee 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:- Convertir un saldo en moneda fiduciaria en un saldo privado de criptomonedas
- Depositar desde una cuenta SPL pública en un saldo privado
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:- Como alternativa para las transferencias privadas a destinatarios que no tienen una billetera privada, o
- Como retiro directo a una cuenta pública de tokens SPL.
Withdraw
Retira fondos a un saldo público de criptomonedas.
¿No encontraste lo que buscabas?
¡Contáctanos! Telegram | Correo electrónico | Contacto