1
0
mirror of https://github.com/oceanprotocol-archive/squid-js.git synced 2024-02-02 15:31:51 +01:00

added automatic network discovery to squid

This commit is contained in:
Sebastian Gerske 2018-09-21 11:57:33 +02:00
parent 77c4914d4e
commit 591713dd90
7 changed files with 60 additions and 34 deletions

View File

@ -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
})()
}

View File

@ -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) {

View File

@ -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
}
}

View File

@ -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
})()
}

View File

@ -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)

View File

@ -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)

View File

@ -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)
}
}