From 053ad351aec437e768479cb12256ad71a5e28955 Mon Sep 17 00:00:00 2001 From: moul <94029+moul@users.noreply.github.com> Date: Mon, 10 Jun 2024 13:09:22 +0200 Subject: [PATCH 1/4] feat: v1 doc Signed-off-by: moul <94029+moul@users.noreply.github.com> --- README.md | 128 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 126 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3bf3600..9182508 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,126 @@ -# govdao -genesis, constitution, rules, and contracts for GovDAO (owner of gno.land) +_This document is a work in progress, please make PRs_ _What matters at this +very moment is that we open ISSUEs and begin discussions about every facet that +should go in the founding documents_ + +_ALL CONTRIBUTIONS TO THIS REPO, ITS ISSUES, PROJECTS, AND DISCUSSIONS MAY BE USED +IN ANY EXPLICIT GITHUB FORK WITH A NEW AND DISTINCT NAME TO LAUNCH ANY FORK OR SPLIT +THAT MODIFIES ANY OF THE IDEAS MENTIONED HERE UNDER THE GnoNGPL COPYLEFT LICENSE._ + +---------------------------------------- +# Gno.land Genesis + +## Introduction + +We are building a DAO for Gno.land, focusing on contributions over financial +stakes. Our goal is to create a new community and ecosystem driven by +contributors. This involves redefining what constitutes a contribution and +ensuring we have a minimal constitution while allowing for extra suggestions +that are not rules but good practices. + +## Vision and Missions + +- **Goal of the DAO**: To create a decentralized, community-driven ecosystem + that values contributions over financial stakes. +- **Why Gno.land DAO Matters**: It fosters innovation, collaboration, and + inclusivity. +- **Specifics of this DAO**: Focus on proof of contributions rather than proof + of stake. +- **Future Plan**: Develop a robust ecosystem of DAOs that govern various + aspects of Gno.land. +- **Launch Timeline**: To be determined. +- To allow permissionless, scalable quality contributions. +- **TODO**: Explain this specific case. + +## The Plan + +The framework of Gno.land DAO consists of essential subDAOs that enable the +expansion of the DAO into additional subDAOs before and after the launch. + +### Essential Components of Gno.land DAO + +Here are the significant DAOs that will govern the Gno.land DAO: + +- **GovDAO**: The governance entity. Responsible for governing the chain, and + the top-level treasury. Real world equivalent: board. +- **WorxDAO**: The operational entity consisting of managing day-to-day tasks, + ease the contributions and measure performance. Real-world equivalent: Human + resources, management.. +- **Evaluation DAO**: The engineering entity composed of experts, responsible of + reviewing the quality of code-based contributions. Real-world equivalent: QA. + +### Collections of Gno.land DAO + +- **Growth DAO**: Invests wisely in our treasury with growth strategies. +- **Operational DAOs**: + - **Support DAO**: Allows scalable and distributed support. + - **Marketing DAO**: Facilitates creative ways to connect and expand with the + community. +- **Engineering DAOs**: Speeds up development by having clear ownership of small + libraries. + +## Building the DAOs Structure + +- **Sub DAO Formation**: How to create new DAOs? +- **DAOs Collaborations**: How are the DAOs collaborating? How to provide/use + services across the multichain of DAOs. +- **DAO Recommendation**: How to suggest new DAOs. +- **Encouraging Competition**: How we encourage competition and allow easy + proposals for extensions. + +## Governance + +- **Power Distribution**: How power is distributed within the DAO. +- **DAO Membership Management**: Scaling and managing membership. +- **Owning the Chain**: Empowering the ecosystem (like being the ICS provider, + but not only for consensus). +- **Independence & Collaboration**: Gno.land DAO should remain autonomous. Adopt + a **Declaration of Independence** and **Constitution** with cryptographic + signatures. + +## Funding of the Development of the Sub-DAOs + +- **Funding Mechanisms**: How are the sub DAOs funded? +- **Budget Setting**: How can the DAO set budgets for its objectives? +- **Decision Making**: Who decides on the budget? +- **Payment**: How is the DAO paid? +- **Treasury Management**: Managing the DAO's treasury. +- **Proof of Contribution (PoC)**: Allows making the whole ecosystem safer + against cartels and problems with money in general. +- **Disclaimer**: Gno.land DAO won’t depend on PoC, but PoC depends on Gno.land DAO. + +## Constitution + +- **Fundamental Principles**: Shared across all the DAOs. +- **Sovereignty**: The sovereignty of the DAO. +- **Rights and Liberties**: Rights and liberties of the DAO. + +## Language and Technical Specifications + +- **Go Base/Gno Base**: The technical foundation. +- **Gno.land Blockchain**: Links and details. +- **Upgradability and Future Proofness**: Ensuring the DAO is future-proof. +- **IBCx**: Inter-Blockchain Communication extensions. + +## Security + +- **Ensuring Security**: How we ensure the security of the DAO. +- **Reporting**: How/who reports on the security of the DAO. +- **Audits**: Conducting audits. +- **ICSx**: Inter-Chain Security extensions. + +## How to Contribute? + +- **Community Contribution**: How can the community contribute? +- **Getting Involved**: How to get involved. + +## TODO + +- [ ] Draft the Constitution +- [ ] Define what constitutes a contribution +- [ ] Establish governance structure +- [ ] Outline roles and responsibilities +- [ ] Develop voting mechanisms +- [ ] Create dispute resolution processes +- [ ] Document good practices +- [ ] Gather community feedback and iterate +- [ ] XXX From 8647e449545874658dd024f3ef9fab8bb2aa681c Mon Sep 17 00:00:00 2001 From: moul <94029+moul@users.noreply.github.com> Date: Fri, 9 Aug 2024 20:50:28 +0200 Subject: [PATCH 2/4] feat: add sim Signed-off-by: moul <94029+moul@users.noreply.github.com> --- sim/go.mod | 3 ++ sim/sim.go | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 sim/go.mod create mode 100644 sim/sim.go diff --git a/sim/go.mod b/sim/go.mod new file mode 100644 index 0000000..a79bd58 --- /dev/null +++ b/sim/go.mod @@ -0,0 +1,3 @@ +module github.com/gnolang/genesis/sim + +go 1.22.5 diff --git a/sim/sim.go b/sim/sim.go new file mode 100644 index 0000000..30f8a90 --- /dev/null +++ b/sim/sim.go @@ -0,0 +1,107 @@ +package main + +import ( + "fmt" + "math/big" +) + +type Node struct { + Name string + Children []*Edge + Parents []*Edge +} + +type Edge struct { + From *Node + To *Node + Power *big.Rat // max 1/2 delegation + Frozen bool +} + +func (n *Node) Delegate(to *Node, power *big.Rat) { + // check capacity + sum := new(big.Rat).Set(power) + for _, child := range n.Children { + sum.Add(sum, child.Power) + } + if sum.Cmp(big.NewRat(1, 2)) > 0 { + panic("cannot delegate more than 1/2 of total power") + } + + edge := &Edge{ + From: n, + To: to, + Power: power, + Frozen: false, + } + n.Children = append(n.Children, edge) + to.Parents = append(to.Parents, edge) +} + +func (n *Node) Power() *big.Rat { + if len(n.Parents) == 0 { + return big.NewRat(1, 1) // root node has full power + } + + power := big.NewRat(0, 1) + for _, parent := range n.Parents { + parentPower := new(big.Rat).Mul(parent.Power, parent.From.Power()) + power.Add(power, parentPower) + } + return power +} + +func (n *Node) String() string { + return n.stringRec("") +} + +func (e *Edge) stringRec(prefix string) string { + output := fmt.Sprintf("%s|-%s- %s (Aggregated Power: %s)\n", prefix, e.Power.FloatString(2), e.To.Name, e.To.Power()) + output += e.To.stringRec(prefix + " ") + return output +} + +func (n *Node) stringRec(prefix string) string { + output := "" + if n.Parents == nil { + output += fmt.Sprintf("%s*%s*\n", prefix, n.Name) + } + for _, child := range n.Children { + output += child.stringRec(prefix + " ") + } + return output +} + +func main() { + var ( + root = &Node{Name: "root"} + alice = &Node{Name: "alice"} + bob = &Node{Name: "bob"} + charly = &Node{Name: "charly"} + dave = &Node{Name: "Dave"} + erin = &Node{Name: "Erin"} + frank = &Node{Name: "Frank"} + grace = &Node{Name: "Grace"} + heidi = &Node{Name: "Heidi"} + ivan = &Node{Name: "Ivan"} + ) + + // root & top level members + root.Delegate(alice, big.NewRat(1, 1000)) + root.Delegate(bob, big.NewRat(1, 1000)) + for _, topLevel := range root.Children { + topLevel.Power = big.NewRat(1, 1) + } + + // DAO members + alice.Delegate(charly, big.NewRat(1, 2)) + bob.Delegate(frank, big.NewRat(1, 2)) + charly.Delegate(dave, big.NewRat(1, 4)) + charly.Delegate(erin, big.NewRat(1, 4)) + dave.Delegate(grace, big.NewRat(1, 4)) + dave.Delegate(heidi, big.NewRat(1, 4)) + grace.Delegate(heidi, big.NewRat(1, 2)) + heidi.Delegate(ivan, big.NewRat(1, 2)) + + fmt.Println(root) +} From b8361446f09d7d5e3b345d5f96f1b45ad2834a18 Mon Sep 17 00:00:00 2001 From: moul <94029+moul@users.noreply.github.com> Date: Fri, 9 Aug 2024 20:56:17 +0200 Subject: [PATCH 3/4] chore: fixup Signed-off-by: moul <94029+moul@users.noreply.github.com> --- README.md | 126 ------------------------------------------------------ 1 file changed, 126 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index 9182508..0000000 --- a/README.md +++ /dev/null @@ -1,126 +0,0 @@ -_This document is a work in progress, please make PRs_ _What matters at this -very moment is that we open ISSUEs and begin discussions about every facet that -should go in the founding documents_ - -_ALL CONTRIBUTIONS TO THIS REPO, ITS ISSUES, PROJECTS, AND DISCUSSIONS MAY BE USED -IN ANY EXPLICIT GITHUB FORK WITH A NEW AND DISTINCT NAME TO LAUNCH ANY FORK OR SPLIT -THAT MODIFIES ANY OF THE IDEAS MENTIONED HERE UNDER THE GnoNGPL COPYLEFT LICENSE._ - ----------------------------------------- -# Gno.land Genesis - -## Introduction - -We are building a DAO for Gno.land, focusing on contributions over financial -stakes. Our goal is to create a new community and ecosystem driven by -contributors. This involves redefining what constitutes a contribution and -ensuring we have a minimal constitution while allowing for extra suggestions -that are not rules but good practices. - -## Vision and Missions - -- **Goal of the DAO**: To create a decentralized, community-driven ecosystem - that values contributions over financial stakes. -- **Why Gno.land DAO Matters**: It fosters innovation, collaboration, and - inclusivity. -- **Specifics of this DAO**: Focus on proof of contributions rather than proof - of stake. -- **Future Plan**: Develop a robust ecosystem of DAOs that govern various - aspects of Gno.land. -- **Launch Timeline**: To be determined. -- To allow permissionless, scalable quality contributions. -- **TODO**: Explain this specific case. - -## The Plan - -The framework of Gno.land DAO consists of essential subDAOs that enable the -expansion of the DAO into additional subDAOs before and after the launch. - -### Essential Components of Gno.land DAO - -Here are the significant DAOs that will govern the Gno.land DAO: - -- **GovDAO**: The governance entity. Responsible for governing the chain, and - the top-level treasury. Real world equivalent: board. -- **WorxDAO**: The operational entity consisting of managing day-to-day tasks, - ease the contributions and measure performance. Real-world equivalent: Human - resources, management.. -- **Evaluation DAO**: The engineering entity composed of experts, responsible of - reviewing the quality of code-based contributions. Real-world equivalent: QA. - -### Collections of Gno.land DAO - -- **Growth DAO**: Invests wisely in our treasury with growth strategies. -- **Operational DAOs**: - - **Support DAO**: Allows scalable and distributed support. - - **Marketing DAO**: Facilitates creative ways to connect and expand with the - community. -- **Engineering DAOs**: Speeds up development by having clear ownership of small - libraries. - -## Building the DAOs Structure - -- **Sub DAO Formation**: How to create new DAOs? -- **DAOs Collaborations**: How are the DAOs collaborating? How to provide/use - services across the multichain of DAOs. -- **DAO Recommendation**: How to suggest new DAOs. -- **Encouraging Competition**: How we encourage competition and allow easy - proposals for extensions. - -## Governance - -- **Power Distribution**: How power is distributed within the DAO. -- **DAO Membership Management**: Scaling and managing membership. -- **Owning the Chain**: Empowering the ecosystem (like being the ICS provider, - but not only for consensus). -- **Independence & Collaboration**: Gno.land DAO should remain autonomous. Adopt - a **Declaration of Independence** and **Constitution** with cryptographic - signatures. - -## Funding of the Development of the Sub-DAOs - -- **Funding Mechanisms**: How are the sub DAOs funded? -- **Budget Setting**: How can the DAO set budgets for its objectives? -- **Decision Making**: Who decides on the budget? -- **Payment**: How is the DAO paid? -- **Treasury Management**: Managing the DAO's treasury. -- **Proof of Contribution (PoC)**: Allows making the whole ecosystem safer - against cartels and problems with money in general. -- **Disclaimer**: Gno.land DAO won’t depend on PoC, but PoC depends on Gno.land DAO. - -## Constitution - -- **Fundamental Principles**: Shared across all the DAOs. -- **Sovereignty**: The sovereignty of the DAO. -- **Rights and Liberties**: Rights and liberties of the DAO. - -## Language and Technical Specifications - -- **Go Base/Gno Base**: The technical foundation. -- **Gno.land Blockchain**: Links and details. -- **Upgradability and Future Proofness**: Ensuring the DAO is future-proof. -- **IBCx**: Inter-Blockchain Communication extensions. - -## Security - -- **Ensuring Security**: How we ensure the security of the DAO. -- **Reporting**: How/who reports on the security of the DAO. -- **Audits**: Conducting audits. -- **ICSx**: Inter-Chain Security extensions. - -## How to Contribute? - -- **Community Contribution**: How can the community contribute? -- **Getting Involved**: How to get involved. - -## TODO - -- [ ] Draft the Constitution -- [ ] Define what constitutes a contribution -- [ ] Establish governance structure -- [ ] Outline roles and responsibilities -- [ ] Develop voting mechanisms -- [ ] Create dispute resolution processes -- [ ] Document good practices -- [ ] Gather community feedback and iterate -- [ ] XXX From 28cb9db9e4bcf6793a934c68bf889d09e01e73d3 Mon Sep 17 00:00:00 2001 From: moul <94029+moul@users.noreply.github.com> Date: Fri, 9 Aug 2024 20:57:17 +0200 Subject: [PATCH 4/4] chore: fixup Signed-off-by: moul <94029+moul@users.noreply.github.com> --- README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..3bf3600 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# govdao +genesis, constitution, rules, and contracts for GovDAO (owner of gno.land)