Skip to main content
  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.
Ceci est le flux de transaction de haut niveau pour le Ring confidentiel sans autorisation. Comparez avec les Rings personnalisés dans concepts.

Commencer

1

Prérequis

The TypeScript examples require Node.js 24 or later, pnpm 11.18.0, and the Solana CLI.
Source: sdk-libs/ts
Add a Helius API key:
.env
The examples use the Solana CLI wallet as the payer by default. The payer must hold devnet SOL. See How to Get 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.
  • senderAddress est l’ du destinataire. Cet exemple dépose chez 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 anneaux confidentiels. L’indexeur l’utilise pour retourner les sorties crypté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 public-à-privé.
  • DepositAsset.sol() sélectionne SOL. DepositAsset.spl prend le mint, le compte de jetons source et le programme de jetons pour les actifs SPL et Token 2022.
  • recipientOwnerHash est senderAddress.ownerHash(). Ce hash des clés publiques de signature et nullificatrice du destinataire est le champ propriétaire engagé dans le nouveau compte de jetons privé.
  • randomBlinding() ajoute une aléatoire à l’engagement du 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 en tant que transaction Solana.
  • La confirmation donne le créneau abouti utilisé pour réguler la récupération d’indexeur.

Exemple de code complet

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

Guides associés

Transférer

Retirer

Lire un solde privé

Lire l'historique privé

Didn’t find what you were looking for?

Reach out! Telegram | E-Mail | Contact