- Créer un portefeuille privé non dépositaire
- Recevoir des transferts privés avec une adresse Solana
- Déposer des jetons sur un solde privé
- Envoyer des fonds de manière privée à une adresse Solana
- Retirer des fonds vers n’importe quelle adresse Solana
- Déchiffrer localement les soldes privés et l’historique des transactions
- Paire de clés protégée – dans votre système de gestion des clés pour le chiffrement
- Interface de confidentialité et SDK – pour créer des transactions privées
- Parcours utilisateur – à intégrer dans votre portefeuille
Contexte pour votre IA
Ajouter un portefeuille privé à un portefeuille Solana existant
Voir l'invite
Voir l'invite
1
Intégrer la paire de clés protégée
L’intégration d’un portefeuille privé ajoute une paire de clés protégée à votre système de gestion des clés. Une paire de clés protégée signe, chiffre et déchiffre les transactions.La paire de clés protégée regroupe les clés de signature, d’annulateur et de visualisation.- Clé de signature : la paire de clés Ed25519 Solana du portefeuille, utilisée pour signer les transactions.
- Clé de visualisation : une paire de clés X25519, utilisée pour chiffrer et déchiffrer les transactions.
- Clé d’annulateur :
"TSPP/derive/v1", encodée sous forme de message hors chaîne Solana v0.La clé de signature protégée est la clé EdDSA Solana du portefeuille.
Les clés d’annulateur et de visualisation sont des clés supplémentaires dérivées de la signature.Pseudo-code permettant de dériver une paire de clés protégée à partir d’une signature Solana :Exemple d’implémentation : TypeScript · Rust
2
Intégrer l’interface de confidentialité et le SDK
L’interface de confidentialité permet à votre code d’utiliser le SDK de confidentialité pour créer des transactions privées sans accéder directement aux éléments de clé. Votre système de gestion des clés implémente l’interface de confidentialité en deux parties.- Interface de signature pour la création de transactions avec le SDK de confidentialité. Voir la source : TypeScript/ Rust
- Interface de chiffrement et de déchiffrement. Voir la source : TypeScript/ Rust
L’interface de confidentialité est sans état et ne stocke donc ni les soldes ni l’historique des transactions.
Pour de meilleures performances, nous recommandons de mettre en cache localement les soldes des utilisateurs et l’historique des transactions.
À propos de la génération de preuves
La génération de preuves à divulgation nulle de connaissance nécessite des entrées en texte clair contenant l’intégralité des données de transaction de l’utilisateur ainsi que les clés d’annulateur.La génération de preuves côté serveur est actuellement disponible via l’URL RPC Helius standard.La génération locale de preuves sera bientôt disponible. Le générateur de preuves par défaut des SDK est une enclave AWS Nitro attestée.3
Intégrer les parcours utilisateur
Créer un portefeuille privé
Un portefeuille privé se crée en deux étapes :- Dériver la paire de clés protégée
- Enregistrer l’adresse Solana dans un registre sur la blockchain.
Dans votre application de portefeuille, vous pouvez permettre à vos utilisateurs de créer des portefeuilles privés uniquement pour une clé publique « Portefeuille privé » dédiée
ou pour n’importe quelle clé publique.
Chaque enregistrement du registre est un PDA détenu par le , que tout le monde peut consulter pour déterminer si une adresse Solana peut recevoir des transferts privés.
- TypeScript Client
- Rust Client
ownerest le signataire Solana de l’utilisateur, utilisé pour dériver le PDA du registre.addressest l’adresse protégée de l’utilisateur.getRegisterInstructionAsyncenregistre les clés de l’adresse protégée.getSetMergeEncryptionInstructionAsyncactive la fusion des UTXO de l’utilisateur. Un transfert peut dépenser au maximum 40 UTXO. La fusion garantit donc que les utilisateurs peuvent toujours dépenser la totalité de leur solde en un seul transfert. En savoir plus sur la fusion des UTXO.sendTransactionsigne et envoie la transaction.isWalletRegisteredlit le PDA du registre pour vérifier l’enregistrement.
Exemples complets d’enregistrement : TypeScript · Rust
Synchroniser le solde privé et l’historique des transactions
La synchronisation du solde récupère l’état chiffré depuis le RPC et le déchiffre dans le portefeuille.Le RPC n’effectue aucun déchiffrement. Seul le propriétaire peut déchiffrer un solde privé avec une clé de visualisation.Un portefeuille doit déchiffrer et mettre à jour les soldes avant les transactions privées et chaque fois qu’il effectue un rattrapage historique : au déverrouillage du portefeuille, à l’ouverture du portefeuille privé, à la reprise de l’application, à la reconnexion au réseau, après une interruption du flux ou lors de la restauration du portefeuille.
Read a Private Balance
Read Private Transaction History
Déposer des fonds sur un solde privé
Les utilisateurs peuvent déposer des fonds sur un solde privé de deux manières :- Convertir un solde fiduciaire en solde crypto privé
- Effectuer un dépôt depuis un compte SPL public vers un solde privé
On-/Off-Ramp
Convertissez directement une monnaie fiduciaire vers ou depuis un solde privé.
Deposit
Effectuez un dépôt depuis un solde crypto public.
Transferts privés
Les utilisateurs peuvent envoyer des transferts privés vers n’importe quelle adresse de portefeuille Solana.Pour chaque transfert privé, le SDK de confidentialité recherche l’adresse du portefeuille dans le registre sur la blockchain afin de vérifier si le destinataire possède un portefeuille privé.Le SDK de confidentialité peut convertir un transfert privé en retrait d’un solde privé vers un solde public lorsque le destinataire ne possède pas de portefeuille privé.Nous recommandons d’indiquer clairement dans l’interface utilisateur que la transaction est un retrait afin d’éviter que l’utilisateur ne retire accidentellement des fonds vers un solde public.Nous recommandons de demander une signature distincte à l’utilisateur dans l’interface afin d’éviter qu’il ne retire accidentellement des fonds vers un solde public.
Private Transfer
Effectuez un transfert privé vers un solde privé.
Retirer des fonds vers un solde public
Les retraits peuvent être utilisés de deux manières :- Comme solution de secours pour les transferts privés vers des destinataires qui ne possèdent pas de portefeuille privé, ou
- Comme retrait direct vers un compte de jetons SPL public.
Withdraw
Retirez des fonds vers un solde crypto public.