From 9a0dd4a6275c7a2b477dff84ffb0cbd30e2f3e9b Mon Sep 17 00:00:00 2001 From: Turadg Aleahmad Date: Fri, 1 Jul 2022 15:03:12 -0700 Subject: [PATCH] refactor(chainStorage): getChildNode helper --- .../src/proposals/econ-behaviors.js | 17 +++++------------ packages/run-protocol/src/proposals/startPSM.js | 5 ++--- packages/vats/src/core/basic-behaviors.js | 7 +++---- packages/vats/src/lib-chainStorage.js | 15 ++++++++++++++- packages/wallet/contract/test/test-contract.js | 11 ++++++----- 5 files changed, 30 insertions(+), 25 deletions(-) diff --git a/packages/run-protocol/src/proposals/econ-behaviors.js b/packages/run-protocol/src/proposals/econ-behaviors.js index 8e787aacee96..be591f7bc753 100644 --- a/packages/run-protocol/src/proposals/econ-behaviors.js +++ b/packages/run-protocol/src/proposals/econ-behaviors.js @@ -19,6 +19,7 @@ import { makeRunStakeTerms } from '../runStake/params.js'; import { liquidationDetailTerms } from '../vaultFactory/liquidation.js'; import { makeStakeReporter } from '../my-lien.js'; import { makeTracer } from '../makeTracer.js'; +import { getChildNode } from '@agoric/vats/src/lib-chainStorage.js'; const trace = makeTracer('RunEconBehaviors', false); @@ -216,9 +217,7 @@ export const setupAmm = async ( AmountMath.make(runBrand, minInitialPoolLiquidity), ); - const chainStoragePresence = await chainStorage; - const storageNode = await (chainStoragePresence && - E(chainStoragePresence).getChildNode(AMM_STORAGE_PATH)); + const storageNode = await getChildNode(chainStorage, AMM_STORAGE_PATH); const marshaller = await E(board).getPublishingMarshaller(); const ammGovernorTerms = { @@ -312,9 +311,7 @@ export const setupReserve = async ({ const feeMintAccess = await feeMintAccessP; - const chainStoragePresence = await chainStorage; - const storageNode = await (chainStoragePresence && - E(chainStoragePresence).getChildNode(STORAGE_PATH)); + const storageNode = await getChildNode(chainStorage, STORAGE_PATH); const marshaller = E(board).getReadonlyMarshaller(); const reserveGovernorTerms = { @@ -444,9 +441,7 @@ export const startVaultFactory = async ( const reservePublicFacet = await E(zoe).getPublicFacet(reserveInstance); const timer = await chainTimerService; - const chainStoragePresence = await chainStorage; - const storageNode = await (chainStoragePresence && - E(chainStoragePresence).getChildNode(STORAGE_PATH)); + const storageNode = await getChildNode(chainStorage, STORAGE_PATH); const marshaller = E(board).getReadonlyMarshaller(); const vaultFactoryTerms = makeGovernedTerms( @@ -851,9 +846,7 @@ export const startRunStake = async ( }, ); - const chainStoragePresence = await chainStorage; - const storageNode = await (chainStoragePresence && - E(chainStoragePresence).getChildNode(STORAGE_PATH)); + const storageNode = await getChildNode(chainStorage, STORAGE_PATH); const marshaller = await E(board).getReadonlyMarshaller(); /** @type {{ publicFacet: GovernorPublic, creatorFacet: GovernedContractFacetAccess}} */ diff --git a/packages/run-protocol/src/proposals/startPSM.js b/packages/run-protocol/src/proposals/startPSM.js index b5e6ee73c4ec..10b02b83159c 100644 --- a/packages/run-protocol/src/proposals/startPSM.js +++ b/packages/run-protocol/src/proposals/startPSM.js @@ -4,6 +4,7 @@ import { AmountMath, AssetKind } from '@agoric/ertp'; import { CONTRACT_ELECTORATE, ParamTypes } from '@agoric/governance'; import { makeRatio } from '@agoric/zoe/src/contractSupport/index.js'; import { reserveThenGetNamePaths } from './utils.js'; +import { getChildNode } from '@agoric/vats/src/lib-chainStorage.js'; const BASIS_POINTS = 10000n; const { details: X } = assert; @@ -107,9 +108,7 @@ export const startPSM = async ( }, }; - const chainStoragePresence = await chainStorage; - const storageNode = await (chainStoragePresence && - E(chainStoragePresence).getChildNode('psm')); + const storageNode = await getChildNode(chainStorage, 'psm'); const marshaller = E(board).getPublishingMarshaller(); const governorFacets = await E(zoe).startInstance( diff --git a/packages/vats/src/core/basic-behaviors.js b/packages/vats/src/core/basic-behaviors.js index e9a8efc360e9..924a7d78a96a 100644 --- a/packages/vats/src/core/basic-behaviors.js +++ b/packages/vats/src/core/basic-behaviors.js @@ -8,6 +8,7 @@ import { provide } from '@agoric/store/src/stores/store-utils.js'; import { makeNameHubKit } from '../nameHub.js'; import { feeIssuerConfig } from './utils.js'; +import { getChildNode } from '../lib-chainStorage.js'; const { details: X } = assert; @@ -243,9 +244,7 @@ export const makeClientBanks = async ({ consume: { smartWallet }, }, }) => { - const chainStoragePresence = await chainStorage; - const walletChainStorage = await (chainStoragePresence && - E(chainStoragePresence).getChildNode(WALLET_STORAGE_PATH)); + const storageNode = await getChildNode(chainStorage, WALLET_STORAGE_PATH); const marshaller = E(board).getPublishingMarshaller(); return E(client).assignBundle([ address => { @@ -255,7 +254,7 @@ export const makeClientBanks = async ({ smartWallet, {}, { agoricNames, bank, namesByAddress, myAddressNameAdmin, board }, - { storageNode: walletChainStorage, marshaller }, + { storageNode, marshaller }, ); // sets these values in REPL home by way of registerWallet diff --git a/packages/vats/src/lib-chainStorage.js b/packages/vats/src/lib-chainStorage.js index 56ee2f329790..44b606d10e2e 100644 --- a/packages/vats/src/lib-chainStorage.js +++ b/packages/vats/src/lib-chainStorage.js @@ -1,6 +1,6 @@ // @ts-check -import { Far } from '@endo/far'; +import { E, Far } from '@endo/far'; const { details: X } = assert; @@ -59,3 +59,16 @@ export function makeChainStorageRoot(toStorage, storeName, rootPath) { const rootNode = makeChainStorageNode(rootPath); return rootNode; } + +/** + * + * @param {ERef} chainStorage + * @param {string} childName + */ +export async function getChildNode(chainStorage, childName) { + const chainStoragePresence = await chainStorage; + const storageNode = await (chainStoragePresence && + E(chainStoragePresence).getChildNode(childName)); + return storageNode; +} +harden(getChildNode); diff --git a/packages/wallet/contract/test/test-contract.js b/packages/wallet/contract/test/test-contract.js index 2997db1d5cc9..b8c07d2f9683 100644 --- a/packages/wallet/contract/test/test-contract.js +++ b/packages/wallet/contract/test/test-contract.js @@ -19,7 +19,10 @@ import { makeAgoricNamesAccess, makePromiseSpace, } from '@agoric/vats/src/core/utils.js'; -import { makeChainStorageRoot } from '@agoric/vats/src/lib-chainStorage.js'; +import { + getChildNode, + makeChainStorageRoot, +} from '@agoric/vats/src/lib-chainStorage.js'; import { makeNameHubKit } from '@agoric/vats/src/nameHub.js'; import { buildRootObject as boardRoot } from '@agoric/vats/src/vat-board.js'; import { buildRootObject as mintsRoot } from '@agoric/vats/src/vat-mints.js'; @@ -155,9 +158,7 @@ const makeTestContext = async t => { ); // copied from makeClientBanks() - const chainStoragePresence = await consume.chainStorage; - const walletChainStorage = await (chainStoragePresence && - E(chainStoragePresence).getChildNode('wallet')); + const storageNode = await getChildNode(consume.chainStorage, 'wallet'); const marshaller = E(consume.board).getPublishingMarshaller(); // FIXME not exactly... @@ -172,7 +173,7 @@ const makeTestContext = async t => { myAddressNameAdmin, board: consume.board, }, - { storageNode: walletChainStorage, marshaller }, + { storageNode, marshaller }, ); return {