I registered my subdomain registrar with the goerli namewrapper by calling setApprovalForAll. Now, if I want to use another registrar for different registrar, can I just set up another one? Also, when calling set approval for all, why does the contract require access to all my NFTs?
Also, I have minted a subdomain tom.example.eth (from alpha.ens.domains), however when I use my new subdomain registrar to check whether tom.bigdog.eth has been minted, I get false. Why is this?
That’s just the way that the ERC-1155 batch operator approval methods work. It’s only for the Name Wrapper contract though. It’s your contract, so you’ll need to decide how much you want to trust it.
You could move that one name to a separate account, and then call setApprovalForAll from that account instead. That way it would never affect any other wrapped names.
Or, instead of simply approving your registrar as an operator, you could transfer ownership of the actual NFT to that contract. That is a bit more involved as you will probably want to build an appropriate (and secure) way to withdraw that NFT back out if you ever wanted to.
If you no longer want that registrar to be able to register/renew subnames, then you just call setApprovalForAll again and revoke your contract as an approved operator (passing in false). Then you can approve your new contract. You can also have multiple approved contracts at the same time if you wish.
What did you mean by the above? What exactly are the benefits to calling setApprovalForAll from a different wallet and how are the wrapped names affected?
It means that you’d only be approving your contract as an operator on that separate account. So at most it will only have control over the one wrapped name owned by that account.
This is a Metamask issue. We reached out to them about this and they said they have a team looking into it. @branzinho pointed out the issue in their code specifically for the new ENS contract. He can probably speak more about it if need be.