A rootless, ownerless substrate for human expression
RootlessNet is a decentralized communication protocol designed for censorship-resistant expression. This repository contains the complete TypeScript implementation of the protocol, including cryptographic primitives, identity management, content handling, and end-to-end encrypted messaging.
- 🔐 End-to-End Encryption - All content and messages are encrypted by default
- 🆔 Self-Sovereign Identity - Users own their cryptographic identity (DID-based)
- 📝 Content Addressing - Immutable content with CID-based addressing
- 💬 Forward-Secret Messaging - Signal protocol (X3DH + Double Ratchet)
- 🌐 Decentralized - No central authority or single point of failure
- 🔓 Open Source - Fully transparent and auditable
# Using bun (recommended)
bun install
# Run tests
bun test
# Build all packages
bun run buildimport { RootlessNet } from '@rootlessnet/sdk';
// Create a new client
const client = new RootlessNet();
// Create your identity
const identity = await client.createIdentity();
console.log('Your DID:', identity.did);
// Post content
const post = await client.post('Hello, RootlessNet!');
// Verify content authenticity
const isValid = await client.verifyContent(post);| Package | Description | Version |
|---|---|---|
| @rootlessnet/crypto | Cryptographic primitives (Ed25519, X25519, XChaCha20-Poly1305, BLAKE3) | 2.0.0 |
| @rootlessnet/identity | Identity creation, verification, and management | 2.0.0 |
| @rootlessnet/content | Content creation, signing, and verification | 2.0.0 |
| @rootlessnet/messaging | E2E encrypted messaging (X3DH, Double Ratchet) | 2.0.0 |
| @rootlessnet/sdk | Complete SDK combining all packages | 2.0.0 |
| Document | Description |
|---|---|
| CONTEXT.md | Complete protocol specification and philosophy |
| docs/PROTOCOL_SPEC.md | Comprehensive protocol specification |
| docs/CRYPTO_SPEC.md | Cryptographic implementation requirements |
| docs/SECURITY.md | Security model and threat analysis |
| docs/ARCHITECTURE.md | Technical architecture details |
| docs/DEVELOPER_GUIDE.md | Developer getting started guide |
| docs/FAQ.md | Frequently asked questions |
┌─────────────────────────────────────────────────┐
│ Application │
├─────────────────────────────────────────────────┤
│ SDK Layer │
│ ┌──────────┬──────────┬──────────┬──────────┐ │
│ │ Identity │ Content │Messaging │ Zones │ │
│ └──────────┴──────────┴──────────┴──────────┘ │
├─────────────────────────────────────────────────┤
│ Cryptographic Layer │
│ ┌──────────────────────────────────────────┐ │
│ │ Ed25519 │ X25519 │ XChaCha20-Poly1305 │ │
│ │ BLAKE3 │ HKDF │ CID/DID Support │ │
│ └──────────────────────────────────────────┘ │
├─────────────────────────────────────────────────┤
│ Network/Transport │
│ (P2P, DHT, mDNS, WebRTC) │
└─────────────────────────────────────────────────┘
RootlessNet implements state-of-the-art cryptographic protocols:
- Signatures: Ed25519 (128-bit security)
- Key Exchange: X25519 ECDH
- Encryption: XChaCha20-Poly1305 AEAD
- Hashing: BLAKE3
- Key Derivation: HKDF-SHA256
- Password KDF: Argon2id-like construction
- Messaging: Signal Protocol (X3DH + Double Ratchet)
All cryptographic operations use constant-time implementations to prevent timing attacks.
# Run all tests
bun test
# Run tests for specific package
cd packages/crypto && bun test
cd packages/sdk && bun testTest Results: ✅ 31 tests passing, 51 assertions
- Bun >= 1.0
- TypeScript >= 5.6
RootlessNet/
├── packages/
│ ├── crypto/ # Core cryptographic primitives
│ ├── identity/ # Identity management
│ ├── content/ # Content protocol
│ ├── messaging/ # E2E encrypted messaging
│ └── sdk/ # Complete SDK
├── docs/ # Documentation
├── package.json # Root workspace config
└── tsconfig.json # TypeScript configuration
# Install dependencies
bun install
# Build all packages
bun run build
# Type check
bun run typecheck
# Lint
bun run lintWe welcome contributions! Please see CONTRIBUTING.md for guidelines.
This project follows a community-driven governance model. See GOVERNANCE.md for details.
MIT License - see LICENSE for details.
- Documentation: docs/
- GitHub: https://github.com/RootlessNet/protocol
- Community: (coming soon)
Built with modern cryptographic libraries:
- @noble/curves - Ed25519, X25519
- @noble/ciphers - XChaCha20-Poly1305
- @noble/hashes - BLAKE3, SHA-256
- multiformats - CID support
Status: ✅ Protocol v2.0.0 - Implementation Complete
A protocol for the people, by the people.