# Tech Specs

<figure><img src="/files/3EYHuZa8NrpkpaiGze8d" alt=""><figcaption></figcaption></figure>

### **Non‑сustodial**

Player funds are held in a smart contract on Ethereum, not in the operator accounts. Every deposit and withdrawal is recorded on‑chain. If the platform stops the operation, players can withdraw their funds directly from the blockchain via a Force Exit mechanism. Deposit amounts are stored in each user’s state inside a Merkle Tree and protected by a ZK-proof. The operator cannot appropriate or alter a deposit because any balance change must be proven in the ZK circuit and verified on‑chain.

### Provably Fair

Every bet and every Rolly Originals outcome is proven via Zero Knowledge Proof (ZKP). The flow is:

1. Before play, the server publishes a hash commitment of its server\_seed
2. The game result is computed as <mark style="color:yellow;">Poseidon2(server\_seed || user\_seed)</mark> – neither server nor player can unilaterally influence the result
3. The ZK circuit proves that this exact random value was used
4. Each bet records the hash of the new <mark style="color:yellow;">server\_seed</mark> for the next game (a seed chain), preventing the server from retroactively choosing seeds
5. After the round, the <mark style="color:yellow;">server\_seed</mark> is revealed – **anyone can verify the result**

### Proof of Reserves

The platform’s Total Liabilities to players are computed inside the ZK circuit and published on‑chain with each batch. Anyone can compare the smart contract balance to the published Total Liabilities to confirm the platform’s solvency in real time.

### Provable RTP (Provable Return‑to‑Player)

Game algorithms for each title are published publicly on GitHub. A JS script in the block explorer lets anyone verify that the payout matches the random value, the bet parameters, and the declared RTP.

### Technical Summary&#x20;

* Bets are processed off‑chain, grouped into blocks, and blocks are aggregated into batches.
* Each transaction is proven with an individual ZK-proof (Plonky2 on the Goldilocks field). Proofs are then recursively aggregated into a single compact PLONK proof that is verified on‑chain (Ethereum).
* All player states are stored in a Merkle tree of depth 24 (supports up to 16M users) using Poseidon2 hashing.
* Up to 8 currencies are supported concurrently (ETH, USDT, BNB, SOL, TRX, etc.).
* Players authenticate bets via session keys (Schnorr on the ecgfp5 curve) – no per‑transaction wallet confirmation required.
* All bets, deposits, withdrawals, and payouts are visible in the public Rolly Block Explorer – full transparency of every transaction in real time.


---

# 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.rolly.io/tech-specs.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.
