[Draft] NFTs with Decentralized File Delivery

Non-Fungible Tokens (NFTs) are a type of digital asset that represent ownership of other items or assets. They are secured by blockchain technology like Bitcoin or Ethereum, but each token has unique information that distinguishes one from all the others. They typically include metadata to describe the asset represented by the token.

Currently, NFTs are most widely used for art and digital goods as tokens of ownership. The holder owns a theoretical copy of the item, often represented by an image or other public information in the token’s metadata, which is accessible to anyone viewing the blockchain. While these tokens have speculative value, they provide very little functional or practical use cases.

A largely untapped and (in my opinion) much more practical value of NFTs is their use as a de-facto “license” to provide not only representational ownership of the asset, but true access to the underlying digital files in an encrypted, blockchain-secured, decentralized way.

In their current state, file downloads are commonly associated with NFTs but they have one of two flaws 1) the file is publicly linked in the metadata, so anyone can download the file with or without the token, and/or 2) the files are encrypted, but stored using proprietary (i.e. non-transferable) systems by a centralized company which must then be trusted with the files.

However, the advent of the Web3 storage layer (i.e. Sia), combined with the unique and verifiable nature of NFTs, creates an interesting opportunity – minting tokens that provide secure access to digital files in a trustless, decentralized way.  It should be possible to create an NFT protocol which uploads a file to Sia Skynet, encrypts it, and ties the encryption key to the token itself. Therefore, the token holder is the only one who can access the files represented by the token.

In this way, the non-fungible tokens become much more than speculative “tokens” of ownership, but secure credentials that validate ownership and then perform actions once validated (i.e. deliver the download).

In addition to the practical benefits of secure delivery, this platform is attractive to creators because buyers are incentivized to pay much higher prices than if simply purchasing a download in a traditional transaction because they truly own scarce access to an asset that can be resold. For example, how much would one pay to own 1 of 500 tokens that grant exclusive access to a new record by The Weeknd… and how much more would that asset be worth on the resale market?

Using this technology, a platform can be built for creators to license, sell, and deliver their digital work to customers in a more secure, controlled, and decentralized way than ever before (think Gumroad on the blockchain).

Example Use Cases:

  • Software creators can mint tokens as software licenses, providing secure delivery of the installer and even (maybe?) use our API to validate ownership of the install.
  • Musicians can mint a limited edition of their record that can be downloaded / streamed by the NFT owners.
  • 3D artists can provide a 3D file that can be accessed and viewed in AR by the token holders.
  • Writers can create tokens representing downloadable copies of their eBooks
  • Content creators can mint and sell tokens that provide authentication to a private membership site using the (theoretical) API.
  • Photographers can create tokens to grant access to a full-res copy of their photo.
  • Online teachers / content creators can mint tokens to provide access to provide access to their series of video tutorials

Features of the Platform…

As I envision it now, my platform will provide two things:

  • A user-friendly web platform that translates this technology into a front-end interface for minting, selling/reselling, and delivering these type of tokens. For creators, it feels like a Web3 version of Gumroad where they can sell and deliver their products (tokens) directly to buyers, and buyers can resell on the open market if they choose. It will ideally have the following features
    • A tool for creators to easily upload files to Skynet and mint tokens in one step
    • Product pages so that creators can list their NFT-backed products for sale and users can purchase them painlessly in USD or ETH.
    • A marketplace for owners to (re)sell the tokens they own at fixed prices or auctions, with support ETH (and possibly USD) transactions.
    • A customized web-based wallet where users can manage their tokens and access / stream / download the deliverable files associated with them.
  • An API that any NFT platform can tap into to upload, encrypt, and retrieve files from Skynet (perhaps launching my own portal and managing storage payments through this API) as well.

Challenges / Questions

  • How do we link the encrypted file to the token itself? (it all hinges on whether this is possible)
  • When a token is transferred, how do we prevent the previous owner from continuing to decrypt and access the associated file?
  • How do we give multiple users access to the same encrypted file – for example, a creator mints 500 copies of their song. How do we give all 500 access to the same file so that it doesn’t have to be uploaded 500 times?
  • Who pays for storage and how (on my own platform? on the api?)


Development Steps

  1. Create a local test project to mint an NFT while simultaneously uploading a file to Sia and including that Skylink in the token’s metadata
  2. Expand #1 to include encryption of the file + a custom web-based wallet which decrypts the token
  3. Refactor and deploy this core functionality publicly as a proof of concept (?)
  4. Solve the rest of the challenges and build out a marketplace to mint and sell these NFTs