func Distribution
ActionDistribution returns the global per-face counts, faces 1-6.
Package dice implements a provably-fair on-chain dice game for gno.land.
⚠️ Experimental — generated with no human supervision. This realm was produced automatically by an MCP-driven agent to exercise the gno MCP server and tooling, and to generate test content for gno compilers, linters and formatters. Not audited. Not for production. Full context & folder README: r/moul/x/daily
A dice game realm for gno.land where every roll is verifiable. There is no true randomness on-chain, so each roll's 1-6 face is derived deterministically from public block entropy (the block height) mixed with the caller's address and their running roll count. Anyone can recompute a roll from public data and confirm it was never tampered with — that is what "provably fair" means here. The realm keeps a per-caller roll history and a global distribution across the six faces.
gno.land/r/REPLACE_ADDR/dice 1# Roll the dice (state-changing crossing call, returns the 1-6 face)
2gnokey maketx call -pkgpath "gno.land/r/REPLACE_ADDR/dice" \
3 -func Roll -gas-fee 1000000ugnot -gas-wanted 2000000 -broadcast ...
4
5# Query the current view (distribution chart + recent rolls)
6gnokey query "vm/qrender" -data "gno.land/r/REPLACE_ADDR/dice:"
7
8# Read one account's roll history (read-only helper)
9gnokey query "vm/qeval" \
10 -data 'gno.land/r/REPLACE_ADDR/dice.RollsOf("g1...")'
Render(path) output shows the total rolls, a ▓░ distribution bar chart for
faces 1-6 with percentages, and the most recent rolls.
Part of moul/gno-contracts — moul's versioned gno.land contracts. See the repository for the full catalog, build/test tooling, and usage.
Dependency graph:

🧪 Highly experimental — potentially vibe-coded. Not audited; may break, change, or be removed at any time. Do not use with anything of value. Full disclaimer: DISCLAIMER.
Package dice implements a provably-fair on-chain dice game for gno.land.
There is no true randomness on-chain: every node must reach the same result deterministically. Instead, each roll derives its 1-6 face from public block entropy (chain height) mixed with the caller address and the caller's roll count. The derivation is fully reproducible from public data, which is what "provably fair" means here — anyone can recompute a roll and verify it.
Distribution returns the global per-face counts, faces 1-6.
Render returns the realm's gnoweb Markdown view.
Render is NOT a crossing function (no `cur realm` param) — it is a read-only query surface. It shows the total roll count, a distribution bar chart for faces 1-6, and the most recent rolls.
Roll performs one dice roll for the calling account and records it.
It is a crossing function (gno 0.9 interrealm convention: `cur realm` first parameter). Callers invoke it as Roll(cross(cur)). The result is derived deterministically from the current block height, the caller address, and the caller's prior roll count — no stored secret, fully verifiable.
RollsOf returns the recorded roll history for an address (oldest first). Read-only helper, safe to call as a query.
Total returns the global roll count.