# FOMO Nouns

## What Is It?

We propose a tool that allows the Nouns community to vote on and mint the most appealing Nouns for each auction in real time.

As background, Nouns are psuedo-randomly generated for each auction based on the block when the prior auction is settled. Each block generates a unique Noun, and recent auctions have been settled on a random block when either the auction winner wants to receive their Noun or a random user wants to start the next auction.

We believe the Noun community can benefit from more deliberating selecting the next Noun for a number of reasons:
 - More appealing Nouns build the appeal of the Nouns art
 - More appealing Nouns have generally garnered higher bids in recent auctions. This helps build the Nouns treasury and influence.
 - Voting enables wider community participation in the Nouns project even for users who don't hold and are unlikely to win a Noun
 - The voting and settlement setup provides even more excitement around Noun O'Clock

We propose building a website that will allow community members to vote on whether to settle in a given block and mint a particular Noun, and if sufficient votes are received, immediately settle the auction in the same block to mint the desired Noun.


### Origin of the Project

This idea grew out of Shark DAO's interest in forcing a Shark to be minted for the DAO to acquire. After some discussion, we realized the whole Nouns community may have preferences on what Nouns to mint, and we could set this up as a platform for the community to voice their preferred attributes for the benefit of the broader Nouns ecosystem.

The builders:
|   [@_forager](https://twitter.com/_forager)   |     [@0xrayo](https://twitter.com/0xRayo)     |
|:---------------------------------------------:|:---------------------------------------------:|
| ![](https://i.imgur.com/Qr903QF.jpg =200x200) | ![](https://i.imgur.com/HCfkVnO.jpg =200x200) |


## Project Details

The website will allow users to see the Noun mintable in every block (approximately every 15 seconds). It will also contain relevant information and analytics (e.g. available settlement funds, whether any attributes would be the first minted).

In a short window after each block appears, users will be able to vote on whether the new Noun is attractive enough to mint. Voting may be binary (i.e. yes/no) or score based (i.e. 0-10), and it will require a threshold that adjusts based on the number of active users. MetaMask sign-in will be required to prevent vote spamming.

All features will aim to be fun, social, and interface. Ideas include voting via emoji (🤢 to 🥰), social cursor interactions (ala PartyBid), a real-time vote progress bar, and/or POAP awards for some-or-all participants during voting.

### Early Mock-up
![](https://i.imgur.com/VSM5otQ.png =50%x50%)

Votes will be tallied in real-time on the backend. If a sufficient number of votes are received, settlement will be instantly initiated. Settlement must occur in the same-block, so Flashbots will be used to speed inclusion. This will require a contract to provide miner tips and ensure the settlement transaction is not mined in later blocks.

A contract will be also be built to store community donations and fund settlement costs.


## Project Deliverables

The project will encompass the following deliverables and support for 1 year.

 * **Development**
     * Frontend:
         * Instant display of mintable Nouns
         * Metamask integration
         * Voting mechanism
         * Social integration for chat, emojis, other fun mechanics
         * Relevant Noun analytics & history
     * Backend:
         * Aggregate and store user votes
         * Calculate and store relevant Noun analytics
         * Secure kick-off of auction settlement
     * Contract:
         * Accept community donations to fund settlement
         * Pay for instant block inclusion (via Flashbots)
         * Ensure late block inclusion is prevented
     * E2E Speed:
         * Settlement must occur **extremely** rapidly to ensure inclusion requiring tuning and optimizing each component
 * **Infrastructure & Deployment** (1 year)
     * Frontend:
         * Domain name registration
         * Website hosting & SSL
         * Alchemy/Infura monitoring integration
     * Backend:
         * Redis (or other storage) hosting
         * Settlement infrastructure
         * Alchemy/Infura settlement integration
     * Contract:
         * Contract deployment
         * Settlement contract tests

## Project Funding

We propose funding of **50 ETH** to help support the deliverables above. This will be split:
 - 28 ETH to [@_forager](https://twitter.com/_forager) for settlement backend, contract for donations and Flashbots payment, on-chain Nouns monitoring and analytics components
 - 22 ETH to [@0xrayo](https://twitter.com/0xRayo) for the front end, back end, and analytics

Start-up deployment and infrastructure costs will be covered under development costs. The website and infrastructure will be supported for a minimum of 1 year. Support after that period will fall under a seperate proposal and/or be left for community support.

Settlement costs will not be included in this proposal. Normal settlement costs ~0.05 ETH, and fast inclusion may require additional payment for higher gas or Flashbots miner tips. Community donations will be solicited to support this expense.


## Miscellanea

### Project Ethos
The project code will be open sourced under GNU GPLv3 with all code shared on GitHub upon project completion. Our goal is to help the Nouns community build the best roster of Nouns possible, promote the Nouns project, and maximally expand the Nouns treasury by driving higher bids on attractive Nouns.

### Limitations and Risks
Noun auction settlement can be performed by any user. While recent auctions have taken ~10 blocks (and community may accept longer), it's possible for a competing tool or mischevious user to settle the auction immediately or on an undesirable Noun. However, this is possible even without this project, and we can adjust our configuration to minimize the impact of this type of activity.

Settlement on a specific block is also not guaranteed, and there may be situations where users vote for a Noun but settlement does not occur. There will be a tradeoff between settlement guarantee, time allowed for voting, and the transaction cost. We will optimize the whole system as much as possible in order to strike the best possible balance between these factors.

The project will require a balance of ETH to settle each auction. Community donations will be needed, after a brief testing period, for the tool to continue to be useful. In addition, gas fees on Ethereum are volatile, so we may need to skip settlement or pay very high fees if the network is congested at the time an auction ends.

Outcome: EXECUTED