func Allow
crossing ActionAllow consumes one token for the calling realm/user and reports whether the request is permitted. Returns false (and consumes nothing) when the bucket is empty.
Package ratelimit ports golang.org/x/time/rate (the standard Go token-bucket rate limiter) to an on-chain gno.land re...
Package ratelimit ports golang.org/x/time/rate (the standard Go token-bucket rate limiter) to an on-chain gno.land realm.
Each caller address owns a token bucket with a fixed capacity (burst) that refills at a steady rate expressed in tokens per block. There is no wall clock on-chain, so runtime.ChainHeight() is the monotonic clock: between two observations at heights `last` and `now`, the bucket gains (now-last)*rate tokens, capped at `burst`. Everything is pure, integer/ float arithmetic over persistent avl state, hence deterministic.
Allow consumes one token for the calling realm/user and reports whether the request is permitted. Returns false (and consumes nothing) when the 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). Values are clamped to be non-negative; burst is forced to at least 1.
Tokens is a read-only view of how many whole tokens `addr` has available at the current block height, without mutating any state.