What Are Developers?
Developers take custody of chips from manufacturers and distribute enrolled chips to end users or other projects that are building on top of the Developer's infrastructure. Developers were referred to as TSMs in previous iterations of ERS.
How is a Developer added?
A prospective Developer must first claim an available ERS name they wish to use, creating a [developer].ers name. This subdomain will be used to identify all projects launched under the Developer, for instance [project].[developer].ers. Adding a Developer is a three step process:
- The Developer requests a name from the ERS Name Approver (opens in a new tab). The ERS Name Approver will generate a
_nameApprovalProofif the name is not otherwise reserved. The ERS Name Approver is a governed function in ERS and reserves many common names; owners of a corresponding.ethname may be able to claim a name from the corresponding account presuming the name is not otherwise reserved. - The Developer submits the
_nameApprovalProof, the_developerNameand a_proofTimestampto theclaimNamefunction of theDeveloperNameGovernor. If the proof is recent and valid, theDeveloperNameGovernoradds the "allowed" Developer to theDeveloperRegistry. - The Developer calls
createNewDeveloperRegistrarwhich deploys a newDeveloperRegistrarcontract that is owned by the Developer. This contract is used to manage the Developer's projects. When callingcreateNewDeveloperRegistrarthe caller can select an implmentation ofDeveloperRegistrarFactorythey wish to use. Once deployed the implementation cannot be changed.DeveloperRegistrarFactoriesare permissioned implementations that can only be added by governance.
What can Developers do?
Once the Developer has their DeveloperRegistrar deployed they can begin adding projects. Developers have two options for adding projects:
-
Developers add projects they create by calling
addProjecton theirDeveloperRegistrarfrom the owner address of theirDeveloperRegistrar -
They can change the owner of their
DeveloperRegistrarto another contract address which handles permissioning and any other requirements the Developer wants to impose on projects using it's namespace. This contract can then calladdProjecton theDeveloperRegistrarto add projects.IProjectRegistrar _projectRegistrar, bytes32 _nameHash, bytes32 _serviceId, uint256 _lockinPeriod
Through projects, developers can in turn addChips, which in turn creates an immutable link from chip to developer and project.