Smart Contracts & NFTs: A Music Industry Perspective

Spoiler: Smart Contracts ≠ Music Contracts.

Because we are at root a music company, we hear the term “smart contract” and we want to relate it to the type of contracts that we’re familiar with in the music industry. 

However, this isn’t particularly useful.

This is because music contracts deal with real world, tangible and often subjective things - and the end result is ultimately decided by our legal system. “Smart contracts” in the web3 world are programs on the blockchain that can only be affected by something that happens on the blockchain.

The main difference that we’re describing is the blockchain Oracle problem. That is, all blockchains have a fundamental limitation: they cannot natively communicate with systems in the outside world. This prevents smart contracts from verifying external events.

So “smart contract” is a bit of a misnomer. They can’t interpret real world events - so they aren’t very “smart”. And they aren’t legally enforceable so they aren’t “contracts” by definition (source).

How do smart contracts relate to NFTs?

The short answer is that this varies across blockchains. We’re going to take a closer look at smart contracts in the context of Ethereum and in the context of Solana - where they are referred to as “programs”.

On both of these blockchains, tokens are issued using smart contracts (on Ethereum) or programs (on Solana). How they are issued is very different.

How do smart contracts relate to NFTs on Ethereum?

The standard smart contract for creating, owning and transferring NFTs on Ethereum is called ERC-721.
To create an NFT collection on Ethereum, a user would implement a customized version of this smart contract standard. Creating the collection is an on-chain event, meaning the user pays a network fee to interact with the blockchain.

NFTs can then be minted within that collection, to the specifications outlined in the collection’s smart contract.

Because blockchains use a public ledger, anything that happens on-chain can be viewed publicly on something called a “block explorer”. The most popular block explorer is etherscan.io, which we will use to view an example smart contract on Ethereum.

Why customize the ERC-721 contract?

In Ethereum land, additional functionality of NFTs is generally coded directly into the collection’s smart contract. A great example of this is CryptoKitties, the world’s first Ethereum based game. 

Here is the smart contract for the Crypto Kitties NFT collection. The breeding and ownership properties of all NFTs minted in the collection were coded into this smart contract when the collection was published.

If you scroll through the smart contract, you will see specifications related to the breeding and transfer properties of CryptoKitties.

You can also see one CryptoKitty on-chain here.

How do “programs” relate to NFTs on Solana?

As mentioned above, “smart contracts” on Solana are referred to as programs.

NFTs can be minted on Solana as SPL Tokens (Solana Program Library Token). This is Solana’s equivalent to Ethereum’s ERC-721 token standard.

Only on Solana, there is a standard implementation to issue these tokens. An organization that was once part of Solana itself broke off to create a collection of tools designed to make the process of creating and launching NFTs easier.

This organization is called Metaplex. Developers can implement Metaplex’s tool Candy Machine on their website or app to enable users to mint NFTs. In other words, Candy Machine acts as the backend that enables minting and transfer of NFTs. All the developer needs to do is create a front end in the form of an app or website and tie together the Candy Machine backend using their documentation.

For example, generative artist josephtaylor.art (and co-founder of Single) used Candy Machine and a simple website to allow anyone to connect a Solana wallet and mint an NFT from his SolOrb collection.

It’s not crucial to understand everything that’s happening behind the scenes when an NFT is minted on Solana. We only present this to show how concepts from Ethereum can’t be applied directly to Solana, and trying to relate them 1:1 makes NFTs generally hard to grasp.

Ethereum generally requires custom smart contracts to launch NFT collections, while Solana mostly relies on pre-built standard implementations.

Another key difference about the Solana ecosystem is that creating an NFT collection doesn’t necessarily require an on-chain event. In the case of Candy Machine, creating an NFT collection does interact with programs on the Solana blockchain. However in Single’s implementation, artists can publish NFT collections to their Shopify stores without putting any information on-chain.

Because of this, the Ethereum concept of “auditing a smart contract of an NFT collection” doesn’t directly translate to Solana. There simply isn’t always anything on-chain to audit until someone completes a transaction and mints an NFT.

A SolOrb Example

Because NFTs were minted from this collection, we can take a look at a SolOrb on-chain. If you scroll to the Metadata tab you will see the information below.

As you can see this NFT was created using the Metaplex tooling and standard. You can also see some additional information about the NFT here like the image address and built-in royalty.

Let’s talk function.

So how exactly is functionality enabled for Solana NFTs?

One of the other key differences between Solana and Ethereum based NFTs is that the functionality of Solana NFTs is generally built outside of the token itself.

Boryoku Dragonz

Take for example the Boryoku Dragonz NFT collection, seen for sale here. These are standard SPL Tokens but similarly to the CryptoKitties example above, these dragons have special breeding properties. If you own two dragons and visit their website, you can have them “mate” and receive an egg which will eventually hatch into a baby dragon.

However, unlike Crypto Kitties this “breeding” functionality is not written into the NFT itself. In fact if you look at the dragon shown above on the Solana block explorer, you can see it is a standard SPL Token using the same Metaplex metadata standard as the SolOrb above.

In order to create functionality for dragon NFT holders, the dragon team created a wallet integration on their website. This verifies which dragons the user has in their wallet and allows the user to mint a new NFT based off of the properties of the parent dragons. Again, this code that provides functionality exists on the dragon’s website and just uses the NFTs for verification.

SOL Parasites

Another example of functionality built outside of a Solana NFT is in the SOL Parasites collection, shown for sale here. Unlike many other Solana NFTs which remain static, the image of this NFT changes daily based on other NFTs in the user’s wallet.

Take a look again at a Solana block explorer to see the token on-chain. You will see in the metadata tab that it is a standard SPL Token. What provides the Parasite NFTs their distinct functionality is code in the image link or “uri” field of the NFT.

This bit of code hosted on Amazon S3 is able to process other NFTs in the user’s wallet and displays a new image each day based on that. While we can see the code in the metadata that performs this action, the code executing the image generation is not accessible. We can again compare this with the functionality baked into the CryptoKitties collection which is all auditable and available on-chain.

Single and Solana

The differences in how Solana and Ethereum mint and handle NFTs does shine some light on exactly why Single chose to build in the Solana ecosystem.

Sure, the reasons we approached the Solana chain to begin with were cost and speed. On one hand transaction costs themselves are extremely low on the Solana network, and they are expected to remain so. But in the same way, reducing the amount of and size of on-chain transactions also makes the Solana network cheaper to use than Ethereum.

The ability to create an NFT collection and put it up for sale without paying for anything on-chain reduces the startup cost of selling NFTs. And this is exactly how Single’s digital music and monetized video tools work. Artists can put up a digital album, livestream ticket or video rental for sale in their Shopify store without paying anything. The artist is only charged when a fan completes a purchase and content is delivered.

At the end of the day we want to help the next generation of artists with these new tools that we believe will be part of the path to sustainable careers. Lean in with us.