[Proposal] Anoma Network Architecture

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)
    • 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.
  • 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:
    1. Given known information (observed network traffic in the past), infer the probability distribution of underlying network topology states.
    2. 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.
1 Like