- Rename post-commit-ots → post-commit - Rename pre-commit-ots → pre-commit - Remove legacy post-commit and pre-commit symlinks - Update install.sh and documentation - Simplified: only 2 hook files with standard names Hooks are now named exactly as git expects them, making manual installation more intuitive.
2.8 KiB
2.8 KiB
Git OpenTimestamp Hook
Automatically generate OpenTimestamp proofs for git commits with full Bitcoin attestation.
⚠️ Requirements
Required: opentimestamps-client (ots CLI)
pipx install opentimestamps-client
Note: The Node.js
@opentimestamps/otspackage is not supported - it only creates local proofs without calendar submission or Bitcoin attestation. For tamper-evident timestamps, you must use the Pythonopentimestamps-client.
Quick Install
# Clone this repository
git clone <repository-url>
cd git-ots-hook
# Install hooks (requires ots CLI)
./hooks/install.sh /path/to/your/repo
# Commit the proofs
cd /path/to/your/repo
git add .ots/
git commit -m "Add OpenTimestamp proofs"
That's it! Every commit will now be timestamped and anchored to Bitcoin.
Manual Installation
# Copy hooks
cp hooks/post-commit .git/hooks/post-commit
cp hooks/pre-commit .git/hooks/pre-commit
chmod +x .git/hooks/post-commit .git/hooks/pre-commit
# Setup .gitignore
echo ".ots/.attestation-cache" >> .gitignore
What You Get
- Automatic timestamping - Every commit gets a cryptographic proof
- Bitcoin attestation - Proofs anchored to Bitcoin blockchain (~10 min)
- Full history - Backfill hook upgrades all historical commits
- Smart caching - Minimal network overhead after initial setup
- Tamper-evident - Anyone can verify your commit history
Generated Files
repo/
├── .ots/
│ ├── <commit-hash>.ots # Individual proof (commit this)
│ ├── proof.ots # Latest proof (commit this)
│ ├── prev-commit.txt # Chain link (commit this)
│ ├── commit-chain.txt # Full chain (commit this)
│ └── .attestation-cache # Local cache (ignore this)
└── ...
Verification
Check a proof:
ots info .ots/<commit-hash>.ots
Verify attestation:
ots verify .ots/<commit-hash>.ots
Upgrade pending proofs:
ots upgrade .ots/<commit-hash>.ots
How It Works
- You make a git commit
- Post-commit hook extracts commit hash
- Hash submitted to 4+ remote calendar servers
- Calendars aggregate and anchor to Bitcoin
- After ~10 min: proof becomes Bitcoin-attested
- Pre-commit hook upgrades old proofs before new commits
Performance
- First backfill: 30-60s (full history scan)
- Normal commits: 10-15s (cached, minimal network)
- Attestation: ~10 min (Bitcoin block time)
Uninstall
rm .git/hooks/post-commit .git/hooks/pre-commit
Links
License
MIT