Contract Tags is like Docker tags, but for blockchain contracts. We want to make it easy to tell what kind of license a contract uses and who's responsible.
Tagged Contracts imagines a composable metadata layer where free-form information can be stored on the blockchain in a consistent way that is easy for developers and users alike. Think: Docker tags, for smart contracts, yet with a link to more info.
Tags are special data structures that contracts can inherit from, making it easy for developers to "bless" a contract as a tag. Furthermore, we show an example of how a contract can be deployed to describe a tag and complete the link back to the original contract by allowing contracts to purchase licenses for the tag.
Contracts set tags like:
setTag("license:cc0", "0x0221a85835DD42D82385146406c534A1f4Af5E6D"); // reference to more info
setTag("author:lorem-labs"); // simple tag
setTag("Example"); // simpler tag :), stored as lowercase
We then expose a common interface for retrieving tags and showing them as a JSON representation.
This project is mostly Solidity and tooling via Hardhat.
The dApp has ethers and SvelteKit.
It was re-factored down many times, (although not enough time!) in an effort to make the interface as clean as possible and easy for a developer to use.
The initial motivating use case is to provide a uniform way to add license information to NFTs to help answer questions like "What rights do I have if I own this NFT?".
There have been n a to s and clarify licensing rights for NFTs, however there remains a lack of consensus on how to locate the license for an NFT.
We are inspired by conversations w with the Creative Commons organization, as well as existing work such as the R and E which we implemented when we created our own NFT, K.
Incidentally, the term blessed is inspired by Perl's b which is inspirational for this design too.
We also imagine that applications like Etherscan could use our tagging feature to display the properties of contracts instead of requiring m.

