> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# API Solana Privacy Rings

> Interrogez les UTXO chiffrés, l’historique des transactions protégées, les preuves de Merkle et les enregistrements publics du registre des utilisateurs pour Solana Privacy Rings.

L’API Solana Privacy Rings interroge l’indexeur de confidentialité. Elle renvoie l’état chiffré et les métadonnées publiques des transactions. Votre portefeuille déchiffre les charges utiles pour consulter les soldes privés et l’historique. Consultez la [présentation de la confidentialité](https://www.helius.dev/docs/fr/privacy.md) pour découvrir les concepts et le [SDK](https://www.helius.dev/docs/fr/privacy/sdk.md) pour les flux de dépôt, de transfert et de retrait.

## Soldes publics et privés

Un solde privé est stocké dans des UTXO (sorties de transaction non dépensées). Un UTXO n’est pas un compte Solana.

| | Solde public | Solde privé |
| - | - | - |
| Solde | Lamports dans un compte Solana ou le `amount` dans un compte de jeton SPL | Somme des UTXO non dépensés pour un actif |
| Visibilité | Publique on-chain | Chiffrée on-chain |
| Découvrir des comptes de jetons ou des sorties | [`getTokenAccountsByOwner`](https://solana.com/docs/rpc/http/gettokenaccountsbyowner) renvoie les comptes de jetons SPL détenus par une adresse | `getEncryptedUtxosByTags` renvoie les sorties chiffrées correspondant aux balises de visualisation ou à un anneau |
| Consulter un solde | [`getBalance`](https://solana.com/docs/rpc/http/getbalance) pour SOL ; [`getTokenAccountBalance`](https://solana.com/docs/rpc/http/gettokenaccountbalance) pour un compte de jeton SPL | Votre portefeuille déchiffre les sorties, vérifie celles qui ne sont pas dépensées et additionne les montants pour chaque actif |

Consultez [État privé et UTXO](https://www.helius.dev/docs/fr/privacy/concepts/utxo.md) pour comprendre comment les soldes privés sont stockés et dépensés.

## Point de terminaison et authentification

Envoyez une requête JSON-RPC 2.0 au chemin de la méthode avec votre clé API Helius :

```bash theme={"system"}
curl --request POST \
  --url "https://devnet.helius-rpc.com/v1/spr/getUserRecords?api-key=YOUR_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "jsonrpc": "2.0",
    "id": "1",
    "method": "getUserRecords",
    "params": {
      "owners": ["11111111111111111111111111111111"]
    }
  }'
```

Le `method` doit correspondre au dernier segment du chemin de l’URL. Les chemins de méthode acceptent une seule requête ; les lots, les champs `method` en double et les incohérences entre le chemin et le corps renvoient une erreur HTTP 400 avant l’exécution.

Pour le développement local, utilisez `http://127.0.0.1:8784/{method}` après avoir démarré la [pile locale](https://www.helius.dev/docs/fr/privacy/endpoints.md).

## Méthodes

> [card] [getEncryptedUtxosByTags](https://www.helius.dev/docs/fr/api-reference/privacy/getencryptedutxosbytags.md)
>
> Découvrez les sorties chiffrées par balises de visualisation ou par anneau.

> [card] [getShieldedTransactionsByTags](https://www.helius.dev/docs/fr/api-reference/privacy/getshieldedtransactionsbytags.md)
>
> Interrogez l’historique des transactions protégées par balises de visualisation ou par anneau.

> [card] [getShieldedTransactionsBySignature](https://www.helius.dev/docs/fr/api-reference/privacy/getshieldedtransactionsbysignature.md)
>
> Récupérez les événements protégés d’une transaction Solana.

> [card] [getShieldedTransactionsByNullifiers](https://www.helius.dev/docs/fr/api-reference/privacy/getshieldedtransactionsbynullifiers.md)
>
> Recherchez les transactions qui ont dépensé les annulateurs fournis.

> [card] [getMerkleProofs](https://www.helius.dev/docs/fr/api-reference/privacy/getmerkleproofs.md)
>
> Récupérez les preuves d’inclusion des engagements de l’arbre d’état.

> [card] [getNonInclusionProofs](https://www.helius.dev/docs/fr/api-reference/privacy/getnoninclusionproofs.md)
>
> Récupérez les preuves de non-inclusion des valeurs d’annulateur.

> [card] [getNullifierQueueElements](https://www.helius.dev/docs/fr/api-reference/privacy/getnullifierqueueelements.md)
>
> Lisez les annulateurs en file d’attente dans l’ordre de séquence.

> [card] [getUserRecords](https://www.helius.dev/docs/fr/api-reference/privacy/getuserrecords.md)
>
> Recherchez les enregistrements publics d’adresses protégées.

## Pagination

`getEncryptedUtxosByTags`, `getShieldedTransactionsByTags` et `getShieldedTransactionsByNullifiers` renvoient une page dans `result` :

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "id": "1",
  "result": {
    "context": { "slot": 4242, "blockTime": 1730000000 },
    "data": [],
    "paginationToken": null
  }
}
```

* `data` regroupe les résultats par transaction Solana, triés par slot et signature dans l’ordre croissant. La méthode des UTXO chiffrés utilise un tableau `outputs` dans chaque groupe ; les méthodes d’historique des transactions utilisent un tableau `events`.
* `limit` compte les transactions Solana, de 1 à 1 000, avec une valeur par défaut de 1 000. Les sorties ou événements correspondants d’une transaction restent regroupés sur une même page.
* Renvoyez un `paginationToken` non nul sans le modifier, avec les mêmes balises ou annulateurs, le même anneau et les mêmes filtres de slots. Continuez jusqu’à ce que le jeton de réponse soit `null`.
* `filters.slot` accepte les limites `gt`, `gte`, `lt` et `lte`. Les limites fournies sont combinées avec AND. Lorsqu’une lecture sans plafond atteint un jeton nul, enregistrez le `context.slot` de cette page et reprenez ultérieurement en définissant `filters.slot.gt` sur cette valeur. Une lecture plafonnée par `lt` ou `lte` couvre uniquement les slots jusqu’à ce plafond ; reprenez-la à partir du plafond, et non de `context.slot`.
* Définissez `minContextSlot` pour exiger un slot minimal conservé par l’indexeur. L’indexeur exige également le slot de votre `paginationToken` et de tout filtre `gt` ou `gte`. S’il est en retard sur l’une de ces valeurs, il renvoie l’erreur `-32016` avec `error.data.contextSlot` ; réessayez une fois qu’il a rattrapé son retard.

Les réponses d’historique peuvent également inclure `outputTreeId`, l’identifiant de l’arbre d’état non suspendu le plus récent. Il est omis lorsqu’il n’est pas disponible. Chaque sortie identifie son propre arbre avec `outputContext.treeId`.

`getNullifierQueueElements` utilise une pagination basée sur les séquences ; consultez sa [page de méthode](https://www.helius.dev/docs/fr/api-reference/privacy/getnullifierqueueelements.md).

## Encodage des données

| Valeur | Encodage |
| - | - |
| Clés publiques, hachages, engagements, balises de visualisation, annulateurs | Chaînes Base58 représentant 32 octets |
| Signatures de transactions Solana | Chaînes Base58 représentant 64 octets |
| Charges utiles chiffrées, `txViewingPk`, `salt`, `viewingPubkey` du registre | Chaînes Base64 |
| `context.slot` | Slot Solana le plus élevé conservé par l’indexeur |
| `context.blockTime` | Heure du bloc sous forme d’horodatage Unix en secondes |

## Erreurs

Vérifiez le champ `error` de JSON-RPC avant de lire `result`, y compris lorsque le statut HTTP est 200.

| Code | Signification |
| - | - |
| `-32600` | La validation de la requête a échoué, un enregistrement est introuvable, une racine de preuve indexée est obsolète ou l’historique demandé commence avant l’historique indexé. Un corps de requête illisible renvoie également `-32600` avec HTTP 400. Consultez `message` pour connaître la cause. |
| `-32601` | Méthode inconnue, ou le chemin d’une méthode a rejeté la requête avant son exécution. Les rejets liés au chemin utilisent HTTP 400. |
| `-32602` | Les paramètres n’ont pas pu être analysés, par exemple en raison d’un encodage de clé non valide ou d’une limite hors des valeurs autorisées. |
| `-32603` | Erreur interne du serveur. |
| `-32016` | L’indexeur n’a pas atteint `minContextSlot`, le slot du jeton de pagination ou un filtre de slot `gt`/`gte`. |

HTTP 429 indique une limitation du débit ; consultez les [limites de débit](https://www.helius.dev/docs/fr/billing/rate-limits.md). Consultez la page [Authentification](https://www.helius.dev/docs/fr/api-reference/authentication.md) pour configurer la clé API.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.