1
0
mirror of https://github.com/oceanprotocol/ocean.js.git synced 2024-11-26 20:39:05 +01:00
ocean.js/src/utils/ConfigHelper.ts
Alex Coseru e964b2a4a4
refactor signatures (#1395)
* refactor signatures
2022-04-14 16:52:12 +03:00

229 lines
7.3 KiB
TypeScript

import Config from '../models/Config'
// eslint-disable-next-line import/no-named-default
import { default as DefaultContractsAddresses } from '@oceanprotocol/contracts/addresses/address.json'
import LoggerInstance from './Logger'
const configHelperNetworksBase: Config = {
chainId: null,
network: 'unknown',
metadataCacheUri: 'https://v4.aquarius.oceanprotocol.com',
nodeUri: 'http://127.0.0.1:8545',
providerUri: 'http://127.0.0.1:8030',
subgraphUri: null,
explorerUri: null,
oceanTokenAddress: null,
oceanTokenSymbol: 'OCEAN',
poolTemplateAddress: null,
fixedRateExchangeAddress: null,
dispenserAddress: null,
startBlock: 0,
transactionBlockTimeout: 50,
transactionConfirmationBlocks: 1,
transactionPollingTimeout: 750,
gasFeeMultiplier: 1
}
export const configHelperNetworks: Config[] = [
{
...configHelperNetworksBase
},
{
// barge
...configHelperNetworksBase,
chainId: 8996,
network: 'development',
metadataCacheUri: 'http://127.0.0.1:5000',
providerUri: 'http://172.15.0.4:8030'
},
{
...configHelperNetworksBase,
chainId: 3,
network: 'ropsten',
nodeUri: 'https://ropsten.infura.io/v3',
providerUri: 'https://v4.provider.ropsten.oceanprotocol.com',
subgraphUri: 'https://v4.subgraph.ropsten.oceanprotocol.com',
explorerUri: 'https://ropsten.etherscan.io',
gasFeeMultiplier: 1.1
},
{
...configHelperNetworksBase,
chainId: 4,
network: 'rinkeby',
nodeUri: 'https://rinkeby.infura.io/v3',
providerUri: 'https://v4.provider.rinkeby.oceanprotocol.com',
subgraphUri: 'https://v4.subgraph.rinkeby.oceanprotocol.com',
explorerUri: 'https://rinkeby.etherscan.io',
gasFeeMultiplier: 1.1
},
{
...configHelperNetworksBase,
chainId: 1,
network: 'mainnet',
nodeUri: 'https://mainnet.infura.io/v3',
providerUri: 'https://v4.provider.mainnet.oceanprotocol.com',
subgraphUri: 'https://v4.subgraph.mainnet.oceanprotocol.com',
explorerUri: 'https://etherscan.io',
startBlock: 11105459,
transactionBlockTimeout: 150,
transactionConfirmationBlocks: 5,
transactionPollingTimeout: 1750,
gasFeeMultiplier: 1.05
},
{
...configHelperNetworksBase,
chainId: 137,
network: 'polygon',
nodeUri: 'https://polygon-mainnet.infura.io/v3',
providerUri: 'https://v4.provider.polygon.oceanprotocol.com',
subgraphUri: 'https://v4.subgraph.polygon.oceanprotocol.com',
explorerUri: 'https://polygonscan.com',
oceanTokenSymbol: 'mOCEAN'
},
{
...configHelperNetworksBase,
chainId: 1287,
network: 'moonbase',
nodeUri: 'https://rpc.api.moonbase.moonbeam.network',
providerUri: 'https://v4.provider.moonbase.oceanprotocol.com',
subgraphUri: 'https://v4.subgraph.moonbase.oceanprotocol.com',
explorerUri: 'https://moonbase.moonscan.io/',
gasFeeMultiplier: 1.1
},
{
...configHelperNetworksBase,
chainId: 2021000,
network: 'gaiaxtestnet',
nodeUri: 'https://rpc.gaiaxtestnet.oceanprotocol.com',
providerUri: 'https://v4.provider.gaiaxtestnet.oceanprotocol.com',
subgraphUri: 'https://v4.subgraph.gaiaxtestnet.oceanprotocol.com',
explorerUri: 'https://blockscout.gaiaxtestnet.oceanprotocol.com'
},
{
...configHelperNetworksBase,
chainId: 80001,
network: 'mumbai',
nodeUri: 'https://polygon-mumbai.infura.io/v3',
providerUri: 'https://v4.provider.mumbai.oceanprotocol.com',
subgraphUri: 'https://v4.subgraph.mumbai.oceanprotocol.com',
explorerUri: 'https://mumbai.polygonscan.com',
gasFeeMultiplier: 1.1
},
{
...configHelperNetworksBase,
chainId: 56,
network: 'bsc',
nodeUri: 'https://bsc-dataseed.binance.org',
providerUri: 'https://v4.provider.bsc.oceanprotocol.com',
subgraphUri: 'https://v4.subgraph.bsc.oceanprotocol.com',
explorerUri: 'https://bscscan.com/',
gasFeeMultiplier: 1.05
},
{
...configHelperNetworksBase,
chainId: 246,
network: 'energyweb',
nodeUri: 'https://rpc.energyweb.org',
providerUri: 'https://v4.provider.energyweb.oceanprotocol.com',
subgraphUri: 'https://v4.subgraph.energyweb.oceanprotocol.com',
explorerUri: 'https://explorer.energyweb.org',
gasFeeMultiplier: 1.05
},
{
...configHelperNetworksBase,
chainId: 1285,
network: 'moonriver',
nodeUri: 'https://moonriver.api.onfinality.io/public',
providerUri: 'https://v4.provider.moonriver.oceanprotocol.com',
subgraphUri: 'https://v4.subgraph.moonriver.oceanprotocol.com',
explorerUri: 'https://moonriver.moonscan.io/',
gasFeeMultiplier: 1.05
}
]
export class ConfigHelper {
/* Load contract addresses from env ADDRESS_FILE (generated by ocean-contracts) */
public getAddressesFromEnv(network: string, customAddresses?: any): Partial<Config> {
// use the defaults first
let configAddresses: Partial<Config>
// load from custom addresses structure
if (customAddresses) {
try {
const {
FixedPrice,
Dispenser,
Staking,
poolTemplate,
ERC721Factory,
OPFCommunityFeeCollector,
Ocean,
chainId,
startBlock
} = customAddresses[network]
configAddresses = {
erc721FactoryAddress: ERC721Factory,
sideStakingAddress: Staking,
opfCommunityFeeCollector: OPFCommunityFeeCollector,
poolTemplateAddress: poolTemplate,
fixedRateExchangeAddress: FixedPrice,
dispenserAddress: Dispenser,
oceanTokenAddress: Ocean,
chainId: chainId,
startBlock: startBlock,
...(process.env.AQUARIUS_URI && { metadataCacheUri: process.env.AQUARIUS_URI })
}
} catch (e) {
// console.error(`ERROR: Could not load local contract address file: ${e.message}`)
// return null
}
} else {
// no custom addresses structure was passed, trying to load default
if (DefaultContractsAddresses[network]) {
const {
FixedPrice,
Dispenser,
Staking,
poolTemplate,
OPFCommunityFeeCollector,
ERC721Factory,
Ocean,
chainId,
startBlock
} = DefaultContractsAddresses[network]
configAddresses = {
erc721FactoryAddress: ERC721Factory,
sideStakingAddress: Staking,
opfCommunityFeeCollector: OPFCommunityFeeCollector,
poolTemplateAddress: poolTemplate,
fixedRateExchangeAddress: FixedPrice,
dispenserAddress: Dispenser,
oceanTokenAddress: Ocean,
chainId: chainId,
startBlock: startBlock,
...(process.env.AQUARIUS_URI && { metadataCacheUri: process.env.AQUARIUS_URI })
}
}
}
return configAddresses
}
public getConfig(network: string | number, infuraProjectId?: string): Config {
const filterBy = typeof network === 'string' ? 'network' : 'chainId'
let config = configHelperNetworks.find((c) => c[filterBy] === network)
if (!config) {
LoggerInstance.error(`No config found for given network '${network}'`)
return null
}
const contractAddressesConfig = this.getAddressesFromEnv(config.network)
config = { ...config, ...contractAddressesConfig }
const nodeUri = infuraProjectId
? `${config.nodeUri}/${infuraProjectId}`
: config.nodeUri
return { ...config, nodeUri }
}
}