README.md
URL Shortener
⚠️ 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
An on-chain alias registry for the gno.land sapphire testnet. Each caller can
register alias -> url mappings they own: an alias is claimed on a first-come
basis, only its owner may update or remove it, and every resolution through
Render("/<alias>") bumps a per-alias click counter. Aliases must be non-empty
and alphanumeric.
Realm path: gno.land/r/REPLACE_ADDR/urlshort
Example calls
# Register (or update your own) alias -> url
Shorten("gno", "https://gno.land", "the chain")
# Update the target (must be the same owner)
Shorten("gno", "https://docs.gno.land", "now the docs")
# Remove an alias you own
Remove("gno")
Render paths
/— lists every alias with owner and click count./<alias>— shows the target url, owner, note, and click count (and counts the click).
What changed in v1
Identical behaviour to v0 apart from rendering, which now goes
through p/moul/kit/ui instead of the local short 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.
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:

🧪 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.