From 233a70f8a777ed076ed14ea580ba1081ea16d465 Mon Sep 17 00:00:00 2001 From: npty <78221556+npty@users.noreply.github.com> Date: Fri, 24 Jan 2025 16:56:54 +0700 Subject: [PATCH] chore(sui): replace array versions with a mapping of version number to package id (#496) Co-authored-by: Blockchain Guy --- sui/deploy-contract.js | 4 +++- sui/utils/upgrade-utils.js | 6 ++++-- sui/utils/utils.js | 11 +++++------ 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/sui/deploy-contract.js b/sui/deploy-contract.js index 53beaa5da..891c4de11 100644 --- a/sui/deploy-contract.js +++ b/sui/deploy-contract.js @@ -315,7 +315,9 @@ async function deploy(keypair, client, supportedContract, config, chain, options // Update chain configuration with deployed contract address chain.contracts[packageName] = { address: published.packageId, - versions: [published.packageId], + versions: { + 0: published.packageId, + }, }; chain.contracts[packageName].structs = await getStructs(client, published.packageId); diff --git a/sui/utils/upgrade-utils.js b/sui/utils/upgrade-utils.js index 909f23252..71a898083 100644 --- a/sui/utils/upgrade-utils.js +++ b/sui/utils/upgrade-utils.js @@ -69,9 +69,11 @@ async function upgradePackage(client, keypair, packageToUpgrade, contractConfig, }, }); - const packageId = (result.objectChanges?.filter((a) => a.type === 'published') ?? [])[0].packageId; + const publishedObject = result.objectChanges.find((change) => change.type === 'published'); + const packageId = publishedObject.packageId; contractConfig.address = packageId; - contractConfig.versions.push(packageId); + const versionNumber = parseInt(publishedObject.version) - 1; + contractConfig.versions[versionNumber] = publishedObject.packageId; const [upgradeCap] = getObjectIdsByObjectTypes(result, [`${suiPackageAddress}::package::UpgradeCap`]); contractConfig.objects.UpgradeCap = upgradeCap; diff --git a/sui/utils/utils.js b/sui/utils/utils.js index ec73ddf7d..617215244 100644 --- a/sui/utils/utils.js +++ b/sui/utils/utils.js @@ -93,14 +93,13 @@ const checkSuiVersionMatch = () => { } }; +const readMoveToml = (moveDir) => { + return fs.readFileSync(`${__dirname}/../../node_modules/@axelar-network/axelar-cgp-sui/move/${moveDir}/Move.toml`, 'utf8'); +}; + const readMovePackageName = (moveDir) => { try { - const moveToml = fs.readFileSync( - `${__dirname}/../../node_modules/@axelar-network/axelar-cgp-sui/move/${moveDir}/Move.toml`, - 'utf8', - ); - - const { package: movePackage } = toml.parse(moveToml); + const { package: movePackage } = toml.parse(readMoveToml(moveDir)); return movePackage.name; } catch (err) {