JoinSEEDS / seeds-smart-contracts

Smart contracts for SEEDS - A Regenerative Civilization Building Game.
https://docs.google.com/document/d/1C4w9Ol8VGabCIcQDVPDrwcTRoJXBqhrb7VjslwQbUGU/edit#heading=h.6f4sxygso816
MIT License
20 stars 6 forks source link

Bioregion Governance #73

Open n13 opened 4 years ago

n13 commented 4 years ago

See #45

Phase 2: Constitution Implemented [SEEDS]

Specs

Bioregions mirror the global governance

https://docs.google.com/document/d/1vg95Bw4Pzsqe4DXPusiyD2hAU-HCI-37c0AAZSXxC68/edit

Phase 3: Roles, Challenges, and Quests

Implementation

Deployment

IanMendozaJaimes commented 3 years ago

Hello, I have some questions:

Related to proposals:

Related to referendums:

Related to settings:

julioholon commented 3 years ago

The Bioregion voice is separate, it's like another voting category (scope). Voice should be bioregion specific. If you switch to a different one, you have to earn voice there too. At least wait to next cycle before receiving. Same number of voice tokens used for proposals for now.

The actives, participants and cycle_stats_table tables will be scoped by bioregion as well?

Yes

The quorum base should be unique per bioregion, right?

Yes, count active users per Bioregion

A user can only delegate its trust to another user in the same bioregion? or you can delegate your voice to anyone and when your delegatee votes the contract validates if you could vote, if not then do nothing?

Yes for Bioregion Trust, but Proposal and Alliances Trust can be sent to anyone

The onperiod method should evaluate all the proposals or would it be better to have one onperiod per bioregion?

Break down one per scope (alliances, campaign, bioregions)

Is it necessary to keep track in a table of all the active proposals no matter which bioregion they belong to?

Not necessary, so we can scope only per bioregion

Related to referendums, I think is better to have the bioregion as another parameter in the referendums table because the way referendums are evaluated uses 3 different scopes, what do you think?

Refactor Referendum to keep the state in a field, make it work more like proposals, then add a bioregion scope. Change referendums to use voice table from proposals, also scoped by bioregions. You delegate voice to people in your region for referendums too.

Related to settings: I think this could be easy to have the settings float and integer tables scoped by bioregions

Yes, exactly. Fetch from bioregion scope, and if that doesn't exist, use global one.

NOTE: Rename BIOREGIONS --> REGIONS (also .bio to .reg, bdc -> rdc) Rename the contract too??? Later

julioholon commented 3 years ago

Review each settings to check which settings are local(regions can change) or global (can only be changed by SEEDS Citizens). Examples are: cycle duration and voice decay, should they be local or global? If local, we have to change many contracts to support that (scheduler for example). If used improperly could possibly spawn different "SEEDS currencies" per region, so we have to be careful. @n13 @Rieki7 Thoughts on this?

julioholon commented 3 years ago

Active bioregions (>144 citizens) receive funds from the Harvest. Ok, maybe "bio.seeds" receives from Harvest, with a table that behaves like an escrow, and keeps the amount of funds each region is allowed to access to proposals. Watch in case the region runs out of funds.