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

> Kueri UTXO terenkripsi, riwayat transaksi terlindung, bukti Merkle, dan catatan registri pengguna publik untuk Solana Privacy Rings.

API Solana Privacy Rings mengueri pengindeks privasi. API ini mengembalikan status terenkripsi dan metadata transaksi publik. Dompet Anda mendekripsi payload untuk membaca saldo dan riwayat privat. Lihat [ikhtisar privasi](https://www.helius.dev/docs/id/privacy.md) untuk memahami konsepnya dan [SDK](https://www.helius.dev/docs/id/privacy/sdk.md) untuk alur penyetoran, transfer, dan penarikan.

## Saldo Publik dan Privat

Saldo privat disimpan dalam UTXO (output transaksi yang belum dibelanjakan). UTXO bukan akun Solana.

| | Saldo publik | Saldo privat |
| - | - | - |
| Saldo | Lamport dalam akun Solana atau `amount` dalam akun SPL Token | Jumlah UTXO yang belum dibelanjakan untuk satu aset |
| Visibilitas | Publik secara on-chain | Terenkripsi secara on-chain |
| Menemukan akun token atau output | [`getTokenAccountsByOwner`](https://solana.com/docs/rpc/http/gettokenaccountsbyowner) mengembalikan akun SPL Token yang dimiliki oleh suatu alamat | `getEncryptedUtxosByTags` mengembalikan output terenkripsi yang cocok dengan tag tampilan atau ring |
| Membaca saldo | [`getBalance`](https://solana.com/docs/rpc/http/getbalance) untuk SOL; [`getTokenAccountBalance`](https://solana.com/docs/rpc/http/gettokenaccountbalance) untuk akun SPL Token | Dompet Anda mendekripsi output, memeriksa output yang belum dibelanjakan, dan menjumlahkan nilainya untuk setiap aset |

Lihat [Status Privat dan UTXO](https://www.helius.dev/docs/id/privacy/concepts/utxo.md) untuk memahami cara saldo privat disimpan dan dibelanjakan.

## Endpoint dan Autentikasi

Kirim permintaan JSON-RPC 2.0 ke jalur metode dengan kunci API Helius Anda:

```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` harus cocok dengan segmen terakhir jalur URL. Jalur metode menerima satu permintaan; batch, bidang `method` duplikat, dan ketidakcocokan jalur/isi mengembalikan HTTP 400 sebelum eksekusi.

Untuk pengembangan lokal, gunakan `http://127.0.0.1:8784/{method}` setelah memulai [stack lokal](https://www.helius.dev/docs/id/privacy/endpoints.md).

## Metode

> [card] [getEncryptedUtxosByTags](https://www.helius.dev/docs/id/api-reference/privacy/getencryptedutxosbytags.md)
>
> Temukan output terenkripsi berdasarkan tag tampilan atau ring.

> [card] [getShieldedTransactionsByTags](https://www.helius.dev/docs/id/api-reference/privacy/getshieldedtransactionsbytags.md)
>
> Kueri riwayat transaksi terlindung berdasarkan tag tampilan atau ring.

> [card] [getShieldedTransactionsBySignature](https://www.helius.dev/docs/id/api-reference/privacy/getshieldedtransactionsbysignature.md)
>
> Ambil peristiwa terlindung untuk satu transaksi Solana.

> [card] [getShieldedTransactionsByNullifiers](https://www.helius.dev/docs/id/api-reference/privacy/getshieldedtransactionsbynullifiers.md)
>
> Temukan transaksi yang membelanjakan nullifier yang diberikan.

> [card] [getMerkleProofs](https://www.helius.dev/docs/id/api-reference/privacy/getmerkleproofs.md)
>
> Ambil bukti penyertaan untuk komitmen pohon status.

> [card] [getNonInclusionProofs](https://www.helius.dev/docs/id/api-reference/privacy/getnoninclusionproofs.md)
>
> Ambil bukti nonpenyertaan untuk nilai nullifier.

> [card] [getNullifierQueueElements](https://www.helius.dev/docs/id/api-reference/privacy/getnullifierqueueelements.md)
>
> Baca nullifier yang diantrekan berdasarkan urutan sekuens.

> [card] [getUserRecords](https://www.helius.dev/docs/id/api-reference/privacy/getuserrecords.md)
>
> Cari pendaftaran alamat terlindung publik.

## Paginasi

`getEncryptedUtxosByTags`, `getShieldedTransactionsByTags`, dan `getShieldedTransactionsByNullifiers` mengembalikan halaman dalam `result`:

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

* `data` mengelompokkan hasil berdasarkan transaksi Solana, yang diurutkan menurut slot dan tanda tangan secara menaik. Metode UTXO terenkripsi menggunakan array `outputs` dalam setiap grup; metode riwayat transaksi menggunakan array `events`.
* `limit` menghitung transaksi Solana, dari 1 hingga 1.000, dan nilai bawaannya adalah 1.000. Output atau peristiwa yang cocok dari suatu transaksi tetap berada bersama dalam satu halaman.
* Kirim kembali `paginationToken` yang bukan null tanpa perubahan dengan tag atau nullifier, ring, dan filter slot yang sama. Lanjutkan hingga token respons adalah `null`.
* `filters.slot` menerima batas `gt`, `gte`, `lt`, dan `lte`. Batas yang diberikan digabungkan dengan AND. Setelah pembacaan tanpa batas mencapai token null, simpan `context.slot` halaman tersebut dan lanjutkan nanti dengan mengatur `filters.slot.gt` ke nilai itu. Pembacaan yang dibatasi oleh `lt` atau `lte` hanya mencakup slot hingga batas tersebut; lanjutkan dari batas itu, bukan dari `context.slot`.
* Atur `minContextSlot` untuk mewajibkan slot pengindeks persisten minimum. Pengindeks juga memerlukan slot dari `paginationToken` Anda dan dari setiap filter `gt` atau `gte`. Jika pengindeks tertinggal dari salah satunya, pengindeks mengembalikan kesalahan `-32016` dengan `error.data.contextSlot`; coba lagi setelah pengindeks menyusul.

Respons riwayat juga dapat menyertakan `outputTreeId`, yaitu ID pohon status terbaru yang tidak dijeda. Nilai ini dihilangkan jika tidak tersedia. Setiap output mengidentifikasi pohonnya sendiri dengan `outputContext.treeId`.

`getNullifierQueueElements` menggunakan paginasi berbasis sekuens; lihat [halaman metodenya](https://www.helius.dev/docs/id/api-reference/privacy/getnullifierqueueelements.md).

## Pengodean Data

| Nilai | Pengodean |
| - | - |
| Kunci publik, hash, komitmen, tag tampilan, nullifier | String Base58 yang merepresentasikan 32 byte |
| Tanda tangan transaksi Solana | String Base58 yang merepresentasikan 64 byte |
| Payload ciphertext, `txViewingPk`, `salt`, `viewingPubkey` registri | String Base64 |
| `context.slot` | Slot Solana tertinggi yang disimpan secara persisten oleh pengindeks |
| `context.blockTime` | Waktu blok sebagai stempel waktu Unix dalam detik |

## Kesalahan

Periksa bidang `error` JSON-RPC sebelum membaca `result`, termasuk saat status HTTP adalah 200.

| Kode | Arti |
| - | - |
| `-32600` | Validasi permintaan gagal, catatan tidak ditemukan, root bukti yang diindeks sudah usang, atau riwayat yang diminta dimulai sebelum riwayat yang diindeks. Isi permintaan yang tidak dapat dibaca juga mengembalikan `-32600` dengan HTTP 400. Baca `message` untuk mengetahui penyebabnya. |
| `-32601` | Metode tidak dikenal, atau jalur metode menolak permintaan sebelum eksekusi. Penolakan jalur menggunakan HTTP 400. |
| `-32602` | Parameter tidak dapat diuraikan, misalnya pengodean kunci yang tidak valid atau batas di luar rentangnya. |
| `-32603` | Kesalahan server internal. |
| `-32016` | Pengindeks belum mencapai `minContextSlot`, slot token paginasi, atau filter slot `gt`/`gte`. |

HTTP 429 menunjukkan pembatasan laju; lihat [batas laju](https://www.helius.dev/docs/id/billing/rate-limits.md). Lihat [autentikasi](https://www.helius.dev/docs/id/api-reference/authentication.md) untuk menyiapkan kunci API.


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