# Distribute (some) Nouns Vision Glasses to Nouns holders (randomly)

Prop and code written by [DigitalOil.nftr](http://twitter.com/0xDigitalOil) with **❤️** for *Nouns DAO ⌐◨-◨*
Special thanks to [solimander](https://twitter.com/_solimander_) for taking a look at the custom contract.  


##Intro

[Prop 57](https://nouns.wtf/vote/57) funded the creation of 8,250 pairs of luxury sunglasses made by [Nouns Vision](https://nounsvision.com/). Approximately 560 of those have been sold to individuals.*

[Prop 185](https://nouns.wtf/vote/185), executed recently, assigned 150/500 Nouns Vision Glasses (GLASSES) held in the Nouns DAO Treasury to 3 different groups in the Nouns ecosystem.

The aim of this prop is to distribute 50 of the remaining 350 unassigned GLASSES to Nouners. Each GLASSES is an NFT redeemable for an individual pair of physical glasses.

A custom made site @ [nounsclaims.wtf](http://nounsclaims.wtf) and contract were developed for this prop.  



# Proposal

Over 550 Nouns have been minted. Given that only 350 GLASSES in the Nouns Treasury have not been earmarked, there aren’t enough GLASSES to assign one to each Noun. Assuming that there were at most 350 Nouners, GLASSES could be distributed 1:1 per Nouner, but such distribution wouldn’t be fair as some Nouners own a disproportionate number of Nouns and thus higher weight in control of assets in the Treasury.

In addition, it wouldn’t be wise to liquidate all GLASSES in the Treasury, as we might find another good use for them in the future.

Hence, this proposal allocates 50 GLASSES to be randomly assigned (with pro-rata probability) and claimable by wallets that hold Nouns at time of distribution. The contract was designed to allow for the creation of multiple claim rounds in order to protect against GLASSES staying unclaimed forever. The claim window was set to 15 days (108,000 blocks). After 15 days have passed, Nouns DAO can pass another prop to compensate for GLASSES that went unclaimed and distribute them randomly again, and even distribute additional GLASSES if desired.


![Custom site deployed for this prop at nounsclaims.wtf](https://i.ibb.co/0CVKCGB/Screenshot-2022-12-30-at-1-08-03-PM.png)
*Custom site deployed for this prop at nounsclaims.wtf*


# Technical Details

To ensure the fairest distribution possible and to make it impossible to game the system, the source of randomness for the distribution algorithm comes from Chainlink’s Verifiable Random Function ([VRF](https://chain.link/vrf)) service. 

The [Nouns DAO Executor](https://etherscan.io/address/0x0BC3807Ec262cB779b38D65b38158acC3bfedE10) contract was set as the owner of the deployed custom contract, so the distribution trigger can only be pulled by Nouns DAO.

This is the high level flow:

Voting —> Prop passes —> Prop executes (**) —> Function in NounsVisionVRFDistributor called

—> Chainlink VRF random number requested 

—> VRF Coordinator calls back GLASSES distribution function in NounsVisionVRFDistributor

—> Glasses are assigned to wallets that hold Nouns at that moment

—> Noun-holding wallets can claim GLASSES won by the wallet for 15 days


# Conclusion

In addition to serving as a fun distribution mechanism for GLASSES in the treasury, this prop serves as a proof of concept for how other NFTs in the Treasury could be distributed if need-be in the future. 

If this prop is well received and the DAO would like to distribute more than 50 additional GLASSES, I’ll submit a new prop leveraging a more gas-optimized contract that can handle bigger allotments.

Although I own 2 Nouns, given that I am not a guaranteed beneficiary of this prop, I will be voting in favor instead of abstaining because I’m interested in seeing the experiment play out.

Let the **🎲** begin.


(*) Total number of mints is ~1800; this includes 500 for Nouns DAO, 500 presumably reserved for the special edition disco noggles, and 250 for the team.*

(**) This prop also makes use of the custom contract deployed for Prop 185 (NounsVisionBatchTransfer), made by [9999](https://twitter.com/lastpunk9999). Nouns DAO grants the NounsVisionVRFDistributor contract (custom contract for this prop) an allowance of 50 GLASSES on the NounsVisionBatchTransfer contract.

Outcome: EXECUTED