# NounSwap: Auction House
# TL;DR
**NounSwap: Auction House** will be a permissionless tool to allow Noun owners to create a swap auction with the Nouns treasury. Swap auctions will function similar to the Nouns daily auction, except that the Noun being bid upon will be from the treasury, and bids will be ETH + **a Noun**.

*NounSwap: Auction House - Swap Auction*
**NounSwap: Auction House** will create a new revenue stream for the Nouns DAO, and help community members find their forever Noun.
**Funding Request**
- **100,000 USDC** streamed over **4 months** to fund the design, development, testing, and deployment
- **10,000 USDC** for contract audits with unused funds being sent back to the DAO treasury
We are also proposing that NounSwap take a **50% fee** (governance configurable) from winning swap auction bids. This will allow us to maintain NounSwap, and align incentives into the future.
# Background
We released [NounSwap v0.5](https://www.nounswap.wtf/) a couple of months back as an MVP to gauge the Nouns community appetite for a swapping mechanism. This version helped users create a governance proposal to swap their Noun for one from the treasury. Within the first few hours of releasing, we saw 2 swap props:
- [Prop 453](https://nouns.wtf/vote/453)
- [Prop 454](https://nouns.wtf/vote/454)
Two days after launching, we submit a proposal to build out NounSwap: [Prop 457](https://nouns.wtf/vote/457)
All three of these proposals were defeated, but they sparked insightful discussion, and lead to actionable feedback from the Nouns community. **NounSwap: Auction House** seeks to address this feedback with swap auctions!
# Swap Auctions
The idea of swap auctions came from a cast about NounSwap from Elad:

*[Elad’s cast](https://warpcast.com/el4d/0xc02a9a79)*
Instead of paying a fixed fee to swap a Noun for one from the treasury (which is the mechanism we mentioned in our previous proposal), a swap auction is triggered. Swap auctions will function similar to the Nouns daily auction, except that the Noun being bid upon will be from the treasury, and bids will be ETH + **a Noun**. This will allow any Noun holder to compete for their forever Noun.
## Swap Auction Flow
There are a few changes in functionality from the Nouns daily auction. The detailed flow is outlined below. Note that `parameter` indicates a governance configurable parameter.
1. **Treasury Noun Selection**: User finds the Noun they want from the treasury that is permitted for a swap auction.
- *Which treasury Nouns can be selected?*
Lower number, and certain Nouns are deemed very valuable by the Nouns DAO. For this reason, we will add a mechanism to exclude certain treasury Nouns from being used in swap auctions.
This will be implemented with the following governance parameters:
1. `treasuryNounIdExcludeThreshold`: Any treasury Nouns with an ID equal to or below this threshold will be excluded from being auctioned.
2. `treasuryNounExplicitExcludes: mapping(uint256 -> boolean)`: This acts as an “exclusion list”. Any treasury Noun with an explicit exclude will be excluded from being auctioned.
Swap auctions are open auctions where the market set the swap price, so exclusions may not be necessary. If the DAO wants, they can set these parameters such that no Nouns are excluded. Initially, they will be set aggressively to only allow newer Nouns to be auctioned.
2. **Auction Start**: If an auction can be started, user triggers it with their initial bid.
- *When can an auction be started and who can start it?*
- Auctions can only be started if there is not an existing auction running or waiting to be settled.
- User must hold a Noun, and must approve NounSwap for their Noun (if not already approved).
- User must make a bid of at least `minAuctionStartPrice`.
Note: it is possible to allow multiple concurrent auctions, but this adds complexity and potentially could be overwhelming for users (even with a governance configurable cap). For this version, a single auction is the simplest path forward.
3. **Auction in progress**: The auction will function very similar to Nouns daily auctions, with an added condition on who is able to bid.
- *Who can bid and how does the auction work?*
- Auction will start with `duration` amount of time.
- Bidder must hold a Noun, and must approve NounSwap for their Noun (if not already approved) before they can bid.
- A bid consists of ETH, and a Noun.
- Minimum ETH bids will rise at `minBidIncrementPercentage` based on the current bid.
- A bid coming in below the `timebuffer` left in the auction will reset the auction time to timeBuffer to allow a chance for others to bid.
- A new bid will transfer ETH into the NounSwap contract, and the previous bids ETH will be tranfered back to the previous bidder.
- Nouns do not get tranfered with bids, Nouns only move upon auction settlement.
Note: The decision was made to not transfer Nouns with each bid to make the auction more efficient. This functions similar to how an OpenSea auction works with WETH, where funds are not actually transfered with each bid. ETH is still transfered with bids similar to how the Nouns daily auction works.
4. **Auction settlement**: Once an auction ends, anyone can settle it.
- *What does settling do?*
1. Make sure the winner is still the owner of their bid Noun, and NounSwap still is approved for their Noun
2. Send the winner’s bid Noun to the treasury
3. Send nounSwapFee = winningBid * `nounSwapFeePercent` to the NounSwap multisig
4. Send winningBid - nounSwapFee to the Nouns treasury
5. Send the treasury Noun to the winner
Note: We are proposing that NounSwap take a fee from winning swap auction bids. This will allow us to maintain NounSwap, and align incentives into the future (we get paid if people use NounSwap).
5. **Auction abort**: Only used if auction settlement fails. This aborts the current auction and returns the winning bid minus a slashing fee.
- *Why do we need abort, and what does it do?*
The auction settlement process can fail if the auction winner transfers their bid Noun, or revokes NounSwap’s approval of their bid Noun before settlement. In this case, settlement is not possible.
If an auction is not settled within `abortTime`, anyone can abort the auction which:
1. Sends slashingFee = winningBid * `abortSlashingPercent` to the caller of abort, rewarding them for unblocking the next auction
2. Send the remaining winningBid - slashingFee back to the auction winner
3. Clears the auction so a new one can be started
# Key Deliverables
1. **NounSwap Contract**: facilitate permissionless swap auctions with governance configurable parameters as outlined in the previous sections
2. **NounSwap Subgraph:** indexes the NounSwap contract for data to power the frontend (historical bids, historical auctions, etc.)
3. **NounSwap Frontend (design + development)**: interface for easy interactions with the NounSwap contract, and displaying subgraph data to help users understand NounSwap
# Budget and Timeline
We are asking for **100,000 USDC** streamed over **4 months** to fund the design, development, testing, and deployment.
# Audit
We propose an additional allocation of **10,000 USDC** for the NounSwap contract audit. This funding will solely be used for coving audit expenses, with any unspent funds being returned to the DAO treasury.
# Treasury Approval
In order for NounSwap to be able to facilitate the auction process of treasury Nouns, it will need approval from the DAO. We will make a 2nd prop when complete which will approvalAll for the NounSwap contract. This will mark the official launch of **NounSwap: Auction House**.
# The Team
## Paperclip Labs
We’re [Paperclip Labs](https://paperclip.xyz/). We design, build and ship crypto products and tools. We are a team of designers, developers and researchers that have worked with some of the top web3 teams, including Compound, dYdX, 0x Protocol, Nouns, and Messari. We have experience and a proven track record building, shipping and maintaining products for a number of clients and protocols. We believe we are well-positioned to successfully execute on this initiative.
### Leadership
**Cole Perkins - Co-founder (@coleperkins_)**
Cole leads design at Paperclip Labs. Previously, he was a Product Designer at MetaLab, where he worked with clients, including Google, The Chan Zuckerberg Institute, D-Wave, Otter AI, Upstox, and IFTTT.
**Spencer Perkins - Co-founder (@spencerperkins_)**
Spencer leads engineering at Paperclip Labs. Previously, he was a Software Engineer at Tesla, working on the Megapack & Cybertruck teams. Prior to Tesla, Spencer worked on robotics at Nvidia.
### Past Relevant Projects:
- **Paperclip Labs work samples**: You can checkout out some of the clients we have worked with in the past:
- [Paperclip Labs Website](https://paperclip.xyz/)
- [Freely Available Figma Designs](https://www.figma.com/@papercliplabs)
- [Paperclip Labs Github](https://github.com/papercliplabs)
- **Nouns Yellow Collective Auction**: We recently launched [yellowcollective.xyz](https://www.yellowcollective.xyz), an auction frontend for The Yellow Collective. The Yellow Collective is a new onchain club from [The Noun Square](https://tns.wtf/) on the BASE Ethereum L2 network. It is designed to support and empower artists and creatives in the Nouns and Superchain ecosystems.
- **Hopscotch**: A tool that allows anyone to generate on-chain payment request links, accepting payments in any token. We designed, built and created the entire product. The initial idea was to create a widget-like experience someone would be able to embed. You can check out v1.0 here:
- [Hopscotch Website](https://hopscotch.cash/)
- [GitHub Repository](https://github.com/papercliplabs/hopscotch-contracts)
- [Video of paying a request](https://twitter.com/hopscotchcash/status/1659169795311382531?s=20)
- **Etherlands**: Was a unique Minecraft server that allowed players to buy, own, and sell virtual land as NFTs. We designed and built a web platform to onboard players, allowing them to purchase, trade, and discover virtual in-game land. In 2021 to 2022, we worked to help bring this project to life. [Read more](https://paperclip.xyz/work/etherlands)
- **dYdX**: We designed and developed a few consumer facing products in the dYdX ecosystem. We did the [dYdX Grants Program website and brand](https://www.dydxgrants.com/). We have also made our design work and concepts [publicly available](https://www.figma.com/community/file/1122297379970921131) for community use, which numerous other teams have utilized as a foundation for their projects. Additionally, we designed and built the [dYdX Merch Shop](https://dydxmerch.shop/), where provided the ability for them to offer a distinctive token-gating feature, designed to provide exclusive access to select merchandise for Hedgie NFT holders.
- **Compound Finance**: For Compound, we created a [distinctive branding identity](https://www.figma.com/community/file/1204549542354856394/compound-grants-brand-assets) for their Grants Program. Beyond branding, we have built subgraphs for Compound [V2](https://thegraph.com/explorer/subgraphs/3D5iVSy3jiTKSQAT8UjW9in6ZuiDA7WnDiDRBzYVT2yw?view=Overview&chain=arbitrum-one) and [V3](https://paperclip.xyz/blog/introducing-the-compound-community-subgraph), and comprehensive [analytics dashboards](https://compoundfinance.info). These tools have been pivotal in equipping teams with the ability to consume data insights necessary to make informed decisions within the Compound ecosystem.
# Collaborators
We are working with the following Nounish contributors:
- Toady Hawk: [@toady_hawk](https://twitter.com/toady_hawk)
- Ben Bodhi: [@benbodhi](https://twitter.com/benbodhi)
Both Toady and Ben will act as signers on the 3/5 Multisig for this project, alongside 3 Paperclip representatives.
# Conclusion
We would like to thank the Nouns community in advance for the opportunity, and we hope to have your support as we aim to create a new revenue stream for the Nouns DAO, and help community members find their forever Noun.
If you have any questions, please don't hesitate to ask here onchain, on [X/Twitter](https://twitter.com/papercliplabs), or [Farcaster](https://warpcast.com/spencerperkins.eth).
Thank you,
Paperclip Labs ⌐◨-◨