Building a blockchain with 50 lines of code
Although some think blockchain is a solution waiting for problems, there’s no doubt that this technology is a marvel of computing. But what exactly is a blockchain?
According to my Google search, it is “a digital ledger in which transactions made in bitcoin or another cryptocurrency are recorded chronologically and publicly.”
In more general terms, it’s a public database where new data are stored in a container called a block and are added to an immutable chain (hence blockchain) with data added in the past. In the case of bitcoin and other cryptocurrencies, these data are groups of transactions. But, the data can be of any type, of course.
Blockchain technology has given rise to new, fully digital currencies like bitcoin and Litecoin that aren’t issued or managed by a central authority. This brings new freedom to individuals who believe that today’s banking systems are a scam or subject to failure. Blockchain has also revolutionized distributed computing in the form of technologies like Ethereum, which has introduced interesting concepts like smart contracts.
In this article, I’ll make a simple blockchain in less than 50 lines of Python 2 code. It’ll be called SnakeCoin.
Creating our own blockchain
We’ll start by first defining what our blocks will look like. In blockchain, each block is stored with a timestamp and an index (optional). In SnakeCoin, we’re going to store both. And to help ensure integrity throughout the blockchain, each block will have a self-identifying hash. Like bitcoin, each block’s hash will be a cryptographic one of the block’s index, timestamp, data, and the hash of the previous block’s hash. The data can be anything you want.

Photo credit: Aunyks.
Awesome! We have our block structure. But since we’re creating a blockchain, we need to start adding blocks to the actual chain. As I mentioned earlier, each block requires information from the previous one. That being said, how does the first block in the blockchain get there? Well, the first block (genesis block) is special. In many cases, it’s added manually or has a unique logic allowing it to be added.
We’ll create a function that simply returns a genesis block to make things easy. This block is of index 0, and it has an arbitrary data value and an arbitrary value in the “previous hash” parameter.

Photo credit: Aunyks.
Now that we’re able to create a genesis block, we need a function that will generate succeeding blocks. This function will take the previous block in the chain as a parameter, create the data for the one to be generated, and return the new one with its appropriate data. When new blocks hash information from previous ones, the integrity of the blockchain increases. If we don’t do this, it would be easier for an outside party to change the past and replace our chain with an entirely new one of their own.
This chain of hashes acts as cryptographic proof and helps ensure that once a block is added to the blockchain it cannot be replaced or removed.

Stay updated on the go with our mobile app.
Get latest insights with smoother, more personalized experience through TIA mobile app.




