Passer au contenu principal
  1. Un dépôt déplace des jetons du solde public Solana de l’utilisateur vers son propre solde privé ou celui de quelqu’un d’autre.
  2. Les dépôts sont envoyés dans une seule transaction Solana à une adresse de portefeuille Solana.

Dépôt : Qu’est-ce qui est privé

Le Ring sans autorisation est confidentiel avec le montant et l’actif cryptés. Un Ring personnalisé peut être configuré comme confidentiel ou anonyme (expéditeur, destinataire, actif et montant cryptés).

Comment fonctionne un dépôt

Un dépôt est un transfert Solana public avec un solde privé résultant.
  1. Le solde SOL ou SPL de l’utilisateur est public sur la chaîne.
  2. Le portefeuille définit le montant et le destinataire, construit le dépôt, et le propriétaire signe. Un dépôt ne demande pas de preuve ZK.
  3. Le runtime Solana vérifie les signatures et invoque le programme de confidentialité Solana.
  4. L’application suit le statut via le hash de la transaction Solana.
  1. Le solde SOL ou SPL de l’utilisateur est public sur la chaîne.
  2. Le portefeuille lit l’état public, construit un transfert, et le propriétaire signe.
  3. Le runtime Solana vérifie les signatures et invoque le programme système ou le programme de jetons, qui met à jour le solde public.
  4. L’application suit le statut via le hash de la transaction Solana.
Voici le flux de transaction de haut niveau pour le Ring confidentiel sans autorisation. Comparez-le aux Rings personnalisés dans Flux de transaction de haut niveau.

Commencer

1

Prérequis

Les exemples TypeScript nécessitent Node.js 24 ou une version ultérieure, pnpm 11.18.0, et le Solana CLI.
Source : sdk-libs/ts
Ajoutez une clé API Helius:
.env
Les exemples utilisent le portefeuille Solana CLI comme payeur par défaut. Le payeur doit détenir du SOL sur le devnet. Voir Comment obtenir Devnet SOL.
2

Dépôt vers un solde privé

  • Le SDK renvoie les instructions. L’application les signe et les envoie.
  • sendAndConfirmFactory construit une transaction Kit, la soumet et renvoie la signature ainsi que le créneau abouti.
Chaque mint SPL nécessite une interface de jeton pour conserver les jetons déposés. Si l’interface n’existe pas, créez-la dans la même transaction que le dépôt. Le créateur paie le loyer du compte.
  • senderAddress est l’ du destinataire. Dans cet exemple, le dépôt est effectué au profit de l’expéditeur. Le destinataire peut être l’expéditeur ou un portefeuille tiers.
  • senderViewTag est senderAddress.confidentialViewTag(), la clé publique Solana de l’expéditeur dans les Rings confidentiels. L’indexeur l’utilise pour renvoyer les sorties chiffrées correspondantes.
  • client.tree est l’arbre de Merkle d’état qui reçoit le nouvel engagement de sortie.
  • depositor / senderSigner finance et signe le dépôt du public vers le privé.
  • DepositAsset.sol() sélectionne SOL. DepositAsset.spl reçoit le mint, le compte de jetons source et le programme de jetons pour les actifs SPL et Token 2022.
  • recipientOwnerHash est senderAddress.ownerHash(). Ce hachage des clés publiques de signature et de nullification du destinataire correspond au champ du propriétaire enregistré dans le nouveau compte de jetons privé.
  • DEPOSIT_AMOUNT utilise des lamports pour SOL, ou les unités de base du jeton pour les actifs SPL et Token 2022.
  • sendAndConfirm signe et soumet depositIx comme transaction Solana.
  • La confirmation renvoie le slot finalisé utilisé pour conditionner la récupération par l’indexeur.

Exemple de code complet

Clonez et exécutez l’exemple :
Les exemples utilisent un anneau confidentiel sur local/devnet ici.
deposit_transfer_withdraw.ts

Guides associés

Create a Private Wallet

Transfer

Withdraw

Read a Private Balance

Read Private History

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

Contactez-nous ! Telegram | E-Mail | Contact