A react.js progressive web app built to help artists authenticate their work using the bitcoin blockchain.

Arthentic's main screens

Arthentic is an application that ensures the authenticity of visual arts through blockchain technology. At its core, it’s a simple bitcoin wallet disguised in a user-friendly certificate maker that generates unique, secured and indisputable certificates.

My role:
Sole front-end engineer & UI designer

The problem

The problem we were facing was building a self-managed platform. Up to this moment we used software to streamline business processes by building management platforms to be used by managers, directors, staff, and people in general. This time though, we had to use software to remove the human factor from the equation, we had to build a platform of trust.

The goal

The only way to build a platform of trust was by using blockchain. Our goal was to register the artworks on the blockchain. By doing that, no one can ever deny the artwork’s existence and authenticity, no one can sell a fake copy of it as it’s easily verifiable and the artist will be able to defend himself in asking for royalties without the need of a third party entity.

We also wanted to keep the process and interface as familiar as possible. The blockchain technology it’s constantly evolving and it’s still new, it still requires people to have a basic technical understanding of how everything works, so releasing an app with a familiar experience was critical for the app’s success. You can see this “familiar but different” aspect reflected in the auth screens down below:

Arthentic's authentication screens

The challenges

The challenge I was personally facing was that I knew nothing about blockchain. The more I was reading, the more there was to read. I had to go through an intensive research process that involved:

  • understanding the core principles of blockchain technology:
    • architecture;
    • cryptography;
    • consensus mechanisms;
    • etc;
  • learning about the different blockchain types (public, private, consortium);
  • understanding the purpose of cryptocurrencies and the differences between them;
  • learning about the most popular blockchains and blockchain development platforms:

On top of reading, there was a lot of experimenting. Looking over someone else’s code or academic paper wasn't enough to grasp the information to the point where I could’ve leveraged it creatively so I had to apply everything I read.

The more I was learning, the more questions I had: I want to save photos of the artwork but how can I do this while staying completely decentralized and transparent? How many transactions can bitcoin handle? Will that cause any scalability issues in the near future?

After going through a lot of trial and error, things started aligning. Blockchain was crystal clear in my mind and I had a solid understanding of the available development tools. Down below you can see the first version of Arthentic developed using hyperledger fabric:

Arthentic's initial home screenArthentic's initial transaction screen

The solution

The best-case scenario would’ve been a native mobile app (for the best experience possible) using bitcoin core’s RPC (Remote Procedure Calls) to build an API to feed the application. Obviously, that didn’t happen, it wasn’t possible with the available resources and the rapidly approaching deadline.

To meet the deadline with a working product, we decided to stick with what we knew. Instead of a native mobile app, we built a progressive web app using react.js and instead of using bitcoin core’s RPC, we used bitcoinjs-lib together with a few other services. This is the architecture we ended up with:

Arthentic's architecture

The bitcoin blockchain plays the role of the database of the app and we use to query it. IPFS is a peer-to-peer network for storing and sharing data in a distributed file system that we use to store the photos of the artwork. Between the bitcoin blockchain and the services, it’s the app that uses bitcoinjs-lib to bring everything together. This is what a certificate (the result) looks like:

Arthentic's certificate screen

To create a certificate for an artwork, the user will have to take a photo of it, give it a title and a description (optional). The photo will get uploaded to IPFS which will return a hash. The title, description, image hash, and the current timestamp will then be used to generate a brain wallet which will become the actual certificate of the artwork. Other artists and users can make transactions/payments to this wallet to prove its authenticity.

The conclusion

In its current form, the app works like charm. Thinking long term, we’ll most probably have to move away from bitcoinjs-lib and the other services because no matter how useful they are, they have their limitations. As of now, the development of the app stagnated as the market isn’t ready yet for something like this but we’ll continue to experiment with it. The good news is that big galleries started using blockchain to sell art and the law will get forced to adapt to this new technology.

Lastly, learning and working with cutting edge technology was an amazing experience. Big thank you to Dr. Cristian Cira for all the support.