Design Decisions
- Full ed25519 public keys for peer identifiers (instead of fingerprints)
- Peer's public key must be known in order to be able to connect or exchange messages
- Mutual TLS used for establishing TCP connections
- Derived shared secret used for encrypting relayed messages
- Transport agnostic object based communication
- Encoding agnostic objects
- Object keys include a hint that defines the expected type of their value
- Object attributes have a limited set of types (int, float, string, bytes, bool, map, array)
- Encoding agnostic object hashes
- Null values are ignored
- Empty arrays and maps are ignored
- Maps keys are sorted
- Floats are normalized as IEEE float (not final)
- Integers are normalized as strings
- Discovery is delegated to a sub-set of the network's peers