[TEMP CHECK] ENS invalid name refund proposal

[TEMP CHECK] ENS invalid name refund proposal

This is a proposal to give refunds to the ENS names that used to be valid but now invalid (or causes different normalisation results) due to the new name normalization standard raffy has been working.


There are three options for the refund and here is the overall cost

Option fee refund condition fee premium gas total eth price total in usd
A last remaining 77 19 74 170 1795 $305,150
B last all 224 19 74 317 1795 $569,015
C all 232 19 74 325 1795 $583,375
invalid names 9881
refund addresses 3677

The refund condition explained

The refund consists of 3 parts.

  1. Registration and renewal fee
  2. Premium (the extra amount paid after a name is expired and put with 90 days decaying premium)
  3. The gas spent to register/renew (the gas fee is estimated based on the last one month average gas cost with the gas price at the time of the transaction)

For 1, there are potentially three ways to refund

  • A: The last remaining registration fee or renewal fee
  • B: The last registration fee or renewal fee
  • C: All fees paid

The refund excludes any period when the name expired. This could be debatable as some people complain that they are no longer able to renew the invalid names from our UI. However, It also raises the risk of users digging in the expired names with high premium and re-register just so that users can get the full premium.


  1. 2019-03-23 Register 2.1 ETH by X (base 0.1, premium 2) with gas fee 0.0001 then expires
  2. 2020-03-23 Register 1.1 ETH by Y (base 0.1, premium 1) with gas fee 0.0001
  3. 2021-03-23 Renew 0.03 ETH by Y until 2024-03-23(3 years) with gas fee 0.0001
  4. 2022-01-04 Transfer from Y to Z
  5. 2023-03-23 Refund day. Total duration 5 years, remaining 1 year (0.01)

At this point.

  • X paid 2.1001 ETH
  • Y paid 1.1302 ETH
  • Z paid 0 ETH (More likely it was sold from B to C)

In this scenario, “Premium” is 1 ETH and the total gas fee is 0.0002 For the registration/renewal,

  • Option A is 0.01 (remaining duration of the 0.03 renewal)
  • Option B is 0.03 (renewal 0.03)
  • Option C is 0.13 (base registration 0.1 + renewal 0.03)

How do I know if my name is eligible

Please refer to this post to find out whether your name is eligible for not. Your name is eligible for refund only if “Different”, or “Error but Norm”. Please also bear in mind that it excludes names that has

Next Step

This is still not the final version so please post your feedback , questions, and bug report.

Once the script and data is finalized, we will raise a social vote on which method we refund (Option A, B,C, or no refund).

We will refund by bulk transfer so the each recipient does not have to pay gas to claim. The DAO proposal will add the extra gas cost for the operation.


The data was collected as of March 30th 16:00 UTC. The data will be recollected at the end of the voting result.

  • refund_addresses = This includes all the refund candidate addresses with number of names they own, sum of premium, gas, and fee (in 3 different options)
  • refund_names = The breakdown of refund_address for each name the address own with the etherscan url to inspect the history of the name

The query is on github


  • 25 names were owned by 0x000…dead (which are excluded from the list)
  • 1883 names contain invisible spoofing chars (which are excluded from the list)
  • On average, each address receives the refund of 0.04-0.08 ETH (depending on the options)
  • 60% of all the eligible addresses has only 1 name (90% has less than 5 names)
  • Top 10% of all the eligible addresses receive 32-33% of all the refund amount
  • The owner with largest number of names eligible for refund is 0x350c8181846e7d12f6a81fc756010f657705cea7 and has 177 names
  • The largest refund amount will be “ᴇᴛʜᴇʀᴇᴜᴍ” owned by 0x4ac5ed4b31f4f0e16bd96bf2d9f96200d7c266af and eligible for 15.28 ETH (mostly for premium)
  • The biggest gas refund will be to 0x372973309f827b5c3864115ce121c96ef9cb1658 owning 90 names spending 3.2 ETH in gas in total

Update: the gas cost to conduct the bulk transfer would be around 1.5 ETH at 40 gwei


Just a thought. Because B (return all fee of the current period) and C (return everything) is similar in terms of the refund amount, I suggest to combine the two and make the voting option of A (last remaining), B(all), C(no refund).


I think refunding names that are now illegal is very noble and I’m glad this is under consideration.

To get a birds-eye view, I computed a breakdown report for the 11764 (9881+1883) names. Here’s a quick overview:

  • Disallowed: image
  • Diff Norm: image

While computing this report, I noticed there was an additional error type that I had excluded because all my analysis worked on labels (eg. no sep.arator). There are 54 names which contain a "." and must of have been registered via contract. IMO, these should also be excluded.

I think it’s wise not to refund registrations (the 1883 from above) that when emoji (w/FE0F allowances) are removed, still contain ZWJ. These are almost all malicious spoofs except for the speculative emoji ZWJ gambles which are still technically spoofs because, until they’re supported sequences, they look exactly like distinct emoji.

I agree with Matoken’s list and I support A or B.


I agree with raffy’s perspective.

This topic is on the weekly ecosystem call agenda to gather additional feedback.


I can reflect this in the report. Are you going to reflect this as a change to the library?


No change required. I simply treat the registration “a.b”.eth as two (“a” and “b”) in my datasets, so I hadn’t considered the refund case for it.

1 Like

Where does it contain the list of 54 names?

1 Like

Oh sorry, https://adraffy.github.io/ens-norm-tests/test-breakdown/refund-matoken/tally.json under key “not a label” or just any name with a “.”

1 Like

Thanks for the info. I added the exclusion of “.” in my query. These names (was 52 not 54 for some reason) used up 0.3-04ETH ( 0.1-0.2 registration fees and 0.2 on gas cost) which will be subtracted from the earlier data provided.

all_addresses: 20,
all_names: 52,
all_premium: 0,
all_last_remaining_cost: 0.1023434248731609,
all_total_cost: 0.2329266675244665,
all_last_cost: 0.2329266675244665,
all_gas_spent: 0.2582836837284448
1 Like

I have a heap of names registered through app.ens.domains

  • ‘SpaceX
  • McDonald‘s
  • NFT‘s
  • ‘Money
  • ‘Bitcoin
  • ‘Ethereum
  • ‘Sony

And anyone simply a few names that used the apostrophe.

I can currently use them to receive and send crypto.

Be cool if they were included in update.

Unfortunately, I only selected one apostrophe (2019 (’) RIGHT APOSTROPHE) to remain legal in the new normalization spec, and only in specific circumstances (cannot lead, trail, or touch.)

The names you list are now disallowed and part of the refund process.

I think the following is sufficient justification for this change:

  • ’Bitcoin
  • ʼBitcoin
  • ′Bitcoin
  • ‛Bitcoin
  • ‘Bitcoin
  • ‵Bitcoin
  • ῾Bitcoin

Although there are many quotation/punctuation characters allowed in UTS-46, I don’t think there’s a single legacy registrar on the planet that permits these characters to be registered.

1 Like


When does the refund process start?