> For the complete documentation index, see [llms.txt](https://voidify.gitbook.io/whitepaper/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://voidify.gitbook.io/whitepaper/ii.-the-mechanism-breaking-the-link.md).

# II. The Mechanism: Breaking the Link

At the core of Voidify’s design are zero-knowledge proofs (zk-SNARKs) and zk-optimized hash functions built to suit Solana’s high-throughput architecture.

<figure><img src="/files/qNjK8kso2DoqnmOE8kOV" alt="" width="275"><figcaption></figcaption></figure>

***

### **Anonymity Pools**

Voidify pools serve as fixed-denomination mixing contracts. Users deposit a standard amount of tokens into a shared pool. After a delay (for anonymity), they can withdraw those tokens to a different wallet.

* **Deposit**: A user deposits a fixed amount into a privacy pool.
* **Withdrawal**: After generating a zero-knowledge proof, the user withdraws the funds to a separate address.

This process breaks any observable on-chain connection between the deposit and withdrawal actions.

***

### **How Deposits Work**

When a user deposits tokens into Voidify:

* A **private note** is generated, containing two random values: a **secret** and a **nullifier**.
* These values are hashed together using the **Poseidon** hash function, creating a **commitment**.
* This commitment is added as a leaf to a Merkle tree stored on-chain.
* The user must store the private note securely, as it will be required to withdraw later.

***

### **How Withdrawals Work**

To withdraw from the pool:

* The user generates a **zk-proof** that they know a valid, unused commitment in the Merkle tree.
* A **nullifier hash** is submitted, ensuring the commitment cannot be spent twice.
* The smart contract verifies the zk-proof and nullifier.
* If valid, the contract releases the funds to the recipient address.

Since the proof reveals no information about the original commitment’s position in the Merkle tree, and the nullifier cannot be linked back to the deposit, the source of funds remains private.

***

### **Zero-Knowledge Proofs (zk-Proofs)**

Voidify uses **zk-SNARKs** — succinct, non-interactive cryptographic proofs that verify claims without revealing the underlying data.

* **Privacy**: Proves ownership of a deposit without revealing which one.
* **Security**: Prevents double-spending through nullifier tracking.
* **Efficiency**: Proofs are generated off-chain and verified on-chain.

***

### ⚙**Poseidon Hash: Optimized for zk-Proofs on Solana**

Voidify uses the **Poseidon hash** instead of older hash functions like Pedersen. This switch dramatically improves performance on Solana:

| Feature                | Pedersen Hash        | Poseidon Hash        |
| ---------------------- | -------------------- | -------------------- |
| zk-Proof Efficiency    | High constraint cost | Minimal constraints  |
| Compatibility          | EVM-optimized        | zk-circuit optimized |
| Cost & Latency         | Expensive            | Fast & cheap         |
| Suitability for Solana | Poor                 | Excellent            |

**Why Poseidon Hash Matters:**

* Reduced computation = faster proof generation
* Optimized for Solana’s low-latency execution
* Lower contract execution cost
* Maintains strong zk-security guarantees

***

### **Privacy Tips**

To enhance your privacy:

* Use **relayers** to hide your withdrawal origin
* Wait for additional deposits before withdrawing to increase your anonymity set
* Never reuse notes or expose secret values
* Consider different gas parameters and timing for transactions

***

### **Summary**

Voidify allows you to transact privately on Solana by combining:

* Zero-knowledge cryptography (zk-SNARKs)
* ZK-optimized hashing (Poseidon)
* High-speed, low-cost smart contracts
* A fully self-custodial architecture

The protocol empowers users to move assets without revealing their activity — giving them privacy without compromising security or decentralization.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://voidify.gitbook.io/whitepaper/ii.-the-mechanism-breaking-the-link.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
