-
Notifications
You must be signed in to change notification settings - Fork 92
Closed
Labels
appA change related to the Umbra frontendA change related to the Umbra frontendlibraryA change related to the umbra-js libraryA change related to the umbra-js library
Description
Rough spec for the flow needed to set up existing ENS name holders to use Umbra.
Contract Address
- ENS Registry (mainnet & rinkeby):
0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e - Public Resolver:
- rinkeby:
0xf6305c19e814d2a75429Fd637d01F7ee0E77d615 - mainnet:
0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41
- rinkeby:
- Umbra Resolver (i.e. ForwardingStealthKeyResolver):
- rinkeby:
0x291e2dfe31CE1a65DbEDD84eA38a12a4D5e01D39 - mainnet: TBD
- rinkeby:
Steps
- Check the reverse record for the current account. If it doesn't resolve to an ENS name, link them to ENS or give them the option to register a subdomain
- Check if the current account is the owner by calling
owner(bytes32 node)on the ENS Registry. If they're not, tell them they can't configure their ENS name unless they're the owner, and direct them to the ENS App or give them the option to register a subdomain. - Check the user's current resolver by calling
resolver(bytes32 node)on the ENS Registry- If the resolver is the Public Resolver, continue to the next step
- If the resolver is Umbra Resolver, see if they have stealth keys by calling
stealthKeys(bytes32 node)- If they do, they're already set up with Umbra!
- If they don't, they somehow got to a weird state, but we can recover cleanly by setting the stealth keys on the Umbra Resolver using
setStealthKeys(bytes32 node, uint256 spendingPubKeyPrefix, uint256 spendingPubKey, uint256 viewingPubKeyPrefix, uint256 viewingPubKey)
- If the resolver is anything else, tell them they can't use Umbra with their ENS name unless they're using the public resolver. Direct them to the ENS app or give them the option to register a subdomain.
- Authorize the Umbra Resolver on the Public Resolver by calling
setAuthorisation(bytes32 node, address target, bool isAuthorised)on the Public Resolver, wheretargetis the Umbra Resolver's address andisAuthorisedistrue. - Set the stealth keys on the Umbra Resolver by calling
setStealthKeys(bytes32 node, uint256 spendingPubKeyPrefix, uint256 spendingPubKey, uint256 viewingPubKeyPrefix, uint256 viewingPubKey) - Change the user's resolver to the Umbra Resolver by calling
setResolver(bytes32 node, address resolver)whereresolveris the Umbra Resolver's address
Validation
If everything went well, after the txs succeed:
- Checking the user's resolver by calling
resolver(bytes32 node)on the ENS Registry should return the Umbra Resolver address - Checking the user's stealth keys by calling
stealthKeys(bytes32 node)on the Umbra Resolver should return the expected public keys - Checking the user's address by calling
addr(bytes32 node)on the Umbra Resolver should return the user's account
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
appA change related to the Umbra frontendA change related to the Umbra frontendlibraryA change related to the umbra-js libraryA change related to the umbra-js library