move accounts to web3 module

This commit is contained in:
Iuri Matias 2018-05-18 18:31:47 -04:00 committed by Jonathan Rainville
parent 4d0ebc03ad
commit ae93d78cc2
5 changed files with 44 additions and 13 deletions

View File

@ -4,14 +4,16 @@ class Blockchain {
constructor(options) {
this.plugins = options.plugins;
this.logger = options.logger;
this.config = options.config;
this.contractsConfig = this.config.contractsConfig;
this.events = options.events;
this.contractsConfig = options.contractsConfig;
this.web3 = options.web3;
this.addCheck = options.addCheck;
if (!this.web3) {
this.initWeb3();
}
this.registerServiceCheck();
this.registerAccountRequests();
}
initWeb3() {
@ -55,6 +57,31 @@ class Blockchain {
});
}
registerAccountRequests() {
const self = this;
this.events.setCommandHandler("blockchain:defaultAccount:get", function(cb) {
cb(self.defaultAccount);
});
this.events.setCommandHandler("blockchain:defaultAccount:set", function(account, cb) {
self.setDefaultAccount(account);
cb();
});
}
defaultAccount() {
return this.web3.eth.defaultAccount;
}
setDefaultAccount(account) {
this.web3.eth.defaultAccount = account;
}
getAccounts(cb) {
this.web3.eth.getAccounts(cb);
}
}
module.exports = Blockchain;

View File

@ -9,7 +9,8 @@ let CodeGenerator = require('./code_generator.js');
class Deploy {
constructor(options) {
this.web3 = options.web3;
this.blockchain = options.blockchain;
this.web3 = this.blockchain.web3;
this.contractsManager = options.contractsManager;
this.logger = options.logger;
this.events = options.events;
@ -220,12 +221,12 @@ class Deploy {
let accounts = [];
let contractParams = (params || contract.args).slice();
let contractCode = contract.code;
let deploymentAccount = self.web3.eth.defaultAccount;
let deploymentAccount = self.blockchain.defaultAccount();
let deployObject;
async.waterfall([
function getAccounts(next) {
self.web3.eth.getAccounts(function (err, _accounts) {
self.blockchain.getAccounts(function (err, _accounts) {
if (err) {
return next(new Error(err));
}

View File

@ -11,7 +11,8 @@ class DeployManager {
this.events = options.events;
this.plugins = options.plugins;
this.web3 = options.web3;
this.blockchain = options.blockchain;
this.web3 = this.blockchain.web3;
this.chainConfig = (options.trackContracts !== false) ? this.config.chainTracker : false;
this.contractsManager = options.contractsManager;
this.gasLimit = false;
@ -52,7 +53,7 @@ class DeployManager {
return callback(Error("error connecting to blockchain node"));
}
self.web3.eth.getAccounts(function(err, _accounts) {
self.blockchain.getAccounts(function(err, _accounts) {
if (err) {
self.logger.error(__("Couldn't connect to an Ethereum node are you sure it's on?").red);
self.logger.info(__("make sure you have an Ethereum node or simulator running. e.g '%s'", 'embark blockchain').magenta);
@ -62,20 +63,20 @@ class DeployManager {
});
},
function setDefaultAccount(contractsManager, web3, callback) {
web3.eth.getAccounts(function (err, accounts) {
self.blockchain.getAccounts(function (err, accounts) {
if (err) {
self.logger.error(err);
return callback(new Error(err));
}
let accountConfig = self.config.blockchainConfig.account;
let selectedAccount = accountConfig && accountConfig.address;
web3.eth.defaultAccount = (selectedAccount || accounts[0]);
self.blockchain.setDefaultAccount(selectedAccount || accounts[0]);
callback(null, contractsManager, web3);
});
},
function deployAllContracts(contractsManager, web3, callback) {
let deploy = new Deploy({
web3: web3,
blockchain: self.blockchain,
contractsManager: contractsManager,
logger: self.logger,
events: self.events,

View File

@ -213,7 +213,7 @@ class Engine {
});
this.deployManager = new DeployManager({
web3: options.web3 || self.web3,
blockchain: this.blockchain,
trackContracts: options.trackContracts,
config: this.config,
logger: this.logger,
@ -278,7 +278,7 @@ class Engine {
addCheck: this.servicesMonitor.addCheck.bind(this.servicesMonitor),
events: this.events,
logger: this.logger,
options: options.web3 // TODO: might not be necessary
web3: options.web3
});
this.web3 = this.blockchain.web3;

View File

@ -69,8 +69,10 @@ Test.prototype.deployAll = function(contractsConfig, cb) {
//{abiType: 'contracts', embarkJS: false}
self.engine.startService("libraryManager");
self.engine.startService("codeGenerator");
self.engine.startService("web3", {
web3: self.web3
});
self.engine.startService("deployment", {
web3: self.web3,
trackContracts: false
});
callback();