project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5

Tagged Contracts

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

Created At

ETHOnline 2022

Project Description

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.

How it's Made

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 numerous attempts to standardize 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 we have had with the Creative Commons organization, as well as existing work such as the Royalties Registry and EIP-2981 which we implemented when we created our own NFT, Kevin the Balloon.

Incidentally, the term blessed is inspired by Perl's blessed refererents 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 manual configuration of labels.

background image mobile

Join the mailing list

Get the latest news and updates