Blockchain Version Control System
Find a file
2025-01-08 22:15:02 +00:00
.gitignore Initial commit 2025-01-08 22:15:02 +00:00
bit.c Initial commit 2025-01-08 22:15:02 +00:00
LICENSE Initial commit 2025-01-08 22:15:02 +00:00
Makefile Initial commit 2025-01-08 22:15:02 +00:00
README.md Initial commit 2025-01-08 22:15:02 +00:00
sha256.h Initial commit 2025-01-08 22:15:02 +00:00

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.