Tooling for FIFS registration?

Thanks to the short name reservation process, we (iExec) are starting to offer ENS names to our users. We might not be the only one.

We want to propose anyone to get it’s username served in a subdomain owned by a FIFSRegistrar as easily as possible. Ideally, it should be possible to ask use at our booth and we would do that in just a few seconds, paying the gas for it.

Are there any tooling to do that? I’ve spent a few hours today on a prototype:

If anyone needs that kind of tooling, feel free to fork it, it should be straight forward to reconfigure to use another namespace. If you’ve got something better, please let me know.

1 Like

Hey! thanks for sharing though the returns 404/

My bad the repo was private. It should be ok now.

For a live demo:
To improve UX I had to deploy this that people might find usefull

We plan to integrate it to our website’s frontpage and to pay for the gas of users at our devcon booth

Just tried half way and looking good (currently my transaction is stack as 20gwei is “too low”). Would be ideal if you can extract it into own React component though.

As I said, it’s just a prototype for now :slight_smile: and I’m not a frontend dev :disappointed_relieved:
But I’ll keep that in mind !

Edit: it’s missing a txpending/success/failure screen at the end, but you can check the “component” branch

Have you taken a look at the Subdomain Registrar? It’s designed for exactly this. Code here: and deployment of the app here:

I know the subdomain registrar but its limited to creating a subdomain for yourself. We wanted to create and set a subdomain for someone else

That’s totally possible - you can specify the registrant address as part of the call to the registrar.

I now it’s possible ('m doing it). I was just saying that doesn’t exposes that (or at least I didn’t find this option)

Sorry, crossed wires!

I was suggesting that you could use the subdomain registrar contract as the backend. It has additional features over and above the FIFS registrar; most importantly it ensures that any domains that are usable with it are no longer controlled by the original contributor, so issued subdomains can’t be revoked by the name owner.

I completelly understand that need from a user’s perspective. On the other hand, we are giving away xxx.users.iexec.eth but we want to keep control of iexec.eth … so until we find a good solution users will have to trust us with not overwritting users.iexec.eth’s ownership :confused:

I believe that if setup properly, you would retain control and transferability of users.iexec.eth, but once someone received an xxx.iexec.users.eth you (or future owners) would not be able to change that particular subdomain without the user’s permission.

If I can control/transfer users.iexec.eth I can set it to be owner by my wallet … and there is nothing preventing me from calling setSubnodeOwner on the ENS registry to reclaim a user’s subdomain.

I believe the only way would be to give ownership of iexec.eth to a smart contract that would forward any transaction (sent by a specific controler) to the ENS registry except for “setOwner(iexec.eth)” and “setSubnodeOwner(users.iexec.eth)”

What specific control do you need to be able to retain?

Creating subdomains. We will at some point create domains like apps.iexec.eth, devs.iexec.eth, … who knows what we will want in the future

You can still do that with the subdomain registrar, though - that’s what it’s for.

I think we’re perhaps talking at cross-purposes, though. Can you explain what you’re trying to do beyond issuing subdomains to your users?

I could use an owned subdomain registrar, but that would prevent me from resolving the corresponding node (iexec.eth) to any address/multihash/…

If you set the resolver record on iexec.eth to a resolver you control (such as the OwnedResolver) before transferring it to the subdomain registrar, you can retain control over its records.

I would also need upgradability mechnisms in case the Resolver misses some entry …
The whole thing could work but I don’t really feel confortable with it for now