mirror of
https://github.com/oceanprotocol/ocean.js.git
synced 2024-11-26 20:39:05 +01:00
fixes on the checks, also consider name typos, as we currently have
This commit is contained in:
parent
1ca23626c2
commit
9277847279
@ -160,7 +160,7 @@ export const configHelperNetworks: Config[] = [
|
|||||||
{
|
{
|
||||||
...configHelperNetworksBase,
|
...configHelperNetworksBase,
|
||||||
chainId: 23295,
|
chainId: 23295,
|
||||||
network: 'oasis_saphire_testnet',
|
network: 'oasis_sapphire_testnet',
|
||||||
nodeUri: 'https://testnet.sapphire.oasis.dev',
|
nodeUri: 'https://testnet.sapphire.oasis.dev',
|
||||||
subgraphUri:
|
subgraphUri:
|
||||||
'https://v4.subgraph.sapphire-testnet.oceanprotocol.com/subgraphs/name/oceanprotocol/ocean-subgraph',
|
'https://v4.subgraph.sapphire-testnet.oceanprotocol.com/subgraphs/name/oceanprotocol/ocean-subgraph',
|
||||||
@ -181,9 +181,16 @@ export const configHelperNetworks: Config[] = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
export const KNOWN_CONFIDENTIAL_EVMS = {
|
export const KNOWN_CONFIDENTIAL_EVMS = {
|
||||||
names: ['asis_saphire_testnet', 'oasis_saphire'],
|
// there are some typos around these names (on addresses.json is just one 'p' on 'sapphire')
|
||||||
chainIds: [23295, 23294]
|
networks: [
|
||||||
|
{
|
||||||
|
name: ['oasis_sapphire', 'oasis_saphire'], // include alias or typos
|
||||||
|
chainId: 23294
|
||||||
|
},
|
||||||
|
{ name: ['oasis_sapphire_testnet', 'oasis_saphire_testnet'], chainId: 23295 }
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
export class ConfigHelper {
|
export class ConfigHelper {
|
||||||
/* Load contract addresses from env ADDRESS_FILE (generated by ocean-contracts) */
|
/* Load contract addresses from env ADDRESS_FILE (generated by ocean-contracts) */
|
||||||
public getAddressesFromEnv(network: string, customAddresses?: any): Partial<Config> {
|
public getAddressesFromEnv(network: string, customAddresses?: any): Partial<Config> {
|
||||||
@ -271,6 +278,22 @@ export class ConfigHelper {
|
|||||||
return configAddresses
|
return configAddresses
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private checkConfigConfidential(network: string | number): boolean {
|
||||||
|
let search
|
||||||
|
if (typeof network === 'string') {
|
||||||
|
search = KNOWN_CONFIDENTIAL_EVMS.networks.filter((netInfo) => {
|
||||||
|
return netInfo.name.includes(network.toString())
|
||||||
|
})
|
||||||
|
|
||||||
|
// chain id
|
||||||
|
} else {
|
||||||
|
search = KNOWN_CONFIDENTIAL_EVMS.networks.filter((netInfo) => {
|
||||||
|
return netInfo.chainId === Number(network)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return search.length > 0
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the config object for a specific network supported by the oceanprotocol stack
|
* Returns the config object for a specific network supported by the oceanprotocol stack
|
||||||
* @param {string | number} network the network's chainId or name
|
* @param {string | number} network the network's chainId or name
|
||||||
@ -279,8 +302,27 @@ export class ConfigHelper {
|
|||||||
*/
|
*/
|
||||||
public getConfig(network: string | number, infuraProjectId?: string): Config {
|
public getConfig(network: string | number, infuraProjectId?: string): Config {
|
||||||
const filterBy = typeof network === 'string' ? 'network' : 'chainId'
|
const filterBy = typeof network === 'string' ? 'network' : 'chainId'
|
||||||
|
|
||||||
let config = configHelperNetworks.find((c) => c[filterBy] === network)
|
let config = configHelperNetworks.find((c) => c[filterBy] === network)
|
||||||
|
|
||||||
|
if (!config) {
|
||||||
|
// check typos of network name
|
||||||
|
const checkAlternateNames =
|
||||||
|
filterBy === 'network' && network.toString().includes('oasis_sap')
|
||||||
|
if (checkAlternateNames) {
|
||||||
|
let networkName = network.toString()
|
||||||
|
// 1st search was with 2 'pp' characters
|
||||||
|
if (networkName.indexOf('sapp') > -1) {
|
||||||
|
networkName = networkName.replace('sapp', 'sap')
|
||||||
|
// try just one 'p
|
||||||
|
} else {
|
||||||
|
networkName = networkName.replace('sap', 'sapp')
|
||||||
|
// try with 2 pp
|
||||||
|
}
|
||||||
|
config = configHelperNetworks.find((c) => c[filterBy] === networkName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!config) {
|
if (!config) {
|
||||||
LoggerInstance.error(`No config found for given network '${network}'`)
|
LoggerInstance.error(`No config found for given network '${network}'`)
|
||||||
return null
|
return null
|
||||||
@ -299,15 +341,8 @@ export class ConfigHelper {
|
|||||||
addresses = null
|
addresses = null
|
||||||
}
|
}
|
||||||
const contractAddressesConfig = this.getAddressesFromEnv(config.network, addresses)
|
const contractAddressesConfig = this.getAddressesFromEnv(config.network, addresses)
|
||||||
// network name
|
|
||||||
if (filterBy === 'network') {
|
config.confidentialEVM = this.checkConfigConfidential(network)
|
||||||
config.confidentialEVM = KNOWN_CONFIDENTIAL_EVMS.names.includes(
|
|
||||||
network.toString().toLowerCase()
|
|
||||||
)
|
|
||||||
// chain id
|
|
||||||
} else {
|
|
||||||
config.confidentialEVM = KNOWN_CONFIDENTIAL_EVMS.chainIds.includes(Number(network))
|
|
||||||
}
|
|
||||||
|
|
||||||
config = { ...config, ...contractAddressesConfig }
|
config = { ...config, ...contractAddressesConfig }
|
||||||
|
|
||||||
|
@ -1,31 +1,22 @@
|
|||||||
import { SHA256 } from 'crypto-js'
|
import { SHA256 } from 'crypto-js'
|
||||||
import { ethers, Signer } from 'ethers'
|
import { ethers, Signer } from 'ethers'
|
||||||
import {
|
import { ConfigHelper, KNOWN_CONFIDENTIAL_EVMS } from '../../src/config'
|
||||||
Aquarius,
|
|
||||||
DatatokenCreateParams,
|
|
||||||
Nft,
|
|
||||||
NftCreateData,
|
|
||||||
NftFactory,
|
|
||||||
ProviderInstance,
|
|
||||||
ZERO_ADDRESS,
|
|
||||||
// approveWei,
|
|
||||||
// ProviderComputeInitialize,
|
|
||||||
// ConsumeMarketFee,
|
|
||||||
// Datatoken,
|
|
||||||
// Config,
|
|
||||||
// DDO,
|
|
||||||
// ProviderFees,
|
|
||||||
getEventFromTx,
|
|
||||||
DispenserCreationParams,
|
|
||||||
FreCreationParams,
|
|
||||||
ConfigHelper
|
|
||||||
} from '../../src'
|
|
||||||
import { hexlify } from 'ethers/lib/utils'
|
import { hexlify } from 'ethers/lib/utils'
|
||||||
import { createHash } from 'crypto'
|
import { createHash } from 'crypto'
|
||||||
import fs from 'fs'
|
import fs from 'fs'
|
||||||
|
|
||||||
// eslint-disable-next-line import/no-named-default
|
// eslint-disable-next-line import/no-named-default
|
||||||
import { default as Addresses } from '@oceanprotocol/contracts/addresses/address.json'
|
import { default as Addresses } from '@oceanprotocol/contracts/addresses/address.json'
|
||||||
|
import { Aquarius } from '../services/Aquarius'
|
||||||
|
import { NftFactory } from '../contracts/NFTFactory'
|
||||||
|
import { Nft } from '../contracts/NFT'
|
||||||
|
import { DatatokenCreateParams } from '../@types/Datatoken'
|
||||||
|
import { NftCreateData } from '../@types/NFTFactory'
|
||||||
|
import { ZERO_ADDRESS } from './Constants'
|
||||||
|
import { DispenserCreationParams } from '../@types/Dispenser'
|
||||||
|
import { FreCreationParams } from '../@types/FixedPrice'
|
||||||
|
import { getEventFromTx } from './ContractUtils'
|
||||||
|
import { ProviderInstance } from '../services/Provider'
|
||||||
|
|
||||||
// template address OR templateId
|
// template address OR templateId
|
||||||
export function isConfidentialEVM(network: string | number): boolean {
|
export function isConfidentialEVM(network: string | number): boolean {
|
||||||
@ -88,7 +79,7 @@ export async function calculateTemplateIndex(
|
|||||||
if (typeof template === 'string') {
|
if (typeof template === 'string') {
|
||||||
const templateAddresses: any[] = Object.values(templatesAvailable)
|
const templateAddresses: any[] = Object.values(templatesAvailable)
|
||||||
index = templateAddresses.findIndex(function (item) {
|
index = templateAddresses.findIndex(function (item) {
|
||||||
return item.indexOf(template) !== -1
|
return item === template
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
const templateIndexes = Object.keys(templatesAvailable)
|
const templateIndexes = Object.keys(templatesAvailable)
|
||||||
@ -96,6 +87,9 @@ export async function calculateTemplateIndex(
|
|||||||
return item.indexOf(template.toString()) !== -1
|
return item.indexOf(template.toString()) !== -1
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
if (index !== -1) {
|
||||||
|
index += 1
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return index
|
return index
|
||||||
|
@ -4,15 +4,18 @@ import { calculateTemplateIndex, isConfidentialEVM } from '../../src/utils'
|
|||||||
|
|
||||||
describe('Asset utils (createAsset)', () => {
|
describe('Asset utils (createAsset)', () => {
|
||||||
it('should check if confidential EVM', async () => {
|
it('should check if confidential EVM', async () => {
|
||||||
for (const name of KNOWN_CONFIDENTIAL_EVMS.names) {
|
for (const network of KNOWN_CONFIDENTIAL_EVMS.networks) {
|
||||||
assert(
|
network.name.map((networkName) => {
|
||||||
isConfidentialEVM(name) === true,
|
assert(
|
||||||
`Network: "${name}" is not a confidental EVM`
|
isConfidentialEVM(networkName) === true,
|
||||||
)
|
`Network: "${networkName}" is not a confidental EVM`
|
||||||
|
)
|
||||||
|
return true
|
||||||
|
})
|
||||||
}
|
}
|
||||||
for (const chain of KNOWN_CONFIDENTIAL_EVMS.chainIds) {
|
for (const chain of KNOWN_CONFIDENTIAL_EVMS.networks) {
|
||||||
assert(
|
assert(
|
||||||
isConfidentialEVM(chain) === true,
|
isConfidentialEVM(chain.chainId) === true,
|
||||||
`Chain Id: "${chain}" is not a confidental EVM`
|
`Chain Id: "${chain}" is not a confidental EVM`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -25,17 +28,55 @@ describe('Asset utils (createAsset)', () => {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should get correct template index from contract artifacts', async () => {
|
it('should get correct template index from contract artifacts (using SC address as template)', async () => {
|
||||||
const wrongOne = await calculateTemplateIndex(
|
const wrongOne = await calculateTemplateIndex(
|
||||||
KNOWN_CONFIDENTIAL_EVMS.chainIds[0], // testnet chain
|
KNOWN_CONFIDENTIAL_EVMS.networks[1].chainId, // testnet chain
|
||||||
'12'
|
'12'
|
||||||
)
|
)
|
||||||
assert(wrongOne === -1, 'wrong template index, should be inexistent!')
|
assert(wrongOne === -1, 'wrong template index, should be inexistent!')
|
||||||
|
|
||||||
const okIndex = await calculateTemplateIndex(
|
const okIndex = await calculateTemplateIndex(
|
||||||
KNOWN_CONFIDENTIAL_EVMS.chainIds[1], // mainnet chain
|
KNOWN_CONFIDENTIAL_EVMS.networks[0].chainId, // mainnet chain
|
||||||
'0x4dD281EB67DED07E76E413Df16176D66ae69e240'
|
'0x4dD281EB67DED07E76E413Df16176D66ae69e240'
|
||||||
)
|
)
|
||||||
assert(okIndex >= 1, 'wrong template index, should exist!')
|
assert(okIndex >= 1, 'wrong template index, should exist!')
|
||||||
|
|
||||||
|
const okIndexNonConfidential = await calculateTemplateIndex(
|
||||||
|
11155111, // sepolia
|
||||||
|
'0xDEfD0018969cd2d4E648209F876ADe184815f038'
|
||||||
|
)
|
||||||
|
assert(okIndexNonConfidential === 2, 'Should be template 2 for sepolia!')
|
||||||
|
|
||||||
|
const notOkIndexNonConfidential = await calculateTemplateIndex(
|
||||||
|
11155111, // sepolia
|
||||||
|
'0xDEfD0018969cd2d4E648209F876ADe184815f022' // wrong template
|
||||||
|
)
|
||||||
|
assert(notOkIndexNonConfidential === -1, 'Template should not exist on sepolia!')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should get correct template index from contract artifacts (using template ID as template)', async () => {
|
||||||
|
const okTemplate = await calculateTemplateIndex(
|
||||||
|
KNOWN_CONFIDENTIAL_EVMS.networks[1].chainId, // testnet chain
|
||||||
|
4
|
||||||
|
)
|
||||||
|
assert(okTemplate === 4, 'wrong template index, should be index 4!')
|
||||||
|
|
||||||
|
const wrongOne = await calculateTemplateIndex(
|
||||||
|
KNOWN_CONFIDENTIAL_EVMS.networks[0].chainId, // mainnet chain
|
||||||
|
6
|
||||||
|
)
|
||||||
|
assert(wrongOne === -1, 'wrong template index, should only exist 5!')
|
||||||
|
|
||||||
|
const okIndexNonConfidential = await calculateTemplateIndex(
|
||||||
|
11155111, // sepolia
|
||||||
|
2 // ok template
|
||||||
|
)
|
||||||
|
assert(okIndexNonConfidential === 2, 'Should be template 2 for sepolia!')
|
||||||
|
|
||||||
|
const notOkIndexNonConfidential = await calculateTemplateIndex(
|
||||||
|
11155111, // sepolia
|
||||||
|
3 // wrong template
|
||||||
|
)
|
||||||
|
assert(notOkIndexNonConfidential === -1, 'Template 3 should not exist on sepolia!')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user