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

README.md

3.40 Kb · 68 lines

handles

⚠️ 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 tiny on-chain nickname registry. Any address can claim one unique handle (3-20 lowercase letters/digits, starting with a letter), attach a short bio, transfer the handle to another address, or release it back into the pool. Two avl.Tree indexes (handle -> record, owner -> record) keep lookups in both directions cheap and deterministic.

Realm path: gno.land/r/g12cs4cehujpffpjpywmkqj43m6u5ya53nj69sjz/handles

Example calls

Register(cur, "moul")          # claim the handle "moul" for the caller
SetBio(cur, "building gno stuff")
Transfer(cur, g1...recipient)  # hand the handle to another address
Release(cur)                   # free the handle back up
OwnerOf("moul")                 # (address, bool)
HandleOf(g1...)                 # (string, bool)
Count()                         # number of registered handles

Render("") lists every registered handle in a table; Render("/moul") shows a single handle's detail page (owner, bio, block registered).

Toolchain status

Built and tested against a local gno build at master.3130+bf5b31eda (GNOROOT pointed at a full gnolang/gno checkout). gno test . and gno lint . both pass (6 tests, 0 lint issues). Note for test authors: plain recover() did not catch panics thrown across a cross(cur) boundary in this toolchain build — the non-crossing call form (Register(cur, ...) instead of Register(cross(cur), ...)) was used in the two panic-expectation tests instead, since no realm boundary is crossed and there was nothing to revive.

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:

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