System Architecture
Contracts
ChipRegistry
Represents the entry point for any chip resolution actions. Since we will not be requiring complete standardization of Registrar contracts the Registry needs to be built such that any state changes are validated in the Registry contract. The ChipRegistry will be maintained by a consortium of manufacturers which have the ability to add new Developers which can then add enrollments to the ChipRegistry via their DeveloperRegistrar.
ManufacturerRegistry
Manufacturers enroll their chips into this Registry. For each enrollment they provide the signing address of their certificate, chipModel, authModel, enrollmentAuthModel, bootloaderApp.
ERSRegistry
ENS-like fork which provides human readable names for contracts related to Developers and Projects. Chips are immutably tied to an ERS name which provides uniqueness but also a path of ownership back to the Developer and thus Manufacturer.
DeveloperRegistry
Tracks approved Developers and acts as registrar of .ers domain name for ERSRegistry.
DeveloperRegistrar
Registrar through which all new Projects under the Developer name are launched. Registrar gives each project a [project].developer.ers name and sets the owner to the ProjectRegistrar. This contract will track all enrollments made by a Developer.
DeveloperRegistrarFactory
Factory contract for DeveloperRegistrar. Called by DeveloperRegistry to create a DeveloperRegistrar for new Developers.
ProjectRegistrar
Entry point for developers adding chips and users claiming chips. Can have custom code, but is responsible for setting the ers name for each chip in its enrollment [chip].project.developer.ers. Typically represents chips at PBTs or Physically Backed Tokens.
ServicesRegistry
Keeps track of all services that a chip is subscribed to. Individual services are represented by an id and are linked to various records which indicate the type of media / data the record represents (ipfs address, https address, contract address, etc). The ServicesRegistry is also responsible for tracking the primary service for a chip.