# Shielded Transaction

The shielded or private transactions in Veilnyx are performed by spending the user's notes in multiple JoinSplits while hiding all sensitive transaction details like the identity of the sender/receiver and values involved.

This is achieved by generating a zero-knowledge proof on the client side, which proves that all the computations of the transaction were performed correctly. It proves that:

1. Spent notes' commitments are at some indices in the Merkle tree, and it knows the same.
2. Spent notes' commitments are calculated correctly.
3. The signatures produced by a spent note's owner's private key when signing the transaction are valid.
4. The revealed nullifiers of the spent notes are calculated correctly.
5. The commitments of the new notes are calculated correctly.
6. The total value remains conserved, i.e. values of spent notes and newly created notes (adjusted with any external deposit/withdrawal value) are equal.

The generated proof $$\pi$$ is sent in the payload of the transaction, which is later verified by an on-chain verifier. States are modified, e.g. commitments are inserted into the tree, and nullifiers are marked only if this verification succeeds, concluding the transaction.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.veilnyx.com/technical-implementation/core-architecture/shielded-transaction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
