Aavegotchi Docs
Official WebsiteDapp
  • Welcome to Aavegotchi
    • Introduction
  • Own. Trade. Earn.
    • What is True Ownership?
    • Tokens
      • GHST Token
      • Gotchus Alchemica
      • GLTR Token
    • Game Items
      • Aavegotchis
      • Portals
      • Wearables
      • The Forge
      • Gotchiverse
    • Trading
      • Aavegotchi Baazaar
      • Auction House
    • Earning in Aavegotchi
      • Rarity Farming
      • Staking
      • Playing Games
  • Gaming
    • Aavegotchi Gaming Console
    • Live Games
    • Assets
      • Badges
      • Experience Points
      • Skins
      • [REDACTED]
  • Geist
    • Overview
    • FAQ
  • Governance
    • About AavegotchiDAO
    • Creating a Proposal
    • Voting on Proposals
  • developers
    • Aavegotchi Contracts
      • Reading from Aavegotchi Contracts
        • Fetching Onchain SVGs
      • Writing to Aavegotchi Contracts
      • Extending Aavegotchi Contracts
        • Upgrading
        • Security
        • Deployment
        • Governance
      • About EIP-2535 Diamonds
        • Facets
      • maTokens
      • Concepts
      • Deployed Contracts
        • Aavegotchi Diamond
        • Forge Diamond
        • Wearable Diamond
        • Gotchiverse Realm Diamond
        • Installation Diamond
        • Tile Diamond
    • Subgraphs
      • General
      • Core Matic Subgraph
      • SVG Subgraphs
      • Gotchiverse Subgraph
      • FAKE Gotchi Subgraph
Powered by GitBook
On this page
  • Contract Upgradeability
  • DAO-Only Functions

Was this helpful?

  1. developers
  2. Aavegotchi Contracts
  3. Extending Aavegotchi Contracts

Governance

High-level overview of the governance mechanism for Aavegotchi Contracts

PreviousDeploymentNextAbout EIP-2535 Diamonds

Last updated 1 year ago

Was this helpful?

Contract Upgradeability

The Aavegotchi Contracts implement the , a new standard for fully-upgradeable smart contracts.

The mechanism for upgrading a Diamond is by calling 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.

  1. setDAO() transfers access to a new DAO, in the case of a migration.

  2. addCollateralTypes() adds new whitelisted collaterals that will appear in Portals.

  3. updateCollateralModifiers() updates the trait modifiers of a certain collateral.

  4. createHaunt() creates a new Haunt, consisting of a certain size, with a set price and a randomly-appearing bodyColor property. Note: The previous Haunt must be completed before createHaunt() can be called.

  5. mintItems() creates items of a given itemType and value and transfers them to a given to address.

  6. grantExperience() increases the experience of the given Aavegotchis by a given amount.

  7. addItemTypes() Creates (but does not mint) new itemTypes. Must be called before minting items, if they have not been created previously.

  8. addItemTypesAndSvgs() Creates (but does not mint) new itemTypes and adds their associated SVG files to contract memory. Must be called before minting items, if they have not been created previously.

  9. addWearableSets() adds new Wearable sets with the given parameters.

  10. setGameManager() Sets a game manager contract to manage Aavegotchi minigames.

EIP-2535 Diamond Standard
diamondCut()