Building collaborative art NFT. Part 1

August 30th, 2021

Building a collaborative NFT.

Part One. Get information and frame-the-work.

I got an interesting artistic idea that could work very well in a decentralized manner, in fact, the idea itself only exists because decentralized digital property is now possible. After a few months, the idea does not go away.

So, it's time to build. 🛠

This post is not about building a website but about how could I interact from a website with a blockchain. (Ethereum blockchain specifically)

And what do I need in order to create the rules needed from my app to be working with the data that is held in the blockchain? (Through a smart contract)

I know the basics of how blockchains work but I did not ever go hands-on with it.

So let's get a ton of information first.

After A LOT of search and reading, I can assure you that all you will need to start is in these three places:

In this set of posts, I will focus on developing the smart contract needed to let my frontend app interact with the blockchain in the desired way.

In other future posts will address how ethereum blockchain works:

  • Transactions
  • Cryptography

Now, let's focus on developing our contract.

First things first. What the heck is a Smart Contract.

So smart contracts are immutable computer programs that run deterministically in the EVM (Ethereum Virtual Machine) on the decentralized Ethereum world computer.

We are choosing Solidity as it is the most adopted and better-documented language to develop and compile smart contracts on the Ethereum network.
But there were others before and being created like LLL, Serpent, Vyper, or Bamboo.

So a "Decentralized App" is not more than a client that attacks/interacts with a specific functionality behaviour based on the possibilities generated by what the selected blockchain let it interact with. In this case Ethereum. Calling it decentralized is more like a convention as it could not be decentralized and could only be using the blockchain for part of its functionality.

In this case, our app will have only two sides. On one side the functionality is built on the blockchain and on the other the interpretation of that functionality and data via a cool UI to "traduce" that functionality in something a user can understand. No server interactions, no users, no kept data, only direct interaction with the blockchain and specific files hosted.

In order to maintain those hosted files as "decentralized" as the usage of the rest of the app.

These hosted files will be uploaded on IPFS. (A p2p service to maintain files distributed. Think about it as a distributed CDN).

We have the core setup