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
_nameApprovalProof
if 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.eth
name may be able to claim a name from the corresponding account presuming the name is not otherwise reserved. - The Developer submits the
_nameApprovalProof
, the_developerName
and a_proofTimestamp
to theclaimName
function of theDeveloperNameGovernor
. If the proof is recent and valid, theDeveloperNameGovernor
adds the "allowed" Developer to theDeveloperRegistry
. - The Developer calls
createNewDeveloperRegistrar
which deploys a newDeveloperRegistrar
contract that is owned by the Developer. This contract is used to manage the Developer's projects. When callingcreateNewDeveloperRegistrar
the caller can select an implmentation ofDeveloperRegistrarFactory
they wish to use. Once deployed the implementation cannot be changed.DeveloperRegistrarFactories
are 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
addProject
on theirDeveloperRegistrar
from the owner address of theirDeveloperRegistrar
-
They can change the owner of their
DeveloperRegistrar
to 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 calladdProject
on theDeveloperRegistrar
to 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.