From 51ddf52d58dda02ee60ecd22759939b947a94f55 Mon Sep 17 00:00:00 2001 From: paulo-ocean Date: Thu, 12 Sep 2024 13:18:16 +0100 Subject: [PATCH] some fix and refactor --- src/config/ConfigHelper.ts | 9 ++- src/utils/Assets.ts | 91 ++++++++++++++------------- test/integration/PublishFlows.test.ts | 4 +- 3 files changed, 57 insertions(+), 47 deletions(-) diff --git a/src/config/ConfigHelper.ts b/src/config/ConfigHelper.ts index dc61d1d1..55f5eb7a 100644 --- a/src/config/ConfigHelper.ts +++ b/src/config/ConfigHelper.ts @@ -300,8 +300,15 @@ export class ConfigHelper { console.log(e) addresses = null } - const contractAddressesConfig = this.getAddressesFromEnv(config.network, addresses) + let contractAddressesConfig = this.getAddressesFromEnv(config.network, addresses) + // check oasis network name typos on addresses.json + if (!contractAddressesConfig && KNOWN_CONFIDENTIAL_EVMS.includes(config.chainId)) { + contractAddressesConfig = this.getAddressesFromEnv( + config.network.replaceAll('sapp', 'sap'), + addresses + ) + } config.confidentialEVM = filterBy === 'chainId' ? KNOWN_CONFIDENTIAL_EVMS.includes(Number(network)) diff --git a/src/utils/Assets.ts b/src/utils/Assets.ts index bc04737d..ab3bb9bd 100644 --- a/src/utils/Assets.ts +++ b/src/utils/Assets.ts @@ -118,7 +118,7 @@ export async function calculateActiveTemplateIndex( * @param name asset name * @param symbol asse symbol * @param owner owner address - * @param assetUrl asset url + * @param assetUrl asset url, if present and confidential evm, add it to token create params * @param templateIDorAddress either template address or id * @param ddo ddo * @param encryptDDO encrypt or not? @@ -126,22 +126,20 @@ export async function calculateActiveTemplateIndex( * @param providerFeeToken the provider fee token * @param nftContractAddress the nft contract address * @param aquariusInstance aquarius, could be node instance url - * @param filesObject if present and confidential evm, add it to token create params * @returns ddo id as string */ export async function createAsset( name: string, symbol: string, owner: Signer, - assetUrl: any, + assetUrl: any, // files object templateIDorAddress: string | number, // If string, it's template address , otherwise, it's templateId ddo: any, encryptDDO: boolean = true, // default is true providerUrl: string, providerFeeToken: string, - nftContractAddress: string, // addresses.ERC721Factory, aquariusInstance: Aquarius, - filesObject?: any + nftContractAddress?: string // addresses.ERC721Factory, ): Promise { const isAddress = typeof templateIDorAddress === 'string' const isTemplateIndex = typeof templateIDorAddress === 'number' @@ -152,8 +150,9 @@ export async function createAsset( const config = new ConfigHelper().getConfig(parseInt(String(chainID))) - // This function does not consider the fact the template could be disabled - // let templateIndex = await calculateTemplateIndex(chainID, template) + if (!nftContractAddress) { + nftContractAddress = config.nftFactoryAddress + } let templateIndex = await calculateActiveTemplateIndex( owner, @@ -180,7 +179,7 @@ export async function createAsset( const nftParamsAsset: NftCreateData = { name, symbol, - templateIndex, + templateIndex: 1, tokenURI: 'aaa', transferable: true, owner: account @@ -196,46 +195,50 @@ export async function createAsset( } // include fileObject in the DT constructor - if (config.confidentialEVM && templateIndex === 4) { - datatokenParams.filesObject = filesObject + if (config.confidentialEVM) { + datatokenParams.filesObject = assetUrl } let bundleNFT - - if (!ddo.stats?.price?.value) { - bundleNFT = await nftFactory.createNftWithDatatoken(nftParamsAsset, datatokenParams) - } else if (ddo.stats?.price?.value === '0') { - const dispenserParams: DispenserCreationParams = { - dispenserAddress: config.dispenserAddress, - maxTokens: '1', - maxBalance: '100000000', - withMint: true, - allowedSwapper: ZERO_ADDRESS + try { + if (!ddo.stats?.price?.value) { + bundleNFT = await nftFactory.createNftWithDatatoken(nftParamsAsset, datatokenParams) + } else if (ddo.stats?.price?.value === '0') { + const dispenserParams: DispenserCreationParams = { + dispenserAddress: config.dispenserAddress, + maxTokens: '1', + maxBalance: '100000000', + withMint: true, + allowedSwapper: ZERO_ADDRESS + } + bundleNFT = await nftFactory.createNftWithDatatokenWithDispenser( + nftParamsAsset, + datatokenParams, + dispenserParams + ) + } else { + // fixed price + const fixedPriceParams: FreCreationParams = { + fixedRateAddress: config.fixedRateExchangeAddress, + baseTokenAddress: config.oceanTokenAddress, + owner: account, + marketFeeCollector: account, + baseTokenDecimals: 18, + datatokenDecimals: 18, + fixedRate: ddo.stats.price.value, + marketFee: '0', + allowedConsumer: account, + withMint: true + } + bundleNFT = await nftFactory.createNftWithDatatokenWithFixedRate( + nftParamsAsset, + datatokenParams, + fixedPriceParams + ) } - bundleNFT = await nftFactory.createNftWithDatatokenWithDispenser( - nftParamsAsset, - datatokenParams, - dispenserParams - ) - } else { - // fixed price - const fixedPriceParams: FreCreationParams = { - fixedRateAddress: config.fixedRateExchangeAddress, - baseTokenAddress: config.oceanTokenAddress, - owner: account, - marketFeeCollector: account, - baseTokenDecimals: 18, - datatokenDecimals: 18, - fixedRate: ddo.stats.price.value, - marketFee: '0', - allowedConsumer: account, - withMint: true - } - bundleNFT = await nftFactory.createNftWithDatatokenWithFixedRate( - nftParamsAsset, - datatokenParams, - fixedPriceParams - ) + } catch (err) { + console.log('ERROR creating NFT bundle', err) + return null } const trxReceipt = await bundleNFT.wait() diff --git a/test/integration/PublishFlows.test.ts b/test/integration/PublishFlows.test.ts index aa48c288..c5b0b5c9 100644 --- a/test/integration/PublishFlows.test.ts +++ b/test/integration/PublishFlows.test.ts @@ -212,8 +212,8 @@ describe('Publish tests', async () => { true, // encrypted ddo providerUrl, ZERO_ADDRESS, // provider fee token - addresses.ERC721Factory, // nft template factory - aquarius + aquarius, + addresses.ERC721Factory // nft template factory ) console.log('Published asset, ddo id:', asset)