Governance
High-level overview of the governance mechanism for Aavegotchi Contracts
Contract Upgradeability
The Aavegotchi Contracts implement the EIP-2535 Diamond Standard, a new standard for fully-upgradeable smart contracts.
The mechanism for upgrading a Diamond is by calling diamondCut()
which takes arguments of functions to replace, and what functions to replace them with.
Initially, the diamondCut()
upgrade function will only be callable by the Aavegotchi Team Multisig, whose Signees consist of Aavegotchi core team members, advisors with interests aligned with Aavegotchi, and trusted community members.
Upgrades will only be executed when a majority of the Signees believe the upgrades are beneficial to the Aavegotchi project and have been fully-vetted and reviewed by third-party auditors.
It is our full intention to eventually transfer access to the diamondCut()
function to the AavegotchiDAO. But this is a process of gradual decentralization. The DAO must be ready for this responsibility, or else the protocol will be at risk.
DAO-Only Functions
Although the AavegotchiDAO does not initially have access to upgrading the contracts, there are many functions within the DAOFacet.sol
it can call:
Initially, the Aavegotchi Multisig contractOwner
will also have access to these functions, but in a future update this access will be restricted.
Below are all of the functions callable by the AavegotchiDAO. For more details visit DAOFacet.sol.
setDAO()
transfers access to a new DAO, in the case of a migration.addCollateralTypes()
adds new whitelisted collaterals that will appear in Portals.updateCollateralModifiers()
updates the trait modifiers of a certain collateral.createHaunt()
creates a new Haunt, consisting of a certain size, with a set price and a randomly-appearingbodyColor
property. Note: The previous Haunt must be completed beforecreateHaunt()
can be called.mintItems()
creates items of a givenitemType
andvalue
and transfers them to a givento
address.grantExperience()
increases the experience of the given Aavegotchis by a given amount.addItemTypes()
Creates (but does not mint) newitemTypes
. Must be called before minting items, if they have not been created previously.addItemTypesAndSvgs()
Creates (but does not mint) newitemTypes
and adds their associated SVG files to contract memory. Must be called before minting items, if they have not been created previously.addWearableSets()
adds new Wearable sets with the given parameters.setGameManager()
Sets a game manager contract to manage Aavegotchi minigames.
Last updated