Skip to content

Commit

Permalink
refactor: POLA for instancePrivateArgs
Browse files Browse the repository at this point in the history
  • Loading branch information
turadg committed May 11, 2023
1 parent b9f677c commit a7bb903
Show file tree
Hide file tree
Showing 7 changed files with 27 additions and 18 deletions.
13 changes: 7 additions & 6 deletions packages/inter-protocol/src/proposals/econ-behaviors.js
Original file line number Diff line number Diff line change
Expand Up @@ -157,9 +157,8 @@ export const setupReserve = async ({
governorAdminFacet: g.adminFacet,
}),
);
const { instancePrivateArgs } = await diagnostics;
instancePrivateArgs.set(instance, privateArgs.governed);
instancePrivateArgs.set(g.instance, privateArgs);
await E(diagnostics).savePrivateArgs(instance, privateArgs.governed);
await E(diagnostics).savePrivateArgs(g.instance, privateArgs);

reserveInstanceProducer.resolve(instance);
reserveGovernor.resolve(g.instance);
Expand Down Expand Up @@ -319,9 +318,11 @@ export const startVaultFactory = async (
E(g.creatorFacet).getAdminFacet(),
]);

const { instancePrivateArgs } = await consume.diagnostics;
// XXX omitting the governor
instancePrivateArgs.set(vaultFactoryInstance, vaultFactoryPrivateArgs);
await E(consume.diagnostics).savePrivateArgs(
vaultFactoryInstance,
vaultFactoryPrivateArgs,
);

vaultFactoryKit.resolve(
harden({
Expand All @@ -335,7 +336,7 @@ export const startVaultFactory = async (
governorAdminFacet: g.adminFacet,
governorCreatorFacet: g.creatorFacet,

// XXX try refactoring to use instancePrivateArgs
// XXX try refactoring to use savePrivateArgs
privateArgs: vaultFactoryPrivateArgs,
}),
);
Expand Down
4 changes: 2 additions & 2 deletions packages/inter-protocol/src/proposals/startEconCommittee.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,8 @@ export const startEconomicCommittee = async (
// XXX should startInstance return its label?
harden({ ...startResult, label: 'economicCommittee' }),
);
const { instancePrivateArgs } = await diagnostics;
instancePrivateArgs.set(startResult.instance, privateArgs);

await E(diagnostics).savePrivateArgs(startResult.instance, privateArgs);

economicCommitteeCreatorFacet.resolve(creatorFacet);
economicCommittee.resolve(instance);
Expand Down
19 changes: 12 additions & 7 deletions packages/vats/src/core/basic-behaviors.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,14 @@ harden(makeVatsFromBundles);
/** @param {Pick<ChainBootstrapSpace, 'produce'>} powers */
export const produceDiagnostics = async ({ produce }) => {
const instancePrivateArgs = new Map();
produce.diagnostics.resolve({ instancePrivateArgs });
const savePrivateArgs = (instance, privateArgs) => {
if (instancePrivateArgs.has(instance)) {
Fail`privateArgs already set`;
}
instancePrivateArgs.set(instance, privateArgs);
};
produce.diagnostics.resolve({ savePrivateArgs });
produce.instancePrivateArgs.resolve(instancePrivateArgs);
};

/** @param {BootstrapSpace & { zone: import('@agoric/zone').Zone }} powers */
Expand Down Expand Up @@ -149,8 +156,7 @@ export const produceStartUpgradable = async ({
label ||= NonNullish(getInterfaceOf(started.instance));
const kit = harden({ ...started, label });
contractKits.init(kit.instance, kit);
const instancePA = await E.get(diagnostics).instancePrivateArgs;
instancePA.set(kit.instance, privateArgs);
await E(diagnostics).savePrivateArgs(kit.instance, privateArgs);
return kit;
};

Expand Down Expand Up @@ -302,9 +308,8 @@ export const produceStartGovernedUpgradable = async ({
const kit = harden({ ...facets, label });
contractKits.init(facets.instance, kit);

const instancePA = await E.get(diagnostics).instancePrivateArgs;
instancePA.set(kit.instance, privateArgs);
instancePA.set(kit.governor, {
await E(diagnostics).savePrivateArgs(kit.instance, privateArgs);
await E(diagnostics).savePrivateArgs(kit.governor, {
economicCommitteeCreatorFacet: await economicCommitteeCreatorFacet,
});

Expand Down Expand Up @@ -805,7 +810,7 @@ export const BASIC_BOOTSTRAP_PERMITS = {
brand: { produce: { BLD: 'BLD', IST: 'zoe' } },
},
[produceDiagnostics.name]: {
produce: { diagnostics: true },
produce: { diagnostics: true, instancePrivateArgs: true },
},
[produceStartUpgradable.name]: {
zone: true,
Expand Down
3 changes: 2 additions & 1 deletion packages/vats/src/core/types.js
Original file line number Diff line number Diff line change
Expand Up @@ -252,10 +252,11 @@
* client: ClientManager,
* clientCreator: ClientCreator,
* coreEvalBridgeHandler: import('../types.js').BridgeHandler,
* diagnostics: { instancePrivateArgs: Map<Instance, unknown> },
* diagnostics: { savePrivateArgs: (instance: Instance, privateArgs: unknown) => void },
* feeMintAccess: FeeMintAccess,
* highPrioritySendersManager: import('@agoric/internal/src/priority-senders.js').PrioritySendersManager?,
* initialSupply: Payment<'nat'>,
* instancePrivateArgs: Map<Instance, unknown>,
* namesByAddress: NameHub,
* namesByAddressAdmin: import('../types').NamesByAddressAdmin,
* pegasusConnections: import('@agoric/vats').NameHubKit,
Expand Down
4 changes: 2 additions & 2 deletions packages/vats/src/proposals/restart-vats-proposal.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export const restartVats = async ({ consume }, { options }) => {
}),
);

const { instancePrivateArgs } = await consume.diagnostics;
const instancePrivateArgs = await consume.instancePrivateArgs;

const failures = [];
/**
Expand Down Expand Up @@ -118,8 +118,8 @@ export const getManifestForRestart = (_powers, options) => ({
[restartVats.name]: {
consume: {
contractKits: true,
diagnostics: true,
governedContractKits: true,
instancePrivateArgs: true,
loadCriticalVat: true,
zoe: 'zoe',
provisioning: 'provisioning',
Expand Down
2 changes: 2 additions & 0 deletions packages/vats/test/snapshots/test-boot-config.js.md
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ Generated by [AVA](https://avajs.dev).
"installation_mintHolder" [label="mintHolder", shape=cylinder];␊
"produceDiagnostics" [label="produceDiagnostics"];␊
"space_diagnostics" [label="diagnostics", shape=house, style=filled, fillcolor=khaki];␊
"space_instancePrivateArgs" [label="instancePrivateArgs", shape=house, style=filled, fillcolor=khaki];␊
"produceStartUpgradable" [label="produceStartUpgradable"];␊
"space_startUpgradable" [label="startUpgradable", shape=house, style=filled, fillcolor=khaki];␊
"space_contractKits" [label="contractKits", shape=house, style=filled, fillcolor=khaki];␊
Expand Down Expand Up @@ -278,6 +279,7 @@ Generated by [AVA](https://avajs.dev).
"addBankAssets" -> "installation_centralSupply" [dir=back]␊
"addBankAssets" -> "installation_mintHolder" [dir=back]␊
"produceDiagnostics" -> "space_diagnostics" []␊
"produceDiagnostics" -> "space_instancePrivateArgs" []␊
"produceStartUpgradable" -> "space_startUpgradable" []␊
"produceStartUpgradable" -> "space_contractKits" []␊
"produceStartUpgradable" -> "space_diagnostics" [dir=back]␊
Expand Down
Binary file modified packages/vats/test/snapshots/test-boot-config.js.snap
Binary file not shown.

0 comments on commit a7bb903

Please sign in to comment.