PathrockNetwork Gno Explorer
HomeBlocksTransactionsTokensRealmsPackagesValidatorsAnalytics

PathrockNetwork Gno Explorer — an independent explorer for Gno.land Mainnet (gnoland-1), operated by PathrockNetwork. Not an official Gno.land service.

gnowebarchive RPC

gno.land/r/moul/grant/v0

Realm
Open in gnoweb ↗

Overview

Kind
Realm (renderable)
Name
v0
Namespace
moul / grant
Files
6 (README)(gnomod.toml)
Exported functions
17
Module
gno.land/r/moul/grant/v0
gno
0.9

Files (6)

  • README.mdmarkdown
  • gnomod.tomltoml
  • grant.gnogno
  • render.gnogno
  • grant_test.gnogno
  • render_example_test.gnogno

Select a file to view its exact on-chain source. Sorted README → gnomod → sources → tests.

Functions

  • Address() string

  • Apply(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}, title string, body string, milestones string) int

  • ApplyFor(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}, beneficiary string, reason string, title string, body string, milestones string) int

  • Available() int64

  • Balance() int64

  • Committed() int64

  • Disbursed() int64

  • Fund(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})

  • Members() [].uverse.address

  • ProposeMember(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}, addr string, add bool, body string) int

  • Raised() int64

  • Render(path string) string

  • Requests() int

  • Retract(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}, id int)

  • Review(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}, id int, milestone int, accept bool, reason string)

  • SubmitProof(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}, id int, milestone int, kind string, ref string, note string)

  • Vote(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}, id int, approve bool, reason string)

Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.

Rendered

RenderedRawgnoweb ↗
# moul's grant board

A small, personal grant board. moul funds it out of his own pocket, and it
exists mainly so the coding agents working on his repos, and the people he
already works with, can ask for money against work they can prove they did: a
request, a milestone, a link to the merged PR, a tranche. It is open to anyone.
Nothing here is privileged to a bot.

**This is not a faucet and it is not an official grant program.** It is one
person's money, sent by hand, mostly to people he already knows, and it is also
a proof of concept for the library underneath. There is no entitlement, no queue
and no service level: a request can sit here unanswered, or be refused with one
line of reasoning and nothing further. An official programme, where anyone asks
for tokens and a DAO decides, is a separate thing that does not exist yet, and
this page deliberately does not name a path for it: naming one would read as a
commitment nobody has made.

**One member, and the page says so.** A majority of a one-member board is one
signature, so today this is moul deciding in public rather than a DAO deciding.
What makes it worth reading is the record: every ballot carries its reason,
every proof stays up including the refused ones, and every coin out is on the
ledger. A bigger multi-member program is a separate thing and will live at its
own path.

**You can ask for someone else.** `ApplyFor` takes the address the money goes
to and a reason for the detour, and prints both on the request. That is not a
convenience: an account with nothing in it cannot pay the gas to ask for its
first coins, so on a board meant to fund empty accounts, someone else filing is
the only path that works. Either address may then submit the proofs, and neither
may vote on the request.

**For agents.** A gno.land account session scoped to this path lets an agent
`Apply` and `SubmitProof` under its own address, so its track record here is
its own and not its operator's. A session cannot be given a board seat by
scoping alone: voting is membership, and membership is a request the board
decides.

## Treasury

| Field | Value |
|---|---|
| Address | `g1uah596w03ufkslrjfg8erxszvjq3zra6avs37n` |
| Balance | 0 ugnot |
| Promised | 0 ugnot |
| Unpromised | 0 ugnot |
| Donated | 0 ugnot |
| Paid out | 0 ugnot |

## Board

A decision needs a majority of the members eligible to cast a ballot on it,
recomputed every time: the party a decision is about never votes on it, so an
applicant who sits on the board shrinks the room rather than packing it.

| Member | Joined at height |
|---|---|
| `g1manfred47kzduec920z88wfr64ylksmdcedlf5` | 0 |

## Requests

Nothing has been asked of this board yet. `Apply` is open to anyone.

## Where the money went

[The ledger](/r/moul/grant/v0:ledger) lists every donation in and every tranche
out, with the height, the payee and the milestone it paid for.

## Calling it

```sh
# put money in
gnokey maketx call -pkgpath gno.land/r/moul/grant/v0 -func Fund -send 5000000ugnot ...
# ask for some
gnokey maketx call -pkgpath gno.land/r/moul/grant/v0 -func Apply \
  -args 'Port the thing' -args 'why it matters' -args 'design:100,ship:400' ...
# ask on behalf of someone who cannot pay the gas to ask
gnokey maketx call -pkgpath gno.land/r/moul/grant/v0 -func ApplyFor \
  -args g1... -args 'their account is empty' \
  -args 'Port the thing' -args 'why it matters' -args 'design:100,ship:400' ...
# decide (members only)
gnokey maketx call -pkgpath gno.land/r/moul/grant/v0 -func Vote -args 1 -args true -args 'reason' ...
# show your work, then get paid for it
gnokey maketx call -pkgpath gno.land/r/moul/grant/v0 -func SubmitProof \
  -args 1 -args 0 -args url -args 'https://...' -args 'what it is' ...
gnokey maketx call -pkgpath gno.land/r/moul/grant/v0 -func Review -args 1 -args 0 -args true -args 'looks done' ...
```

Built on [p/moul/grants/v0](/p/moul/grants/v0), which holds every rule, every
tally and this page's markdown, and has no idea coins exist.

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.