# TLDR 1. **Token Claiming**: Reserve n tokens for claiming when a DAO is created. Can be used as a solution for DAOs migrating cross chain, and NFT collections that want to transition to a DAO system. 2. **Alternate Implementations**: Allow alternate base contracts to be selected when a DAO is deployed. enables alternate implementations for contracts like auctions and metadata renderer. 3. **Protocol Fees**: New DAOs and DAOs that choose to upgrade to V2 will be subject to protoocol fees on auctions if enabled by BuilderDAO. 4. **Media Metadata Renderer**: Allow DAOs to use a collection of media as artwork instead of the current system of images that are dynamically built from a collection of traits. 5. **Collection +**: Collection+ is a way for any nft collection to "upgrade" to use a nouns style governance model. ## Token Claiming DAO creators want to seed DAOs with members from existing communities. This is most relevant in cross chain DAO migrations where a DAO on Ethereum wants to keep its member base when moving to Optimism. This feature also allows existing NFT collections to transition their community to a DAO using the proposed claiming mechanism. ### Spec #### Token.initilize - a dao creator can choose to reserve the first n tokens for claimaints - a dao creator can choose to enable and intilize a custom minter the can mint the first n tokens for the dao #### MerkleMinter - a minter that allows users to claim a specific tokenId by providing a merkle proof ### UI - develop a claim page or tab for users to claim tokens if the dao has the MerkleMinter enabled and their address is included in the merkle root - change token artwork display to show a placeholder for claimed tokens that have not been minted yet (these will have no artwork) ## Alternate Implementations The manager and current contract initilization functions are being reworked to support alternate core contract implementations. This will allow for multiple versions of contracts like Auctions, Governor and MetadataRenderer to exist at the same time giving users more options when creating a dao. ### Spec #### Manager.deploy - a dao creator can pass in a chosen implementation and paramters as bytes for each core contract #### Manager.isDeployment - a mapping that keeps track of valid deployments for each contract type #### (Token, MetadataRenderer, Treasury, Auction, Governor).initilize - initilization of all core contracts will be reworked to a single bytes paramter - core contracts will decode the bytes paramter and use that data to initilization ### UI - update the create dao page to support encoding paramters as bytes and selecting / initilizing alternate versions of contracts - update subgraph to handle multiple implementations - for this sprint we will be focusing on alternate auctions and metadata renders only ## Protocol Fees A protocol fee controlled by BuilderDAO will be added as a % fee of Auctions. This protocol fee is disabled by default and can be set via a BuilderDAO proposal. Current DAOs can opt in to this feature via upgrade while new DAOs will deploy with the fee built in. We belive this fee is necessary to sustain long term development of the protocol and the ecosystem. ### Spec #### FeeManager.sol - a new contract that manages fees throughout the protocol - will enable fees as a % of auction bids or sales through the platform #### Auction.placeBid - handles sending a % fee to the address specified in the Fee Manager. ### UI - add an explination on protocol fees to the docs, create DAO page, Upgrade notes, and bid flow for upgraded / new daos ## Media Metadata Renderer Users feel that the dynamic artwork system can be challenging to work with at times so we're building support for alternate metadata renderers. Our first new renderer called the Media Metadata Renderer will support folders of mixed media like static images, gifs, videos, music and 3d models. ### Spec #### MediaMetadataRenderer.sol - a new Metadata Renderer that allow DAOs to use mixed media as dao artwork ### UI - add support for new media types when rendering token artwork - add support for folders of mixed media when creating a dao - change subgraph to work with generic metadata renderers ## Collection + View the collection + spec [here](https://hackmd.io/eFSgnXefSUujGr75EqPCCg).