DAO

After the release of our NFTs, the next step is going to organize the proposals and votes by using a DAO implemented in the smart contract. Each citizen will be allowed to vote and contribute to the future of The United Metaverse Nation.
contract DAOInterface {
// The minimum debate period that a generic proposal can have
uint constant minProposalDebatePeriod = 2 weeks;
// The minimum debate period that a split proposal can have
uint constant quorumHalvingPeriod = 25 weeks;
// Period after which a proposal is closed
// (used in the case `executeProposal` fails because it throws)
uint constant executeProposalPeriod = 10 days;
// Time for vote freeze. A proposal needs to have majority support before votingDeadline - preSupportTime
uint constant preSupportTime = 2 days;
// Denotes the maximum proposal deposit that can be given. It is given as
// a fraction of total Ether spent plus balance of the DAO
uint constant maxDepositDivisor = 100;
We decided to implement the DAO at a later date to be able to launch the project successfully. Our goal is to be fully decentralized as soon as possible, however, for this project to evolve and prosper, it needs a founding team in its infancy.
Token token;
// Proposals to spend the DAO's ether
Proposal[] public proposals;
// The quorum needed for each proposal is partially calculated by
// totalSupply / minQuorumDivisor
uint public minQuorumDivisor;
// The unix time of the last time quorum was reached on a proposal
uint public lastTimeMinQuorumMet;
// Address of the curator
address public curator;
// The whitelist: List of addresses the DAO is allowed to send ether to
mapping (address => bool) public allowedRecipients;
// Map of addresses blocked during a vote (not allowed to transfer DAO
// tokens). The address points to the proposal ID.
mapping (address => uint) public blocked;
// Map of addresses and proposal voted on by this address
mapping (address => uint[]) public votingRegister;
// The minimum deposit (in wei) required to submit any proposal that is not
// requesting a new Curator (no deposit is required for splits)
uint public proposalDeposit;
// the accumulated sum of all current proposal deposits
uint sumOfProposalDeposits;