$⌐◧-◧ Contract Audit
$⌐◧-◧ Contract Audit
TLDR
Seeking $26,750 + 1.5 eth to audit the $⌐◧-◧ protocol suite with Sherlock.
Context
The $⌐◧-◧ token was voted For by the DAO to be the canonical ERC20 token.
For deeper context please see:
Scope Summary
The ERC-20 token
Name: Nouns Fungible Token Symbol: $⌐◧-◧ Decimals: 18
A vanilla ERC-20 token, that is mintable, and burnable by the owner. The Fragment Nouns Manager contract will be the owner.
The ERC-721 token
Name: Fragment Noun Token Symbol: NOUNFT
A customised ERC-721 token, that is mintable, and burnable by the owner. The Fragment Nouns Manager contract will be the owner.
- Each token represents a fragment of a Noun and, thus is a ‘Fragment Noun,' with an associated Fragment count (1<x<1M).
- The contract uses Noun style descriptors to store the art on-chain.
The Fragment Nouns Manager
This contract owns the previous two contracts and serves as the primary user interaction endpoint. This enables the following functionality:
- Vaulting & withdrawing Nouns
- Creating Fragment Nouns & $⌐◧-◧ from the deposited Nouns
- Redeeming Fragment Nouns & $⌐◧-◧ for Nouns
- Adding & removing $⌐◧-◧ to & from Fragment Nouns
- Merging & de-merging Fragment Nouns
- Voting on proposals using Fragment Nouns
The contract is upgradable, to enable changing functionality as the Nouns ecosystem evolves.
After an initial launch phase, the ownership of the Fragment Nouns Manager will be transferred to the DAO.
*Please find the github repo for the above contracts *here.
How Is This Different From $nouns?
With $nouns, the Nouns ERC-721 can be swapped for 1 million $nouns, and vice-versa.
Any Nouns ERC-721 deposited in the $nouns swap pool counts towards quorum without being able to participate in governance.
$nouns holders have no ability to participate in Nouns governance.
$nouns was deployed despite the proposal being defeated by the DAO.
$⌐◧-◧
Once deployed, any willing Noun holder can deposit their Nouns into the $⌐◧-◧ protocol, and mint any combination of Fragment Nouns and $⌐◧-◧ tokens, totalling the value of Nouns deposited.
Every Nouns ERC-721 that is deposited into the $⌐◧-◧ protocol is placed into an individual Vault. These Vaults allow deposited Nouns to participate in governance through Fragment Nouns.
Nouns ERC-721 holders are able to swap for up to 1 million $⌐◧-◧ per Noun, and/ or Fragment Nouns NFTs totalling 1 million $⌐◧-◧ per Noun.
1 Noun = 1 Million $⌐◧-◧
$⌐◧-◧ holders may wrap any amount of the ERC-20, from 1 to 999,999, into a Fragment Noun ERC-721. Fragment Nouns are eligible to vote on proposals through Vaulted Nouns. Only Fragment Nouns will be eligible to vote in this way. Any $⌐◧-◧ token holder wishing to vote, will first need to wrap their fungible tokens into a Fragment Noun.
Fragment Nouns are immediately tradable. They will not be able to vote, merge, or split into further fragments until all currently open votes at the time of their mint are over.
Anyone with 1 Million $⌐◧-◧ or Fragments may swap their tokens for any Noun deposited in the $⌐◧-◧ protocol Vaults.
Fragment Nouns
Fragment Nouns will have unique IDs that increase sequentially as they are minted.
A Fragment Noun NFT can be minted in one of two ways:
- Breaking up a deposited Noun into parts (after the short waiting period)
- Wrapping $⌐◧-◧ tokens into an NFT
In both cases, the art is generated pseudo-randomly by using the block hash and NFT ID for seed generation — in the same way and using the same Art Descriptor as Nouns.
Unwrapping a Fragment Noun into $⌐◧-◧ burns the NFT.
To prevent double voting, merging & unwrapping will be disabled for Fragment Nouns that have a pending vote on a live proposal, meaning they have voted on a proposal but that proposal is still live. Trading and wallet transfers, however, will remain unaffected by this.
Fragment Voting
The voting power of any Fragment Noun NFT is equal to the number of $⌐◧-◧ tokens wrapped in it. For example, a Fragment Noun built up from 500K $⌐◧-◧ will have half as much voting power as a full Noun.
The total votes cast (For, Against, Abstain) will be rounded down to the nearest Million, and voted by equivalent number of vaulted Nouns. Any remaining votes will not be cast.
For example: 3 Nouns in the protocol = 3M $⌐◧-◧ 1.3M vote For + 1.5M vote Against = 2.8M voting Fragment = 1 For Vote, 1 Against Vote. 3rd Noun does not cast a vote.
For any given proposal, the voting period is the same as Nouns. For, Against, & Abstain votes are each cast in real time as they reach 1M Fragment votes.
For example: 10 Nouns in the protocol = 10M $⌐◧-◧ 7.3M vote For + 2.5M vote Against = 9.8M voting Fragments = 7 For Votes, 2 Against Votes. 1 Noun does not cast a vote.
For Client Incentives, Vaulted Nouns submit the Client ID of the client that causes them to pass X Million votes and cast a vote.
Audit Plan
The next step is a 7-day audit with Sherlock.
The 7-day audit will cost 22,750 USDC. We are also allocating 4,000 USDC for reviewing potential fixes after the audit (400 USDC x 10 hours).
Total Audit request: 26,750 USDC.
Transactions
The first transaction sends NobleDev 26,750 USDC, (22,750 for the audit + 4,000 for post-audit fixes.) 0xE4B44205cBEEDe3024612dEA1435150F6848f298
The second transaction sends 1.5 eth to wylin for project management, coordination, and proposal writing. 💎💎.wylin💎.eth
Next Steps
We’re hoping this audit funding proposal succeeds. Once it does we will book the audit as soon as possible.
Once we’re done fixing any issues and reviewing the fixes, we will:
- deploy the $⌐◧-◧ protocol
- announce the deployment
Once deployed, frontend clients may create interfaces to support deposits & withdrawls, wrapping & unwrapping, merging, and Fragment governance on the $⌐◧-◧ protocol.
After a 2-week monitoring phase, assuming there are no issues, ownership of the Fragment Nouns Manager will be transferred to Nouns DAO. Upon transfer, upgrades to the $⌐◧-◧ protocol can be made through governance proposals to the DAO.
Thank you!