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

Community realm. Read the code first. Community realm, deployed by its author. Read the code before you interact or send coins.

README.md

3.14 Kb · 96 lines

Guestbook

⚠️ 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 public, on-chain guestbook realm for gno.land. Anyone can leave a signed message; every entry records the signer's address, the message, and the block height at which it was signed. The realm's Render page shows all entries as a Markdown table, newest-first, with a running total.

Built for the sapphire testnet (gno 0.9).

Realm path

gno.land/r/REPLACE_ADDR/guestbook

(REPLACE_ADDR is substituted with the deployer's address at publish time.)

Public API

  • Sign(cur realm, message string) — crossing tx. Appends an entry attributed to the immediate caller. Panics on an empty or over-long (>280 bytes) message.
  • Count() int — total number of signatures (read-only).
  • Render(path string) string — Markdown table of all entries, newest-first.

Example calls

Sign the guestbook (from an EOA via gnokey):

1gnokey maketx call \
2  -pkgpath "gno.land/r/REPLACE_ADDR/guestbook" \
3  -func Sign \
4  -args "gm gno.land!" \
5  -gas-fee 1000000ugnot -gas-wanted 2000000 \
6  -broadcast -chainid sapphire-1 -remote <rpc> mykey

From another realm, invoke it as a crossing call:

1guestbook.Sign(cross(cur), "hello from my realm")

View the rendered guestbook:

1gnokey query vm/qrender --data "gno.land/r/REPLACE_ADDR/guestbook:"

Example render output

1# Guestbook
2
3**Total signatures:** 2
4
5| # | Who | Message | Height |
6|---|-----|---------|--------|
7| 2 | g1v9jxgu…0gh | hello from my realm | 4210 |
8| 1 | g1jg8mtu…qf5 | gm gno.land! | 4180 |

Notes

  • Caller identity uses the gno 0.9 interrealm convention: Sign is a crossing function that checks cur.IsCurrent() before deriving the author from cur.Previous().Address().
  • Block height comes from chain/runtime.ChainHeight() — deterministic.
  • Entries are stored in a gno.land/p/nt/avl/v0 tree keyed by a zero-padded sequence number so iteration order is deterministic and matches insertion order (reversed for newest-first rendering).

<!-- BEGIN GNOCONTRACTS FOOTER (generated by `make readmes`; do not edit below) -->

---

Part of **[moul/gno-contracts](https://github.com/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/nym-moultest123/x/daily/guestbook/v0 dependency graph](https://raw.githubusercontent.com/moul/gno-contracts/main/_assets/gno.land/r/nym-moultest123/x/daily/guestbook/v0/deps.png)

> 🧪 **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](https://github.com/moul/gno-contracts/blob/main/DISCLAIMER.md).

<!-- END GNOCONTRACTS FOOTER -->