ideablock-commit
v1.0.10
Published
CLI tool for anchoring git commit hashes to Bitcoin and Litecoin blockchains
Downloads
13
Readme
Make your CI/CD pipeline immutable by leveraging the power of IdeaBlock to automatically tether git commits to the Bitcoin and Litecoin blockchains.
Summary
So what does IdeaBlock Commit do, exactly? Every time a user makes a commit to a local git repository in which IdeaBlock Commit is initialized, it does the following:
- Retrieves the SHA-1 (short hash) generated by git for the commit immediately prior
- Packages the repository's files (that are not ignored by a .gitignore) and compresses the repository into a commit-specific snapshot in tarball form.
- Computes the SHA-256 of that zip snapshot
- Concatenate the SHA-256 with the SHA-1 short hash
- Generates a random parity kaboose bit (from 0-9, exclusive), which will be placed at the end of the concatenated hash string
- Prepends "IDEA" in hexidecimal to the front of this concatenation ("49444541")
- Embeds this resulting string, which will always be 80 bytes in length, to the Bitcoin and Litecoin blockchains
- Returns the Bitcoin and Litecoin transaction addresses to your terminal immediately
- Stores the archive file repository snapshot, all relevant hash and blockchain information, and auth info in a custom "commit" subdirectory located at ~/.ideablock/commits (dont delete this!)
- Using this method of automatic commit tethering, the code in your version control system is verified by an external distributed timestamping system and is backed up and proven in a way that is unassailable, unchangeable, and provable in the event of subsequent legal or compliance challenges.
Prerequisites
- Register for a free IdeaBlock Beta account ₁
- NodeJS and npm
- git
Installation
npm
> npm i -g ideablock-commit
Git
> git clone https://github.com/ideablock/commit.git
> cd commit
> npm i -g
Tarball
- Get the current tarball IdeaBlock Commit homepage
- Unpack the tarball
- From the root of the unpacked ideablock-commit directory, install the package globally by running:
> wget https://ideablock.io/ideablock-commit-latest.tgz
> tar -xzvf ideablock-commit-latest.tgz
> npm i -g
Usage
Initialization From any root directory of a git repo, run the following to initialize automatic git commit blockchain tethering in that repository:
> ideablock-commit init
Turn Off (Pause) Again, in a git repository root directory, turn off (pause) automatic commit tethering in that repository by using the off or pause command:
> ideablock-commit off
> ideablock-commit pause
Turn On (Resume) Resume automatic commit tethering in a repository where this functionality is presently paused by using the on or resume command:
> ideablock-commit on
> ideablock-commit resume
Status Not sure if automatic blockchain tethering is on or off before you commit your code? You can print this information to the terminal by calling the status command at any time:
> ideablock-commit status
Remove You can completely remove IdeaBlock Commit functionality from your repository at any time by calling the remove command. If you would like to add it again later, just call the init function in the root directory of the repository at that time. The following commands are identical.
> ideablock-commit remove
> ideablock-commit uninstall
Beta
Important Information: The current version is an initial release of IdeaBlock Commit and should be considered very beta. Its functionality has been tested by our team - but please be aware that this is not production-ready software. Please feel free to submit pull requests to add features or to let us know about any issues at the IdeaBlock Commit source page on GitHub. You can also find the package on npm and yarn.
It is very important to remember that IdeaBlock never receives the actual files that form the substance of the repository you protect with IdeaBlock Commit - they stay with you, locally. It is therefore incumbent on every user to practice good operational security and ensure that a redundancy plan is in place when it comes to the files stored in your ~/.ideablock/commits directory.
By only sending IdeaBlock the hashes associated with your repositories, you are even protecting yourself against any future argument that you disclosed a trade secret to a third party - namely, us!
Thank you for your interest in IdeaBlock Commit and the rest of our early software tools, which include IdeaBlock Beta and IdeaBlock CLI with more coming soon! We appreciate your help and feedback - they are key in making our offerings as robust and bug-free as possible!
Follow us on Twitter and our other official channels
₁ Please be sure to read and agree to IdeaBlock Beta Terms and Conditions when you register