# Betanet Layer Prototype (L1, L2, L3, L5) **Quick prototype of Betanet layers L1, L2, L3, and L5** implemented as an asyncio simulation. This is for educational/demo purposes only — **not** production-ready code. ## Disclaimer This simulation **does not** use real Ed25519/X25519 cryptography. Crypto functions are stubbed with hash/HMAC placeholders to keep it simple and dependency-light. For better implementations, replace the placeholder crypto in: - `src/ashops.py` - `src/betanet_cryptography.py` - `src/htx_session.py` with real libraries like: - [PyNaCl](https://pynacl.readthedocs.io/) - [cryptography](https://cryptography.io/en/latest/) --- ## Mapping to the Betanet Spec | Spec Layer | This Prototype Implements | Notes | | ----------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------- | | **L1** Path selection & AS-hop validation | Simple `L1Path` & `PathSegment` with `ASHop` objects signed by AS keys | Validates SCION-like hop signatures | | **L2** Cover transport (HTX) | `HTXSession` with outer "fingerprint" mirroring & inner Noise-like handshake | Frame types: `STREAM`, `PING`, `KEY_UPDATE`, `CLOSE` | | **L3** Overlay mesh | `OverlayNode` with peerstore & content exchange (bitswap-style) | Simulates CID publication & retrieval | | **L5** Naming & trust | `AliasLedger` with self-certifying IDs & alias registration | Includes expiry and sequence tracking | --- ## Features - **Path building & validation (L1)** — verifies AS hop signatures before use. - **HTX transport sessions (L2)** — simulates TLS/QUIC-like outer wrapping with inner encrypted frames. - **Overlay network (L3)** — publish & retrieve content by CID from connected peers. - **Alias ledger (L5)** — map human-readable aliases to self-certifying IDs. --- ## Running the Demo ```bash # i have many mirrors thus the clone url might not match depending on where you # are seeing this. but I have basically same everywhere so cloning github is ok. git clone https://github.com/nishad-prime/betanet-layer-prototype.git cd betanet-layer-prototype python3 betanet_quick_impl.py ``` Expected output (trimmed for brevity): ``` [L1] Path validated [L3] Carol published CID ab12cd34ef56... [L5] Resolved carol.service -> deadbeefcafebabe... [L3] Alice retrieved content via overlay: b"Hello from Carol's content!" [L2][C] Received frame type=STREAM ... ... Demo complete. ``` --- ## Directory Structure ``` . |- betanet_quick_impl.py # Main asyncio simulation |- src/ |- alias_ledger.py # L5 alias registry |- ashop.py # L1 AS hop representation |- betanet_cryptography.py # Simplified keypair/signature |- htx_frame.py # HTX frame constants |- htx_session.py # L2 HTX transport session |- overlay_node.py # L3 overlay mesh node |- path.py # L1 path building/validation ``` --- ## Next Steps - Replace placeholder crypto with real Ed25519/X25519 implementations. - Swap in a real routing library for L1. - Expand L3 into a libp2p-compatible overlay. - Add tests for path validation, alias expiry, and HTX frame parsing.