make on deploy manual

This commit is contained in:
Jonathan Rainville 2018-10-05 10:49:46 -04:00 committed by Pascal Precht
parent bcc1711061
commit 623bdc50ae
No known key found for this signature in database
GPG Key ID: 0EE28D8D6FD85D7D
3 changed files with 71 additions and 59 deletions

View File

@ -678,13 +678,6 @@
"FIFSRegistrar": { "FIFSRegistrar": {
"deploy": true, "deploy": true,
"silent": true, "silent": true,
"args": [
"$ENSRegistry",
"0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae"
],
"onDeploy": [
"ENSRegistry.methods.setOwner('0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae', web3.eth.defaultAccount).send({from: web3.eth.defaultAccount}).then(() => {\n ENSRegistry.methods.setResolver('0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae', \"$Resolver\").send({from: web3.eth.defaultAccount});\n var reverseNode = web3.utils.soliditySha3(web3.eth.defaultAccount.toLowerCase().substr(2) + '.addr.reverse');\n ENSRegistry.methods.setResolver(reverseNode, \"$Resolver\").send({from: web3.eth.defaultAccount});\n Resolver.methods.setAddr('0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae', web3.eth.defaultAccount).send({from: web3.eth.defaultAccount});\n Resolver.methods.setName(reverseNode, 'eth').send({from: web3.eth.defaultAccount});\n })"
],
"className": "FIFSRegistrar", "className": "FIFSRegistrar",
"code": "608060405234801561001057600080fd5b5060405160408061030883398101604052805160209091015160008054600160a060020a031916600160a060020a039093169290921782556001556102ad90819061005b90396000f3006080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663d22057a98114610045575b600080fd5b34801561005157600080fd5b5061007660043573ffffffffffffffffffffffffffffffffffffffff60243516610078565b005b600154604080516020808201939093528082018590528151808203830181526060909101918290528051859360009384939290918291908401908083835b602083106100d55780518252601f1990920191602091820191016100b6565b51815160209384036101000a600019018019909216911617905260408051929094018290038220600080547f02571be300000000000000000000000000000000000000000000000000000000855260048501839052955191995073ffffffffffffffffffffffffffffffffffffffff90951696506302571be3955060248084019592945090928390030190829087803b15801561017157600080fd5b505af1158015610185573d6000803e3d6000fd5b505050506040513d602081101561019b57600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff811615806101d7575073ffffffffffffffffffffffffffffffffffffffff811633145b15156101e257600080fd5b60008054600154604080517f06ab592300000000000000000000000000000000000000000000000000000000815260048101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff888116604484015290519216926306ab59239260648084019382900301818387803b15801561026257600080fd5b505af1158015610276573d6000803e3d6000fd5b5050505050505050505600a165627a7a72305820ebb89ba93428b8bd5b039b76284cd01bc18764cffcb64cfd58163125d169441a0029", "code": "608060405234801561001057600080fd5b5060405160408061030883398101604052805160209091015160008054600160a060020a031916600160a060020a039093169290921782556001556102ad90819061005b90396000f3006080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663d22057a98114610045575b600080fd5b34801561005157600080fd5b5061007660043573ffffffffffffffffffffffffffffffffffffffff60243516610078565b005b600154604080516020808201939093528082018590528151808203830181526060909101918290528051859360009384939290918291908401908083835b602083106100d55780518252601f1990920191602091820191016100b6565b51815160209384036101000a600019018019909216911617905260408051929094018290038220600080547f02571be300000000000000000000000000000000000000000000000000000000855260048501839052955191995073ffffffffffffffffffffffffffffffffffffffff90951696506302571be3955060248084019592945090928390030190829087803b15801561017157600080fd5b505af1158015610185573d6000803e3d6000fd5b505050506040513d602081101561019b57600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff811615806101d7575073ffffffffffffffffffffffffffffffffffffffff811633145b15156101e257600080fd5b60008054600154604080517f06ab592300000000000000000000000000000000000000000000000000000000815260048101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff888116604484015290519216926306ab59239260648084019382900301818387803b15801561026257600080fd5b505af1158015610276573d6000803e3d6000fd5b5050505050505050505600a165627a7a72305820ebb89ba93428b8bd5b039b76284cd01bc18764cffcb64cfd58163125d169441a0029",
"runtimeBytecode": "6080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663d22057a98114610045575b600080fd5b34801561005157600080fd5b5061007660043573ffffffffffffffffffffffffffffffffffffffff60243516610078565b005b600154604080516020808201939093528082018590528151808203830181526060909101918290528051859360009384939290918291908401908083835b602083106100d55780518252601f1990920191602091820191016100b6565b51815160209384036101000a600019018019909216911617905260408051929094018290038220600080547f02571be300000000000000000000000000000000000000000000000000000000855260048501839052955191995073ffffffffffffffffffffffffffffffffffffffff90951696506302571be3955060248084019592945090928390030190829087803b15801561017157600080fd5b505af1158015610185573d6000803e3d6000fd5b505050506040513d602081101561019b57600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff811615806101d7575073ffffffffffffffffffffffffffffffffffffffff811633145b15156101e257600080fd5b60008054600154604080517f06ab592300000000000000000000000000000000000000000000000000000000815260048101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff888116604484015290519216926306ab59239260648084019382900301818387803b15801561026257600080fd5b505af1158015610276573d6000803e3d6000fd5b5050505050505050505600a165627a7a72305820ebb89ba93428b8bd5b039b76284cd01bc18764cffcb64cfd58163125d169441a0029", "runtimeBytecode": "6080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663d22057a98114610045575b600080fd5b34801561005157600080fd5b5061007660043573ffffffffffffffffffffffffffffffffffffffff60243516610078565b005b600154604080516020808201939093528082018590528151808203830181526060909101918290528051859360009384939290918291908401908083835b602083106100d55780518252601f1990920191602091820191016100b6565b51815160209384036101000a600019018019909216911617905260408051929094018290038220600080547f02571be300000000000000000000000000000000000000000000000000000000855260048501839052955191995073ffffffffffffffffffffffffffffffffffffffff90951696506302571be3955060248084019592945090928390030190829087803b15801561017157600080fd5b505af1158015610185573d6000803e3d6000fd5b505050506040513d602081101561019b57600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff811615806101d7575073ffffffffffffffffffffffffffffffffffffffff811633145b15156101e257600080fd5b60008054600154604080517f06ab592300000000000000000000000000000000000000000000000000000000815260048101929092526024820189905273ffffffffffffffffffffffffffffffffffffffff888116604484015290519216926306ab59239260648084019382900301818387803b15801561026257600080fd5b505af1158015610276573d6000803e3d6000fd5b5050505050505050505600a165627a7a72305820ebb89ba93428b8bd5b039b76284cd01bc18764cffcb64cfd58163125d169441a0029",

View File

@ -206,43 +206,14 @@ class ENS {
const self = this; const self = this;
const register = require('./register'); const register = require('./register');
const secureSend = embarkJsUtils.secureSend; const secureSend = embarkJsUtils.secureSend;
self.events.request("blockchain:defaultAccount:get", (defaultAccount) => { self.events.request("blockchain:defaultAccount:get", (defaultAccount) => {
async.parallel([ async.each(Object.keys(self.registration.subdomains), (subDomainName, eachCb) => {
function createRegistryContract(paraCb) { const address = self.registration.subdomains[subDomainName];
self.events.request("blockchain:contract:create", const reverseNode = utils.soliditySha3(address.toLowerCase().substr(2) + reverseAddrSuffix);
{abi: config.registryAbi, address: config.registryAddress}, register(self.ensContract, self.registrarContract, self.resolverContract, defaultAccount, subDomainName, self.registration.rootDomain,
(registry) => { reverseNode, address, self.logger, secureSend, eachCb);
paraCb(null, registry); }, cb);
});
},
function createRegistrarContract(paraCb) {
self.events.request("blockchain:contract:create",
{abi: config.registrarAbi, address: config.registrarAddress},
(registrar) => {
paraCb(null, registrar);
});
},
function createResolverContract(paraCb) {
self.events.request("blockchain:contract:create",
{abi: config.resolverAbi, address: config.resolverAddress},
(resolver) => {
paraCb(null, resolver);
});
}
], function(err, contracts) {
if (err) {
return cb(err);
}
const [ens, registrar, resolver] = contracts;
async.each(Object.keys(self.registration.subdomains), (subDomainName, eachCb) => {
const address = self.registration.subdomains[subDomainName];
const reverseNode = utils.soliditySha3(address.toLowerCase().substr(2) + reverseAddrSuffix);
register(ens, registrar, resolver, defaultAccount, subDomainName, self.registration.rootDomain,
reverseNode, address, self.logger, secureSend, eachCb);
}, cb);
});
}); });
} }
@ -293,29 +264,77 @@ class ENS {
return next(); return next();
} }
const registryAddress = self.ensConfig.ENSRegistry.deployedAddress; const registryAddress = self.ensConfig.ENSRegistry.deployedAddress;
const resolverAddress = self.ensConfig.Resolver.deployedAddress;
const rootNode = namehash.hash(self.registration.rootDomain); const rootNode = namehash.hash(self.registration.rootDomain);
const contract = self.ensConfig.FIFSRegistrar; const contract = self.ensConfig.FIFSRegistrar;
contract.args = [registryAddress, rootNode]; contract.args = [registryAddress, rootNode];
contract.onDeploy = [
`ENSRegistry.methods.setOwner('${rootNode}', web3.eth.defaultAccount).send({from: web3.eth.defaultAccount}).then(() => {
ENSRegistry.methods.setResolver('${rootNode}', "${resolverAddress}").send({from: web3.eth.defaultAccount});
var reverseNode = web3.utils.soliditySha3(web3.eth.defaultAccount.toLowerCase().substr(2) + '${reverseAddrSuffix}');
ENSRegistry.methods.setResolver(reverseNode, "${resolverAddress}").send({from: web3.eth.defaultAccount});
Resolver.methods.setAddr('${rootNode}', web3.eth.defaultAccount).send({from: web3.eth.defaultAccount});
Resolver.methods.setName(reverseNode, '${self.registration.rootDomain}').send({from: web3.eth.defaultAccount});
})`
];
self.events.request('deploy:contract', contract, (err, _receipt) => { self.events.request('deploy:contract', contract, (err, _receipt) => {
return next(err); return next(err);
}); });
},
function registerRoot(next) {
let config = {
registryAbi: self.ensConfig.ENSRegistry.abiDefinition,
registryAddress: self.ensConfig.ENSRegistry.deployedAddress,
registrarAbi: self.ensConfig.FIFSRegistrar.abiDefinition,
registrarAddress: self.ensConfig.FIFSRegistrar.deployedAddress,
resolverAbi: self.ensConfig.Resolver.abiDefinition,
resolverAddress: self.ensConfig.Resolver.deployedAddress
};
async.parallel([
function createRegistryContract(paraCb) {
self.events.request("blockchain:contract:create",
{abi: config.registryAbi, address: config.registryAddress},
(registry) => {
paraCb(null, registry);
});
},
function createRegistrarContract(paraCb) {
self.events.request("blockchain:contract:create",
{abi: config.registrarAbi, address: config.registrarAddress},
(registrar) => {
paraCb(null, registrar);
});
},
function createResolverContract(paraCb) {
self.events.request("blockchain:contract:create",
{abi: config.resolverAbi, address: config.resolverAddress},
(resolver) => {
paraCb(null, resolver);
});
}
], (err, contracts) => {
self.ensContract = contracts[0];
self.registrarContract = contracts[1];
self.resolverContract = contracts[2];
/*global web3*/
const rootNode = namehash.hash(self.registration.rootDomain);
var reverseNode = web3.utils.soliditySha3(web3.eth.defaultAccount.toLowerCase().substr(2) + reverseAddrSuffix);
self.ensContract.methods.setOwner(rootNode, web3.eth.defaultAccount).send({from: web3.eth.defaultAccount, gas: 700000}).then(() => {
return self.ensContract.methods.setResolver(rootNode, config.resolverAddress).send({from: web3.eth.defaultAccount, gas: 700000});
}).then(() => {
return self.ensContract.methods.setResolver(reverseNode, config.resolverAddress).send({from: web3.eth.defaultAccount, gas: 700000});
}).then(() => {
return self.resolverContract.methods.setAddr(rootNode, web3.eth.defaultAccount).send({from: web3.eth.defaultAccount, gas: 700000});
}).then(() => {
return self.resolverContract.methods.setName(reverseNode, self.registration.rootDomain).send({from: web3.eth.defaultAccount, gas: 700000});
}).then((_result) => {
next();
})
.catch(err => {
console.error('Error while registering the root domain');
console.error(err);
next(err);
});
});
} }
], (err) => { ], (err) => {
self.configured = true; self.configured = true;
if (err) { if (err) {
self.logger.error('Error while deploying ENS contracts'); self.logger.error('Error while deploying ENS contracts');
self.logger.error(err.message || err); self.logger.error(err.message || err);
return; return cb(err);
} }
self.setProviderAndRegisterDomains(cb); self.setProviderAndRegisterDomains(cb);
}); });

View File

@ -10,7 +10,7 @@ function registerSubDomain(ens, registrar, resolver, defaultAccount, subdomain,
const toSend = ens.methods.setSubnodeOwner(rootNode, subnode, defaultAccount); const toSend = ens.methods.setSubnodeOwner(rootNode, subnode, defaultAccount);
let transaction; let transaction;
secureSend(web3, toSend, {from: defaultAccount}, false) secureSend(web3, toSend, {from: defaultAccount, gas: 700000}, false)
// Set resolver for the node // Set resolver for the node
.then(transac => { .then(transac => {
if (transac.status !== "0x1" && transac.status !== "0x01" && transac.status !== true) { if (transac.status !== "0x1" && transac.status !== "0x01" && transac.status !== true) {
@ -18,19 +18,19 @@ function registerSubDomain(ens, registrar, resolver, defaultAccount, subdomain,
return callback('Failed to register. Check gas cost.'); return callback('Failed to register. Check gas cost.');
} }
transaction = transac; transaction = transac;
return secureSend(web3, ens.methods.setResolver(node, resolver.options.address), {from: defaultAccount}, false); return secureSend(web3, ens.methods.setResolver(node, resolver.options.address), {from: defaultAccount, gas: 700000}, false);
}) })
// Set address for node // Set address for node
.then(_result => { .then(_result => {
return secureSend(web3, resolver.methods.setAddr(node, address), {from: defaultAccount}, false); return secureSend(web3, resolver.methods.setAddr(node, address), {from: defaultAccount, gas: 700000}, false);
}) })
// Set resolver for the reverse node // Set resolver for the reverse node
.then(_result => { .then(_result => {
return secureSend(web3, ens.methods.setResolver(reverseNode, resolver.options.address), {from: defaultAccount}, false); return secureSend(web3, ens.methods.setResolver(reverseNode, resolver.options.address), {from: defaultAccount, gas: 700000}, false);
}) })
// Set name for reverse node // Set name for reverse node
.then(_result => { .then(_result => {
return secureSend(web3, resolver.methods.setName(reverseNode, `${subdomain}.${rootDomain}`), {from: defaultAccount}, false); return secureSend(web3, resolver.methods.setName(reverseNode, `${subdomain}.${rootDomain}`), {from: defaultAccount, gas: 700000}, false);
}) })
.then(_result => { .then(_result => {
callback(null, transaction); callback(null, transaction);