> ## 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.

# Solana Privacy Rings API

> Frage verschlüsselte UTXOs, den Verlauf abgeschirmter Transaktionen, Merkle-Beweise und öffentliche Einträge im Benutzerregister für Solana Privacy Rings ab.

Die Solana Privacy Rings API fragt den Datenschutz-Indexer ab. Sie gibt den verschlüsselten Zustand und öffentliche Transaktionsmetadaten zurück. Dein Wallet entschlüsselt die payloads, um private Guthaben und den Verlauf zu lesen. Konzepte findest du in der [Datenschutzübersicht](https://www.helius.dev/docs/de/privacy.md). Informationen zu Einzahlungen, Übertragungen und Auszahlungen findest du im [SDK](https://www.helius.dev/docs/de/privacy/sdk.md).

## Öffentliche und private Guthaben

Ein privates Guthaben wird in UTXOs (nicht ausgegebenen Transaktionsausgaben) gespeichert. Ein UTXO ist kein Solana-Konto.

| | Öffentliches Guthaben | Privates Guthaben |
| - | - | - |
| Guthaben | Lamports in einem Solana-Konto oder der `amount` in einem Konto für SPL token | Die Summe der nicht ausgegebenen UTXOs für einen Vermögenswert |
| Sichtbarkeit | Öffentlich onchain | Verschlüsselt onchain |
| Konten für token oder Ausgaben ermitteln | [`getTokenAccountsByOwner`](https://solana.com/docs/rpc/http/gettokenaccountsbyowner) gibt Konten für SPL token zurück, die einer Adresse gehören | `getEncryptedUtxosByTags` gibt verschlüsselte Ausgaben zurück, die mit Sicht-Tags oder einem Ring übereinstimmen |
| Guthaben lesen | [`getBalance`](https://solana.com/docs/rpc/http/getbalance) für SOL; [`getTokenAccountBalance`](https://solana.com/docs/rpc/http/gettokenaccountbalance) für ein Konto für SPL token | Dein Wallet entschlüsselt Ausgaben, prüft, welche nicht ausgegeben wurden, und summiert die Beträge für jeden Vermögenswert |

Unter [Privater Zustand und UTXOs](https://www.helius.dev/docs/de/privacy/concepts/utxo.md) erfährst du, wie private Guthaben gespeichert und ausgegeben werden.

## Endpoint und Authentifizierung

Sende einen JSON-RPC 2.0-request mit deinem Helius API key an den Pfad der Methode:

```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"]
    }
  }'
```

`method` muss mit dem letzten Pfadsegment der URL übereinstimmen. Methodenpfade akzeptieren einen einzelnen request. Batches, doppelte `method`-Felder und Abweichungen zwischen Pfad und Body geben vor der Ausführung HTTP 400 zurück.

Verwende für die lokale Entwicklung `http://127.0.0.1:8784/{method}`, nachdem du den [lokalen Stack](https://www.helius.dev/docs/de/privacy/endpoints.md) gestartet hast.

## Methoden

> [card] [getEncryptedUtxosByTags](https://www.helius.dev/docs/de/api-reference/privacy/getencryptedutxosbytags.md)
>
> Ermittle verschlüsselte Ausgaben anhand von Sicht-Tags oder einem Ring.

> [card] [getShieldedTransactionsByTags](https://www.helius.dev/docs/de/api-reference/privacy/getshieldedtransactionsbytags.md)
>
> Frage den Verlauf abgeschirmter Transaktionen anhand von Sicht-Tags oder einem Ring ab.

> [card] [getShieldedTransactionsBySignature](https://www.helius.dev/docs/de/api-reference/privacy/getshieldedtransactionsbysignature.md)
>
> Rufe abgeschirmte Ereignisse für eine Solana-Transaktion ab.

> [card] [getShieldedTransactionsByNullifiers](https://www.helius.dev/docs/de/api-reference/privacy/getshieldedtransactionsbynullifiers.md)
>
> Finde die Transaktionen, die die angegebenen Nullifier ausgegeben haben.

> [card] [getMerkleProofs](https://www.helius.dev/docs/de/api-reference/privacy/getmerkleproofs.md)
>
> Rufe Inklusionsbeweise für commitments im Zustandsbaum ab.

> [card] [getNonInclusionProofs](https://www.helius.dev/docs/de/api-reference/privacy/getnoninclusionproofs.md)
>
> Rufe Nichtinklusionsbeweise für Nullifier-Werte ab.

> [card] [getNullifierQueueElements](https://www.helius.dev/docs/de/api-reference/privacy/getnullifierqueueelements.md)
>
> Lies Nullifier in der Warteschlange nach Sequenz geordnet.

> [card] [getUserRecords](https://www.helius.dev/docs/de/api-reference/privacy/getuserrecords.md)
>
> Suche nach öffentlichen Registrierungen abgeschirmter Adressen.

## Paginierung

`getEncryptedUtxosByTags`, `getShieldedTransactionsByTags` und `getShieldedTransactionsByNullifiers` geben eine Seite in `result` zurück:

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

* `data` gruppiert Ergebnisse nach Solana-Transaktion und sortiert sie nach aufsteigendem slot und aufsteigender Signatur. Die Methode für verschlüsselte UTXOs verwendet in jeder Gruppe ein `outputs`-Array. Die Methoden für den Transaktionsverlauf verwenden ein `events`-Array.
* `limit` zählt Solana-Transaktionen von 1 bis 1.000 und ist standardmäßig auf 1.000 gesetzt. Übereinstimmende Ausgaben oder Ereignisse einer Transaktion bleiben auf derselben Seite.
* Übergib einen nicht leeren `paginationToken` unverändert und mit denselben Tags oder Nullifiern sowie denselben Ring- und slot-Filtern zurück. Fahre fort, bis der response-token `null` ist.
* `filters.slot` akzeptiert die Grenzen `gt`, `gte`, `lt` und `lte`. Angegebene Grenzen werden mit AND kombiniert. Wenn ein unbegrenzter Lesevorgang einen leeren token erreicht, speichere den `context.slot` dieser Seite. Setze den Vorgang später fort, indem du `filters.slot.gt` auf diesen Wert setzt. Ein durch `lt` oder `lte` begrenzter Lesevorgang deckt nur slot bis zu dieser Grenze ab. Setze ihn ab der Grenze fort, nicht ab `context.slot`.
* Setze `minContextSlot`, um einen mindestens persistierten Indexer-slot vorauszusetzen. Der Indexer setzt außerdem den slot deines `paginationToken` und aller Filter für `gt` oder `gte` voraus. Wenn er hinter einem dieser Werte liegt, gibt er den Fehler `-32016` mit `error.data.contextSlot` zurück. Versuche es erneut, sobald er aufgeholt hat.

Responses zum Verlauf können außerdem `outputTreeId` enthalten, die ID des neuesten nicht pausierten Zustandsbaums. Sie wird weggelassen, wenn sie nicht verfügbar ist. Einzelne Ausgaben geben ihren eigenen Baum mit `outputContext.treeId` an.

`getNullifierQueueElements` verwendet sequenzbasierte Paginierung. Weitere Informationen findest du auf der [Methodenseite](https://www.helius.dev/docs/de/api-reference/privacy/getnullifierqueueelements.md).

## Datenkodierung

| Wert | Kodierung |
| - | - |
| Öffentliche Schlüssel, Hashes, commitments, Sicht-Tags, Nullifier | Base58-Zeichenfolgen, die 32 Byte darstellen |
| Signaturen von Solana-Transaktionen | Base58-Zeichenfolgen, die 64 Byte darstellen |
| Ciphertext-payloads, `txViewingPk`, `salt`, `viewingPubkey` des Registers | Base64-Zeichenfolgen |
| `context.slot` | Höchster vom Indexer persistierter Solana-slot |
| `context.blockTime` | Blockzeit als Unix-Zeitstempel in Sekunden |

## Fehler

Prüfe das JSON-RPC-Feld `error`, bevor du `result` liest. Das gilt auch, wenn der HTTP-Status 200 ist.

| Code | Bedeutung |
| - | - |
| `-32600` | Die Validierung des request ist fehlgeschlagen, ein Datensatz wurde nicht gefunden, ein indexierter Beweis-Root ist veraltet oder der angeforderte Verlauf beginnt vor dem indexierten Verlauf. Ein nicht lesbarer request-Body gibt ebenfalls `-32600` mit HTTP 400 zurück. Lies `message`, um die Ursache zu ermitteln. |
| `-32601` | Unbekannte Methode oder ein Methodenpfad hat den request vor der Ausführung abgelehnt. Ablehnungen aufgrund des Pfads verwenden HTTP 400. |
| `-32602` | Parameter konnten nicht geparst werden, zum Beispiel wegen einer ungültigen Schlüsselkodierung oder eines Limits außerhalb seiner Grenzen. |
| `-32603` | Interner Serverfehler. |
| `-32016` | Der Indexer hat `minContextSlot`, den slot des Paginierungs-token oder einen slot-Filter für `gt`/`gte` noch nicht erreicht. |

HTTP 429 weist auf ein rate limit hin. Weitere Informationen findest du unter [rate limits](https://www.helius.dev/docs/de/billing/rate-limits.md). Unter [Authentifizierung](https://www.helius.dev/docs/de/api-reference/authentication.md) erfährst du, wie du deinen API key einrichtest.


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