diff --git a/src/keeper/auth.js b/src/keeper/auth.js index 3594e87..616d874 100644 --- a/src/keeper/auth.js +++ b/src/keeper/auth.js @@ -2,11 +2,11 @@ import ContractLoader from './contractLoader' import KeeperBase from './keeper-base' export default class OceanAuth extends KeeperBase { - constructor(web3, network) { - super(web3, network) + constructor(web3Helper) { + super(web3Helper) return (async () => { - this.contract = await ContractLoader.load('OceanAuth', this._network, this._web3) + this.contract = await ContractLoader.load('OceanAuth', this._web3Helper) return this })() } diff --git a/src/keeper/contractLoader.js b/src/keeper/contractLoader.js index bede559..b1b187b 100644 --- a/src/keeper/contractLoader.js +++ b/src/keeper/contractLoader.js @@ -4,17 +4,22 @@ import Logger from '../utils/logger' const contracts = [] export default class ContractLoader { - static async _doLoad(what, where, web3) { + static async _doLoad(what, web3Helper) { + const where = web3Helper.getNetworkName().toLowerCase() Logger.log('Loading', what, 'from', where) - /* eslint-disable-next-line security/detect-non-literal-require */ - const artifact = require(`@oceanprotocol/keeper-contracts/artifacts/${what}.${where}`) - Logger.log('Loaded artifact', artifact) + try { + /* eslint-disable-next-line security/detect-non-literal-require */ + const artifact = require(`@oceanprotocol/keeper-contracts/artifacts/${what}.${where}`) + // Logger.log('Loaded artifact', artifact) - const contract = TruffleContract(artifact) - Logger.log('Getting instance of', what, 'from', where, 'at', artifact.address) - contract.setProvider(web3.currentProvider) - contracts[what] = await contract.at(artifact.address) - return contracts[what] + const contract = TruffleContract(artifact) + Logger.log('Getting instance of', what, 'from', where, 'at', artifact.address) + contract.setProvider(web3Helper.web3.currentProvider) + contracts[what] = await contract.at(artifact.address) + return contracts[what] + } catch (err) { + Logger.error('Failed to load', what, 'from', where) + } } static async load(what, where, provider) { diff --git a/src/keeper/keeper-base.js b/src/keeper/keeper-base.js index 70dee1d..e9e5b85 100644 --- a/src/keeper/keeper-base.js +++ b/src/keeper/keeper-base.js @@ -1,7 +1,6 @@ export default class KeeperBase { - constructor(web3, network) { - this._web3 = web3 - this._network = network + constructor(web3Helper) { + this._web3Helper = web3Helper this.contract = null } } diff --git a/src/keeper/market.js b/src/keeper/market.js index 2b1b364..8b0dff5 100644 --- a/src/keeper/market.js +++ b/src/keeper/market.js @@ -4,11 +4,11 @@ import KeeperBase from './keeper-base' import Logger from '../utils/logger' export default class OceanMarket extends KeeperBase { - constructor(web3, network) { - super(web3, network) + constructor(web3Helper) { + super(web3Helper) return (async () => { - this.contract = await ContractLoader.load('OceanMarket', this._network, this._web3) + this.contract = await ContractLoader.load('OceanMarket', this._web3Helper) return this })() } diff --git a/src/keeper/token.js b/src/keeper/token.js index 7ea6893..ea22835 100644 --- a/src/keeper/token.js +++ b/src/keeper/token.js @@ -3,11 +3,11 @@ import KeeperBase from './keeper-base' import Logger from '../utils/logger' export default class OceanToken extends KeeperBase { - constructor(web3, network) { - super(web3, network) + constructor(web3Helper) { + super(web3Helper) return (async () => { - this.contract = await ContractLoader.load('OceanToken', this._network, this._web3) + this.contract = await ContractLoader.load('OceanToken', this._web3Helper) return this })() @@ -20,7 +20,7 @@ export default class OceanToken extends KeeperBase { async getEthBalance(account) { return new Promise((resolve, reject) => { Logger.log('getting balance for', account) - this._web3.eth.getBalance(account, 'latest', (err, balance) => { + this._web3Helper.web3.eth.getBalance(account, 'latest', (err, balance) => { if (err) return reject(err) Logger.log('balance', balance) resolve(balance) diff --git a/src/ocean.js b/src/ocean.js index 13390af..9f8e1eb 100644 --- a/src/ocean.js +++ b/src/ocean.js @@ -13,16 +13,17 @@ export default class Ocean { const web3Provider = config.web3Provider || new Web3.providers.HttpProvider(config.nodeUri) this._web3 = new Web3(web3Provider) this._defaultGas = config.gas || DEFAULT_GAS - this._network = config.network || 'development' this._providerUri = config.providerUri || null this.helper = new Web3Helper(this._web3) this.metadata = new MetaData(this._providerUri) + this._network = config.network || this.helper.getNetworkName().toLowerCase() || 'development' + return (async () => { - this.market = await new OceanMarket(this._web3, this._network) - this.auth = await new OceanAuth(this._web3, this._network) - this.token = await new OceanToken(this._web3, this._network) + this.market = await new OceanMarket(this.helper) + this.auth = await new OceanAuth(this.helper) + this.token = await new OceanToken(this.helper) return this })() @@ -73,8 +74,8 @@ export default class Ocean { .map(async (event) => ({ ...event.args, timeout: event.args._timeout.toNumber(), - status: await this.getOrderStatus(event.args._id).then((status) => status.toNumber()), - paid: await this.verifyOrderPayment(event.args._id).then((received) => received), + status: await this.market.getOrderStatus(event.args._id).then((status) => status.toNumber()), + paid: await this.market.verifyOrderPayment(event.args._id).then((received) => received), key: null })) Logger.debug('got orders: ', orders) diff --git a/src/utils/Web3Helper.js b/src/utils/Web3Helper.js index 24e6f0c..abe01e5 100644 --- a/src/utils/Web3Helper.js +++ b/src/utils/Web3Helper.js @@ -1,17 +1,38 @@ -import Logger from './logger' - export default class Web3Helper { constructor(web3) { - this._web3 = web3 + this.web3 = web3 } getAccounts() { - Logger.log(this._web3) - return this._web3.eth.accounts + return this.web3.eth.accounts + } + + getNetworkName() { + let network = 'unknown' + switch (this.web3.version.network) { + case '1': + network = 'Main' + break + case '2': + network = 'Morden' + break + case '3': + network = 'Ropsten' + break + case '4': + network = 'Rinkeby' + break + case '42': + network = 'Kovan' + break + default: + network = 'development' + } + return network } // web3 wrappers sign(accountAddress, message) { - return this._web3.eth.sign(accountAddress, message) + return this.web3.eth.sign(accountAddress, message) } }