VersionedBlob: a poor man's Git built on Ethereum

Posted August 19, 2015 by Jonathan Brown ‐ 2 min read

Originally published on jonathanpatrick.me. Retrieved from the Wayback Machine.

One of the potential use-cases for Ethereum is to create a fully decentralized Git. Git is already decentralized in many respects, but you still need to push/pull with a specific server. If something like Git was implemented on Ethereum you just need to connect to another Ethereum node on the network.

I have created a 100 line Ethereum contract to illustrate how this could work. It has a very simple feature set. There can only be one file in the repository and there are no branches. But it does have access control and revision tagging.

Currently it stores the file directly in the contract. Potentially this could be quite expensive. Once Swarm is live, it could be used to store the files more economically.

The Ethereum log system allows for data to be attached to transactions which can then be searched externally. However in Geth this is not properly indexed yet so can be quite slow. Currently VersionedBlob stores the commit history in the contract, but this could just be written into the log instead.