Decentralized IP Proof of Existence — stamp your ideas on Bitcoin
Project description
Bit Protocol
Decentralized IP Proof of Existence on Bitcoin.
Stamp your files, code, and ideas to the Bitcoin blockchain as immutable proof that you had them at a specific point in time. No disclosure. No gatekeepers. No subscription fees.
✅ Verified on Bitcoin Testnet — txid: b98761beaf2b4e8fb60b3fe6ee767f2cb9347fb785f8b57e02328b00cef4ab4c
pip install bit-protocol
bit init
bit stamp my-whitepaper.pdf --utxo=<txid>:<vout>
bit verify my-whitepaper.pdf --txid=<txid>
Why
| Problem | Bit Protocol |
|---|---|
| Patents cost $10K+ and take years | Stamp in seconds for cents in fees |
| Trade secrets have no legal protection if leaked | Prove possession without disclosure |
| Bernstein.io costs $54–$329/mo | Open-source, self-host, free |
| Vendor lock-in | Your keys, your node, your stamps |
| Centralized registries can be seized or shut down | Bitcoin is permissionless and unstoppable |
How It Works
Your file → SHA-256 hash → OP_RETURN payload → Bitcoin tx → Immutable proof
↓
Local SQLite cache
OP_RETURN Schema
| 3 bytes | 1 byte | 1 byte | 32 bytes | 4 bytes | ≤42 bytes |
| Protocol | Version | Type | SHA-256 | Key FP | Metadata |
| "BIT" | 0x01 | 0x01-04 | File hash | Key ID | JSON |
Total: 41–83 bytes — fits within Bitcoin's original OP_RETURN limit and is forward-compatible with Bitcoin Core v30's 100KB expansion.
Quickstart
1. Install
pip install bit-protocol
2. Generate your identity
bit init
Creates a secp256k1 keypair at ~/.bit/key.pem.
3. Get testnet BTC
Send some tBTC to your address (shown by bit status) from a testnet faucet.
4. Stamp a file
bit stamp myfile.pdf --utxo=<txid>:<vout>
5. Verify
bit verify myfile.pdf --txid=<txid>
6. Check your stats
bit status
Real Example (Testnet)
# Generate key (one-time)
bit init
# Stamp a file
bit stamp whitepaper.pdf --utxo=62256e0bda6e7972...:0
# Output:
# ✓ Stamped to Bitcoin testnet!
# txid: b98761beaf2b4e8fb60b3fe6ee767f2cb9347fb785f8b57e02328b00cef4ab4c
# View: https://blockstream.info/testnet/tx/b98761beaf2b4e8fb60b3fe6ee767f2cb9347fb785f8b57e02328b00cef4ab4c
# Verify
bit verify whitepaper.pdf --txid=b98761beaf2b4e8fb60b3fe6ee767f2cb9347fb785f8b57e02328b00cef4ab4c
# Output:
# ✓ MATCH — PROVEN: You possessed this exact file at block time.
Commands
| Command | Description |
|---|---|
bit init |
Generate your identity key |
bit status |
Show identity, wallet, and stamp count |
bit stamp <file> |
Stamp a file to Bitcoin |
bit verify <file> --txid=<id> |
Verify a file against an on-chain stamp |
bit search <query> |
Search your local stamp database |
Options
bit stamp file.pdf --type=source_code # Tag content type
bit stamp file.pdf --mainnet # Use Bitcoin mainnet
bit stamp file.pdf --utxo=abc123:0 # Specify UTXO for fees
bit stamp --text "my idea" --utxo=abc:0 # Stamp from text, not file
bit stamp file.pdf --meta='{"v":"1.0"}' # Attach metadata
bit stamp file.pdf --fee=5000 # Custom fee in satoshis
Public Index (optional)
Share stamps with the network via an optional public index:
docker compose up -d
curl http://localhost:8787/health
# Record a stamp
curl -X POST http://localhost:8787/stamp \
-H "Content-Type: application/json" \
-d '{"hash":"abc...","txid":"def...","content_type":"document","key_fingerprint":"abcd1234"}'
# Look up a stamp
curl http://localhost:8787/stamp/abc...
# Search
curl "http://localhost:8787/search?q=abc&field=hash"
Pre-commit Hook (optional)
Auto-stamp files on every commit:
cp scripts/pre-commit.sh .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
Stamps all staged .md and .pdf files. Edit the hook to change tracked extensions.
Roadmap
- Core protocol schema
- CLI (init, stamp, verify, search)
- Bitcoin testnet broadcast
- Local SQLite database
- Public index API
- Pre-commit git hook
- Live on-chain verification
- PyPI release (
pip install bit-protocol) - GitHub Action for CI stamping
- VS Code extension
- UTXO scanner (auto-select inputs)
- HD key derivation (BIP32/BIP44 for IP families)
- Fractional IP tokenization
- Multi-chain support (Ethereum, Solana)
Development
git clone https://github.com/washingtoneimae-dot/bit.git
cd bit
python3 -m venv venv
source venv/bin/activate
pip install -e ".[dev]"
pytest tests/ -v
Strategy
Bit Protocol is the Linux to Bernstein's Windows — an open-source protocol that any developer can self-host, customize, or contribute to.
| Bernstein | Bit | |
|---|---|---|
| Model | Closed SaaS | Open Core |
| Price | $54–$329/mo | Free (self-host) |
| Keys | Account-based | Self-sovereign |
| Registry | Centralized | Bitcoin + optional index |
| Legal | WIPO-recognized | Community-built |
| Tokenization | None | Planned (fractional IP) |
The strategy: free self-host → developer adoption → prior art shield → network of interoperable registries that no single entity controls or can ignore.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bit_protocol-0.2.0.tar.gz.
File metadata
- Download URL: bit_protocol-0.2.0.tar.gz
- Upload date:
- Size: 23.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8ae413b892684b645ff0a430ca1f227b3c242a102f57e289f68114d7c52c133
|
|
| MD5 |
230b6011450c49d72c23a7f5e4751270
|
|
| BLAKE2b-256 |
0e6f1497e8225726d96bdb132bb66c030d9af6ab90eaa382b37b4bac5f1739d7
|
File details
Details for the file bit_protocol-0.2.0-py3-none-any.whl.
File metadata
- Download URL: bit_protocol-0.2.0-py3-none-any.whl
- Upload date:
- Size: 20.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35b2c3cd8c1c7867d670830bf98693f78ab98de555fdd0d04a5cefb4bad426dd
|
|
| MD5 |
824e93ea9610f1138aa4b092bbb1671f
|
|
| BLAKE2b-256 |
c8599a411e9bb23c50a3b3a4e070cf6d19e62507f57d52168294563e1d9a4f57
|