Search Apps Documentation Source Content File Folder Download Copy Actions Download State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

v1 source realm

Package eightball is a Magic 8-Ball realm: ask a yes/no question and the block height decides your fate. Deterministi...

Readme View source

🎱 Magic 8-Ball

⚠️ Experimental — generated with no human supervision. This realm was produced by an MCP-driven agent to exercise the gno MCP server + 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 classic Magic 8-Ball as a gno.land realm. Ask a yes/no question and the current block height picks one of the 20 canonical answers — fully deterministic, since there is no true randomness on-chain.

  • Ask(cur realm, question string) string — records {caller, question, answer, height} and returns the answer (crossing function; emits a Shaken event).
  • Asked() int — how many questions have been asked (read-only).
  • Render(path string) string — shows the last answer and a table of recent shakes.

Built for the sapphire testnet (gno 0.9). Example:

gnokey maketx call -pkgpath gno.land/r/moul/x/daily/eightball/v0 \
  -func Ask -args "will this PR pass CI?" ...

What changed in v1

Identical behaviour to v0 apart from rendering, which now goes through p/moul/kit/ui instead of the local shortAddr helper.

One address format. Eleven realms carried their own shortAddr with four different truncation rules, so the same account rendered differently depending on which realm you opened. ui.Addr is that decision made once: 8 leading characters, an ellipsis, 4 trailing, in backticks.

Visible change: addresses now render in monospace.

The rendering change means the output differs from v0, which under this repo's versioning rule is a compatibility change, hence a new version rather than an edit in place. v0 stays live and untouched.


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:

gno.land/r/moul/x/daily/eightball/v1 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.

Overview

Package eightball is a Magic 8-Ball realm: ask a yes/no question and the block height decides your fate. Deterministic (no real randomness on-chain).

Functions 3

func Ask

crossing Action
1func Ask(cur realm, question string) string
source

Ask poses a question to the Magic 8-Ball and returns its answer. Crossing function: it mutates persistent state, so it takes `cur realm` (gno 0.9).

func Asked

Action
1func Asked() int
source

Asked returns how many questions have been asked. Read-only.

func Render

1func Render(path string) string
source

Render is the gnoweb Markdown view.

Imports 6

Source Files 5