Skip to main content

Overview

CJDNS is an encrypted IPv6 network that uses public-key cryptography for address allocation and a distributed hash table (DHT) for routing. It provides end-to-end encryption and protection from traffic analysis while maintaining the speed of direct connections.
CJDNS support was added to Bitcoin Core in version 23.0. It provides a complementary privacy option alongside Tor and I2P.

What is CJDNS?

CJDNS operates like a distributed, shared VPN:
  • Encrypted routing: All traffic is end-to-end encrypted
  • Public-key addresses: IPv6 addresses derived from public keys
  • DHT routing: Decentralized routing via distributed hash table
  • fc00::/8 range: Uses reserved IPv6 address space
  • Multiple entry points: Connect through any peer
  • Reach any participant: Direct connectivity to all network members

How CJDNS Differs from Other Networks

CJDNS is fast but does not hide the sender and recipient from intermediate routers. It’s best used for encrypted, censorship-resistant connectivity rather than anonymity.

Installation

1

Install CJDNS

Follow the official installation guide:
Full instructions: How to Install CJDNS
2

Find a Peer

You need to connect to at least one CJDNS peer. Use the Hyperboria peer finder:
The script will show available peers with ping results.
3

Configure Peer Connection

Copy peer credentials from test results into your cjdroute.conf:
4

Launch CJDNS

As root (default):
As unprivileged user:Follow non-root user guide
5

Verify Connection

Bitcoin Core Configuration

Once CJDNS is running, enabling Bitcoin Core support is simple:
This single flag tells Bitcoin Core that:
  • fc00::/8 addresses are CJDNS network addresses
  • Not RFC4193 IPv6 local network addresses
  • Should be treated as reachable Internet addresses

Why -cjdnsreachable is Required

The fc00::/8 range is normally reserved for IPv6 local networks (RFC4193). The -cjdnsreachable flag instructs Bitcoin Core to:
  1. Treat incoming fc00::/8 connections as CJDNS (not local IPv6)
  2. Gossip your fc00::/8 address to peers if you have one
  3. Perform proper address management for CJDNS peers
Without this flag, Bitcoin Core would ignore CJDNS addresses as unreachable local addresses.

Configuration Options

Basic Configuration

Example Configurations

CJDNS Only:
bitcoin.conf
All Privacy Networks:
bitcoin.conf
Multi-Network with CJDNS:
bitcoin.conf
Bridge Node:
bitcoin.conf

Monitoring and Verification

Check Your CJDNS Address

Example CJDNS address: fc12:3456:789a:bcde:f012:3456:789a:bcde

View CJDNS Peers

Verify CJDNS Connectivity

Network Characteristics

Performance

CJDNS offers near-native performance:
  • Speed: Comparable to direct Internet connections
  • Latency: Low overhead from encryption
  • Throughput: Not significantly limited by network
  • Scalability: DHT routing scales well
CJDNS is the fastest privacy network option, making it ideal for bandwidth-intensive operations like initial blockchain download.

Privacy Properties

What CJDNS provides:
  • End-to-end encryption
  • Traffic analysis protection
  • Censorship resistance
  • Network filtering resistance
What CJDNS does NOT provide:
  • Sender anonymity (intermediate routers see source)
  • Receiver anonymity (intermediate routers see destination)
  • Hiding communication patterns
CJDNS provides encryption and censorship resistance, not anonymity. Intermediate routers can see who is communicating with whom (but not the content).

Use Cases

  1. Censorship circumvention: Access Bitcoin network despite filtering
  2. Fast privacy option: Encrypted connections with minimal overhead
  3. Multi-network redundancy: Fallback if other networks fail
  4. Bridge operations: Connect privacy and clearnet networks
  5. Initial sync: Faster than Tor/I2P for blockchain download

When to Combine Networks

Network Combinations:
  • CJDNS + Tor: Speed + Anonymity
  • CJDNS + I2P: Redundancy between fast and slow networks
  • CJDNS + Clearnet: Bridge node with encryption option
  • All privacy nets: Maximum redundancy and reach

Advanced Configuration

Multi-Network Privacy Node

bitcoin.conf

CJDNS-Only Node

bitcoin.conf

CJDNS + Clearnet Bridge

bitcoin.conf

Troubleshooting

CJDNS Not Running

Solution:

No CJDNS Peers Found

Permission Issues

If CJDNS fails to start:

TUN Interface Issues

Security Considerations

Best Practices:
  1. Keep CJDNS updated: Regular security updates
  2. Monitor peer connections: Use peerStats regularly
  3. Firewall rules: Ensure CJDNS ports are properly configured
  4. Backup config: Save cjdroute.conf securely
  5. Peer selection: Connect to trusted, reliable peers

Network Exposure Considerations

Running bridge nodes (CJDNS + clearnet) may allow correlation of identities through:
  • Timing analysis
  • Shared runtime characteristics
  • Connection pattern analysis
Only use bridge mode if you don’t require strict identity separation.

Performance Tuning

CJDNS performance is generally good by default, but you can optimize:

Router Configuration

In cjdroute.conf:

Bitcoin Core Settings

bitcoin.conf

Resources and Documentation

CJDNS Documentation

Bitcoin Core Integration

Comparison with Other Privacy Networks

When to Choose CJDNS

Choose CJDNS if you need:
  • Fast encrypted connections
  • Censorship resistance
  • Low-latency operations
  • Mesh network architecture
Choose Tor if you need:
  • Strong sender anonymity
  • Hidden services
  • Widely deployed network
Choose I2P if you need:
  • Fully decentralized architecture
  • Long-lived connections
  • Complementary to Tor
Best approach: Use multiple networks for redundancy and maximum reach.

See Also