The existing ENSIP-14 draft proposes a method for attributing the source of .eth name registrations. Apps that help people register their .eth names, such as ens.domains, ensfairy.xyz and others achieve this attribution by placing a special fingerprint on the first 64 bits of a parameter called ‘secret’ that is passed during each registration. A dune dashboard has been created showing this approach is able to provide attribution for registrations. All good so far.
But what about attribution for .eth renewals? Renewal attribution is very important, but is missing !
For example, in all 4 of the last 4 months the revenue for .eth renewals was greater than the revenue for .eth registrations. Have a look in this revenue dashboard.
We can hope that renewal revenue will continue surpassing registrations. If we don’t maintain strong renewal rates, there’s a very negative impact. It’s like trying to fill a bucket with water that has a large hole at the bottom. The smaller we make that leak, the faster we fill the bucket and grow the ENS ecosystem !
ENSIP-14 can enable the creation of strong incentive programs for web3 app developers to integrate ENS-related functionality directly into their apps. Rainbow Wallet is a good example. Rainbow integrated a .eth registration feature directly into their wallet app. Wouldn’t it be awesome if we could give more web3 apps and wallets stronger financial incentives to provide similar features?
If we don’t give a mechanism for attributing renewals then more than 50% of .eth revenue might not be possible to attribute. This means a lot less potential rewards and incentives for web3 apps to be more like Rainbow.
At a technical level, ENS name durations are specified in seconds, not years. You don’t register / renew a name for 1 year. You actually register / renew a name for 31,536,000 seconds.
Generally all user interfaces for register / renewal ask the user to set the duration in years. There are also a few special cases, such as ens.vision, that allow for duration to be set in months. Each month represents 2,628,000 seconds.
We’re familiar with the idea that a 5+ character .eth name is $5.00 USD / year. But another way to think about this is that a 5+ character .eth name is actually $0.0000002 per second.
The ‘secret’ parameter passed during registrations doesn’t exist when making a renewal. But we can use a very similar technique to achieve our goal using the ‘duration’ parameter.
Instead of adding a 64 bit attribution fingerprint in the ‘secret’ parameter, we can add a 16 bit attribution fingerprint in the ‘duration’ parameter that is passed on both register AND renew.
A 16 bit fingerprint is still large. That gives a space of 65,536 distinct potential attributions. ENS will be unbelievably fortunate if we ever have the “problem” that there are more than 65,536 web3 apps integrating registration and renewal functionality for .eth names !
Similar to the existing ENSIP-14 draft, a web3 app could generate their attribution fingerprint by taking the first 2 bytes (rather than the first 4 bytes) of the namehash of their domain name.
If we say that
MONTHS_REQUESTED represents the number of months a user wants to register / renew a name for then the attribution fingerprint could be applied to a ‘duration’ parameter using the following pseudocode:
SECONDS_PER_MONTH = 2,628,000
ATTRIBUTION_FINGERPRINT = getFirst2Bytes(namehash(“examplewebsite.com”))
actualDuration = (MONTHS_REQUESTED * SECONDS_PER_MONTH) + ATTRIBUTION_FINGERPRINT
In other words, a period ranging between 0 seconds and 65,535 seconds of duration would be automatically added to the user’s request as an attribution fingerprint. The exact number of seconds added would depend on the exact fingerprint.
In the highest case of adding 65,535 seconds of duration, this would add only $0.01 to the price of the registration or renewal. In the average case it would be $0.005, or about half of 1 cent. And absolutely none of these prices would go to waste. Every single second of that period would be time the domain was registered or renewed for.
The attribution fingerprint of each registration or renewal transaction on the blockchain could also be simply checked. Given
actualDuration as the duration recorded on the blockchain for the registration or renewal:
attributionFingerprint = actualDuration % SECONDS_PER_MONTH
- Multiply the potential incentives for web3 apps to integrate ENS functionality (2x or more!)
- Acquire better data about which apps are driving all ENS revenue types. This visibility also helps spread knowledge and inspiration across the community on the approaches that are working best.
- Eliminate the problem with attribution tracking needing to inspect internal transactions. Of course there are workarounds to this, such as using the Dune Dashboard. However, that’s inconvenient as not many tools support inspection of internal transactions like Dune. Dune also updates infrequently. On the other hand, the ‘duration’ approach being proposed here could be tracked through some minor updates to the official ENS Subgraph in real time and exposed for easy access to the whole community through GraphQL APIs.
- Standardize attribution tracking logic for all .eth revenue generating transactions.
Feedback appreciated !