Select a file to view its exact on-chain source. Sorted README → gnomod → sources → tests.
Append(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, slug string, body string)
Delete(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, slug string)
Get(slug string) string
Manifest() string
Render(path string) string
Revision() int
Set(cur interface {.seal func(); Address func() .uverse.address; IsCode func() bool; IsCurrent func() bool; IsEphemeral func() bool; IsUser func() bool; IsUserCall func() bool; IsUserRun func() bool; PkgPath func() string; Previous func() .uverse.realm; String func() string; Sub func(string) .uverse.realm; Subpath func() string}, slug string, body string)
Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.
<gno-columns>

<gno-columns-sep />
# Manfred Touron
Engineer, in France. I build on [gno.land](https://gno.land): a chain where
contracts are written in Gno, state is just package variables that persist
between calls, and the front end is the contract's own `Render` function.
This page is one of those contracts. Its text lives in an on-chain key-value
store and the layout is itself an entry in it, so changing how this page looks
is a transaction, not a redeploy.
[GitHub](https://github.com/moul) · [X](https://twitter.com/moul) · [Blog](/r/moul/blog)
</gno-columns>
## Now
- **One package a day**, under `x/daily`: small and finished, each one a
question about what Gno can express, answered. The current count is in
Packages below, because a number typed here would be wrong by next week.
- **[mygnoscan](https://github.com/gnoverse/mygnoscan)**, an explorer for gno
chains. It is the only one that distinguishes a package that is live from one
that was uploaded and is still waiting to be approved.
- **[A blog that is a realm](/r/moul/blog).** Every post is an entry in an
on-chain store, published by a transaction. Same trick as this page.
- **[A gallery of ascii and pixel art](/r/moul/gallery/v0).** It stores
nothing: every piece lives in the realm its author put it in, and the
gallery renders the ones it can import.
- **Mainnet.** gno.land is launched. The interesting part is no longer the
chain, it is what is running on it.
- **[Bubble Rumble](https://bubblerumble.net/?ref=g1manfred47kzduec920z88wfr64ylksmdcedlf5).**
Jae Kwon's last-boop-wins pot game, real GNOT on mainnet, with a whole
multiplayer client grown around it in a week. That link is my invite: boop
through it and we both earn its BUBBLE token.
## Packages
276 packages of mine are live on mainnet, from [moul/gno-contracts](https://github.com/moul/gno-contracts).
**Libraries** (48): [addrset](/p/moul/addrset/v1) · [agents/commit](/p/moul/agents/commit/v0) · [authz](/p/moul/authz/v1) · [collection](/p/moul/collection/v0) · [cow](/p/moul/cow/v0) · [debug](/p/moul/debug/v0) · [deque](/p/moul/deque/v0) · [dynreplacer](/p/moul/dynreplacer/v0) · [entity](/p/moul/entity/v0) · [entropy](/p/moul/entropy/v0) · [errs](/p/moul/errs/v0) · [fifo](/p/moul/fifo/v0) · [forge](/p/moul/forge/v1) · [fp](/p/moul/fp/v0) · [gnopm](/p/moul/gnopm/v0) · [grants](/p/moul/grants/v0) · [greet](/p/moul/greet/v0) · [helplink](/p/moul/helplink/v0) · [kit/num](/p/moul/kit/num/v0) · [kit/store](/p/moul/kit/store/v0) · [kit/tally](/p/moul/kit/tally/v0) · [kit/ui](/p/moul/kit/ui/v0) · [md](/p/moul/md/v0) · [mdlist](/p/moul/mdlist/v0) · [mdtable](/p/moul/mdtable/v0) · [memo](/p/moul/memo/v0) · [mygnoscan](/p/moul/mygnoscan/v0) · [nestedpkg](/p/moul/nestedpkg/v0) · [once](/p/moul/once/v0) · [ownable](/p/moul/ownable/v0) · [pageable](/p/moul/pageable/v0) · [pausable](/p/moul/pausable/v0) · [pilot](/p/moul/pilot/v0) · [printfdebugging](/p/moul/printfdebugging/v0) · [reactions](/p/moul/reactions/v0) · [realmpath](/p/moul/realmpath/v0) · [safe](/p/moul/safe/v0) · [svg](/p/moul/svg/v0) · [template](/p/moul/template/v0) · [txlink](/p/moul/txlink/v0) · [typeutil](/p/moul/typeutil/v0) · [udao](/p/moul/udao/v0) · [ulist](/p/moul/ulist/v1) · [ulist/lplist](/p/moul/ulist/lplist/v0) · [vesting](/p/moul/vesting/v0) · [web25](/p/moul/web25/v0) · [xdao](/p/moul/xdao/v0) · [xmath](/p/moul/xmath/v1)
**Realms** (32): [agents/capwallet](/r/moul/agents/capwallet/v0) · [agents/gnomem](/r/moul/agents/gnomem/v0) · [agents/jury](/r/moul/agents/jury/v0) · [agents/maintainer](/r/moul/agents/maintainer/v0) · [agents/passport](/r/moul/agents/passport/v0) · [agents/receipt](/r/moul/agents/receipt/v0) · [blog](/r/moul/blog) · [config](/r/moul/config/v1) · [demo/args](/r/moul/demo/args/v0) · [demo/data](/r/moul/demo/data/v0) · [demo/gnoface](/r/moul/demo/gnoface/v0) · [demo/grc20](/r/moul/demo/grc20/v0) · [demo/hello](/r/moul/demo/hello/v0) · [demo/importdemo](/r/moul/demo/importdemo/v0) · [demo/microposts](/r/moul/demo/microposts/v0) · [demo/millipede](/r/moul/demo/millipede/v0) · [demo/render](/r/moul/demo/render/v0) · [demo/vault](/r/moul/demo/vault/v0) · [demo/wikicoin](/r/moul/demo/wikicoin/v0) · [faucet](/r/moul/faucet/v1) · [forge](/r/moul/forge/v0) · [gnopm/registry](/r/moul/gnopm/registry/v0) · [gns](/r/moul/gns/v0) · [grant](/r/moul/grant/v0) · [hello](/r/moul/hello/v0) · [home](/r/moul/home) · [outfmt](/r/moul/outfmt/v0) · [pilot](/r/moul/pilot/v0) · [present](/r/moul/present/v0) · [reactions](/r/moul/reactions/v0) · [sapin](/r/moul/sapin/v0) · [vesting](/r/moul/vesting/v0)
**Daily experiments** (196): one package a day, 55 libraries and 141 realms under `x/daily`.
> [!NOTE]- About this page
> Every section above is a **slot**: a named entry in this realm's store, filled
> into a layout that is itself a slot. So adding a section, reordering the page
> or rewriting a paragraph is a transaction, and none of it is a redeploy.
>
> [Read the slots](/r/moul/home:slots), or the
> [source](https://github.com/moul/gno-contracts/tree/main/r/moul/home).
---
[👍](/r/moul/reactions/v0$help&func=React&key=up&page=gno.land%2Fr%2Fmoul%2Fhome) [💜](/r/moul/reactions/v0$help&func=React&key=heart&page=gno.land%2Fr%2Fmoul%2Fhome) [🔥](/r/moul/reactions/v0$help&func=React&key=fire&page=gno.land%2Fr%2Fmoul%2Fhome) [🎉](/r/moul/reactions/v0$help&func=React&key=party&page=gno.land%2Fr%2Fmoul%2Fhome) [🚀 1](/r/moul/reactions/v0$help&func=React&key=rocket&page=gno.land%2Fr%2Fmoul%2Fhome) [👀](/r/moul/reactions/v0$help&func=React&key=eyes&page=gno.land%2Fr%2Fmoul%2Fhome)
*last 🚀 by `g1manfre…dlf5` · [1 reaction](/r/moul/reactions/v0:gno.land/r/moul/home)*
---
[gno.land/r/moul/home](/r/moul/home:slots) · rev 14 · gnoland-1 @ 1405340
On mygnoscan: [this realm](https://mygnoscan.moul.p2p.team/realm/r/moul/home?network=mainnet) · [my account](https://mygnoscan.moul.p2p.team/address/g1manfred47kzduec920z88wfr64ylksmdcedlf5?network=mainnet) · [this block](https://mygnoscan.moul.p2p.team/block/1405340?network=mainnet)vm/qrender output, sanitized (docs/render-security.md) and displayed in an empty-sandbox iframe — scripts, forms and popups cannot run. Links stay inert in-preview; right-click to open.