A permissionless, governed protocol to deploy nouns-style DAOs complete with treasury, generative collections, and governance mechanisms.
Platform: Code4rena
Start Date: 06/09/2022
End Date: 15/09/2022
Period: 9 days
Status: Completed
Pot Size: $90,000 USDC
Participants: 168
Reporter: liveactionllama
Judge: GalloDaSballo
Id: 157
League: ETH
Auditor per page
Nouns DAO is a significant form factor innovation for NFTs and DAOs. Instead of giving all power and capital solely to a project’s founders, the Nouns model enables communities to emerge progressively and be active participants in how their brand and community evolves.
Nouns Builder is a tool for deploying forks of Nouns DAO with custom NFT, auction, governance, and founder(s) settings.
See the documentation for more information on the protocol.
This contest is open for 9 days to give wardens time to understand the protocol properly. Representatives from ZORA will be available in the Code Arena Discord to answer any questions during the contest period.
The focus of the contest is to try and find any logic errors or ways to drain funds from a DAO in a way that is advantageous for an attacker at the expense of users with funds invested in the protocol. Wardens should assume that governance variables are set sensibly (unless they can find a way to change the value of a governance variable, and not counting social engineering approaches for this).
All contracts under src
are to be reviewed. Any other contracts are to be ignored for this contest.
manager ├─ Manager — "DAO deployer and upgrade registry" ├─ IManager — "Interface for Manager contract" ├─ storage │ ├─ ManagerStorageV1 — "Storage for Manager contract" token ├─ Token — "ERC-721 Governance Token implementation" ├─ IToken — "Interface for Token contract" ├─ storage │ ├─ TokenStorageV1 — "Storage for Token contract" ├─ types │ ├─ TokenTypesV1 — "Custom data types for Token contract" ├─ metadata │ ├─ MetadataRenderer — "ERC-721 metadata renderer implementation" │ ├─ storage │ │ ├─ MetadataRendererStorageV1 - "Storage for Metadata Renderer contract" │ ├─ types │ │ ├─ MetadataRendererTypesV1 - "Custom data types for Metadata Renderer contract" │ ├─ interfaces │ │ ├─ IBaseMetadata - "Shared interface for metadata renderers" │ │ ├─ IPropertyIPFSMetadataRenderer - "Interface for rendering artwork stored on IPFS" auction ├─ Auction — "ERC-721 Auction implementation" ├─ IAuction — "Interface for Auction contract" ├─ storage │ ├─ AuctionStorageV1 — "Storage for Auction contract" ├─ types │ ├─ AuctionTypesV1 — "Custom data types for Auction contract" governance ├─ governor │ ├─ Governor — "DAO proposal manager and transaction scheduler" │ ├─ IGovernor — "Interface for Governor contract" │ ├─ storage │ │ ├─ GovernorStorageV1 — "Storage for Governor contract" │ ├─ types │ │ ├─ GovernorTypesV1 — "Custom data types for Governor contract" ├─ treasury │ ├─ Treasury — "DAO treasury and transaction executor" │ ├─ ITreasury — "Interface for Treasury contract" │ ├─ storage │ │ ├─ TreasuryStorageV1 — "Storage for Treasury contract" │ ├─ types │ │ ├─ TreasuryTypesV1 — "Custom data types for Treasury contract" lib ├─ proxy │ ├─ ERC1967Upgrade - "Modern, minimal proxy upgrade" │ ├─ ERC1967Proxy - "Minimal ERC1967 proxy" │ ├─ UUPS - "Minimal UUPS support" ├─ token │ ├─ ERC721 - "Modern, minimal ERC721 implementation" │ ├─ ERC721Votes - "Modern support for NFT voting and delegation"
Install Dependencies:
yarn
forge install
Run Tests:
forge test
Run Tests with Modifiers:
forge test -vvvv