Blockchain Ethics

GitBlock- A Joke or not a Joke?

"Version Control on the Blockchain"

Don’t worry I laughed too. The joke is that you can put anything on a blockchain and make money. Version control in terms of computer science, generally speaking, is the maintenance of code by recording all changes and allowing developers to annotate their changes to remember why they made them. Furthermore, if two developers were working on the same project independently, they could merge their codes to include changes from both versions/branches. The most popular version control is git.

Sorry back to the joke. So now that you know version control, it seems silly to add this to blockchain since the nature of a blockchain is about maintaining the whole chain and all of its changes, so in a sense there is already version control. What’s interesting is that git has a very similar architecture to a blockchain, yet it is has grown immensely outside of that world (see this blogpost for more info: http://pnijjar.freeshell.org/2019/git-blockchain/). One of the most important differences is that branches/forks are highly encouraged in the world of git. For obvious reasons, forks in a blockchain are bad. But what about DApps built on a blockchain?

How is the data for DApps built on a blockchain (like Augur on Ethereum) stored? Well it depends on the blockchain. If external (meaning the data is not intertwined with blocks as a package when you want Augur), then to preserve the nature of a blockchain (i.e. no forking), then perhaps there should be version control for different versions of the DApp without a central authority (git is owned by Microsoft). If it was internal, forking of DApps would directly interfere.

Andreas Antonopolous stated that one of the most interesting byproducts of the blockchain would be the sharing of ideas and building off of them as much as we like without permission. If you wanted to add something to Paypal, you don’t have to build a whole online financial banking system to test it, you could just add your extension to an existing one on the blockchain (paraphrased from Andreas’ speech). As a result, it should be easy to fork DApps without impeding the blockchain.

Additionally, if a platform like this already exists that basically creates another mini “blockchain” per DApp, then I am sorry, but I do think it is worth mentioning that Git should be replaced. In China, mass protests have been silenced on social media, thus they transferred to an unorthodox place- Github. However, in 2013 China’s government shut it down briefly and then again in 2015 when Unicom, a Chinese Telecom Agency, launched a DDoS attack and made certain repositories inaccessible. China currently allows Github, but for how much longer? If a new version control existed as a pure blockchain (open, public, neutral, borderless, and censorship resistant; see this amazing talk for more context on these terms: https://www.youtube.com/watch?v=qlAhXo-d-64), then restrictions and attacks would be minimized. Cutting or censoring any part of Github, poses serious issues for developers. Hence, I propose GitBlock.

Though I skipped over an interesting conundrum hinted above by my quotes around mini “blockchain”. It can’t be a traditional blockchain because it needs to allow forking. In a sense, multiple blocks could be added at once but to their respective branches. It would be like git but with the integration of pseudonymity, transparency, and smart contracts.

Anyways, I am still playing around with this idea because I don’t have all the details yet and it is very code intensive so I don’t really address too many ethical issues as some other proposals I have read. I am open to feedback and I will think of a couple back-ups.

2 Likes

Could you dumb it down a little for me, please? I lost it when you asked about DApps on the blockchain, when before you were talking about the structural similarities/dissimilarities between git and blockchain.

1 Like

Pretty certain this isn’t a joke and is a very sensible idea.

So, yes, one could use just a blockchain to do version control by uploading new versions of a program, but this has two issues. First, it is very inefficient; one ideally wants to store the updates and changes efficiently rather than having tons of copies hanging around. Also, one wants to be able to examine old versions and differences quickly, which is not well supported if you must scan through the entire blockchain every time (though I suppose you could keep pointers to prior blocks). Second, it doesn’t seem to support forks and merges. Actually doing version control well on a blockchain seems very non-trivial.

Why do you want a blockchain rather than just git or github? Perhaps you don’t want to deal with self-hosting and peer-to-peer connections so git by itself is insufficient. We do want some sort of centralized, verifiable repository. Why not github? Because we don’t want to trust a single entity to exist and maintain proper records; exactly the same as with other use-cases.

I’m completely confused as to why you want to get rid of git though. This seems even more empowering than ‘GitBlock’ since I don’t need to rely on anyone else running the blockchain for me to be able to do version control and share things publicly or privately.

I don’t follow most of your discussion about dapps.

1 Like

Hello Jayson,

So the idea is obviously still a work in progress, but a few key notes:

-“inefficient?” Yes, but that is kind of the point. In fact, these inefficient Dapps (decentralized applications) are used because they sometimes provide a questionable service (e.g. Augur). Similar to cryptocurrency, the inefficiency is to provide freedom to developers

-“non-trivial?” Yep, but I am working on a subproblem and testing some ideas out. More on that below.

-“we need a centralized verifiable repository?” I am going to have to disagree with you there. I would instead propose a verifiable repository that is managed by a smart contract. Let me explain. First of all, if you read my small excerpt on China, then you would know that a repository/project can be deemed “sensitive” or “dangerous” by a particular country’s standards, thus to avoid censorship (e.g. China restricting certain repos and preventing overall access to Github) and to allow all developers of any race, national allegiance, etc to contribute, a new platform for sensitive projects should be made.

I am not saying replace github immediately. In fact, I don’t think this will happen immediately even if cryptocurrency was fully adopted today. I instead propose GitBlock as a platform for developers to work on special projects that need the extra protection. On the more technical side, since there aren’t any transactions anymore, there would be a smart contract per Dapp that signs changes (edge case: what gets classified as a Dapp or new Dapps derived from other Dapps gets a little fuzzy and I will develop a process for establishing new Dapps). Similar to Etheruem’s gas, a small price would be paid to make a new branch or contribute to a branch (and yes there will be pointers to blocks) as to avoid a hydra or infinite contribution attack. Furthermore, the smart contract could also limit your # of branches created in a given time frame per Dapp. Also, over time dormant nodes/branches, could be removed occasionally depending on length, # of total contributions, time since last contribution, etc. (perhaps collectively agreed upon similar to the Augur REP community or chain governments; see Tezos for an example).

Thanks for responding because your comments make the idea better.

1 Like

Hi Arne,

Thanks for replying! I just made a reply to Jayson, so please check that one out first as it clears up my motivations for the project and provides some key technical implementations. However, in general the idea is that Github repositories can be censored (e.g. China is just one example with a long history of censorship and Github) and the idea is to make a blockchain version control system in order to help secure and maintain decentralized applications that may be deemed dangerous. The main problem with creating a traditional blockchain for this idea is that you don’t want to fork because there is only supposed to be one blockchain, right? Well, in version control you want a tree of sorts. In this network idea, someone on the blockchain (that gitblock is built upon) will go to the Dapp they want to edit and add a block to a specific branch granted they meet the specs (see reply to Jayson) and pay the small gas price. Someone else on the network might not like these changes so they can branch out from the previous block but there will be a record for both (to account for dormant branches please see other reply).

There are still a few problems though. Like incentivizing block making for Dapps might not be able to solely rely on the developers/contributors themselves so perhaps those who make blocks can gain REP tokens in order to influence the trajectory of the Dapp more. Don’t worry the smart contract still has to make the initial flag so I don’t believe the REP community will have too much power. To balance it, I think I might also implement an algorithm that trickles REP to the contributors of heavily utilized branches. I am still thinking.

If you have any more questions, please ask! It always makes me better. Like if I didn’t explain this properly, I’ll try again :slight_smile:

1 Like

I think you’ve conflated Git and Github. I don’t think of Git as centralized and the fact that I can use it independent of any other computers or even access to the internet suggests a different sort of robustness and independence from any blockchain based technology. There are some robustness and transparency affordances you’d get out of a blockchain rather than individual hosting or a p2p network though, so I don’t think either is strictly better. As in my prior post, I do agree with your arguments about Github though.

I hope the project goes well, there are presumably a lot of good open technical and ethical questions with respect to blockchain version control.

1 Like

Cool ideas to play with here around Git, GitHub, and open-source incentivization! Here are some aligned projects/articles in this vein:

On censoring GitHub:

On Open-Source Sustainability

On Decentralized GitHub Attempts:

On Forking Dapps: