Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: prune non-upgradeable network vats from production config #7165

Closed
wants to merge 63 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
f4386ef
test(vats): factor out t.context.loadBundle()
dckc Feb 23, 2023
409e1f2
test(solo): confine ambient authority to setup
dckc Feb 24, 2023
1727a57
test(vats): stub test for bootstrap upgrade
dckc Feb 25, 2023
714388a
refactor(vats): factor out lib-boot.js
dckc Feb 21, 2023
5f71000
refactor(vats): copy boot.js for chain, sim, solo
dckc Feb 21, 2023
9a9339d
chore(vats): separate sim, client, chain boot behaviors
dckc Feb 25, 2023
b639175
chore(vats): CORE_EVAL expects utils module
dckc Feb 24, 2023
4276740
chore: use decentral-demo-config for sim chain
dckc Feb 24, 2023
1ab36c6
WIP(inter-protocol): sim proposal getManifestForInterProtocol
dckc Feb 21, 2023
00ab485
refactor(inter-protocol): BootstrapManifest type moved
dckc Feb 25, 2023
92c34f1
fix(solo)!: separate boot-solo.js out of boot.js (CONT.)
dckc Feb 23, 2023
82e1b63
chore(vats): move authorityViz.js to tools
dckc Feb 24, 2023
8c1a23c
chore(vats): restore authorityViz.js to working order
dckc Feb 25, 2023
414ec71
refactor(vats): factor out promise-space.js
dckc Feb 25, 2023
0485748
test(inter-protocol): update makePromiseSpace import
dckc Feb 25, 2023
f058385
test(vats): parameterize config in makeSwingsetTestKit()
dckc Mar 2, 2023
2ccc186
test(vats): bootstrap support for solo dev: home.myAddressNameAdmin
dckc Mar 2, 2023
bf2e5b5
feat(vats): export makeAgoricNamesAccess at package level
dckc Mar 2, 2023
fe8a027
test(vats): no test-only code is in production configs
dckc Mar 3, 2023
b8f95d4
fix(vats): prune mints/faucet from prod-like vats config
dckc Mar 3, 2023
7b01d4b
chore(vats): prune sharing vat from test-vaults-config
dckc Mar 6, 2023
01a28f6
chore: move sim stuff out of inter-protocol
dckc Mar 3, 2023
3062bea
chore(vats): clarify which vat bootstrap items go
dckc Mar 6, 2023
070ef30
test(vats): bootstrap visualization snapshot
dckc Mar 6, 2023
f238de7
test(vats): check production constraints on coreProposals
dckc Mar 7, 2023
917c5c9
docs(vats): document purpose etc. of config files
dckc Mar 8, 2023
e076b56
docs: bootstrapArgs is arbitrary JSON-serializable data
dckc Mar 8, 2023
244770c
chore: prune remaining uses of bootstrap sim/chain/client ROLE
dckc Mar 8, 2023
bc5393b
chore: prune pegasus from test-vaults-config
dckc Mar 8, 2023
b1c5c3a
chore(vats): demo-config meets loadgen constraints: vaults, USDC
dckc Mar 8, 2023
d2ff7c2
chore(vats): clean up BootstrapManifest typing
dckc Mar 11, 2023
0aeafa3
chore(vats): reorg to avoid exporting non-behaviors
dckc Mar 13, 2023
e1f687a
test(vats): rename test-solo-dev -> test-demo-config
dckc Mar 13, 2023
4543547
fixup! chore: move sim stuff out of inter-protocol
dckc Mar 13, 2023
ff52b05
fixup! test(vats): stub test for bootstrap upgrade
dckc Mar 13, 2023
89fbcd7
fixup! chore(vats): restore authorityViz.js to working order
dckc Mar 13, 2023
6896ac3
fixup! docs(vats): document purpose etc. of config files
dckc Mar 13, 2023
8438ab7
fix(vats)!: no faucet code (centralSupply) in production
dckc Mar 13, 2023
f8c752e
WIP: enforce network vat not upgradeable
dckc Mar 14, 2023
848e592
WIP: loadCriticalVat -> namedVat space
dckc Feb 25, 2023
7425707
fix(inter-protocol): stray contractGovernor permit
dckc Mar 14, 2023
538016a
chore(vats): fewer PSMs to speed up loadgen ci
dckc Mar 14, 2023
ceca6da
WIP: boot-psm: installations are all in the Zoe vat
dckc Mar 14, 2023
03aa3e8
WIP: more namedVat space
dckc Mar 14, 2023
9d31094
refactor(vats): export manifest from boot-psm for static analysis
dckc Mar 14, 2023
f87d253
test(vats): check produce vs consume in PSM manifest
dckc Mar 14, 2023
b10317e
feat(vats): support namedVat space in authorityViz
dckc Mar 14, 2023
28daf63
test(vats): update diagram snapshot
dckc Mar 14, 2023
9ffdf10
docs(inter-protocol): static type for ECON_COMMITTEE_MANIFEST
dckc Mar 14, 2023
c2a6862
docs(vats): notes on Far usage in bootstrap vat
dckc Mar 14, 2023
b9c6137
feat(vats): make extract() lazier (NEEDSTEST)
dckc Mar 14, 2023
fc0a6be
chore(vats): namedVat space CONT.
dckc Mar 14, 2023
cf28829
WIP: toward coreProposal for vat-network
dckc Mar 14, 2023
c31dc19
fixup: for PSM_MANIFEST type
dckc Mar 14, 2023
d4abd9a
fixup! docs(vats): notes on Far usage in bootstrap vat
dckc Mar 14, 2023
4421ec3
docs(vats): walletFactory config doesn't seem to be optional
dckc Mar 14, 2023
94deb6a
test(vats): no-proposals tests are noop (WIP)
dckc Mar 14, 2023
43e2940
docs(vats): debugging note
dckc Mar 14, 2023
c3f8359
fixup! test(vats): check produce vs consume in PSM manifest
dckc Mar 14, 2023
ffd5dd7
fixup! test(vats): check produce vs consume in PSM manifest
dckc Mar 14, 2023
c55342a
test(vats): audit MANIFEST from boot-chain.js
dckc Mar 14, 2023
1a695db
fixup! chore(vats): namedVat space CONT.
dckc Mar 14, 2023
77bcf02
fixup! WIP: toward coreProposal for vat-network
dckc Mar 14, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions packages/SwingSet/src/controller/initializeSwingset.js
Original file line number Diff line number Diff line change
Expand Up @@ -282,22 +282,23 @@ function sortObjectProperties(obj, firsts = []) {
return result;
}

/** @typedef {{ kernelBundles?: Record<string, Bundle>, verbose?: boolean,
/**
* @typedef {{ kernelBundles?: Record<string, Bundle>, verbose?: boolean,
* addVatAdmin?: boolean, addComms?: boolean, addVattp?: boolean,
* addTimer?: boolean,
* }} InitializationOptions
*/

/**
* @param {SwingSetConfig} config
* @param {string[]} argv
* @param {unknown} bootstrapArgs
* @param {SwingStoreKernelStorage} kernelStorage
* @param {InitializationOptions} initializationOptions
* @param {{ env?: Record<string, string | undefined > }} runtimeOptions
*/
export async function initializeSwingset(
config,
argv = [],
bootstrapArgs,
kernelStorage,
initializationOptions = {},
runtimeOptions = {},
Expand Down Expand Up @@ -353,13 +354,13 @@ export async function initializeSwingset(
kvStore.set('lockdownBundle', JSON.stringify(kernelBundles.lockdown));
kvStore.set('supervisorBundle', JSON.stringify(kernelBundles.supervisor));

if (config.bootstrap && argv) {
if (config.bootstrap && bootstrapArgs) {
const bootConfig = config.vats[config.bootstrap];
if (bootConfig) {
if (!bootConfig.parameters) {
bootConfig.parameters = {};
}
bootConfig.parameters.argv = argv;
bootConfig.parameters.argv = bootstrapArgs;
}
}

Expand Down
1 change: 0 additions & 1 deletion packages/cosmic-swingset/src/chain-main.js
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,6 @@ export default async function main(progname, args, { env, homedir, agcc }) {
};

const argv = {
ROLE: 'chain',
bootMsg,
};
const vatHref = await importMetaResolve(
Expand Down
17 changes: 7 additions & 10 deletions packages/cosmic-swingset/src/launch-chain.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,23 +53,19 @@ const getHostKey = path => `host.${path}`;
* @param {*} bridgeOutbound
* @param {SwingStoreKernelStorage} kernelStorage
* @param {string} vatconfig absolute path
* @param {Record<string, any>} argv XXX argv should be an array but it's being called with object
* @param {{ ROLE: string }} env
* @param {unknown} bootstrapArgs JSON-serializable data
* @param {{}} env
* @param {*} options
*/
export async function buildSwingset(
mailboxStorage,
bridgeOutbound,
kernelStorage,
vatconfig,
argv,
bootstrapArgs,
env,
{ debugName = undefined, slogCallbacks, slogSender },
) {
// FIXME: Find a better way to propagate the role.
process.env.ROLE = argv.ROLE;
env.ROLE = argv.ROLE;

const debugPrefix = debugName === undefined ? '' : `${debugName}:`;
/** @type {import('@agoric/swingset-vat').SwingSetConfig | null} */
let config = await loadSwingsetConfigFile(vatconfig);
Expand Down Expand Up @@ -122,8 +118,10 @@ export async function buildSwingset(
}
config.pinBootstrapRoot = true;

// @ts-expect-error XXX argv object
await initializeSwingset(config, argv, kernelStorage, { debugPrefix });
await initializeSwingset(config, bootstrapArgs, kernelStorage, {
// @ts-expect-error debugPrefix? what's that?
debugPrefix,
});
}
await ensureSwingsetInitialized();
const controller = await makeSwingsetController(
Expand Down Expand Up @@ -275,7 +273,6 @@ export async function launch({
kernelStorage,
vatconfig,
argv,
// @ts-expect-error process.env default
env,
{
debugName,
Expand Down
1 change: 0 additions & 1 deletion packages/cosmic-swingset/src/sim-chain.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ export async function connectToFakeChain(basedir, GCI, delay, inbound) {
const mailboxStorage = await makeMapStorage(mailboxFile);

const argv = {
ROLE: 'sim-chain',
giveMeAllTheAgoricPowers: true,
hardcodedClientAddresses: [bootAddress],
bootMsg: {
Expand Down
3 changes: 1 addition & 2 deletions packages/cosmic-swingset/src/sim-params.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,7 @@ export const defaultBeansPerUnit = [
makeStringBeans(BeansPerXsnapComputron, defaultBeansPerXsnapComputron),
];

export const defaultBootstrapVatConfig =
'@agoric/vats/decentral-devnet-config.json';
const defaultBootstrapVatConfig = '@agoric/vats/decentral-demo-config.json';

export const defaultPowerFlagFees = [
makePowerFlagFee('SMART_WALLET', [makeCoin('ubld', 10_000_000n)]),
Expand Down
5 changes: 1 addition & 4 deletions packages/inter-protocol/scripts/init-core.js
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ export const mainProposalBuilder = async ({
install: install0,
wrapInstall,
}) => {
const { ROLE = 'chain', VAULT_FACTORY_CONTROLLER_ADDR } = process.env;
const { VAULT_FACTORY_CONTROLLER_ADDR } = process.env;

const install = wrapInstall ? wrapInstall(install0) : install0;

Expand All @@ -119,7 +119,6 @@ export const mainProposalBuilder = async ({
getManifestCall: [
getManifestForMain.name,
{
ROLE,
vaultFactoryControllerAddress: VAULT_FACTORY_CONTROLLER_ADDR,
installKeys: {
...publishGroup(installKeyGroups.main),
Expand All @@ -139,7 +138,6 @@ export const defaultProposalBuilder = async (
/** @param {string|undefined} s */
const optBigInt = s => s && BigInt(s);
const {
ROLE = env.ROLE || 'chain',
vaultFactoryControllerAddress = env.VAULT_FACTORY_CONTROLLER_ADDR,
minInitialPoolLiquidity = env.MIN_INITIAL_POOL_LIQUIDITY,
endorsedUi,
Expand Down Expand Up @@ -176,7 +174,6 @@ export const defaultProposalBuilder = async (
getManifestCall: [
getManifestForInterProtocol.name,
{
ROLE,
vaultFactoryControllerAddress,
minInitialPoolLiquidity: optBigInt(minInitialPoolLiquidity),
endorsedUi,
Expand Down
18 changes: 4 additions & 14 deletions packages/inter-protocol/src/proposals/core-proposal.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,14 @@ import * as econBehaviors from './econ-behaviors.js';
import { ECON_COMMITTEE_MANIFEST } from './startEconCommittee.js';

export * from './econ-behaviors.js';
export * from './sim-behaviors.js';
// @ts-expect-error Module './econ-behaviors.js' has already exported a member
// named 'EconomyBootstrapPowers'.
export * from './startPSM.js'; // eslint-disable-line import/export
export * from './startEconCommittee.js'; // eslint-disable-line import/export

/** @type {import('@agoric/vats/src/core/manifest.js').BootstrapManifest} */
/** @type {import('@agoric/vats/src/core/lib-boot.js').BootstrapManifest} */
const SHARED_MAIN_MANIFEST = harden({
/** @type {import('@agoric/vats/src/core/manifest.js').BootstrapManifestPermit} */
/** @type {import('@agoric/vats/src/core/lib-boot.js').BootstrapManifestPermit} */
[econBehaviors.startVaultFactory.name]: {
consume: {
board: 'board',
Expand Down Expand Up @@ -200,19 +199,9 @@ export const getManifestForMain = (
};
};

const roleToManifest = harden({
chain: {
...REWARD_MANIFEST,
...STAKE_FACTORY_MANIFEST,
},
'sim-chain': SIM_CHAIN_MANIFEST,
client: {},
});

export const getManifestForInterProtocol = (
{ restoreRef },
{
ROLE = 'chain',
econCommitteeOptions,
installKeys,
vaultFactoryControllerAddress,
Expand All @@ -237,7 +226,8 @@ export const getManifestForInterProtocol = (
manifest: {
...econCommitteeManifest.manifest,
...mainManifest.manifest,
...roleToManifest[ROLE],
...REWARD_MANIFEST,
...STAKE_FACTORY_MANIFEST,
},
installations: {
...econCommitteeManifest.installations,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,6 @@ export const getManifestForPriceFeed = async (
chainStorage: t,
chainTimerService: t,
client: t,
contractGovernor: t,
econCharterKit: t,
economicCommitteeCreatorFacet: t,
namesByAddressAdmin: t,
Expand Down
39 changes: 0 additions & 39 deletions packages/inter-protocol/src/proposals/sim-behaviors.js

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ export const startEconomicCommittee = async (
};
harden(startEconomicCommittee);

/** @type {import('@agoric/vats/src/core/lib-boot.js').BootstrapManifest} */
export const ECON_COMMITTEE_MANIFEST = harden({
[startEconomicCommittee.name]: {
consume: {
Expand Down
15 changes: 8 additions & 7 deletions packages/inter-protocol/src/proposals/startPSM.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ import {
inviteToEconCharter,
} from './committee-proposal.js';

/** @typedef {import('@agoric/vats/src/core/lib-boot.js').BootstrapManifest} BootstrapManifest */

const BASIS_POINTS = 10000n;
const { details: X } = assert;

Expand Down Expand Up @@ -314,7 +316,7 @@ export const installGovAndPSMContracts = async ({
* named swingset bundles only in
* decentral-psm-config.json
*
* @type {import('@agoric/vats/src/core/manifest.js').BootstrapManifest}
* @type {BootstrapManifest}
*/
export const PSM_GOV_MANIFEST = {
[installGovAndPSMContracts.name]: {
Expand Down Expand Up @@ -345,8 +347,7 @@ export const PSM_GOV_MANIFEST = {
};

export const INVITE_PSM_COMMITTEE_MANIFEST = harden(
/** @type {import('@agoric/vats/src/core/manifest.js').BootstrapManifest} */
({
/** @type {BootstrapManifest} */ ({
[inviteCommitteeMembers.name]: {
consume: {
namesByAddressAdmin: true,
Expand All @@ -363,9 +364,8 @@ export const INVITE_PSM_COMMITTEE_MANIFEST = harden(
}),
);

/** @type {import('@agoric/vats/src/core/manifest.js').BootstrapManifest} */
export const PSM_MANIFEST = harden({
/** @type {import('@agoric/vats/src/core/manifest.js').BootstrapManifestPermit} */
/** @type {BootstrapManifest} */
export const PSM_MANIFEST = {
[makeAnchorAsset.name]: {
consume: { agoricNamesAdmin: true, bankManager: 'bank', zoe: 'zoe' },
installation: { consume: { mintHolder: 'zoe' } },
Expand Down Expand Up @@ -395,7 +395,8 @@ export const PSM_MANIFEST = harden({
consume: { [Stable.symbol]: 'zoe' },
},
},
});
};
harden(PSM_MANIFEST);

export const getManifestForPsmGovernance = (
{ restoreRef },
Expand Down
5 changes: 1 addition & 4 deletions packages/inter-protocol/test/psm/setupPsm.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
import { Far, makeLoopback } from '@endo/captp';
import { E } from '@endo/eventual-send';

import {
makeAgoricNamesAccess,
makePromiseSpace,
} from '@agoric/vats/src/core/utils.js';
import { makeAgoricNamesAccess, makePromiseSpace } from '@agoric/vats';
import { makeBoard } from '@agoric/vats/src/lib-board.js';
import { Stable } from '@agoric/vats/src/tokens.js';
import { makeScalarMapStore } from '@agoric/vat-data';
Expand Down
5 changes: 1 addition & 4 deletions packages/inter-protocol/test/reserve/setup.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
import buildManualTimer from '@agoric/zoe/tools/manualTimer.js';
import { E } from '@endo/eventual-send';
import {
makeAgoricNamesAccess,
makePromiseSpace,
} from '@agoric/vats/src/core/utils.js';
import { makeAgoricNamesAccess, makePromiseSpace } from '@agoric/vats';
import { makeBoard } from '@agoric/vats/src/lib-board.js';
import { setupReserve } from '../../src/proposals/econ-behaviors.js';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,7 @@ import { makeCopyBag } from '@agoric/store';
import { unsafeMakeBundleCache } from '@agoric/swingset-vat/tools/bundleTool.js';
import centralSupplyBundle from '@agoric/vats/bundles/bundle-centralSupply.js';
import mintHolderBundle from '@agoric/vats/bundles/bundle-mintHolder.js';
import {
makeAgoricNamesAccess,
makePromiseSpace,
} from '@agoric/vats/src/core/utils.js';
import { makeAgoricNamesAccess, makePromiseSpace } from '@agoric/vats';
import { makeBoard } from '@agoric/vats/src/lib-board.js';
import { Stable } from '@agoric/vats/src/tokens.js';
import { makeRatio } from '@agoric/zoe/src/contractSupport/index.js';
Expand Down
5 changes: 1 addition & 4 deletions packages/inter-protocol/test/supports.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@ import committeeBundle from '@agoric/governance/bundles/bundle-committee.js';
import contractGovernorBundle from '@agoric/governance/bundles/bundle-contractGovernor.js';
import puppetContractGovernorBundle from '@agoric/governance/bundles/bundle-puppetContractGovernor.js';
import * as utils from '@agoric/vats/src/core/utils.js';
import {
makeAgoricNamesAccess,
makePromiseSpace,
} from '@agoric/vats/src/core/utils.js';
import { makePromiseSpace, makeAgoricNamesAccess } from '@agoric/vats';
import { makeBoard } from '@agoric/vats/src/lib-board.js';
import { Stable } from '@agoric/vats/src/tokens.js';
import { makeMockChainStorageRoot } from '@agoric/internal/src/storage-test-utils.js';
Expand Down
2 changes: 0 additions & 2 deletions packages/inter-protocol/test/test-gov-collateral.js
Original file line number Diff line number Diff line change
Expand Up @@ -202,8 +202,6 @@ const makeScenario = async (t, { env = process.env } = {}) => {
t.context.installation.mintHolder,
);

space.produce.initialSupply.resolve(emptyRunPayment());

return Promise.all([
// @ts-expect-error TODO: align types better
addBankAssets(space),
Expand Down
9 changes: 9 additions & 0 deletions packages/internal/src/magic-cookie-test-only.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
const cookie = harden({});

/**
* Facilitate static analysis to prevent
* demo/test facilities from being bundled in production.
*/
export const notForProductionUse = () => {
return cookie;
};
2 changes: 1 addition & 1 deletion packages/smart-wallet/src/walletFactory.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { observeIteration } from '@agoric/notifier';
import { M, makeExo, makeScalarMapStore, mustMatch } from '@agoric/store';
import { makeAtomicProvider } from '@agoric/store/src/stores/store-utils.js';
import { prepareExo, provideDurableMapStore } from '@agoric/vat-data';
import { makeMyAddressNameAdminKit } from '@agoric/vats/src/core/basic-behaviors.js';
import { makeMyAddressNameAdminKit } from '@agoric/vats/src/core/utils.js';
import { provideAll } from '@agoric/zoe/src/contractSupport/durability.js';
import { E } from '@endo/far';
import { prepareSmartWallet } from './smartWallet.js';
Expand Down
5 changes: 1 addition & 4 deletions packages/smart-wallet/test/supports.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,7 @@ import {
} from '@agoric/vats/src/core/basic-behaviors.js';
import { setupClientManager } from '@agoric/vats/src/core/chain-behaviors.js';
import '@agoric/vats/src/core/types.js';
import {
makeAgoricNamesAccess,
makePromiseSpace,
} from '@agoric/vats/src/core/utils.js';
import { makeAgoricNamesAccess, makePromiseSpace } from '@agoric/vats';
import { buildRootObject as boardRoot } from '@agoric/vats/src/vat-board.js';
import { buildRootObject as mintsRoot } from '@agoric/vats/src/vat-mints.js';
import { makeMockChainStorageRoot } from '@agoric/internal/src/storage-test-utils.js';
Expand Down
2 changes: 1 addition & 1 deletion packages/solo/solo-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"sourceSpec": "./src/vat-uploads.js"
},
"bootstrap": {
"sourceSpec": "@agoric/vats/src/core/boot.js"
"sourceSpec": "@agoric/vats/src/core/boot-solo.js"
}
}
}
Loading