func Allow
crossing ActionAllow consumes one token for the calling realm/user at the current block height and reports whether the request is permitted. Returns false (and consumes nothing) when the caller's bucket is empty.
Community realm. Read the code first. Community realm, deployed by its author. Read the code before you interact or send coins.
Package ratelimitdemo is a small on-chain demo of the token-bucket rate limiter provided by the [p/moul/x/daily/ratel...
gno.land/r/nym-moultest123/x/daily/ratelimitdemo/v0Live demo of the p/moul/x/daily/ratelimit
token-bucket rate limiter.
Holds one package-level ratelimit.Limiter (0.5 tokens/block, capacity 5) and
wires it to the chain — the tick is runtime.ChainHeight(), each caller is keyed
by unsafe.PreviousRealm().Address():
Allow(cur) bool — consume one token for the caller.SetConfig(cur, rate, burst) — retune the shared bucket.Tokens(addr) int — read-only balance.Render("/") — config + a table of callers; Render("/addr/<address>") focuses one.All refill/consume math lives in the library; this realm is just the wiring and
the gnoweb view. Render it at /r/nym-moultest123/x/daily/ratelimitdemo/v0.
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.
Package ratelimitdemo is a small on-chain demo of the token-bucket rate limiter provided by the p/moul/x/daily/ratelimit(/p/nym-moultest123/x/daily/ratelimit/v0) library.
It holds a single package-level ratelimit.Limiter and wires it to the chain: the tick is runtime.ChainHeight() and each caller is keyed by its address (unsafe.PreviousRealm().Address()). It contains no limiter logic of its own — refill/consume math all lives in the library.
Allow consumes one token for the calling realm/user at the current block height and reports whether the request is permitted. Returns false (and consumes nothing) when the caller's bucket is empty.
Render shows the limiter config and a table of known callers with their current tokens and last-seen height. Path "/addr/<address>" focuses one caller.
SetConfig updates the shared rate (tokens per block) and burst (capacity). rate is clamped to >= 0, burst to >= 1.
Tokens reports how many whole tokens `addr` has available at the current block height, without mutating any state.