nounlet loading

Nounlet ???

WTF?

Nounlets are an experiment to allow for collective ownership over an individual Noun. Each Nounlet represents 1% of the vaulted Noun and has a vote in delegating the Noun’s governance rights. The chosen delegate can join the official Nouns private discord channel, vote in governance and submit governance proposals.

Learn more below, or by visiting and reviewing the Nouns DAO homepage.

  • Nounlets artwork is in the public domain.
  • One Nounlet is trustlessly auctioned every 4 hours until all 100 Nounlets have been sold.
  • 98% of auction proceeds are trustlessly sent to the original Noun owner. 2% of auction proceeds are sent to Tessera.
  • Settlement of one auction kicks off the next.
  • The elected delegate of the Noun is considered a member of NounsDAO.
  • One Nounlet is equal to one vote for a delegate.
  • Artwork is generative and stored directly on-chain (not IPFS).
  • Nounlets will all have the same head trait as the Vaulted Noun, but remaining attributes will vary.

The Nounlets Auction Contract will act as a self-sufficient Noun generation and distribution mechanism, auctioning one Nounlet every 4 hours until all 100 Nounlets are sold. 98% of auction proceeds are trustlessly sent to the original Noun owner. 2% of auction proceeds are sent to Tessera.

Each time an auction is settled, the settlement transaction will cause a new Nounlet to be minted and a new 4 hour auction to begin. Bids within the last 10 minutes reset the auction timer to 10 minutes.

While settlement is most heavily incentivized for the winning bidder, it can be triggered by anyone, allowing the system to trustlessly auction Nounlets as long as Ethereum is operational and there are interested bidders.

All Nounlet owners will be able to vote on a delegate. The delegate will be elected on-chain in the nouns contract. The active delegate will be able to join the official nouns-private discord channel, vote in governance and submit governance proposals. Each Nounlet has 1 vote on the delegate.

Reconstitution is only possible after all 100 Nounlets have been sold. The Noun is able to be purchased and reconstituted (meaning one person buys the entire Noun from the vault) using what we call an optimistic bid.

Someone who wants to buy the vaulted Noun makes a bid to buy the Noun out of the vault, which the Nounlet holders implicitly accept if the rejection criteria of purchasing all the bidder’s Nounlets aren’t met.

In this mechanism, the bidder must name a price and put up at least 1 of their Nounlets as collateral. All other participants (whether they currently hold a Nounlet or not) are able to reject this bid by purchasing all of the Nounlets used as collateral at the fixed price proposed by the buyer.

Optimistic buyouts will last for 7 days before being accepted. If all Nounlets are purchased at the implied valuation before 7 days have passed, the buyout ends and is rejected.

For more information visit the FAQ

Nounlets are generated randomly based on Ethereum block hashes. All Nounlets will have the same head as the Vaulted Noun.

As of this writing, Nounlet traits contain:

  • backgrounds (2)
  • bodies (30)
  • accessories (137)
  • heads (1)
  • glasses (21)

You can experiment with off-chain Noun generation at the Playground.

Nounlets are stored directly on Ethereum and do not utilize pointers to other networks such as IPFS. This is possible because Noun parts are compressed and stored on-chain using a custom run-length encoding (RLE), which is a form of lossless compression.

The compressed parts are efficiently converted into a single base64 encoded SVG image on-chain. To accomplish this, each part is decoded into an intermediate format before being converted into a series of SVG rects using batched, on-chain string concatenation. Once the entire SVG has been generated, it is base64 encoded.

The Noun Descriptor contract is used to determine Nounlet traits during the minting process. Currently, Nounlet traits are determined using pseudo-random number generation:

keccak256( abi.encodePacked( blockhash( block.number - 1 ), nounId ) )

Trait generation is not truly random. Traits can be predicted when minting a Nounlet on the pending block.