.gitignore | ||
bit.c | ||
LICENSE | ||
Makefile | ||
README.md | ||
sha256.h |
bit
Blockchain git is a proof of concept for a version control system built on a blockchain structure.
Notice: This project is an experiment in version control systems, exploring how blockchain concepts could lead to a more robust and secure system. It is not intended to replace existing VCS solutions yet but to serve as a proof of concept and potential foundation for future innovations.
Each commit is treated as a block in the chain, containing hashes of diffs and the references to parent commits. It ensures the repository history is immutable, preventing unnoticable malicious modification through historical commits.
Concept
With high regards to Martin
-
Immutability
The hash calculation of each commit depends on the hash of its parents, tightly coupling the exact changes commit depends on.
Any attempts to change a parent commit invalidates the parent's hash, and thus affecting the hash of the child commits due to the coupling, creating a chain effect of modified hashes.
This allows a clear detection of any modification of historical commits, even with just a recent child commit, by detecting checking any changes in the most recent shared child.
-
Decentralization
People who cloned the repository will also have a copy of the blockchain, allowing people to validate commits and ensure they belong to the original repository in a distributed network.
Disadvantages
-
Performance As a trade-off to immutability, any rebasing of large amount of commits will result in high amount of hash calculation.
This may not affect small projects as heavily, but for large project with intensive history management and policy, rehashing may be too computational intensive.
Usage
bit create
bit verify
git diff | bit add # or your way to generate diff
Building
You will need to run these with elevated privilages.
$ make
# make install
Contributions
Contributions are welcomed, feel free to open a pull request.
License
This project is licensed under the GNU Public License v3.0. See LICENSE for more information.