Sketch of high-level mathematical model
- We assume an opaque, cryptographic, compositional identity system (as defined here, although rather than citing the specs we should include these definitions directly in the report).
- We assume a dynamic underlying physical network topology which is constantly changing - nodes (identified by cryptographic identity) are moving between networks, switching IP addresses, even switching physical models completely (e.g. Bluetooth, LoRa).
- We assume that - at any network time slice - each node has a specific subscription preference function, which can be expressed as a predicate
Payload -> Boolean
, which specifies which sorts of message payloads they would like to receive. This predicate is also expected to be constantly changing (although not too quickly). - We want to provide a generalized primitive
Send
Send
takes:- an opaque payload (
[]byte
) - a target external identity (which may be decomposable)
- routing preferences and constraints (e.g. cost vs latency vs bandwidth)
- information flow preferences and constraints (exact form TBD, see here for inspiration)
- an opaque payload (
- The implementation of
Send
should (across this distributed network)- deliver the payload to all nodes who:
- are part of the target external identity, and
- are interested in the payload (determined by their preference predicate)
- … while optimizing for the specified routing preferences as best as possible,
- … not violating any of the routing constraints,
- … respecting the specified information flow preferences as best as possible,
- … and not violating any of the information flow constraints.
- deliver the payload to all nodes who:
- In general, the metadata gossiped around the network is designed to facilitate this implementation of
Send
, both from a completeness perspective (the message payloads reaching the right destinations) and from an optimization perspective (the routing and information flow preferences being optimized for as best as possible). - In general, routing is a Bayesian inference problem, which can be split into two parts:
- Given known information (observed network traffic in the past), infer the probability distribution of underlying network topology states.
- Given the probability distribution of underlying network topology states and the routing preferences/constraints, route the message in a way which optimizes for the preferences and does not violate any of the constraints.