> For the complete documentation index, see [llms.txt](https://docs.rolly.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rolly.io/verify-onchain/zk-verified.md).

# ZK Verified

Our quality standard: fair by math, not by promises.

<figure><img src="https://3451128504-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHENicywcSMrapj9qj90E%2Fuploads%2Fys14L1fEFFuv5A8pFIQV%2F02%20(1).png?alt=media&amp;token=da60dd59-4b04-4ffb-a755-8c4d64e8aaa1" alt=""><figcaption></figcaption></figure>

#### **What the ZK Verified badge means**

**ZK Verified** is our quality standard for games on Rolly. When you see the badge, the game's fairness is proven by math, not by promises.

**ZK (zero-knowledge proof)** uses math to prove a calculation was done correctly. Every bet in a ZK-verified game is covered by such a proof, and a smart contract on Arbitrum checks it automatically.&#x20;

You don't have to take our word for it, or check anything by hand.

***

#### **How it works**

{% stepper %}
{% step %}
**We lock our seed**

We lock our seed first. Before your bet, we fix our server seed and show you its hash. After the bet, the seed goes into a batch that is recorded on Arbitrum, so it can’t be changed.
{% endstep %}

{% step %}
**Add your seed and make a bet**

Your seed is created in your browser, and your bet is signed with your personal key. The key is created from your wallet and is never sent to us, so no one can place a bet in your name or change it afterwards. The result depends on both seeds, so no one can pick it in advance.
{% endstep %}

{% step %}
**Blockchain checks everything**

The proof confirms that our seed matches the hash, the random number comes from both seeds (server and user), and your win and balance follow the game rules exactly. One cent off, and the contract rejects it.
{% endstep %}
{% endstepper %}

***

#### **Why it's better than the usual provably fair**

1. **More than the random number:** elsewhere you can check only the random number. We prove the whole bet: random number, win and balance, all tied together by the code.<br>
2. **Every bet, automatically:** elsewhere you verify by hand, and almost nobody does. Here every bet of every player is checked cryptographically with ZK proofs and published to Arbitrum.<br>
3. **Checked by the blockchain, not the casino:** a public smart contract does the check and accepts only a valid proof.<br>
4. **Only you can change your seed:** your current server seed is recorded onchain. A server restart, crash or database failure can't change it, and neither can we as the operator. Only you can, by sending a transaction signed with your key.<br>
5. **Only you can change your balance:** every balance change is a transaction in our rollup, and every transaction must be signed with your key. We can't just edit your balance on the server.

***

#### **Verify it yourself**

**Every bet is checked automatically.** A smart contract on Arbitrum accepts each batch of bets only with a valid ZK proof.

{% stepper %}
{% step %}
**Place a bet**

Its server seed is revealed right after.

<div data-with-frame="true"><figure><img src="https://3451128504-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHENicywcSMrapj9qj90E%2Fuploads%2FqtQcb3D1AmLIXL7yUOB1%2FScreenshot%202026-10-26%20at%2019.35.08.png?alt=media&#x26;token=de553d08-f609-49ab-aa46-ec05f34de6cc" alt="" width="375"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
**Open it in Rolly Explorer**

From your bet history or by bet ID.

<div data-with-frame="true"><figure><img src="https://3451128504-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHENicywcSMrapj9qj90E%2Fuploads%2FYB5QNdHYpxMWgZZTaPmn%2FScreenshot%202026-10-26%20at%2019.36.36.png?alt=media&#x26;token=8b90c90b-5ca1-4556-ac92-bb4246ae53d8" alt="" width="375"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
**Press Verify Fairness**

The checks run in your browser.

<div data-with-frame="true"><figure><img src="https://3451128504-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHENicywcSMrapj9qj90E%2Fuploads%2F0PJ5msJfN7YpWKA4wfaP%2FScreenshot%202026-10-26%20at%2019.40.54.png?alt=media&#x26;token=2bbd13b6-303b-4113-b5d4-8e8e3eadad31" alt="" width="375"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="https://3451128504-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHENicywcSMrapj9qj90E%2Fuploads%2FpL3dXKU1BVfCOsf9SAfH%2FScreenshot%202026-10-26%20at%2019.41.27.png?alt=media&#x26;token=cc9c227a-0fc8-48d1-a95c-48e1d9405dba" alt="" width="375"><figcaption></figcaption></figure></div>
{% endstep %}
{% endstepper %}

{% hint style="info" %}
Step-by-step guide: [Rolly Explorer](https://docs.rolly.io/verify-onchain/block-explorer)
{% endhint %}

***

#### **For developers**

Formulas, seeds, the verification key and how to verify bets on your own machine with `@rolly-dev/wasm-signer` are in [Tech Specs](https://docs.rolly.io/tech-specs).
