Introduction aux anneaux
Chaque transaction sur Solana est lisible publiquement : adresses, soldes et historique des transferts sont visibles par tous. Les anneaux chiffrent les soldes onchain et sont toujours non-custodiaux par défaut :- Dans les anneaux confidentiels, l’actif et le montant sont privés, tandis que l’expéditeur et le destinataire restent visibles.
- Dans les anneaux anonymes, l’actif, le montant, l’expéditeur et le destinataire sont privés.
- L’anneau par défaut est sans permission et confidentiel. Il chiffre l’actif et le montant, peut être utilisé par quiconque, et n’a pas de contrôles de politique personnalisés.
- Les anneaux personnalisés sont des programmes Solana qui rendent la confidentialité sur Solana programmable, similaire à Token-2022. Un anneau personnalisé peut être confidentiel ou anonyme avec des politiques, rapports et règles de visibilité personnalisés.
Pour la plupart des applications, nous recommandons l’anneau par défaut, sans permission et confidentiel.
Pour des contrôles de politique et de conformité personnalisés, contactez-nous pour commencer avec un anneau personnalisé.
Les anneaux personnalisés sont programmables
Les anneaux personnalisés sont de simples programmes Solana qui rendent la confidentialité programmable, avec des fonctionnalités similaires à Token-2022. Un anneau personnalisé peut définir des règles entièrement personnalisées pour les transferts et la visibilité/audit.Exemples de politiques d'anneaux personnalisés
Exemples de politiques d'anneaux personnalisés
Flux utilisateurs et garanties de confidentialité
Les transactions avec Helius Privacy sont exécutées nativement onchain et composées avec d’autres programmes Solana en une seule transaction. Les utilisateurs peuvent entrer, transférer en privé, ou sortir d’un anneau : 1. Dépôt ou on ramp. Les utilisateurs envoient des tokens d’un solde public Solana, ou d’un solde fiat, directement vers un solde privé. 2. Transfert privé. Les utilisateurs envoient des tokens entre soldes privés dans le même anneau, ou vers un autre. 3. Retrait ou off ramp. Les utilisateurs envoient des tokens d’un solde privé à un solde public Solana, ou directement à un solde fiat.Dépôt vers un solde privé : ce qui est privé
Les utilisateurs peuvent déposer vers un solde privé de deux façons :- On-ramp d’un solde fiat vers un solde crypto privé
- Dépôt d’un solde crypto public vers un solde crypto privé
- On-ramp from fiat balance
- Deposit from public crypto balance
Transfert privé : ce qui est privé
Les utilisateurs peuvent envoyer un transfert privé de deux façons :- Transfert dans le même anneau
- Transfert vers un anneau différent
Pour la plupart des applications, nous recommandons l’anneau par défaut, sans permission et confidentiel.
Pour des contrôles de politique et de conformité personnalisés, contactez-nous pour commencer avec un anneau personnalisé.
- Permissionless Confidential Ring
- Custom Rings
Retrait d’un solde privé : ce qui est privé
Les utilisateurs peuvent retirer d’un solde privé de deux façons :- Off-ramp de crypto privée vers un solde fiat
- Retrait de crypto privée vers un solde crypto public
- Off-ramp to fiat balance
- Withdraw to public crypto balance
Flux de transaction à haut niveau
Un transfert privé se comporte de manière similaire aux transferts publics et est exécuté en une seule transaction Solana.- Transfert privé
- Transfert Solana
- Le solde SOL ou SPL de l’utilisateur est chiffré onchain.
- Récupération de l’état chiffré et déchiffrement localement, ou un prestataire délégué déchiffre et fournit l’état déchiffré.
- Le portefeuille définit le montant et le destinataire, puis demande une preuve ZK.
- Le prestataire RPC génère la preuve ZK par défaut et la retourne. Un anneau personnalisé nécessite aussi une preuve de politique.
- Le portefeuille construit la transaction Solana. Les preuves ZK sont vérifiées sans révéler l’état chiffré. Les programmes invoqués et qui signe et soumet dépendent de l’anneau :
- L’application suit le statut via le hash de transaction Solana.
- Anneau confidentiel sans permission
- Anneau confidentiel personnalisé
- Anneau anonyme personnalisé
Portefeuille privé
Les utilisateurs conservent leur solde chiffré dans un portefeuille privé. Le portefeuille privé reçoit les transferts à l’adresse publique Solana de l’utilisateur, servant deinbox.
De cette manière, l’expéditeur entre toujours l’adresse Solana du destinataire, comme ils le font avec les transferts publics.
Création d’un portefeuille privé
Lors de la création d’un portefeuille privé, l’adresse Solana est enregistrée dans un registre onchain. Le registre mappe une adresse Solana à une . Les transferts sont chiffrés discrètement à l’adresse protégée. Plusieurs adresses Solana ne peuvent pas partager une adresse protégée. Chaque enregistrement de registre est un PDA possédé par le , que tout le monde peut consulter pour voir si une adresse Solana peut recevoir des transferts privés.Dans votre application de portefeuille, vous pouvez laisser vos utilisateurs créer des portefeuilles privés uniquement pour une clé publique “Portefeuille privé” dédiée,
ou pour n’importe quelle clé publique.
Transferts vers un portefeuille privé
À chaque transfert, l’API de confidentialité consulte l’adresse du portefeuille dans le registre onchain pour vérifier si le destinataire a un portefeuille privé. En cas de correspondance, elle utilise l’adresse protégée discrètement pour chiffrer le transfert.Lorsque le destinataire d’un transfert privé n’a pas de portefeuille privé, l’API de confidentialité résout le transfert en un retrait privé vers public.Nous recommandons de demander une signature utilisateur séparée dans l’interface pour s’assurer que l’utilisateur ne retire pas par accident vers un solde public.
Gestion des clés
Un portefeuille privé ajoute une paire de clés protégées à un portefeuille Solana à partir de votre paire de clés Solana.
La paire de clés protégées est un ensemble des clés de signature, nullificateur et visualisation. Ce n’est pas une paire de clés Solana.
L’adresse protégée est les clés publiques de la paire de clés protégées. Les transferts sont chiffrés à elle.
Création d’une paire de clés protégées
Un portefeuille peut créer la paire de clés protégées de deux manières.-
Dériver les clés à partir de la phrase de récupération.
- La méthode recommandée pour les portefeuilles basés sur la phrase de récupération.
- Anneaux confidentiels : la clé de signature est la même clé Ed25519 qu’un portefeuille Solana dérive de cette phrase. Les clés de nullificateur et de visualisation sont des clés supplémentaires dérivées de la même phrase.
- Anneaux anonymes personnalisés : la clé de signature est une clé P-256 supplémentaire dérivée de la phrase de récupération du portefeuille.
- Vous pouvez toujours recréer la paire de clés protégées de la même manière que vous recréez le portefeuille Solana.
-
Dériver les clés à partir d’un message fixe avec la clé Solana existante.
- Les signatures Solana sont déterministes, donc la même paire de clés Solana produit toujours la même paire de clés protégées. L’application ne reçoit jamais la clé privée.
- La méthode recommandée pour les tests et les portefeuilles qui n’utilisent pas de phrase de récupération. Le portefeuille intégrateur doit s’assurer que la signature n’est pas exposée à des tiers.
Intégration d’une paire de clés protégées
Un portefeuille peut conserver la paire de clés protégées lui-même via l’Intégration de portefeuille native. Avec le Portefeuille de confidentialité embarqué, un Fournisseur de portefeuille conserve la paire de clés protégées et effectue ses opérations de clés à la place.Modes de déchiffrement et synchronisation du portefeuille
Seul le propriétaire peut déchiffrer un solde de portefeuille privé avec une clé de visualisation. Pour une divulgation sélective, un propriétaire peut partager une clé de visualisation avec un auditeur, afin que l’auditeur puisse lire l’activité sans pouvoir dépenser. Dans les anneaux personnalisés, la politique peut déclarer un auditeur qui peut déchiffrer tous les soldes de cet anneau personnalisé. Les anneaux confidentiels (l’anneau par défaut et les anneaux personnalisés confidentiels) supportent le déchiffrement local et délégué. Les anneaux anonymes (uniquement les anneaux personnalisés) supportent uniquement le déchiffrement délégué.Un portefeuille doit déchiffrer et mettre à jour les soldes partout où il relance le remplissage : à l’ouverture du portefeuille,
l’ouverture du portefeuille privé, reprise de l’application, reconnexion au réseau, écart de flux, ou restauration de portefeuille.
Déchiffrement local
En mode de déchiffrement local, le portefeuille déchiffre et synchronise les soldes et l’historique localement. Les serveurs Helius ne reçoivent pas la phrase mnémotechnique, la graine, la clé privée de signature, les clés privées de visualisation, ou le secret de nullificateur.Déchiffrement délégué
En mode de déchiffrement délégué, le portefeuille et le prestataire sélectionné partagent une clé de visualisation. Cela permet au prestataire de déchiffrer les soldes et l’historique, mais cela ne confère pas l’autorité de dépense. Un portefeuille peut également partager les clés de visualisation antérieures lorsqu’il autorise le prestataire à synchroniser l’activité historique. L’accès de l’auditeur est séparé du déchiffrement délégué. Un auditeur reçoit la visibilité de l’anneau définie par la politique, tandis qu’un prestataire délégué reçoit un accès de synchronisation limité au portefeuille.L’indexeur sert l’état chiffré
Tout comme les portefeuilles publics reposent sur un RPC Solana, les portefeuilles privés reposent sur un indexeur. L’indexeur fournit l’état chiffré dont un portefeuille a besoin pour lire les soldes et construire des transactions privées. Par défaut, l’indexeur est accessible via l’; toute personne peut également exécuter son propre indexeur sans permission comme solution de secours.Solde du portefeuille privé
Le solde du portefeuille privé est conservé onchain dans des comptes de tokens Solana privés sous forme de UTXOs (sorties de transactions non dépensées), pas dans un compte de tokens Solana. L’anneau par défaut et tous les anneaux personnalisés stockent les soldes privés dans un arbre Merkle d’état. Le solde du portefeuille privé est la somme de tous les UTXOs possédés par un portefeuille privé. Les programmes Solana peuvent posséder des UTXOs de manière similaire aux comptes Solana réguliers. Cette documentation utilise les comptes de tokens Solana privés et les UTXOs de manière interchangeable.Soldes dans les UTXOs vs comptes Solana
Soldes dans les UTXOs vs comptes Solana
Pour l’expérience utilisateur, il n’importe pas si le solde est conservé dans des UTXOs ou des comptes de tokens Solana.À un niveau technique, dépenser un solde public réduit le 
amount dans un compte de tokens Solana.
Dépenser un solde privé n’écrase pas le champ amount d’un UTXO.
Au lieu de cela, les transactions privées prennent les UTXOs existants en entrée (choisis automatiquement par le SDK),
consomment les entrées et créent de nouvelles sorties pour le destinataire et pour le solde restant de l’expéditeur.Par exemple, Alice a 50 USDC et envoie 35 à Bob.- Dans un compte de tokens Solana, son champ
amountpasse de 50 à 15, et celui de Bob augmente de 35. Le nombre change sur place. - Avec les UTXOs, Alice détient une note de 50 USDC. La transaction la dépense et crée deux nouvelles notes : une note de 35 USDC pour Bob, et une note de change de 15 USDC pour Alice. Sa vieille note de 50 est maintenant dépensée.
- Une note d'entrée
- Plusieurs notes d'entrée
Lors du dépôt à un solde privé de SOL et d’actifs SPL, un PDA d’interface possédé par le programme de Confidentialité Solana met les tokens en séquestre et crée des UTXOs avec l’utilisateur comme propriétaire.Lors du retrait vers un solde public, les UTXOs existants sont marqués comme dépensés, et les tokens sont libérés vers les comptes de tokens Solana.
policy_program_id.
Comptes de tokens Solana privés
Un compte de tokens Solana privé est un UTXO qui se comporte de manière similaire à un compte de tokens Solana avec deux différences principales :- un compte de tokens Solana privé ne nécessite pas d’exemption de loyer lors de sa création, et
- son solde est chiffré onchain.
- Actif : la frappe que l’UTXO contient des unités de. SOL est l’adresse de frappe par défaut. L’actif peut être SOL ou n’importe quel actif SPL ou Token-2022.
- Montant : le nombre d’unités de
assetque la note contient, dans l’unité la plus petite de l’actif. - Données de programme et de politique : données facultatives pour la politique d’anneau configurée pour ajouter une fonctionnalité similaire à Token-2022
- Diagramme
- Code
Voir le compte de tokens Solana
Voir le compte de tokens Solana
- Diagramme
- Code