diff --git a/packages/agoric-cli/src/commands/oracle.js b/packages/agoric-cli/src/commands/oracle.js index c0b13a34690b..2c458070e061 100644 --- a/packages/agoric-cli/src/commands/oracle.js +++ b/packages/agoric-cli/src/commands/oracle.js @@ -7,6 +7,7 @@ import { Nat } from '@endo/nat'; import { Command } from 'commander'; import * as cp from 'child_process'; import { inspect } from 'util'; +import { instanceNameFor } from '@agoric/inter-protocol/src/proposals/price-feed-proposal.js'; import { normalizeAddressWithOptions } from '../lib/chain.js'; import { getNetworkConfig, makeRpcUtils, storageHelper } from '../lib/rpc.js'; import { @@ -75,7 +76,7 @@ export const makeOracleCommand = (logger, io = {}) => { const utils = await makeRpcUtils({ fetch }); const lookupPriceAggregatorInstance = ([brandIn, brandOut]) => { - const name = `${brandIn}-${brandOut} price feed`; + const name = instanceNameFor(brandIn, brandOut); const instance = utils.agoricNames.instance[name]; if (!instance) { logger.debug('known instances:', utils.agoricNames.instance); diff --git a/packages/inter-protocol/src/proposals/addAssetToVault.js b/packages/inter-protocol/src/proposals/addAssetToVault.js index ff825fb3320a..d2a0c2dc5276 100644 --- a/packages/inter-protocol/src/proposals/addAssetToVault.js +++ b/packages/inter-protocol/src/proposals/addAssetToVault.js @@ -6,6 +6,7 @@ import { Stable } from '@agoric/vats/src/tokens.js'; import { makeRatio } from '@agoric/zoe/src/contractSupport/index.js'; import { parseRatio } from '@agoric/zoe/src/contractSupport/ratio.js'; import { E } from '@endo/far'; +import { instanceNameFor } from './price-feed-proposal.js'; import { reserveThenGetNames } from './utils.js'; export * from './startPSM.js'; @@ -240,8 +241,7 @@ export const addAssetToVault = async ( [keyword], ); - // XXX copied from price-feed-proposal - const oracleInstanceName = `${oracleBrand}-USD price feed`; + const oracleInstanceName = instanceNameFor(oracleBrand, 'USD'); // don't add the collateral offering to vaultFactory until its price feed is available // eslint-disable-next-line no-restricted-syntax -- allow this computed property await consumeInstance[oracleInstanceName]; diff --git a/packages/inter-protocol/src/proposals/price-feed-proposal.js b/packages/inter-protocol/src/proposals/price-feed-proposal.js index e2ad55c3c3c1..4846b0c3dc84 100644 --- a/packages/inter-protocol/src/proposals/price-feed-proposal.js +++ b/packages/inter-protocol/src/proposals/price-feed-proposal.js @@ -18,6 +18,9 @@ const sanitizePathSegment = name => { return candidate; }; +export const instanceNameFor = (inBrandName, outBrandName) => + `${inBrandName}-${outBrandName} price feed`; + /** * @typedef {{ * brandIn?: ERef | undefined>, @@ -314,7 +317,7 @@ export const startPriceFeeds = async ( { options: { priceFeedOptions: { - AGORIC_INSTANCE_NAME: `${inBrandName}-${outBrandName} price feed`, + AGORIC_INSTANCE_NAME: instanceNameFor(inBrandName, outBrandName), contractTerms: { minSubmissionCount: 2, minSubmissionValue: 1, diff --git a/packages/inter-protocol/test/smartWallet/contexts.js b/packages/inter-protocol/test/smartWallet/contexts.js index 35f0d8d4958f..8c35e89dd960 100644 --- a/packages/inter-protocol/test/smartWallet/contexts.js +++ b/packages/inter-protocol/test/smartWallet/contexts.js @@ -11,7 +11,10 @@ import { import { heapZone } from '@agoric/zone'; import { E } from '@endo/far'; import path from 'path'; -import { createPriceFeed } from '../../src/proposals/price-feed-proposal.js'; +import { + createPriceFeed, + instanceNameFor, +} from '../../src/proposals/price-feed-proposal.js'; import { withAmountUtils } from '../supports.js'; // referenced by TS @@ -160,7 +163,7 @@ export const makeDefaultTestContext = async (t, makeSpace) => { { options: { priceFeedOptions: { - AGORIC_INSTANCE_NAME: `${inBrandName}-${outBrandName} price feed`, + AGORIC_INSTANCE_NAME: instanceNameFor(inBrandName, outBrandName), contractTerms: { minSubmissionCount: 2, minSubmissionValue: 1, diff --git a/packages/inter-protocol/test/smartWallet/test-oracle-integration.js b/packages/inter-protocol/test/smartWallet/test-oracle-integration.js index d7a13525b864..12f5d88f888f 100644 --- a/packages/inter-protocol/test/smartWallet/test-oracle-integration.js +++ b/packages/inter-protocol/test/smartWallet/test-oracle-integration.js @@ -3,17 +3,18 @@ import '@agoric/vats/src/core/types.js'; import { test as anyTest } from '@agoric/zoe/tools/prepare-test-env-ava.js'; import { NonNullish } from '@agoric/assert'; -import { coalesceUpdates } from '@agoric/smart-wallet/src/utils.js'; +import { AssetKind, makeIssuerKit } from '@agoric/ertp'; +import { zip } from '@agoric/internal'; import { eventLoopIteration } from '@agoric/internal/src/testing-utils.js'; -import buildManualTimer from '@agoric/zoe/tools/manualTimer.js'; +import { coalesceUpdates } from '@agoric/smart-wallet/src/utils.js'; import { TimeMath } from '@agoric/time'; +import buildManualTimer from '@agoric/zoe/tools/manualTimer.js'; import { E } from '@endo/far'; -import { zip } from '@agoric/internal'; -import { AssetKind, makeIssuerKit } from '@agoric/ertp'; -import { buildRootObject } from './boot-psm.js'; import { INVITATION_MAKERS_DESC as EC_INVITATION_MAKERS_DESC } from '../../src/econCommitteeCharter.js'; import { INVITATION_MAKERS_DESC as ORACLE_INVITATION_MAKERS_DESC } from '../../src/price/fluxAggregatorKit.js'; +import { instanceNameFor } from '../../src/proposals/price-feed-proposal.js'; import { headValue } from '../supports.js'; +import { buildRootObject } from './boot-psm.js'; import { currentPurseBalance, importBootTestUtils, @@ -121,7 +122,7 @@ const setupFeedWithWallets = async (t, oracleAddresses) => { /** @type {import('@agoric/zoe/src/zoeService/utils.js').Instance} */ const governedPriceAggregator = await E(agoricNames).lookup( 'instance', - 'ATOM-USD price feed', + instanceNameFor('ATOM', 'USD'), ); return { oracleWallets, governedPriceAggregator }; @@ -463,7 +464,10 @@ test.serial('govern oracles list', async t => { t.is(usedInvitations.get('acceptVoterOID')?.value[0].description, 'Voter0'); } - const feed = await E(agoricNames).lookup('instance', 'ATOM-USD price feed'); + const feed = await E(agoricNames).lookup( + 'instance', + instanceNameFor('ATOM', 'USD'), + ); t.assert(feed); // Call for a vote to addOracles //////////////////////////////// diff --git a/packages/vats/test/bootstrapTests/drivers.js b/packages/vats/test/bootstrapTests/drivers.js index aa2824d85193..237b2a099992 100644 --- a/packages/vats/test/bootstrapTests/drivers.js +++ b/packages/vats/test/bootstrapTests/drivers.js @@ -4,6 +4,7 @@ import { Offers } from '@agoric/inter-protocol/src/clientSupport.js'; import { SECONDS_PER_MINUTE } from '@agoric/inter-protocol/src/proposals/econ-behaviors.js'; import { unmarshalFromVstorage } from '@agoric/internal/src/lib-chainStorage.js'; import { slotToRemotable } from '@agoric/internal/src/storage-test-utils.js'; +import { instanceNameFor } from '@agoric/inter-protocol/src/proposals/price-feed-proposal.js'; import { boardSlottingMarshaller } from '../../tools/board-utils.js'; /** @@ -156,7 +157,7 @@ export const makePriceFeedDriver = async ( oracleAddresses, ) => { // XXX assumes this one feed - const priceFeedName = 'ATOM-USD price feed'; + const priceFeedName = instanceNameFor('ATOM', 'USD'); const oracleWallets = await Promise.all( oracleAddresses.map(addr => walletFactoryDriver.provideSmartWallet(addr)),