Skip to content Search Apps Documentation Source Content File Folder Download Copy Actions State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

Community realm. Read the code first. Community realm, deployed by its author. Read the code before you interact or send coins.

README.md

1.66 Kb · 46 lines

gno.land/p/nym-moultest123/udao

Minimal DAO interfaces, written from the outside. udao deliberately does not expose members or votes: those are implementation details that differ per DAO and that non-members cannot act on anyway. What it exposes is the part an outside observer needs: which proposals exist and where they stand.

1type DAO interface {
2	Propose(prop Proposal) (uint64, error)
3	GetProposal(id uint64) (Proposal, error)
4	GetProposalStatus(id uint64) (ProposalStatus, error)
5	Execute(id uint64) error
6}

ProposalState is the lifecycle: Pending, Active, Passed, Rejected, Executed, Expired.

Constraints

The composable half of the package. A proposal can carry constraints, and ValidateConstraints reports whether all of them hold, returning the list of reasons when they do not:

1func ValidateConstraints(p Proposal) (bool, []string)

That is what lets DAO behaviour be assembled from parts (a quorum constraint, a time-window constraint, a whitelist constraint) instead of baked into one implementation.

This package is interfaces plus ValidateConstraints; it has no DAO of its own. p/moul/xdao is a (partial) implementation of it.


Part of moul/gno-contracts — moul's versioned gno.land contracts. See the repository for the full catalog, build/test tooling, and usage.

⚠️ Disclaimer: provided as-is, without warranty; not security-audited. Full disclaimer: DISCLAIMER.