Passer au contenu principal
Un portefeuille privé comprend une paire de clés Solana pour la signature, une clé d’annulateur et une clé de visualisation pour le chiffrement. Ensemble, ces clés forment la paire de clés protégée. Votre système de gestion des clés conserve la paire de clés protégée. Le code du portefeuille utilise l’interface de confidentialité et le SDK pour créer des transactions privées. 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. L’intégration permet à vos utilisateurs de :
  1. Créer un portefeuille privé non dépositaire
  2. Recevoir des transferts privés avec une adresse Solana
  3. Déposer des jetons sur un solde privé
  4. Envoyer des fonds de manière privée à une adresse Solana
  5. Retirer des fonds vers n’importe quelle adresse Solana
  6. Déchiffrer localement les soldes privés et l’historique des transactions
L’intégration comprend :
  1. Paire de clés protégée – dans votre système de gestion des clés pour le chiffrement
  2. Interface de confidentialité et SDK – pour créer des transactions privées
  3. Parcours utilisateur – à intégrer dans votre portefeuille

Contexte pour votre IA

Ajouter un portefeuille privé à un portefeuille Solana existant

Ouvrir dans Cursor
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 :
Un portefeuille peut dériver la paire de clés protégée d’une signature EdDSA portant sur un message fixe.Les signatures EdDSA sont déterministes. La signature d’une même paire de clés Solana pour un même message produit donc toujours la même paire de clés protégée. Nous utilisons la signature comme graine pour dériver une paire de clés protégée.La charge utile du message fixe est "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.
La signature est la graine de dérivation. Toute personne qui la détient peut dériver les clés d’annulateur et de visualisation, puis déchiffrer les transactions de l’utilisateur. Rejetez toute demande de signature du message "TSPP/derive/v1" provenant d’un tiers.
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.
  1. Interface de signature pour la création de transactions avec le SDK de confidentialité. Voir la source : TypeScript/ Rust
  2. 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 :
  1. Dériver la paire de clés protégée
  2. Enregistrer l’adresse Solana dans un registre sur la blockchain.
La création d’un portefeuille privé ne nécessite aucun dépôt sur le solde privé.
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.
Le registre associe la clé publique de signature aux clés publiques d’annulateur et de visualisation. Ensemble, ces clés publiques forment l’adresse protégée.
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.
  • owner est le signataire Solana de l’utilisateur, utilisé pour dériver le PDA du registre.
  • address est l’adresse protégée de l’utilisateur.
  • getRegisterInstructionAsync enregistre les clés de l’adresse protégée.
  • getSetMergeEncryptionInstructionAsync active 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.
  • sendTransaction signe et envoie la transaction.
  • isWalletRegistered lit 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 :
  1. Convertir un solde fiduciaire en solde crypto privé
  2. Effectuer un dépôt depuis un compte SPL public vers un solde privé
La conversion entrante et le dépôt offrent des garanties de confidentialité différentes. Pour une meilleure confidentialité, nous recommandons la conversion entrante plutôt que le dépôt.

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 :
  1. Comme solution de secours pour les transferts privés vers des destinataires qui ne possèdent pas de portefeuille privé, ou
  2. Comme retrait direct vers un compte de jetons SPL public.
Pour les retraits, nous recommandons d’indiquer clairement que l’utilisateur quitte le solde privé, comme lors de l’exportation d’une phrase de récupération ou d’une clé privée.

Withdraw

Retirez des fonds vers un solde crypto public.

Vous n’avez pas trouvé ce que vous cherchiez ?

Contactez-nous ! Telegram | E-Mail | Contact