Realm
gno.land/r/samcrew/daodemo/custom_resource
Rendered output
🔧 Custom Resource Demo
This showcases how to extend your DAO with custom actions.
ℹ️ How it Works
Join the DAO using the AddMember function.
Create a blog post Proposal using ProposeNewPost function with these parameters:
title: The title of the blog postcontent: The content of the blog post
Vote on proposals using their ID.
Execute proposals that have passed (met the required voting conditions).
📝 Note: Only proposals that have met the governance conditions can be executed. You need at least 10% of member approval to execute a proposal.
📋 Available Actions
Member Management
- 🔗 Add Yourself as Member - Join the DAO to participate in governance
Custom Resource Actions
- 🔗 Propose New Blog Post - Create a proposal to publish a new blog post (demonstrates custom resource)
Other Demos
- 🔗 Simple DAO Demo - Basic DAO functionality
- 🔗 Custom Condition Demo - Custom governance conditions
This is a demonstration DAO built with gno.land and daokit
Demo DAOKIT DAO
This is a demo DAO built with DAOKIT
Realm address: g1czaf0jpes9vcjewhjf9p7vndh5ygdplcf3p9jt
Discover more about this DAO on the configuration page ⚙️
My blog
No post available
Query (read-only)
non-crossing functions · no tx, no wallet neededNewPostAction(title string, content string) → interface {String func() string; Type func() string}
NewPostHandler(blog *gno.land/r/samcrew/daodemo/custom_resource.Blog) → interface {Execute func(gno.land/p/samcrew/daokit.Action, .uverse.realm); Type func() string}
Call functions (state-changing)
signs a tx via AdenaAddMember()
Execute(proposalID uint64)
Propose(req struct{Title string; Description string; Action gno.land/p/samcrew/daokit.Action})
ProposeNewPost(title string, content string)
Vote(proposalID uint64, vote string)
All exported functions (8)
show raw signatures
| Name | Params | Returns |
|---|---|---|
| NewPostAction | [{"Name": "title", "Type": "string", "Value": ""}, {"Name": "content", "Type": "string", "Value": ""}] | [{"Name": ".res.0", "Type": "interface {String func() string; Type func() string}", "Value": ""}] |
| NewPostHandler | [{"Name": "blog", "Type": "*gno.land/r/samcrew/daodemo/custom_resource.Blog", "Value": ""}] | [{"Name": ".res.0", "Type": "interface {Execute func(gno.land/p/samcrew/daokit.Action, .uverse.realm); Type func() string}", "Value": ""}] |
| Propose | [{"Name": "cur", "Type": "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}", "Value": ""}, {"Name": "req", "Type": "struct{Title string; Description string; Action gno.land/p/samcrew/daokit.Action}", "Value": ""}] | — |
| Vote | [{"Name": "cur", "Type": "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}", "Value": ""}, {"Name": "proposalID", "Type": "uint64", "Value": ""}, {"Name": "vote", "Type": "string", "Value": ""}] | — |
| Execute | [{"Name": "cur", "Type": "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}", "Value": ""}, {"Name": "proposalID", "Type": "uint64", "Value": ""}] | — |
| Render | [{"Name": "path", "Type": "string", "Value": ""}] | [{"Name": ".res.0", "Type": "string", "Value": ""}] |
| AddMember | [{"Name": "cur", "Type": "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}", "Value": ""}] | — |
| ProposeNewPost | [{"Name": "cur", "Type": "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}", "Value": ""}, {"Name": "title", "Type": "string", "Value": ""}, {"Name": "content", "Type": "string", "Value": ""}] | — |
Files
Storage
{
"raw": "storage: 126970, deposit: 12697000"
}