From 7debf1d4961c9ea463b3a6fc4a99a53b593ca3fa Mon Sep 17 00:00:00 2001 From: Chris Hibbert Date: Thu, 18 Apr 2024 10:52:37 -0700 Subject: [PATCH] feat: upgrade zcf: install bundle and call updateZcfBundleId() copied from #9250. --- golang/cosmos/app/app.go | 3 +- packages/vats/scripts/upgrade-zcf.js | 18 ++++++++++ .../vats/src/proposals/zcf-only-proposal.js | 36 +++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 packages/vats/scripts/upgrade-zcf.js create mode 100644 packages/vats/src/proposals/zcf-only-proposal.js diff --git a/golang/cosmos/app/app.go b/golang/cosmos/app/app.go index 0eee9cd0755..65c7bc8e562 100644 --- a/golang/cosmos/app/app.go +++ b/golang/cosmos/app/app.go @@ -857,7 +857,8 @@ func upgrade15Handler(app *GaiaApp, targetUpgrade string) func(sdk.Context, upgr // Each CoreProposalStep runs sequentially, and can be constructed from // one or more modules executing in parallel within the step. CoreProposalSteps = []vm.CoreProposalStep{ - // empty for now + // Upgrade ZCF only + vm.CoreProposalStepForModules("@agoric/vats/scripts/upgrade-zcf.js"), } } diff --git a/packages/vats/scripts/upgrade-zcf.js b/packages/vats/scripts/upgrade-zcf.js new file mode 100644 index 00000000000..a3105c46a76 --- /dev/null +++ b/packages/vats/scripts/upgrade-zcf.js @@ -0,0 +1,18 @@ +import { makeHelpers } from '@agoric/deploy-script-support'; + +/** @type {import('packages/deploy-script-support/src/externalTypes.js').ProposalBuilder} */ +export const defaultProposalBuilder = async ({ publishRef, install }) => + harden({ + sourceSpec: '@agoric/vats/src/proposals/zcf-only-proposal.js', + getManifestCall: [ + 'getManifestForUpgradingZcf', + { + zcfRef: publishRef(install('@agoric/zoe/src/contractFacet/vatRoot.js')), + }, + ], + }); + +export default async (homeP, endowments) => { + const { writeCoreProposal } = await makeHelpers(homeP, endowments); + await writeCoreProposal('upgrade-zcf', defaultProposalBuilder); +}; diff --git a/packages/vats/src/proposals/zcf-only-proposal.js b/packages/vats/src/proposals/zcf-only-proposal.js new file mode 100644 index 00000000000..85d3fd1a569 --- /dev/null +++ b/packages/vats/src/proposals/zcf-only-proposal.js @@ -0,0 +1,36 @@ +// @ts-check +import { E } from '@endo/far'; + +/** + * @param {BootstrapPowers} powers + * @param {object} options + * @param {{ zcfRef: VatSourceRef }} options.options + */ +export const upgradeZcfOnly = async ({ consume: { vatStore } }, options) => { + const { zcfRef } = options.options; + + const { root: zoeRoot } = await E(vatStore).get('zoe'); + + const zoeConfigFacet = await E(zoeRoot).getZoeConfigFacet(); + await E(zoeConfigFacet).updateZcfBundleId(zcfRef.bundleID); + console.log(`ZCF BUNDLE ID: `, zcfRef.bundleID); +}; +harden(upgradeZcfOnly); + +// main and permit are for use with rollup-plugin-core-eval.js +export const main = upgradeZcfOnly; + +export const permit = { + consume: { + vatStore: true, + }, +}; + +export const manifest = { + [upgradeZcfOnly.name]: permit, +}; + +export const getManifestForUpgradingZcf = (_powers, options) => ({ + manifest, + options, +});