Intro
Knowing which website registered a .eth name would be useful, like knowing how many registrations were done via ensfairy.xyz.
We can leverage the existing contract and create a social convention to get visibility into the platform source.
How
The ETH Registrar Controller takes the following input data. Let’s use the registration of loompa.eth as an example.
# | Name | Type | Data |
---|---|---|---|
0 | name | string | loompa |
1 | owner | address | 0x534631Bcf33BDb069fB20A93d2fdb9e4D4dD42CF |
2 | duration | uint256 | 31556952 |
3 | secret | bytes32 | 0xb7b31b6b95633cbcc635528d3b7196bc89d13566c1be2068af0cad6fb3ecebf0 |
4 | resolver | address | 0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41 |
The secret
parameter is random data that obscures the name before the final step of the registration process is complete.
It is 32 bytes of entropy and the ens manager app on app.ens.domains generates it by calling the following:
require('crypto').randomBytes(32)
We can adopt a social convention that generates the secret from a combination of taking the first 10 characters of sha256(‘platform_name’) and combines it with the appropriate number of random bytes.
This way the first 10 char of the secret would be the platform name. So for example if the above was registered via ensfairy the secret would be:
0x1b7f8b612c633cbcc635528d3b7196bc89d13566c1be2068af0cad6fb3ecebf0
The bold part is the first 10 characters of sha256(‘ensfairy’)
With this we can attribute registrations using the first 10 chars of the secret.
Objections
Can’t anyone use someone else’s platform name?
Yep 100%, I don’t see this as an issue.
Given that economic value could accrue to the top platforms there would be an incentive for the major players to play ball.
Request
Feedback is appreciated.