Technical Requirements#

⚠️ This document is not a requirements specification.
It contains a mix of ideas, research topics, and design considerations.
It needs to be decomposed into requirements, architecture, and research artifacts.

Foundational#

  • Solidify our definitions of main terminology
  • If we keep “groups” as first class citizen and not implementation detail, describe their mechanics
  • Provide guidelines and best practices for creating post-platforms/w3-adapters, to encourage more interoperable ecosystem
    • the usage of eNames
    • reusing and creating ontologies
    • handling authorization
    • aggregation and caching
  • Make all above documentation AI friendly. This way it can answer questions and check consistency with our codebase
  • Describe methods for managing pseudonymous profiles
  • Explain how anonymous transactions will work. And in general explain PET in the ecosystem.
  • Explain the limits of security and privacy in currently deployed eVaults
  • Capacity planning for eVaults and infrastructure services

Functional#

eVault#

  • Carefully define and generalize the model of controlling eName (forms of binding)
  • Support deduplication of eNames and eVaults, perhaps with eMover
  • Evaluate the meta-envelopes model (flat) for complex topologies of data
  • Strictly adhere to declared ontology within a single meta-envelope
  • Explore dynamic GraphQL queries/mutation from schemas
  • Research ways to map (without loss of performance) knowledge graph inference and formalisms such as SPARQL to meta-envelopes
  • Provide rigorous authorization layer
    • Define levels of access to resource for users/groups/platforms. Roughly like wac
    • Would be nice to be able to inherit ACLs, but we don’t have explicit hierarchies
    • Consider opt-in vs. opt-out systems
    • Can we support attribute based or fully semantic ACLs?
    • If not, we should define useful categories: e.g., reputation driven authorization, authenticated users, certified platforms
  • Improve platform’s authentication with eVaults details
  • Involve linked data specialists to aid with ontology mapping (for adapters) and alignment in general
  • Explain how two mostly similar ontologies can be reconciled at the schema and eVault level
  • Add basic semantic transformation engine to eVault, allowing to have Big-Bang sweeps of semantic updates, e.g., after merging two popular ontologies.
  • Consider encryption of data at rest: with external keys, keys on eVault, keys in hardware
  • Initiate research for “rootless” provisioners – where eVault provider has no backdoor to eVault envelopes
  • Rethink “audit” logs
    • recorded data (platform, user, timestamp, hash of payload)
    • how is non repudiation guaranteed?
    • how can we guarantee log integrity?
    • how we are actually going to provide the logs to auditors?
    • can audits preserve privacy?

Infrastructural platforms#

  • eVault provisioners
    • seemlessly support single eVault on VM (1st model) and shared tenancy (current model)
  • registries – resolvers of eNames to eVault protocol endpoints
    • ideally, the data is stored on platform’s eVault and can be
  • ontology collections – resolvers of eNames to schemas
  • awareness endpoints – fan-out for awareness messages
    • awareness must respect ACLs and any other authorization mechanisms we may have
  • caching layer (ora CDN-like)
    • must respect ACLs

Note: it is likely that big eVault providers are going to serve all above as well

Note2: When possible, do not create special endpoints and API, just use envelopes and platform eVaults. For example, the registry can store eName->uri mappings as envelopes on its eVault; awareness platform can record subscriptions information on its eVault, etc.

Resilience#

  • We must have at least two instances of everything

  • We should have different implementations for everything.

  • We should have a discovery mechanism to obtain available infra. platforms. The multitude of them can be used for active load balancing or for failing over when primary choice is down.

Development#

  • Support proper staging
  • A/B testing
  • Provide testing sandboxes
    • In containers
    • With accurate mocks for unit testing