Boson Integration
PC2 integrates with the Boson Network for decentralized identity and connectivity.
Boson Services
PC2 implements five Boson-related services:
IdentityService
Manages the node's cryptographic identity:
{
"nodeId": "2abc...xyz",
"did": "did:boson:2abc...xyz",
"publicKey": "<Uint8Array>",
"privateKey": "<Uint8Array>"
}
Storage: data/identity/identity.json
UsernameService
Registers human-readable usernames:
alice.ela.city -> nodeId -> IP:port
Usernames are stored in the DHT and resolved by super nodes.
ConnectivityService
Detects network conditions:
- Public IP detection
- NAT type detection
- Port availability
- Super node reachability
ActiveProxyClient
Connects to Active Proxy for NAT traversal. See NAT Traversal for details.
BosonService
Orchestrates all Boson services on startup.
Identity Creation
Identity is created during the Setup Wizard on first login.
Flow
- Generate random entropy
- Create BIP39 mnemonic (12 words)
- Derive Ed25519 keypair from seed
- Compute Node ID = Base58(publicKey)
- Create DID = "did:boson:" + nodeId
- Save to
identity.json
Recovery Phrase
The 12-word mnemonic can restore your identity on any PC2 node.
Store safely: anyone with this phrase can impersonate your node.
DHT Operations
Storing Data
await dht.put(
sha256("username:alice"),
{
nodeId: "2abc...",
endpoint: "http://1.2.3.4:4200",
timestamp: Date.now(),
signature: sign(data, privateKey)
}
);
Retrieving Data
const result = await dht.get(sha256("username:alice"));
// { nodeId, endpoint, timestamp, signature }
Super Node Connection
PC2 nodes connect to super nodes for:
| Purpose | Protocol | Port |
|---|---|---|
| DHT Bootstrap | UDP | 39001 |
| Active Proxy | TCP | 8090 |
| Gateway Registration | HTTPS | 443 |
Bootstrap Flow
- Connect to known super node
- Join DHT network
- Announce presence
- Discover peers
Signatures
All DHT data is signed with Ed25519:
const signature = sign(JSON.stringify(data), privateKey);
const valid = verify(signature, data, publicKey);
This prevents tampering and impersonation.
DID Format
PC2 uses the Boson DID method:
did:boson:2abcdefghijklmnopqrstuvwxyz123456789
└─────────── Node ID (Base58) ─────────┘
DIDs enable verifiable identity, cross-platform authentication, and decentralized PKI.
Configuration
Super nodes are configured in data/config/pc2.json:
{
"boson": {
"superNodes": [
{
"host": "198.51.100.1",
"dhtPort": 39001,
"proxyPort": 8090
}
],
"enabled": true
}
}
Troubleshooting
Identity not found: Check cat data/identity/identity.json. If missing, delete data directory and re-run setup wizard.
DHT connection failed: Test super node connectivity: nc -vuz 198.51.100.1 39001. Check firewall allows UDP outbound.
Username conflict: Choose a different username, or contact admin if you believe it's yours.