# Composable Nouns Framework # tl;dr An on-chain framework that allows for the Nouns community to expand their digital identity in new and creative ways | ![](https://i.imgur.com/dAyr3rW.png) | |:------------------------------------:| | *The Nouns Virtuous Cycle* | # Overview Nouns are an experimental attempt to improve the formation of on-chain avatar communities. Since its inception, Nouns has been designed as a "virtuous cycle"^1^ with the Nouns culture, treasury and DAO at the center. Facilitating this cycle is the open source nature of the Nouns protocol. The code and art of Nouns is open source and placed in the public domain so that anyone can build on the artwork, just like they can build on the codebase. With this CC0 license, holders and non-holders alike are able to freely create derivative works, custom art projects, and new collaborations with Nouns assets. Over the past year, numerous artists and developers have built upon the protocol with their own creative spin on Nouns, which in turn has extended the reach and impact of the Nouns brand. Focusing solely on derivate "on-chain avatars", we have seen many extensions released that have different takes on Nouns, either in the art or the format (e.g. Lil Nouns, Gnars DAO, YOLO Nouns). These extensions each aim to attract a new audience of holders that may identify with the derivative project and join their respective community. | ![](https://i.imgur.com/nn4hBaK.png) | |:------------------------------------:| | *Lil Noun, Big Noun* | Even with the proliferation of all these derivative avatar projects, you're still left with a finite set of options for your PFP. You can't customize any of the predefined traits or personalize your Noun in any way to better express your digital identify. However, given the CC0 + on-chain nature of the protocol, there does exist the capabilities to make Nouns fully customizable and "remixable" (aka composable). This would allow for someone to personalize their Noun on-chain and truly make it their own. **Nouns has the opportunity to be the "first truly decentralized, diverse, and global PFP network"^2^, but in order to do so, a composable framework needs to be adopted by the community.** We believe a Composable Nouns framework will help to unlock a new era of Nouns proliferation. With composability, the Nouns community will be able to expand their digital identity and increase utility in new ways. A standardized composability layer will also allow for extensions and projects within the ecosystem to interoperate with each other, effectively creating middleware on top of the Nouns protocol. Artists and creatives will also have new entry points into Nouns, while developers and partners will have a larger unified platform to build on top of. As a whole, we expect a composable framework to extend utility and engagement for all Nouns projects in the ecosystem. # Composability Composability is one of the most powerful mechanics of blockchain, allowing for assets in any given environment to be transposed into other environments seamlessly. With NFTs it's a bit trickier, since the artwork of most collections are not CC0 or fully on-chain. Even if you get past this hurdle, there still needs to be a robust network of artists and developers in place to build upon these composable assets in a meaningful way. What makes Nouns unique is the perfect storm of IP rights (CC0), artwork (on-chain SVGs), and builders (artists, developers and creators). One only needs to peruse the projects section of [Nouns Center](https://nouns.center/projects) to see some of the resulting output of this engine. In NFTs, composability most often comes in two forms: art composability and metadata composability. ### Art Composability Composability of art is enabled by on-chain image generation. In the case of Nouns, the image data of the SVG is stored on-chain, compressed when saved to the smart contracts and later inflated on-demand to display the NFT image. Each Noun trait (head, glasses, body, accessory) is its own layer and then merged on-chain. Because of this process, we can introduce additional layers into the background and foreground of the image, and even intersperse them in between existing layers (or replace existing layers). This lends itself to accessories, wearables, custom backgrounds, equippable items and other digital identity use cases. | ![](https://i.imgur.com/fNs3WcH.png =250x) | ![](https://i.imgur.com/pmUjSkB.png =250x) | ![](https://i.imgur.com/Mrkrtbi.png =250x) | |:------------------------------------------:|:------------------------------------------:|:------------------------------------------:| | *Base Noun* | *Base w/ Accessory* | *Base w/ Accessory x2* | ### Metadata Composability Beyond visual elements, composable items can update the metadata associated with each NFT. For Nouns, this is also generated on-chain along with the artwork in the protocol. Currently, the core Nouns protocol only utilizes the "name" and "description" fields in the metadata, however this can be extended to support any possible metadata attributes, such as badges, accomplishments, membership and other community use cases. ``` { "description": "Composable Nouns", "external_url": "https://composables.wtf/noun/7", "name": "Composable Noun #7", "attributes": [ { "trait_type": "Head", "value": "Unicorn" }, { "trait_type": "Glasses", "value": "Square Frog Green" }, { "trait_type": "Body", "value": "Darkpink" }, { "trait_type": "Accessory", "value": "Txt Noun Green" }, { "trait_type": "Nature", "value": "Brave" }, { "trait_type": "Attack", "value": 18 }, { "trait_type": "Defense", "value": 10 }, { "display_type": "boost_number", "trait_type": "Aqua Power", "value": 40 }, { "display_type": "boost_percentage", "trait_type": "Stamina Increase", "value": 10 } ] } ``` # Technical Approach There are several ways to skin a composable Noun within the core protocol. But first, a quick review of how Noun images are generated on-chain. | ![](https://i.imgur.com/bbJscvR.png) | |:------------------------------------:| | *Nouns on-chain flow (simplified)* | Each Nouns token stores "seed" data on-chain, which can then be used to generate the full image via several smart contracts. This seed determines the head, glasses, body and accessory traits that represent a Noun. The seed data is run through a Descriptor contract, which looks up the compressed Art data stored on-chain, and then inflates it via an SVG Renderer contract to ultimately show the final Nouns PFP image. One approach to composability within this framework is to integrate the feature into the base Nouns Token and then re-write a bulk of the accompanying contracts. However, this approach would only work for new Nouns extensions that have not yet launched, and would not be usable by all existing deployed Nouns contracts. Another common approach to composability is to introduce a "wrapper" contract that sits around the Nouns Token, and provides the additional functionality via the new wrapper contract interface. This approach would work for all existing and new Nouns collections going forward, but introduces additional friction (and costs) that is borne by the token holder. Each of these approaches has its own set of problems, be it with limited applicability or the introduction of cumbersome extra steps (and costs). Instead, we opted for an approach that would natively integrate with the current Nouns on-chain workflow, serving as middleware between the core protocol and (external) composable assets. This creates a framework that can work with both existing and new collections, and that does not introduce additional friction to the current process. | ![](https://i.imgur.com/MQ4Ijum.png) | |:------------------------------------:| | *Composable Nouns Framework on-chain flow (simplified)* | The Composable Nouns Framework introduces the `NounsComposer` upgradeable contract, which handles both the storage of composable items and the configuration of the items for art and metadata purposes. The Composer implements the [ERC-998](https://github.com/ethereum/eips/issues/998) standard to serve as a top-down container for Composable Items that can then be configured for usage during the on-chain rendering. Composable Items are NFT themselves, which simply need to implement the `INounsComposableItemToken` interface in order to be compatible with the framework. Existing Nouns collection need to only update their `NounsDescriptor` contract to plug into the framework (as seen recently via [Prop 114](https://nouns.wtf/vote/114)) and make the NFTs composable for all their holders. New Nouns collection can choose to implement the `NounsComposer` right away or update at a later date. The Composer workflow does not disrupt the existing process, if there are no composable items associated to the token being rendered then it will be displayed unmodified as expected. Composable Items need to have their art on-chain, and utilizes the same Descriptor -> Art -> Renderer mechanisms that are implemented in the current Nouns protocol. # Roadmap ### Pilot project In order to show a tangible implementation of Composable Nouns, we will be rolling out a new extension titled **DigiNouns**, which will serve as the first composable Nouns fork. Each auctioned Noun from this collection will also allow the holder to mint additional Composable Items for free as part of its core utility. The DigiNouns website will have a Composer section where token holders will be able to modify their Nouns with their Items and save this new configuration on-chain via the platform. This will show the community the full end-to-end base capabilties of the Composable Nouns Framework. ### Upgrade existing extensions After the pilot project has launched, we will also work on upgrading existing Nouns collection on-chain (e.g. NounsTown, YOLO Nouns, others) to demonstrate the ability to update already launched extension. ### Additional partner item packs Working with Nouns extensions, Noundry contributors and other artists from the community on the creation of Composable Items. These items can then be sold (or given away) via the Composables platform. ### Collaborate with gaming teams Early discussions have started with various gaming groups in the Nouns community to build basic game Items for usage with Composable Nouns. # Team Juan & Sam are both active Nouncil members, and have worked together on several Nounish projects. Juan has a computer science and business background and cut his teeth on Perl and PHP. He’s been working with blockchain code since 2016. Sam Ellis makes comics, cartoons, and games. He has worked for a myriad of comic publishers, animation, and game studios. Some of his past projects have been: Archer, Adventure Time, Bravest Warriors, The Awesomes, Frisky Dingo, Catbug, and more. Here are a few things Juan and Sam have done to help with the proliferation of Nouns: * Launched the Nouns Auction Tracker, an aggregator platform for Nouns auctions * Co-developed NounsTown, an extension project of Nouns * Active Nouncil members that regularly participate in voting * Active participant and on the organizing committee for The Noun Square (A group of nounish builders hosting daily celebrations around Noun O’Clock) * Prop 70 (CC0 Pitchbook) * Recipients of Small Grants/NSFW awards --- --- --- **Citations** ^1^ [4156 - The Nouns Virtuous Cycle](https://medium.com/@punk4156/the-nouns-virtuous-cycle-95586bb9c7c9) ^2^ [Metaversal - Why we invested in Noun #9 from Nouns DAO](https://www.metaversal.gg/metanews/why-we-invested-in-noun-no-9-from-nouns-dao)