My Public Brain

2023-09-01 Friday

DEFCON Video about Veilid

Needed to download and H.265 → H.264 convert with HandBrake

prior art

Tor

Privacy-oriented network

IPFS

Inter Planetary File System

Distributed Data Storage

similar but designed for speed and providing services over a privately routed network

goals

Security First

Rust

Runs Everywhere

Standard Protocols

UDP

TCP

Websockets

All In network

No external services

avoid DNS

No STUN / TURN

Privacy Focused

Nodes != Identity

Resilient

latency

high churn

network switching

community and user focus

everybody deserves privacy

Nodes

every application running veilid-core is a node

no special nodes

headless nodes with veilid-server

JSON API for simple apps

veilid-python

veilid-cli

protocols

framed RPC operations up to 64k

Network Topology

on node activation keys are fetched from Veilid bootstrap server

that’s where DNS comes in, but after that it’s a Veilid-specific routing table

bootstrapped info is persistent, so shouldn’t need to be fetched again

Bootstrapping

ask bootstaps to find self

public address detection

relay configuration

peer minimumr efresh

network class detection

ping validation

cryptography

VLD0

Veilid cryptography suite

We did not roll our own crypto. We know better than that.

Property Spec Used
Authentication ED25519
Key Exchange x25519
Encryption XChaCha20-Poly1305
Message Digest BLAKE3
Key Derivation Argon2

Secure Storage

ProtectedStore

device-level

TableStore

encrypted key-value database

RecordStore

distributed hash table storage

BlockStore

content-addressable data distribution

RPC Protocol

default port 5150

Schema Language

Cap’n Proto

Developed by Protobuf author; intended to address some of its shortcomings

RPC

Question / Answer and Statement RPC modes are supported

private routing structures fully supported in-schema (no magic blobs)

Schema evolution built-in

RPC schema is cryptography-independent

RPC ops are a nested set of Cap’n Proto operations to described actions

Distributed Hash Tables (DHT)

basically just search

better search w/ 1MB per key

signed keys with public and private values

allows multiple writers to key sub-chunks

Private Routing

safety route

private route

compiled route

addresses and public keys of next hop are embedded in packet envelope

future

per-hop payload keying

simplify directionality

increase hop count

eliminate hop counting

hop caching

There’s a Power User Quick Start

FFI+JS plugin support for Dart and Flutter

how can you help?

coders and hackers

app developers

usability experts

open source + governance

15:09 New feature on My Public Brain: slugs instead of UUIDs for permalinks

Nothing fancy yet. Just use slug(pageBlock["page-name"]) for every top-level block in the exported graph.

slug - npm