# Route No-Bid Nouns to the Treasury **NounsAuctionHouseV4 upgrade**

# Route No-Bid Nouns to the Treasury — NounsAuctionHouseV4 upgrade

posting due to popular demand from tempetechie.eth

**Source diff (for review):**  [https://github.com/nounsDAO/nouns-monorepo/pull/1290](https://github.com/nounsDAO/nouns-monorepo/pull/1290)

## TL;DR

Two-line behavior change in \`NounsAuctionHouseV4.\_settleAuction()\` (a renamed copy of V3): when a Noun's auction ends with zero bids, transfer it to the DAO treasury instead of burning it. Storage layout, events, public ABI, and constructor are unchanged — a byte-compatible proxy upgrade.

## Background

Today, if a daily auction ends with no bids, the Auction House calls \`nouns.burn(nounId)\` and the Noun is destroyed forever. This is the original 2021 behavior and has not been revisited. Burning permanently shrinks supply, losing the DAO's option to ever re-auction, grant, or otherwise put that Noun to use.

The bid path already routes ETH proceeds to \`owner()\` (the DAO Executor). The no-bid path should route the Noun itself to the same address, for the same reason.

## The change

```
  if (_auction.bidder == address(0)) {
-     nouns.burn(_auction.nounId);
+     nouns.transferFrom(address(this), owner(), _auction.nounId);
  } else {
      nouns.transferFrom(address(this), _auction.bidder, _auction.nounId);
  }
```

That's the entire behavioral diff. After execution, no-bid Nouns become a Treasury asset and can be re-auctioned, granted, held in reserve, or burned retroactively via a follow-up proposal. Burning day 1 preserves none of those options.

## Why a new V4 contract instead of mutating V3

By Nouns DAO's existing convention every behavioral change has gotten a fresh version number (V1→V2 added clientId, V2→V3 added the sanctions oracle). The no-bid → treasury change is at least as material as either of those, so calling it V4 keeps the version number honest about live behavior. V3 source on Etherscan continues to describe what the old V3 actually does.

## Why transferFrom and not safeTransferFrom

The DAO Executor (\`0xb1a32FC9F9D8b2cf86C068Cae13108809547ef71\`, NounsDAOExecutorV2) is a contract and does not implement \`onERC721Received\`. Plain \`transferFrom\` lands the token without invoking the receiver hook, the same call shape used in the winning-bidder branch directly below. No new reentrancy surface: \`transferFrom\` does not call into the receiver, and \`\_settleAuction()\` is invoked from \`nonReentrant\` external functions.

## Technical details

- Auction House proxy: \`0x830BD73E4184ceF73443C15111a1DF14e495C706\` (\`auction.nouns.eth\`) 
- Proxy admin (owned by Executor): \`0xC1C119932d78aB9080862C5fcb964029f086401e\` 
- New logic contract (V4): \`0xbAE451A53C5162D8847490A043DD60BAaEF44C0B\` (verified on Etherscan) 
- Storage layout: unchanged 
- Constructor args: unchanged (nouns=\`0x9C8fF314…03\`, weth=\`0xC02a…cC2\`, duration=86400) 
- \`AuctionSettled\` event: unchanged signature; no-bid still emits \`(nounId, address(0), 0)\` 

## Proposal action (single call)

```
target:    0xC1C119932d78aB9080862C5fcb964029f086401e
value:     0
signature: upgrade(address,address)
calldata:  0x000000000000000000000000830bd73e4184cef73443c15111a1df14e495c706
           000000000000000000000000bae451a53c5162d8847490a043dd60baaef44c0b
```

## Test coverage

- \`test\_noBidSettlement\_postUpgrade\_transfersToTreasury\` — mainnet-fork upgrade test that performs the proxy upgrade against live mainnet state, settles a zero-bid auction past \`endTime\`, and asserts \`ownerOf(nounId) == AH.owner()\`. 
- All existing V3 tests continue to apply unchanged — V4 is a strict superset of V3 behavior with one branch swapped, so V3's full test suite still validates everything except the no-bid path. 

## Risks

- Past Nouns are unaffected. 
- Already-burned Nouns stay burned. 
- This proposal does not revoke the Auction House's ability to call \`NounsToken.burn()\` — it only stops it from doing so on the no-bid path. 
- A future proposal could remove burn authority entirely if desired. 
- Indexer / UI tooling that detected "burned" by \`ownerOf\` revert will resolve future no-bid Nouns to the Executor instead. 
- Source diff is reviewable at [PR #1290](https://github.com/nounsDAO/nouns-monorepo/pull/1290). No formal audit — the change is a 2-line behavioral swap inside an already-audited contract, with mainnet-fork test coverage of the post-upgrade settlement path. 

## On disposition and tax exposure

A reasonable concern raised in pre-prop discussion: the treasury already holds \~500 Nouns at a \~2.6 ETH cost basis each, and adding no-bid Nouns with a $0 cost basis could create future tax liability if the DAO ever distributes them.

This proposal does **not** alter disposition policy. If the DAO ever chooses to distribute treasury Nouns, it can do so on a specific-ID basis — releasing the higher-basis Nouns first (recognizing losses) and treating no-bid Nouns as last-out. Over the lifetime of the DAO so far, the existing treasury pool has barely been drawn down, so the marginal tax effect of any incoming no-bid Nouns is deferred indefinitely. Separately, whether a no-bid Noun received by the DAO establishes a fair-market-value basis at receipt (rather than $0) is an open question for tax counsel; if it does, the concern collapses entirely.

The alternative — burning — achieves the same "don't distribute" outcome while permanently foreclosing every other option (re-auction, grant, retroactive burn). The tax argument is an argument for a thoughtful disposition policy, not for destroying assets unilaterally.

## Out of scope

This proposal does not pre-allocate what becomes of no-bid Nouns once they reach the treasury. Future governance decides on a case-by-case basis.

## Voting

FOR = the DAO should keep optionality over its own assets, and align the no-bid settlement path with the principle that nothing produced by the auction mechanism is destroyed unilaterally.

AGAINST = permanent supply destruction on a no-bid day is a feature you want to preserve.

[![](https://scontent-iad4-1.choicecdn.com/-/rs:fill:2000:1130/g:ce/f:webp/aHR0cHM6Ly9tYWdpYy5kZWNlbnRyYWxpemVkLWNvbnRlbnQuY29tL2lwZnMvYmFmeWJlaWFlZGV6azNoZG1sbjNzbzNsY2pxdGRkZXl2dWdtbjdwMzQzbDV4azc2NHZzdGw3NmZ2aGU "https://zora.co/coin/base:0xd1d6315014ab305cd2820e8b7b9db6a670a7696b?referrer=0xae4705dc0816ee6d8a13f1c72780ec5021915fed")](https://zora.co/coin/base:0xd1d6315014ab305cd2820e8b7b9db6a670a7696b?referrer=0xae4705dc0816ee6d8a13f1c72780ec5021915fed)

Outcome: EXECUTED