Geode Finance

A Base Logic: Maintainers

Note that, all mentions of "Classes" or "Structs" are imaginary here. In our Solidity Contracts you will not see any instance of these classes with explicit definitions.
As we are using isolated storage slots, these structs are dynamic, simply, dictionaries that are distinguished with the "TYPE" key, storing their data in the DataStore with infinite number of keys.

MaintainerUtils Library

Grouping the common functionalities within unique entities that will be defined later, like Planets and Operators, will make the management of isolated storage slots much easier.
Maintainers are chosen by CONTROLLERs. Maintainer can be seen as a Parent Class to any TYPE that are implemented on StakeUtils, such as Operators, Planets and Comets. This Library built on top of DataStore; initiating, authenticating and simplifying the management of such IDs with different TYPEs.

Controller - Maintainer Separation

Separating these common functionalities into 2 different roles will provide more flexibility to entities that operate slowly, such as DAOs.
  • If a functionality is rarely used, such as changing the Controller or a Maintainer address, it will be managed by the Controller.
  • If a functionality is frequently used and related to maintaining the pool parameters that will not issue any trust to the users, then it will be handled by maintainers.
Now it is also possible that specialized entities can provide maintenance services to the DAOs for their staking pools in the future.

Bring your own Governance!

Thanks to the mentioned separation, it is now possible to operate a Staking Pool with a Decentralized Governance Token!

Choose a maintainer that will ensure the health of your derivative and your DAO owned staking solution is good to go.


Initiators function as the constructors of the given ID, setting initial parameters of any TYPE implemented.
There are 3 Initiators that have been implemented so far:
  1. 1.
    Planets: Public Staking Pools, not permissionless to create but permissionless to use.
    1. 1.
      Planets have maintainers that manage the Node Operator allowances, acting like every possible Validator is "1" balance.
    2. 2.
      Keeping the derivative healthy and sustainable by cooperating with the Dynamic Withdrawal Pool.
    3. 3.
      Incentivising the withdrawals with withdrawalBoost to create a race condition between Node Operators when needed.
    4. 4.
      Planets use DWP for instant withdrawals.
    5. 5.
      Also a Planet inherits Operator, meaning Planets are authenticated to act as Node Operators as well.
  2. 2.
    Comets: Private Staking Pools, permissionless to create but not permissionless to use.
    1. 1.
      Meaning only maintainers can mint new tokens, however anyone can withdraw.
    2. 2.
      Withdrawals are conducted with a Queue.
    3. 3.
      This TYPE is not implemented yet.
  3. 3.
    Operators: Node Operators that are responsible from the creation of Validators on behalf of the staking pools.
    1. 1.
      Proposes new Validators after getting an approval from the Staking Pool's maintainer.
    2. 2.
      Racing with other Operators to Unstake and acquire the withdrawalBoost.
    3. 3.
      Operates within some requirements, can be isolated by prison (More details below).
All Planets are also Operators, allowing them to run validators for their users without issuing any exposure to outsiders.
Comets, privately owned Staking Pools, uses a static derivative with withdrawal queue.
It will allow any entity to isolate their own risk permissionlessly.
It is currently still being developed.