ArtContracts: On-Chain Art with Tezos Smart Contracts

Art Contracts is a project facilitating storage of art directly on the Tezos blockchain.

A prototype was built (OBJKT#112092) which displays on-chain static image data within an “HTML NFT” frame on HicEtNunc.

Any arbitrary data can be stored on-chain, specifically in hexadecimal form (as a bytestring). The type of art stored is limited only by the ability for that data to be translated back and forth between its original form and the hexadecimal form.

In the future, it’s likely that this project will support not only static images but also animations, videos, text, audio, and even generative & interactive artworks.

Beyond simply supporting a variety of media types, the primary goal of this project is to explore the applications of on-chain art technology, and to build utilities that other developers and artists can implement into their own projects. This includes compression tools to lower the storage costs for deployment.

Some exciting possible utilities include collaborative art (multiple people editing on-chain data) and art that evolves over time without human intervention (changes in on-chain data facilitated purely by smart contract interactions). There are also many applications in the world of “collectibles”, due to the permanence lent by blockchain storage.

The first prototype on-chain artwork was originally deployed on 3 June 2021, but has since received an update. This update modified the pixel data of parts of the image in order to add text asking the viewer to vote in my platform survey.
This “upgradable” aspect of on-chain storage has many interesting implications in the world of interactive art, and is one of the project attributes which I am most excited about in the long-term.


This decentralized application seeks to create tools, standards, and interfaces enabling users to:
0. (Optionally) compress artwork in order to save on storage costs

  1. Encode artwork in a format which can be readily stored on-chain
  2. Deploy that data to the Tezos blockchain, stored within one or more smart contracts
  3. View these artworks with “interpreter” software, which queries the relevant on-chain data and decodes it into the original artwork form
  4. Monetize their on-chain data through token creation, whether on an established NFT platform like HicEtNunc or through custom minter contracts.

Much of this post (and surrounding documentation) uses words like “art” and “artwork”. Notably, this same approach could also be used for storage of data unrelated to artwork. One survey respondent suggested the option of a “blockchain notarization tool”. I am certainly interested in exploring these non-artistic applications as well.

So far, I have written all contracts in SmartPy. The interpreter code (which can be seen as the NFT prototype on HicEtNunc) is written in JavaScript and can be embedded into HEN’s “HTML NFT” template.
Currently, the steps of compressing data and encoding it in hexadecimal form are done with Python. The speed of execution for these steps could be greatly improved using a compiled language like C++.


I have released a survey allowing the public to express interest in the project and vote about which features they find to be most important.

You can take that survey here.

Along with this survey, I have written some introductory documentation, which can be viewed as a PDF here. Among other things this includes an FAQ, diagrams, an outline of potential future features of the project, and discussion of topics like governance, royalties, and open-sourcing.

If you would like to stay up-to-date about this project, the best way to do so is to follow the @ArtContracts account on Twitter.
You can also find me on twitter at @MathMakesArt. This pinned Tweet links to a variety of information about the project, both on and off Twitter.

I am happy to answer any questions you may have in the replies as well.


This project is still very much in its infancy. At this stage, there are many directions that development could go. It will likely be a long time before any full public release with user-friendly interface

My main goal in creating this post is to solicit feedback from the community, both through survey responses and external replies.
Any feedback, including criticism, is highly appreciated.