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

memba_dao.gno

5.78 Kb · 55 lines
 1// Founding Memba DAO candidate. Initial roles follow the approved policy.
 2// Keep the host private. This realm supports governed role changes, same-person key recovery and the fixed application adapters named in Render.
 3package memba_dao
 4
 5import (
 6    "chain"
 7    "gno.land/p/samcrew/memba_weighted_host"
 8    "gno.land/p/samcrew/memba_weighted_policy"
 9)
10
11var host *memba_weighted_host.Host
12var feedbackPolicy = memba_weighted_host.NewFeedbackPolicy(chain.PackageAddress("gno.land/r/samcrew/memba_dao"), "g136j0m08pkm2lwwde9dmlx8uee26llent9s5cpf")
13var channelsPolicy = memba_weighted_host.NewChannelsPolicy(chain.PackageAddress("gno.land/r/samcrew/memba_dao"), "g136j0m08pkm2lwwde9dmlx8uee26llent9s5cpf")
14var feedPolicy = memba_weighted_host.NewFeedPolicy(chain.PackageAddress("gno.land/r/samcrew/memba_dao"), "g136j0m08pkm2lwwde9dmlx8uee26llent9s5cpf")
15var badgesPolicy = memba_weighted_host.NewBadgesPolicy(chain.PackageAddress("gno.land/r/samcrew/memba_dao"), "g136j0m08pkm2lwwde9dmlx8uee26llent9s5cpf")
16var escrowPolicy = memba_weighted_host.NewEscrowPolicy(chain.PackageAddress("gno.land/r/samcrew/memba_dao"), "g136j0m08pkm2lwwde9dmlx8uee26llent9s5cpf")
17var appstorePolicy = memba_weighted_host.NewAppstorePolicy(chain.PackageAddress("gno.land/r/samcrew/memba_dao"), "g136j0m08pkm2lwwde9dmlx8uee26llent9s5cpf", "g1jw76lxvzjafw2kyjhdnzwggcftyhnlfjaer2u0")
18var arcadePolicy = memba_weighted_host.NewArcadePolicy(chain.PackageAddress("gno.land/r/samcrew/memba_dao"), "g136j0m08pkm2lwwde9dmlx8uee26llent9s5cpf")
19var questPolicy = memba_weighted_host.NewQuestPolicy(chain.PackageAddress("gno.land/r/samcrew/memba_dao"), "g136j0m08pkm2lwwde9dmlx8uee26llent9s5cpf")
20var reviewsPolicy = memba_weighted_host.NewReviewsPolicy(chain.PackageAddress("gno.land/r/samcrew/memba_dao"), "gno.land/r/samcrew/memba_reviews_v2", "g136j0m08pkm2lwwde9dmlx8uee26llent9s5cpf")
21var marketPolicy = memba_weighted_host.NewMarketPolicy(chain.PackageAddress("gno.land/r/samcrew/memba_dao"), "g1jw76lxvzjafw2kyjhdnzwggcftyhnlfjaer2u0", "g136j0m08pkm2lwwde9dmlx8uee26llent9s5cpf")
22
23func init(cur realm) {
24    host = memba_weighted_host.NewWithApplications([]memba_weighted_host.Seat{
25        {Member: memba_weighted_policy.Member{PersonID: "zxxma", Address: "g1747t5m2f08plqjlrjk2q0qld7465hxz8gkx59c", Founder: true}, Admin: true, Finance: true},
26        {Member: memba_weighted_policy.Member{PersonID: "mikael", Address: "g1lyejwwmxef5tn8nx69saykmgm8rlr4xq9yeh3z", Founder: false}, Admin: false, Finance: false},
27        {Member: memba_weighted_policy.Member{PersonID: "ghost", Address: "g12yg9nh4ncma44emgm8msxe8aavzywt0p95tanv", Founder: false}, Admin: false, Finance: false},
28        {Member: memba_weighted_policy.Member{PersonID: "mikecito", Address: "g1cvr48r7l7lkmvp77cr6zg2zhu26jgfwr0y8pew", Founder: false}, Admin: false, Finance: false},
29        {Member: memba_weighted_policy.Member{PersonID: "david", Address: "g1rayfgklwl0aspz488wvrcrvt7t2quy6q06lgk2", Founder: false}, Admin: false, Finance: false},
30        {Member: memba_weighted_policy.Member{PersonID: "lours", Address: "g1nvxz94ukmggfx4mlldwae3cpde99qmldtcgm9u", Founder: false}, Admin: false, Finance: false},
31        {Member: memba_weighted_policy.Member{PersonID: "dadidou", Address: "g1jjeuv48j3pmsmnvga8jwfnc2amfyv9c30zx04y", Founder: false}, Admin: false, Finance: false},
32    }, memba_weighted_host.ApplicationPolicies{Market:marketPolicy, Reviews:reviewsPolicy, Quest:questPolicy, Arcade:arcadePolicy, Appstore:appstorePolicy, Escrow:escrowPolicy, Badges:badgesPolicy, Feed:feedPolicy, Channels:channelsPolicy, Feedback:feedbackPolicy}, cur)
33}
34
35func ProposeRole(cur realm, target address, role string, grant bool) uint64 {
36    return host.ProposeRole(target, memba_weighted_host.Role(role), grant, cur)
37}
38func ProposeRecovery(cur realm, personID string, oldAddress, newAddress address) uint64 {
39    return host.ProposeRecovery(personID, oldAddress, newAddress, cur)
40}
41func Vote(cur realm, id uint64, vote string) { host.Vote(id, memba_weighted_policy.Vote(vote), cur) }
42func Execute(cur realm, id uint64) { if host.Proposal(id).Feedback { executeFeedback(cur, id); return }; if host.Proposal(id).Channels { executeChannels(cur, id); return }; if host.Proposal(id).Feed { executeFeed(cur, id); return }; if host.Proposal(id).Badges { executeBadges(cur, id); return }; if host.Proposal(id).Escrow { executeEscrow(cur, id); return }; if host.Proposal(id).Appstore { executeAppstore(cur, id); return }; if host.Proposal(id).Arcade { executeArcade(cur, id); return }; if host.Proposal(id).Quest { executeQuest(cur, id); return };
43    if host.Proposal(id).Reviews { executeReviews(cur, id); return }
44    if host.Proposal(id).Market { executeMarket(cur, id) } else { host.Execute(id, cur) }
45}
46func GetConfigJSON() string { return host.ConfigJSON() }
47func GetMembersJSON() string { return host.MembersJSON() }
48func GetProposalJSON(id uint64) string { return host.ProposalJSON(id) }
49func GetProposalsJSON(before uint64, limit int) string { return host.ProposalsJSON(before, limit) }
50func GetBallotJSON(proposalID string, voter address) string { return host.BallotJSON(proposalID, voter) }
51func GetPendingVotesJSON(voter address, before string, limit int) string { return host.PendingVotesJSON(voter, before, limit) }
52
53func Render(path string) string {
54    return "# Memba DAO\n\n## Members (7)\n\nOne founder with 2 voting points and six equal core developers with 1 point each.\n\nRole changes and member-key recovery require 6 points and at least 4 people after 24 hours, or 5 core developers after 72 hours. Voting closes after 7 days; qualified proposals retain their execution delay.\n\nFixed governance of market config, reviews, quests, arcade, App Store, escrow, badges, feed, channels and feedback is available. A return proposal only stages the configured successor; separate acceptance is required. DAO state migration and treasury spending are not enabled."
55}