ENS config use the actual network ID

Instead of relying on the name of network.
Fetch the real network id and configure ENS
based on that value
This commit is contained in:
Anthony Laibe 2018-09-28 11:09:23 +01:00
parent 2e5f794820
commit c6b0c34d8c
3 changed files with 107 additions and 92 deletions

View File

@ -291,9 +291,11 @@ class EmbarkController {
engine.startService("namingSystem");
engine.startService("console");
engine.startService("pluginCommand");
engine.events.on('check:backOnline:Ethereum', function () {
callback();
});
},
function web3IPC(callback) {
function ipcConnect(callback) {
// Do specific work in case we are connected to a socket:
// - Setup Web3
// - Apply history

View File

@ -76,7 +76,7 @@ class BlockchainConnector {
self.events.request("processes:launch", "blockchain", () => {
self.provider.startWeb3Provider(() => {
this.web3.eth.net.getId()
this.getNetworkId()
.then(id => {
let networkId = self.blockchainConfig.networkId;
if (!networkId && constants.blockchain.networkIds[self.blockchainConfig.networkType]) {
@ -185,6 +185,10 @@ class BlockchainConnector {
self.getGasPrice(cb);
});
this.events.setCommandHandler("blockchain:networkId", function(cb) {
self.getNetworkId().then(cb);
});
this.events.setCommandHandler("blockchain:contract:create", function(params, cb) {
cb(self.ContractObject(params));
});
@ -217,6 +221,10 @@ class BlockchainConnector {
});
}
getNetworkId() {
return this.web3.eth.net.getId();
}
ContractObject(params) {
return new this.web3.eth.Contract(params.abi, params.address);
}

View File

@ -5,10 +5,78 @@ const async = require('async');
const embarkJsUtils = require('embarkjs').Utils;
const reverseAddrSuffix = '.addr.reverse';
const DEFAULT_ENS_CONTRACTS_CONFIG = {
"default": {
"contracts": {
"ENS": {
"deploy": false,
"silent": true
},
"ENSRegistry": {
"deploy": true,
"silent": true,
"args": []
},
"Resolver": {
"deploy": true,
"silent": true,
"args": ["$ENSRegistry"]
},
"FIFSRegistrar": {
"deploy": false
}
}
}
};
const ENS_CONTRACTS_CONFIG = {
"1": {
"contracts": {
"ENSRegistry": {
"address": "0x314159265dd8dbb310642f98f50c066173c1259b",
"silent": true
},
"Resolver": {
"deploy": false
},
"FIFSRegistrar": {
"deploy": false
}
}
},
"3": {
"contracts": {
"ENSRegistry": {
"address": "0x112234455c3a32fd11230c42e7bccd4a84e02010",
"silent": true
},
"Resolver": {
"deploy": false
},
"FIFSRegistrar": {
"deploy": false
}
}
},
"4": {
"contracts": {
"ENSRegistry": {
"address": "0xe7410170f87102DF0055eB195163A03B7F2Bff4A",
"silent": true
},
"Resolver": {
"deploy": false
},
"FIFSRegistrar": {
"deploy": false
}
}
}
};
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;
@ -23,12 +91,12 @@ class ENS {
this.doSetENSProvider = this.namesConfig.provider === 'ens';
this.addENSToEmbarkJS();
this.configureContracts();
this.registerEvents();
}
registerEvents() {
this.events.once("contracts:deploy:afterAll", this.setProviderAndRegisterDomains.bind(this));
this.events.once("web3Ready", this.configureContracts.bind(this));
this.events.setCommandHandler("storage:ens:associate", this.associateStorageToEns.bind(this));
}
@ -74,11 +142,15 @@ class ENS {
self.addSetProvider(config);
}
if ((!self.isDev && self.env !== 'privatenet') || !self.registration || !self.registration.subdomains || !Object.keys(self.registration.subdomains).length) {
self.events.request('blockchain:networkId', (networkId) => {
const isKnownNetworks = Object.keys(ENS_CONTRACTS_CONFIG).includes(networkId);
const shouldRegisterSubdomain = self.registration && self.registration.subdomains && Object.keys(self.registration.subdomains).length;
if (isKnownNetworks || !shouldRegisterSubdomain) {
return cb();
}
self.registerConfigDomains(config, cb);
});
});
}
associateStorageToEns(options, cb) {
@ -216,73 +288,8 @@ class ENS {
}
configureContracts() {
const config = {
"default": {
"gas": "auto",
"contracts": {
"ENS": {
"deploy": false,
"silent": true
},
"ENSRegistry": {
"deploy": true,
"silent": true,
"args": []
},
"Resolver": {
"deploy": true,
"silent": true,
"args": ["$ENSRegistry"]
},
"FIFSRegistrar": {
"deploy": false
}
}
},
"ropsten": {
"contracts": {
"ENSRegistry": {
"address": "0x112234455c3a32fd11230c42e7bccd4a84e02010",
"silent": true
},
"Resolver": {
"deploy": false
},
"FIFSRegistrar": {
"deploy": false
}
}
},
"rinkeby": {
"contracts": {
"ENSRegistry": {
"address": "0xe7410170f87102DF0055eB195163A03B7F2Bff4A",
"silent": true
},
"Resolver": {
"deploy": false
},
"FIFSRegistrar": {
"deploy": false
}
}
},
"livenet": {
"contracts": {
"ENSRegistry": {
"address": "0x314159265dd8dbb310642f98f50c066173c1259b",
"silent": true
},
"Resolver": {
"deploy": false
},
"FIFSRegistrar": {
"deploy": false
}
}
}
};
config.testnet = config.ropsten;
this.events.request('blockchain:networkId', (networkId) => {
const config = Object.assign({}, DEFAULT_ENS_CONTRACTS_CONFIG, {[this.env]: ENS_CONTRACTS_CONFIG[networkId]});
if (this.registration && this.registration.rootDomain) {
// Register root domain if it is defined
@ -302,14 +309,12 @@ class ENS {
]
};
}
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'));
//}
});
}
addSetProvider(config) {