Plan For Modular Contracts - GenusDev/genie-portal GitHub Wiki

Set functionality:

  • Minting new inactive tokens only happens when a project is pitched.
  • minting active tokens only happens by activating pending inactive tokens,
  • transfering inactive tokens only happens when someone buys tokens from the crowdsale buytokens function
  • projects will always be pitched in the same project factory and will therefore always have the same dividends wallet

Rationale: By controlling the process of how new tokens are minted and distributed, it will not be possible for certain investors with a lot of power to mint new tokens only for themselves arbitrarily, diluting the value of other token holders. Similarly, by controlling how projects interact with dividend distribution, investors cannot collect funds at the expense of other token holders. The most that nefarious token holders could potentially do is create an entirely new project system that forwards funds to a different account without minting any new tokens. While this would exclude some token holders from collecting funds from new projects, their original investments would remain intact.

Changeable functionality

  • What happens after a project is pitched (for example, we could notify a contract that manages project leaders in a novel way, or to a contract that activates projects in a novel way)
  • What happens after a token is bought (for example, we might execute a contract that activates tokens immediately at some point, effectively removing the inactive / active distinction)
  • How is the leading project determined / how does a a project get deployed (leading project might depend on factors other than total votes and capital needs)
  • What happens after a project is activated (maybe funds go to an escrow wallet)
  • How tokens go from inactive to pending (for example, this might happen immediately, as stated before)
  • What happens after you vote for a project (for example, it can notify a contract that records the leader in a novel way)
  • Other restrictions:
  • You cannot modify a contract with ether in it.