[TEMP CHECK] ENS invalid name refund proposal

I think that for simplicity we should set impartial rules and adhere to them; err on the side of no false-negatives, rather than no false-positives.

1 Like

Sorry if this was blocked on me, I forgot about this and was only reminded the other evening in Discord.

I split the names into a few categories: output.json

  not_ensip1: 203,        // not ENSIP-1
  wrong_pure_emoji: 208,  // just emoji but wrong form => REFUND
  braille_spacer: 62,     // spoof
  small_caps: 373,        // now invalid => REFUND
  arabic_an: 772,         // now mapped => REFUND
  single_script: 3239,    // 90%? REFUND but contains spoofs
  latin_like: 174,        // 2+ of (Latin, Greek, Cyrl), mostly spoofs 
  all_invalid: 2780,      // 90%? REFUND but contains spoofs
  unknown: 208

However, some of the names still require case-by-case inspection:

I think you can safely remove braille_spacer, not_ensip1, and the bulk of latin_like (~400 names). I’d error on the side of caution and refund the remainder.

1 Like

@nick @raffy @matoken.eth
I bought that ETHEREUM.eth as collectible and to use it for the creation of an “elective” pfp, for maybe “reselling subnames” one day connected to it
not maliciously
very honestly I don’t see how it could be maliciously used. It isn’t a name with mixed chars.
raffy app was giving green lights
I had several ethereum.eth variations with some artistic shapes, all of them using chars of the same family, no weird thing nor tricks nor bullshit.
some have been excluded and I couldn’t renew them, that one was already mine, I forgot to renew it, and I bought it back at premium, not without pain. I was the previous owner and I bought it again.
Since the interface allowed me to buy it I was pretty in peace with it, the other names were excluded but this one was still accepted.
and that’s the point, when I realized raffy excluded a new series of chars I found impossible to renew some of the special ethereum.eth versions I had (an example is that weird font that messes up completely the writing, often used in cyberpunk situations - I forgot the name)
in few words I was really collecting some of the nicest version of ethereum.eth with pure sequences of special chars.
All of them impossible to be confused.
Now things are becoming embarrassing.
(not to mention that I will have to pay 26% of taxes next year for it if it is not recognized as some kind of token I can resell)
it was a straight name with all chars of the same family…
why do you consider it malicious?
I just saw this final debate and I am going to sleep shocked lol
I know there are people who bought tons of names, so basically some of them may be even more affected than me. Very honestly I don’t know what to say.
The logic thing had to be to allow only straight alphabet and then add later other special chars one by one after checking them, discussing them, and voting them.
This process instead was approached backwards. We al know it was an error, but you can’t judge the people because your feeling is “maybe they wanted to scam someone”
Also the word malicious is very likely inappropriate in many situations, since a lot of people have no idea of how encoding works. I am a dev, I know how it works, but I know it much better now after following raffy’s research. We all underestimated the encoding problem. Don’t say it is not true.

I am so malicious I am doxxing myself.
it was the best name ever
now I have no name and no 15eth
it is a pure small-cap with chars of the same family, no tricks
remember many people really bought as collectibles
as raffy noted: smallcaps don’t have S
so I can imagine many people would tend to put a normal S to complete a smallcaps word if they need an S
it is not necessarily a malicious attitude
…but it wasn’t my case anyway!
if it makes you feel better check the few names I had and you excluded and didn’t allow me to renew, and you will see I always had pretty straight things

but anyway who can judge who is good and who is bad?
many of us really approached the problem as an artistic opportunity
(those who registered zero length dividers actually look a bit scammy lol but still I would refund everyone and close this chapter once and for all: error done => error fixed)

And after that if you’ll get scammed go to the police

Refund everyone or refund no one.
Or become the scammers.

The name ᴇᴛʜᴇʀᴇᴜᴍ.eth was valid, and now it isn’t, and should be refunded. I don’t think anyone was suggesting otherwise.

I apologize that small-caps were removed however I believe it was for the best.

I agree with you that it’s very hard to decide intent and the line between creative and malicious is very subjective.


After trying to follow you while digging in the encoding mess I consider you one of the few planetary experts. IF you suggest to remove smallcaps or anything else I don’t even ask you why. The important is to build a bulletproof machine. Properly because it is a complex problem.
But yes my EHTEREUM.eth made me feel pretty elitary!

Hey @cypherparty,
Sorry that one was deemed invalid buy the new standard. If you are refunded the full premium paid as described here, do you feel okay about the outcome in general?

if I get back the money… in few words I won’t be affected. I had dreams/visions but who cares.
I understand the reason and I consider it logic. Things must be bulletproof.
As I said if I’d have a time machine I would go back in time and suggest to start with simple latin alphabet and vote one by one any further chars the community would like to add.
But thinking retrospectively is always easier.
I doxxed myself because Makoto associated the words “questionable/scam” to the name I registered and lost. :face_with_monocle:

1 Like

actually I will be affected if the refund happens the next year and not this one, since I will have to refile my tax report, and next year I will have to explain what are those eth incoming, and maybe pay the taxes onthem too. We’ll see. I’ll pay a lawyer to know better. Once I see things moving.

1 Like

If the names expire will we still be entitled to the refund?

Also, is that the same for testnet names?

If the name expired before 18th June (the date the normalisation proposal passed), then no refund.
If the name expired after 18th June, then it should be in the refund list

No. Test names are for testing purpose and could change depending on the test upgrades so the ownership is not guaranteed.

1 Like

Yeah cool, sounds legit.

It says I’m eligible for 10 names refunded, A) 0.055 and B) 0.056

These are what I registered:

NEWYORK (Circled Letters)
BLOCKCHAIN (Circled Letters)

Im wondering, if I didn’t sell a name and just gifted it to a friend (E.g ‘1‘.eth) am I still eligible for a refund for that name?

Lastly, thank you to all ENS delegates, and Foundational Working Group Stewards. You’re all doing a fantastic job with the DAO.


1 Like

As I said, all the distribution addresses we collected using the date of 18th June. If the name was transferred before the data, your friend will get a refund. If after the date, then you will get the refund.

I suggest checking these 2 files to cross check the refunding address and amount


After today’s metagov meeting, we decided to go with OptionA (total refund amount is 115 ETH). I will coordinate with the steward to aim for the onchain voting at the end of September.

Just to reiterate, this is the canonical list of the refunding addresses.


FYI, none of these refund names contain Unicode 15.1 emoji.

1 Like

I’m pretty certain that these updates have affected some of my emoji Art domains. But not all of them…!

My punks are safe and still valid and working nicely!! :partying_face: And thank god for Legacy ! :joy::heart_eyes:

Just in time to showcase them all at the Beeple Punk event at the end of September.

So keen for it! Can’t wait to bring ENS to the party like nobody has seen before!

If I can suggest … consider using the datafield of the refund transactions to add the word “refund”
this will help avoid tax issues in many places of the world
an alternative smart option is to call the sending contract “ENS_refund_for_invalid_names” in order to clarify the nature of the transactions produced
or consider doing both!

Update (3rd Nov 2023):

After the DAO stewards spotted one negative refund amount in the refund addresses (-0.01669948333 for 0xe5aa8a233b0fe90ff9d68ba93ced601596992533), I re-analysed my queries and found a few errors.
I fixed the problem, reran the query and here are the diffs.

date count sum avg * appears_once > 0.01 ETH diff
27/06/2023 2973 114.00592800017606 0.03834709989915105 6 5
2/11/2023 2970 113.69976766451629 0.03828275005539269 3 5


  • appears_once means that 6 people no longer receive refund while 3 new people now receive refund
  • > 0.01 ETH diff means that 5 people receive more than 0.01 ETH and other 5 less than 0.01 ETH

The new refund address is updated at refund_addresses_021123 - Google Sheets

The Problems

  1. The original query was missing to include ETHRegistrarController4 registration controller which was introduced about the same time I created this query. The negative refund amount was because two renewal transactions(thisandthis made by the controller was not included in some of the query. These missing two transactions resulted in calculating the remaining amount as May-2023 - June-2023 instead of July-2023 - June-2023 for example. After the recalculation this address now receives instead of 0.04748966914 eth instead of -0.01669948333

  2. While fixing issue 1, I also noticed that some of the subsequent queries weren’t filtering event date by 2023-06-18 04:50:00+00 which was the end of the snapshot voting of the Approval of ENS Name Normalization Standard (ENSIP-15). As the result the original query included events happened between 18th June and 27th June when I ran the query.

The Affected addresses

type address old_total new_total diff
only_old 0x563476aa7b6f95c803a1e0115bd0902b4fb54e07 0.008797745527 0 -0.008797745527
only_old 0x41bf836348e4aa14e17d104731a65f84764ea4d8 0.0117206014 0 -0.0117206014
only_old 0xaf738f6c83d7d2c46723b727ce794f9c79cc47e6 0.01255643498 0 -0.01255643498
only_old 0xfb4bb705f6cb453f2f074b7b68a292a2fc2d3ae3 0.01039915335 0 -0.01039915335
only_old 0xca0d40f0363af5ed67585366ea92f679934066df 0.002318379684 0 -0.002318379684
only_old 0x7760200f89dce1def106c7886b07f4f9265fec85 0.007960011394 0 -0.007960011394
only_new 0x1ecd88d5d96efd2cd8a4d2f35bfb67f8ea61a567 0 0.03007973771 0.03007973771
only_new 0x4c4056ae546fc30f34356bf01c886a23241c9908 0 0.002318374726 0.002318374726
only_new 0x3991e3bd4ebaefc64f358a28e9b286fcbe9efad5 0 0.003420080935 0.003420080935
diff_old 0x8bdf6b52959581c0a8f4e99fa71b2225dc691814 0.3168692337 0.1842716597 -0.1325975739
diff_old 0xa5e0ecb5d075e86c3bf5d1b1042e154fee9a4798 0.7676089028 0.4369534242 -0.3306554786
diff_old 0x41bf836348e4aa14e17d104731a65f84764ea4d8 0.0117206014 0 -0.0117206014
diff_old 0xaf738f6c83d7d2c46723b727ce794f9c79cc47e6 0.01255643498 0 -0.01255643498
diff_old 0xfb4bb705f6cb453f2f074b7b68a292a2fc2d3ae3 0.01039915335 0 -0.01039915335
diff_new 0xf01365133118e3b4af61c83b56a7e180a716482a 0.1119770261 0.1602208216 0.04824379547
diff_new 0x72fddd31d88b262706d0e76f9c4efd898fcd418f 0.03826412052 0.05131973866 0.01305561813
diff_new 0xb1e4aa2f8e615493cfe9bcd9b0be1aed86546d12 0.01294040336 0.0364537346 0.02351333124
diff_new 0xe5aa8a233b0fe90ff9d68ba93ced601596992533 -0.01669948333 0.04748966914 0.06418915247
diff_new 0x1ecd88d5d96efd2cd8a4d2f35bfb67f8ea61a567 0 0.03007973771 0.03007973771

The Full Data

I now updated the full data of the previous one (taken 27th June) and the latest one (taken on 11th Nov).

In addition to the refund_address.csv and refund_name.csv, it also includes refund_names_w_events.csv|json which has the full registration/renewal/transfer transaction history.

If you json query tool like jq you can run the following query to see all the transactions related to the specific refund address

cat refund_names_w_events.json | jq '.[0][] | select(.last_owner == "0xe5aa8a233b0fe90ff9d68ba93ced601596992533")| {"time":.event_timestamp.value, event, transaction_hash}'
cat refund_names_w_events.json | jq '.[0][] | select(.last_owner == "0xa5e0ecb5d075e86c3bf5d1b1042e154fee9a4798")| {labelhash,tokenid,"time":.event_timestamp.value, gas_spent, event, last_owner, transaction_hash}'

  "labelhash": "0x5f16aa6db31cf35c0daca314ecbe2ad09d2c7e6b1bc363ea3871c432e0f2e9fb",
  "tokenid": "43009767505211382270326623157405683972581973608649774860485959057366492310011",
  "time": "2022-05-16T17:41:16.000Z",
  "gas_spent": 0.0079375999319523,
  "event": "registered",
  "last_owner": "0xa5e0ecb5d075e86c3bf5d1b1042e154fee9a4798",
  "transactionhash": null
  "labelhash": "0x5f16aa6db31cf35c0daca314ecbe2ad09d2c7e6b1bc363ea3871c432e0f2e9fb",
  "tokenid": "43009767505211382270326623157405683972581973608649774860485959057366492310011",
  "time": "2022-05-16T17:41:16.000Z",
  "gas_spent": 0,
  "event": "transfer",
  "last_owner": "0xa5e0ecb5d075e86c3bf5d1b1042e154fee9a4798",
  "transactionhash": null
1 Like

Love your work ma main man!

When can we see this proposal of refunds be sought through? Thanks.


Do you still not want to repay after two years?