This is the rewrite of v1 but using EVM Gateway instead of dm3's Bedrock Resolver.
The demo allows anyone to either register subnames under op.evmgateway.eth
on Optimism Goerli chain or subnames under base.evmgateway.eth
on $BASE chain.
gh repo clone makoto/my-l2-app-v2
cd my-l2-app-v2
yarn
cp .env.example .env // Update the constants
yarn start
- OP L1Resolver = 0xE0356133C3c43cbb623543488E607E4e349eAA10
- Base L1Resolver = 0xE00739Fc93e27aBf44343fD5FAA151c67C0A0Aa3
- Arb L1Resolver = 0x9F3C37A6cDd5ECA7b27140856753EDBF387c06bB
On L2, each parent name will own its own resolver and you issue subnames under your resolver.
- Optimism DelegatableResolverFactory = 0x4166B7e70F14C48980Da362256D1Da9Cc8F95e13
- Base L2 DelegatableResolverFactory = 0x0e8DA38565915B7e74e2d78F80ba1BF815F34116
- Arbitrum L2 DelegatableResolverFactory = 0x94fbCE7ca1a0152cfC99F90f4421d31cf356c896
const l2resolverAddress = await DelegatableResolverFactory.predictAddress(OWNER_ADDRESS)
YOURNAME = 'somenewname.eth'
node = ethers.namehash(`(base|op).{YOURNAME}`)
await L1Resolver.setTarget(node, l2resolverAddress)
- Deploy DelegatableResolverRegistrar.sol to L2 with resolver address as
target
which you obtained at step 1. Take notes of the deployed registrar address
const DelegatableResolver = new ethers.Contract(l2resolverAddress, abi, l2provider);
await DelegatableResolver.approve(encodedname, DELEGATABLE_RESOLVER_REGISRTRAR_ADDRESS, true)