diff --git a/lib/core/config.js b/lib/core/config.js index 543a1c71..3ca8fda6 100644 --- a/lib/core/config.js +++ b/lib/core/config.js @@ -281,10 +281,7 @@ Config.prototype.loadNameSystemConfigFile = function() { "default": { "available_providers": ["ens"], "provider": "ens", - "enabled": true, - "register": { - "rootDomain": "embark" - } + "enabled": true } }; diff --git a/lib/modules/ens/index.js b/lib/modules/ens/index.js index 615beb32..3ce30833 100644 --- a/lib/modules/ens/index.js +++ b/lib/modules/ens/index.js @@ -195,7 +195,7 @@ class ENS { self.events.request("blockchain:contract:create", {abi: config.registrarAbi, address: config.registrarAddress}, (registrar) => { - async.each(Object.keys(self.registration.domains), (subDomainName, eachCb) => { + async.each(Object.keys(self.registration.subdomains), (subDomainName, eachCb) => { const toSend = registrar.methods.register(utils.soliditySha3(subDomainName), defaultAccount); toSend.estimateGas().then(gasEstimated => { @@ -238,7 +238,9 @@ class ENS { configureContracts() { const config = { "default": { - "gas": "auto", + "gas": "auto" + }, + "development": { "contracts": { "ENS": { "deploy": false, @@ -363,6 +365,9 @@ class ENS { "ENSRegistry": { "address": "0x112234455c3a32fd11230c42e7bccd4a84e02010" }, + "Resolver": { + "deploy": false + }, "FIFSRegistrar": { "deploy": false } @@ -373,6 +378,9 @@ class ENS { "ENSRegistry": { "address": "0xe7410170f87102DF0055eB195163A03B7F2Bff4A" }, + "Resolver": { + "deploy": false + }, "FIFSRegistrar": { "deploy": false } @@ -383,12 +391,35 @@ class ENS { "ENSRegistry": { "address": "0x314159265dd8dbb310642f98f50c066173c1259b" }, + "Resolver": { + "deploy": false + }, "FIFSRegistrar": { "deploy": false } } } - }); + }; + + if (this.registration && this.registration.rootDomain) { + // Register root domain if it is defined + const rootNode = namehash.hash(this.registration.rootDomain); + config.development.contracts['FIFSRegistrar'] = { + "deploy": true, + "args": ["$ENSRegistry", rootNode], + "onDeploy": [ + `ENSRegistry.methods.setOwner('${rootNode}', web3.eth.defaultAccount).send().then(() => { + ENSRegistry.methods.setResolver('${rootNode}', "$Resolver").send(); + var reverseNode = web3.utils.soliditySha3(web3.eth.defaultAccount.toLowerCase().substr(2) + '.addr.reverse'); + ENSRegistry.methods.setResolver(reverseNode, "$Resolver").send(); + Resolver.methods.setAddr('${rootNode}', web3.eth.defaultAccount).send(); + Resolver.methods.setName(reverseNode, '${this.registration.rootDomain}').send(); + })` + ] + }; + } + + this.embark.registerContractConfiguration(config); this.embark.events.request("config:contractsFiles:add", this.embark.pathToFile('./contracts/ENSRegistry.sol')); this.embark.events.request("config:contractsFiles:add", this.embark.pathToFile('./contracts/FIFSRegistrar.sol'));