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.

/p/nym-moultest123/safe/v0

Directory · 4 Files
README.md Open

gno.land/p/nym-moultest123/safe

🚧 API sketch, mostly unimplemented. 13 of the 22 functions panic("not implemented"), including every proposal path. It compiles and its shape is testable; it does not work.

A Gnosis-Safe-shaped multisig interface for gno: an m-of-n set of members, a queue of proposals, and explicit approve / execute / cancel.

What runs today

1func NewSafe() Safe          // 1-of-1, owned by the calling realm's address
2func (s safe) Name() string
3func (s safe) Members() []address
4func (s safe) Threshold() uint
5func (s safe) Size() uint

What panics

Everything that would make it a multisig: ProposeAddingMember, ProposeRemovingMember, ProposeUpdatingThreshold, GetProposal, ApproveProposal, ExecuteProposal, CancelProposal, NextProposal, UpcomingProposals, PreviousProposals, Render, and both String methods.

The shape being proposed

The interesting decision is that membership changes are themselves proposals, so there is one code path for "do a thing" and no privileged side door for "change who may do things". Proposal exposes Executed() and Voters(), and proposals are split into upcoming and previous rather than a single log, which is what a UI actually needs.

For multisig that works today, use the tm2 account-level multisig (gnokey multisign), not this.


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.