mirror of
https://github.com/status-im/embark-area-51.git
synced 2025-02-06 12:23:26 +00:00
small cleanups
This commit is contained in:
parent
1654ae63db
commit
21a7f27de0
@ -153,6 +153,8 @@ __embarkENS.setProvider = function (config) {
|
||||
self.registration = config.registration;
|
||||
self.env = config.env;
|
||||
EmbarkJS.onReady(() => {
|
||||
self.registration = config.registration;
|
||||
|
||||
web3.eth.net.getId()
|
||||
.then((id) => {
|
||||
const registryAddress = self.registryAddresses[id] || config.registryAddress;
|
||||
@ -252,11 +254,7 @@ __embarkENS.registerSubDomain = function (name, address, callback) {
|
||||
|
||||
// Register function generated by the index
|
||||
registerSubDomain(this.ens, this.registrar, this.resolver, web3.eth.defaultAccount, name, this.registration.rootDomain,
|
||||
<<<<<<< HEAD
|
||||
web3.utils.soliditySha3(address.toLowerCase().substr(2) + reverseAddrSuffix), address, console, EmbarkJS.Utils.secureSend, callback);
|
||||
=======
|
||||
web3.utils.soliditySha3(address.toLowerCase().substr(2) + '.addr.reverse'), address, console, callback);
|
||||
>>>>>>> pre-dploy using the same function as register
|
||||
web3.utils.soliditySha3(address.toLowerCase().substr(2) + reverseAddrSuffix), address, console, callback);
|
||||
};
|
||||
|
||||
__embarkENS.isAvailable = function () {
|
||||
|
@ -2,29 +2,17 @@ const fs = require('../../core/fs.js');
|
||||
const utils = require('../../utils/utils.js');
|
||||
const namehash = require('eth-ens-namehash');
|
||||
const async = require('async');
|
||||
const embarkJsUtils = require('embarkjs').Utils;
|
||||
|
||||
const reverseAddrSuffix = '.addr.reverse';
|
||||
|
||||
class ENS {
|
||||
constructor(embark, _options) {
|
||||
this.env = embark.env;
|
||||
this.isDev = embark.config.blockchainConfig.isDev;
|
||||
this.logger = embark.logger;
|
||||
this.events = embark.events;
|
||||
this.namesConfig = embark.config.namesystemConfig;
|
||||
this.registration = this.namesConfig.register || {};
|
||||
this.embark = embark;
|
||||
|
||||
<<<<<<< HEAD
|
||||
if (this.namesConfig === {} ||
|
||||
this.namesConfig.enabled !== true ||
|
||||
this.namesConfig.available_providers.indexOf('ens') < 0) {
|
||||
return;
|
||||
}
|
||||
this.doSetENSProvider = this.namesConfig.provider === 'ens';
|
||||
|
||||
=======
|
||||
>>>>>>> if no register config, dont register anything
|
||||
this.addENSToEmbarkJS();
|
||||
this.configureContracts();
|
||||
this.registerEvents();
|
||||
@ -75,131 +63,25 @@ class ENS {
|
||||
|
||||
if (self.doSetENSProvider) {
|
||||
self.addSetProvider(config);
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
if ((!self.isDev && self.env !== 'privatenet') || !self.registration || !self.registration.subdomains || !Object.keys(self.registration.subdomains).length) {
|
||||
return cb();
|
||||
}
|
||||
self.registerConfigDomains(config, cb);
|
||||
=======
|
||||
if (!self.registration || !self.registration.subdomains || !Object.keys(self.registration.subdomains).length) {
|
||||
return cb();
|
||||
}
|
||||
self.registerConfigDomains(config, cb);
|
||||
});
|
||||
>>>>>>> if no register config, dont register anything
|
||||
});
|
||||
}
|
||||
|
||||
associateStorageToEns(options, cb) {
|
||||
const self = this;
|
||||
// Code inspired by https://github.com/monkybrain/ipfs-to-ens
|
||||
const {name, storageHash} = options;
|
||||
|
||||
if (!utils.isValidEthDomain(name)) {
|
||||
return cb('Invalid domain name ' + name);
|
||||
}
|
||||
|
||||
let hashedName = namehash.hash(name);
|
||||
let contentHash;
|
||||
try {
|
||||
contentHash = utils.hashTo32ByteHexString(storageHash);
|
||||
} catch (e) {
|
||||
return cb('Invalid IPFS hash');
|
||||
}
|
||||
|
||||
// Set content
|
||||
async.waterfall([
|
||||
function getRegistryABI(next) {
|
||||
self.events.request('contracts:contract', "ENSRegistry", (contract) => {
|
||||
next(null, contract);
|
||||
});
|
||||
},
|
||||
function createRegistryContract(contract, next) {
|
||||
self.events.request("blockchain:contract:create",
|
||||
{abi: contract.abiDefinition, address: contract.deployedAddress},
|
||||
(resolver) => {
|
||||
next(null, resolver);
|
||||
});
|
||||
},
|
||||
function getResolverForName(registry, next) {
|
||||
registry.methods.resolver(hashedName).call((err, resolverAddress) => {
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
if (resolverAddress === '0x0000000000000000000000000000000000000000') {
|
||||
return cb('Name not yet registered');
|
||||
}
|
||||
next(null, resolverAddress);
|
||||
});
|
||||
},
|
||||
function getResolverABI(resolverAddress, next) {
|
||||
self.events.request('contracts:contract', "Resolver", (contract) => {
|
||||
next(null, resolverAddress, contract);
|
||||
});
|
||||
},
|
||||
function createResolverContract(resolverAddress, contract, next) {
|
||||
self.events.request("blockchain:contract:create",
|
||||
{abi: contract.abiDefinition, address: resolverAddress},
|
||||
(resolver) => {
|
||||
next(null, resolver);
|
||||
});
|
||||
},
|
||||
function getDefaultAccount(resolver, next) {
|
||||
self.events.request("blockchain:defaultAccount:get", (defaultAccount) => {
|
||||
next(null, resolver, defaultAccount);
|
||||
});
|
||||
},
|
||||
function setContent(resolver, defaultAccount, next) {
|
||||
resolver.methods.setContent(hashedName, contentHash).send({from: defaultAccount}).then((transaction) => {
|
||||
if (transaction.status !== "0x1" && transaction.status !== "0x01" && transaction.status !== true) {
|
||||
return next('Association failed. Status: ' + transaction.status);
|
||||
}
|
||||
next();
|
||||
}).catch(next);
|
||||
}
|
||||
], cb);
|
||||
}
|
||||
|
||||
registerConfigDomains(config, cb) {
|
||||
const self = this;
|
||||
const register = require('./register');
|
||||
<<<<<<< HEAD
|
||||
const secureSend = embarkJsUtils.secureSend;
|
||||
self.events.request("blockchain:defaultAccount:get", (defaultAccount) => {
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
self.events.request("blockchain:defaultAccount:get", (defaultAccount) => {
|
||||
>>>>>>> pre-dploy using the same function as register
|
||||
async.parallel([
|
||||
function createRegistryContract(paraCb) {
|
||||
self.events.request("blockchain:contract:create",
|
||||
{abi: config.registryAbi, address: config.registryAddress},
|
||||
(registry) => {
|
||||
paraCb(null, registry);
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
self.events.request("blockchain:contract:create",
|
||||
{abi: config.registrarAbi, address: config.registrarAddress},
|
||||
(registrar) => {
|
||||
async.each(Object.keys(self.registration.subdomains), (subDomainName, eachCb) => {
|
||||
const toSend = registrar.methods.register(utils.soliditySha3(subDomainName), defaultAccount);
|
||||
|
||||
toSend.estimateGas().then(gasEstimated => {
|
||||
return toSend.send({gas: gasEstimated + 1000, from: defaultAccount}).then(transaction => {
|
||||
if (transaction.status !== "0x1" && transaction.status !== "0x01" && transaction.status !== true) {
|
||||
return eachCb('Failed to register. Check gas cost.');
|
||||
}
|
||||
eachCb(null, transaction);
|
||||
}).catch(err => {
|
||||
eachCb('Failed to register with error: ' + (err.message || err));
|
||||
});
|
||||
}).catch(err => {
|
||||
eachCb("Register would error. Is it already registered? Do you have token balance? Is Allowance set? " + (err.message || err));
|
||||
>>>>>>> if no register config, dont register anything
|
||||
=======
|
||||
>>>>>>> pre-dploy using the same function as register
|
||||
});
|
||||
},
|
||||
function createRegistrarContract(paraCb) {
|
||||
@ -216,11 +98,7 @@ class ENS {
|
||||
paraCb(null, resolver);
|
||||
});
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
], function(err, contracts) {
|
||||
=======
|
||||
], function (err, contracts) {
|
||||
>>>>>>> pre-dploy using the same function as register
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
@ -228,15 +106,9 @@ class ENS {
|
||||
|
||||
async.each(Object.keys(self.registration.subdomains), (subDomainName, eachCb) => {
|
||||
const address = self.registration.subdomains[subDomainName];
|
||||
<<<<<<< HEAD
|
||||
const reverseNode = utils.soliditySha3(address.toLowerCase().substr(2) + reverseAddrSuffix);
|
||||
register(ens, registrar, resolver, defaultAccount, subDomainName, self.registration.rootDomain,
|
||||
reverseNode, address, self.logger, secureSend, eachCb);
|
||||
=======
|
||||
const reverseNode = utils.soliditySha3(address.toLowerCase().substr(2) + '.addr.reverse');
|
||||
register(ens, registrar, resolver, defaultAccount, subDomainName, self.registration.rootDomain,
|
||||
reverseNode, address, self.logger, eachCb);
|
||||
>>>>>>> pre-dploy using the same function as register
|
||||
}, cb);
|
||||
|
||||
});
|
||||
@ -245,12 +117,20 @@ class ENS {
|
||||
|
||||
addENSToEmbarkJS() {
|
||||
const self = this;
|
||||
// TODO: make this a shouldAdd condition
|
||||
if (this.namesConfig === {}) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ((this.namesConfig.available_providers.indexOf('ens') < 0) && (this.namesConfig.provider !== 'ens' || this.namesConfig.enabled !== true)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// get namehash, import it into file
|
||||
self.events.request("version:get:eth-ens-namehash", function(EnsNamehashVersion) {
|
||||
self.events.request("version:get:eth-ens-namehash", function (EnsNamehashVersion) {
|
||||
let currentEnsNamehashVersion = require('../../../package.json').dependencies["eth-ens-namehash"];
|
||||
if (EnsNamehashVersion !== currentEnsNamehashVersion) {
|
||||
self.events.request("version:getPackageLocation", "eth-ens-namehash", EnsNamehashVersion, function(err, location) {
|
||||
self.events.request("version:getPackageLocation", "eth-ens-namehash", EnsNamehashVersion, function (err, location) {
|
||||
self.embark.registerImportFile("eth-ens-namehash", fs.dappPath(location));
|
||||
});
|
||||
}
|
||||
@ -276,12 +156,10 @@ class ENS {
|
||||
},
|
||||
"ENSRegistry": {
|
||||
"deploy": true,
|
||||
"silent": true,
|
||||
"args": []
|
||||
},
|
||||
"Resolver": {
|
||||
"deploy": true,
|
||||
"silent": true,
|
||||
"args": ["$ENSRegistry"]
|
||||
},
|
||||
"FIFSRegistrar": {
|
||||
@ -292,11 +170,7 @@ class ENS {
|
||||
"ropsten": {
|
||||
"contracts": {
|
||||
"ENSRegistry": {
|
||||
"address": "0x112234455c3a32fd11230c42e7bccd4a84e02010",
|
||||
"silent": true
|
||||
},
|
||||
"Resolver": {
|
||||
"deploy": false
|
||||
"address": "0x112234455c3a32fd11230c42e7bccd4a84e02010"
|
||||
},
|
||||
"Resolver": {
|
||||
"deploy": false
|
||||
@ -309,11 +183,7 @@ class ENS {
|
||||
"rinkeby": {
|
||||
"contracts": {
|
||||
"ENSRegistry": {
|
||||
"address": "0xe7410170f87102DF0055eB195163A03B7F2Bff4A",
|
||||
"silent": true
|
||||
},
|
||||
"Resolver": {
|
||||
"deploy": false
|
||||
"address": "0xe7410170f87102DF0055eB195163A03B7F2Bff4A"
|
||||
},
|
||||
"Resolver": {
|
||||
"deploy": false
|
||||
@ -326,11 +196,7 @@ class ENS {
|
||||
"livenet": {
|
||||
"contracts": {
|
||||
"ENSRegistry": {
|
||||
"address": "0x314159265dd8dbb310642f98f50c066173c1259b",
|
||||
"silent": true
|
||||
},
|
||||
"Resolver": {
|
||||
"deploy": false
|
||||
"address": "0x314159265dd8dbb310642f98f50c066173c1259b"
|
||||
},
|
||||
"Resolver": {
|
||||
"deploy": false
|
||||
@ -341,9 +207,6 @@ class ENS {
|
||||
}
|
||||
}
|
||||
};
|
||||
<<<<<<< HEAD
|
||||
config.testnet = config.ropsten;
|
||||
=======
|
||||
|
||||
if (this.registration && this.registration.rootDomain) {
|
||||
// Register root domain if it is defined
|
||||
@ -354,7 +217,7 @@ class ENS {
|
||||
"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');
|
||||
var reverseNode = web3.utils.soliditySha3(web3.eth.defaultAccount.toLowerCase().substr(2) + '${reverseAddrSuffix}');
|
||||
ENSRegistry.methods.setResolver(reverseNode, "$Resolver").send();
|
||||
Resolver.methods.setAddr('${rootNode}', web3.eth.defaultAccount).send();
|
||||
Resolver.methods.setName(reverseNode, '${this.registration.rootDomain}').send();
|
||||
@ -364,34 +227,10 @@ class ENS {
|
||||
}
|
||||
|
||||
this.embark.registerContractConfiguration(config);
|
||||
>>>>>>> if no register config, dont register anything
|
||||
|
||||
if (this.registration && this.registration.rootDomain) {
|
||||
// Register root domain if it is defined
|
||||
const rootNode = namehash.hash(this.registration.rootDomain);
|
||||
config.default.contracts['FIFSRegistrar'] = {
|
||||
"deploy": true,
|
||||
"silent": true,
|
||||
"args": ["$ENSRegistry", rootNode],
|
||||
"onDeploy": [
|
||||
`ENSRegistry.methods.setOwner('${rootNode}', web3.eth.defaultAccount).send({from: web3.eth.defaultAccount}).then(() => {
|
||||
ENSRegistry.methods.setResolver('${rootNode}', "$Resolver").send({from: web3.eth.defaultAccount});
|
||||
var reverseNode = web3.utils.soliditySha3(web3.eth.defaultAccount.toLowerCase().substr(2) + '${reverseAddrSuffix}');
|
||||
ENSRegistry.methods.setResolver(reverseNode, "$Resolver").send({from: web3.eth.defaultAccount});
|
||||
Resolver.methods.setAddr('${rootNode}', web3.eth.defaultAccount).send({from: web3.eth.defaultAccount});
|
||||
Resolver.methods.setName(reverseNode, '${this.registration.rootDomain}').send({from: web3.eth.defaultAccount});
|
||||
})`
|
||||
]
|
||||
};
|
||||
}
|
||||
config.privatenet = config.development;
|
||||
this.embark.registerContractConfiguration(config);
|
||||
|
||||
//if (this.isDev || this.env === 'privatenet') {
|
||||
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'));
|
||||
this.embark.events.request("config:contractsFiles:add", this.embark.pathToFile('./contracts/Resolver.sol'));
|
||||
//}
|
||||
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'));
|
||||
this.embark.events.request("config:contractsFiles:add", this.embark.pathToFile('./contracts/Resolver.sol'));
|
||||
}
|
||||
|
||||
addSetProvider(config) {
|
||||
|
42
test_apps/test_app/test/ens_spec.js
Normal file
42
test_apps/test_app/test/ens_spec.js
Normal file
@ -0,0 +1,42 @@
|
||||
/*global contract, config, it, assert, before*/
|
||||
const Resolver = require('Embark/contracts/Resolver');
|
||||
|
||||
const namehash = require('eth-ens-namehash');
|
||||
const address = '0x38ac14a9B6a7c8F9C46e4804074186c9F201D0A0';
|
||||
const rootNode = namehash.hash('embark.eth');
|
||||
|
||||
config({
|
||||
contracts: {
|
||||
"ENSRegistry": {
|
||||
"args": []
|
||||
},
|
||||
"Resolver": {
|
||||
"args": ["$ENSRegistry"]
|
||||
},
|
||||
"FIFSRegistrar": {
|
||||
"args": ["$ENSRegistry", rootNode],
|
||||
"onDeploy": [
|
||||
`ENSRegistry.methods.setOwner('${rootNode}', web3.eth.defaultAccount).send().then(() => {
|
||||
ENSRegistry.methods.setResolver('${rootNode}', "$Resolver").send();
|
||||
Resolver.methods.setAddr('${rootNode}', '${address}').send();
|
||||
})`
|
||||
]
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
contract("ENS", function () {
|
||||
this.timeout(0);
|
||||
|
||||
before(function (done) {
|
||||
// Wait for onDeploy to finish
|
||||
setTimeout(function () {
|
||||
done();
|
||||
}, 500);
|
||||
});
|
||||
|
||||
it("should have registered embark.eth", async function () {
|
||||
const domainAddress = await Resolver.methods.addr(rootNode).call();
|
||||
assert.strictEqual(domainAddress, address);
|
||||
});
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user