@agoric/inter-protocol 0.16.2-other-dev-3eb1a1d.0 → 0.16.2-other-dev-fbe72e7.0.fbe72e7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +36 -35
- package/src/auction/auctionBook.d.ts +6 -6
- package/src/auction/auctionBook.d.ts.map +1 -1
- package/src/auction/auctionBook.js +51 -26
- package/src/auction/auctionMath.d.ts +1 -1
- package/src/auction/auctionMath.d.ts.map +1 -1
- package/src/auction/auctioneer.d.ts +5 -4
- package/src/auction/auctioneer.d.ts.map +1 -1
- package/src/auction/auctioneer.js +2 -0
- package/src/auction/offerBook.d.ts +3 -2
- package/src/auction/offerBook.d.ts.map +1 -1
- package/src/auction/offerBook.js +5 -1
- package/src/auction/params.d.ts +2 -1
- package/src/auction/params.d.ts.map +1 -1
- package/src/auction/params.js +1 -0
- package/src/auction/scheduler.d.ts +1 -1
- package/src/auction/util.d.ts +2 -1
- package/src/auction/util.d.ts.map +1 -1
- package/src/auction/util.js +4 -1
- package/src/clientSupport.d.ts +1 -0
- package/src/clientSupport.d.ts.map +1 -1
- package/src/clientSupport.js +6 -1
- package/src/contractSupport.d.ts +2 -2
- package/src/contractSupport.d.ts.map +1 -1
- package/src/econCommitteeCharter.d.ts +8 -5
- package/src/econCommitteeCharter.d.ts.map +1 -1
- package/src/econCommitteeCharter.js +4 -0
- package/src/feeDistributor.d.ts +33 -33
- package/src/feeDistributor.d.ts.map +1 -1
- package/src/feeDistributor.js +4 -0
- package/src/interest-math.d.ts +1 -0
- package/src/interest-math.d.ts.map +1 -1
- package/src/interest-math.js +5 -1
- package/src/interest.d.ts +3 -1
- package/src/interest.d.ts.map +1 -1
- package/src/interest.js +2 -5
- package/src/price/README.md +1 -1
- package/src/price/fluxAggregatorContract.d.ts +6 -6
- package/src/price/fluxAggregatorContract.d.ts.map +1 -1
- package/src/price/fluxAggregatorKit.d.ts +6 -5
- package/src/price/fluxAggregatorKit.d.ts.map +1 -1
- package/src/price/fluxAggregatorKit.js +3 -2
- package/src/price/priceOracleKit.d.ts +2 -1
- package/src/price/priceOracleKit.d.ts.map +1 -1
- package/src/price/priceOracleKit.js +5 -1
- package/src/price/roundsManager.d.ts +2 -2
- package/src/price/roundsManager.d.ts.map +1 -1
- package/src/price/roundsManager.js +1 -0
- package/src/proposals/add-auction.js +31 -2
- package/src/proposals/addAssetToVault.js +1 -1
- package/src/proposals/deploy-price-feeds.js +28 -3
- package/src/proposals/econ-behaviors.js +21 -5
- package/src/proposals/replace-fee-distributor.js +5 -2
- package/src/proposals/replaceElectorate.js +105 -16
- package/src/proposals/upgrade-vaults.js +7 -2
- package/src/proposals/utils.d.ts +2 -0
- package/src/proposals/utils.d.ts.map +1 -1
- package/src/proposals/utils.js +24 -1
- package/src/proposals/withdraw-reserve-proposal.js +63 -0
- package/src/provisionPool.d.ts +19 -113
- package/src/provisionPool.d.ts.map +1 -1
- package/src/provisionPool.js +29 -13
- package/src/provisionPoolKit.d.ts +36 -266
- package/src/provisionPoolKit.d.ts.map +1 -1
- package/src/provisionPoolKit.js +193 -107
- package/src/psm/psm.d.ts +15 -7
- package/src/psm/psm.d.ts.map +1 -1
- package/src/psm/psm.js +6 -1
- package/src/reserve/assetReserve.d.ts +15 -4
- package/src/reserve/assetReserve.d.ts.map +1 -1
- package/src/reserve/assetReserve.js +16 -17
- package/src/reserve/assetReserveKit.d.ts +32 -3
- package/src/reserve/assetReserveKit.d.ts.map +1 -1
- package/src/reserve/assetReserveKit.js +110 -2
- package/src/reserve/params.d.ts +9 -3
- package/src/reserve/params.d.ts.map +1 -1
- package/src/reserve/params.js +8 -2
- package/src/vaultFactory/burn.d.ts +1 -1
- package/src/vaultFactory/burn.d.ts.map +1 -1
- package/src/vaultFactory/liquidation.d.ts +2 -0
- package/src/vaultFactory/liquidation.d.ts.map +1 -1
- package/src/vaultFactory/liquidation.js +5 -5
- package/src/vaultFactory/math.d.ts +1 -1
- package/src/vaultFactory/math.d.ts.map +1 -1
- package/src/vaultFactory/math.js +1 -1
- package/src/vaultFactory/orderedVaultStore.d.ts +19 -18
- package/src/vaultFactory/orderedVaultStore.d.ts.map +1 -1
- package/src/vaultFactory/orderedVaultStore.js +4 -2
- package/src/vaultFactory/params.d.ts +5 -2
- package/src/vaultFactory/params.d.ts.map +1 -1
- package/src/vaultFactory/params.js +5 -2
- package/src/vaultFactory/prioritizedVaults.d.ts +58 -57
- package/src/vaultFactory/prioritizedVaults.d.ts.map +1 -1
- package/src/vaultFactory/prioritizedVaults.js +5 -2
- package/src/vaultFactory/storeUtils.d.ts +2 -2
- package/src/vaultFactory/storeUtils.d.ts.map +1 -1
- package/src/vaultFactory/types-ambient.d.ts +2 -2
- package/src/vaultFactory/types-ambient.d.ts.map +1 -1
- package/src/vaultFactory/types-ambient.js +5 -2
- package/src/vaultFactory/vault.d.ts +11 -10
- package/src/vaultFactory/vault.d.ts.map +1 -1
- package/src/vaultFactory/vault.js +2 -1
- package/src/vaultFactory/vaultDirector.d.ts +53 -47
- package/src/vaultFactory/vaultDirector.d.ts.map +1 -1
- package/src/vaultFactory/vaultDirector.js +10 -2
- package/src/vaultFactory/vaultFactory.d.ts +63 -15
- package/src/vaultFactory/vaultFactory.d.ts.map +1 -1
- package/src/vaultFactory/vaultFactory.js +6 -2
- package/src/vaultFactory/vaultHolder.d.ts +68 -24
- package/src/vaultFactory/vaultHolder.d.ts.map +1 -1
- package/src/vaultFactory/vaultHolder.js +4 -0
- package/src/vaultFactory/vaultKit.d.ts +8 -7
- package/src/vaultFactory/vaultKit.d.ts.map +1 -1
- package/src/vaultFactory/vaultKit.js +5 -1
- package/src/vaultFactory/vaultManager.d.ts +65 -63
- package/src/vaultFactory/vaultManager.d.ts.map +1 -1
- package/src/vaultFactory/vaultManager.js +58 -38
- package/src/proposals/add-auction.d.ts +0 -109
- package/src/proposals/add-auction.d.ts.map +0 -1
- package/src/proposals/addAssetToVault.d.ts +0 -173
- package/src/proposals/addAssetToVault.d.ts.map +0 -1
- package/src/proposals/committee-proposal.d.ts +0 -113
- package/src/proposals/committee-proposal.d.ts.map +0 -1
- package/src/proposals/core-proposal.d.ts +0 -149
- package/src/proposals/core-proposal.d.ts.map +0 -1
- package/src/proposals/deploy-price-feeds.d.ts +0 -76
- package/src/proposals/deploy-price-feeds.d.ts.map +0 -1
- package/src/proposals/econ-behaviors.d.ts +0 -541
- package/src/proposals/econ-behaviors.d.ts.map +0 -1
- package/src/proposals/price-feed-proposal.d.ts +0 -84
- package/src/proposals/price-feed-proposal.d.ts.map +0 -1
- package/src/proposals/replace-fee-distributor.d.ts +0 -48
- package/src/proposals/replace-fee-distributor.d.ts.map +0 -1
- package/src/proposals/replace-scaledPriceAuthorities.d.ts +0 -30
- package/src/proposals/replace-scaledPriceAuthorities.d.ts.map +0 -1
- package/src/proposals/replaceElectorate.d.ts +0 -55
- package/src/proposals/replaceElectorate.d.ts.map +0 -1
- package/src/proposals/startEconCommittee.d.ts +0 -34
- package/src/proposals/startEconCommittee.d.ts.map +0 -1
- package/src/proposals/startPSM.d.ts +0 -59
- package/src/proposals/startPSM.d.ts.map +0 -1
- package/src/proposals/upgrade-scaledPriceAuthorities.d.ts +0 -24
- package/src/proposals/upgrade-scaledPriceAuthorities.d.ts.map +0 -1
- package/src/proposals/upgrade-vaults.d.ts +0 -41
- package/src/proposals/upgrade-vaults.d.ts.map +0 -1
|
@@ -5,6 +5,7 @@ import { E } from '@endo/far';
|
|
|
5
5
|
import { unitAmount } from '@agoric/zoe/src/contractSupport/priceQuote.js';
|
|
6
6
|
import {
|
|
7
7
|
oracleBrandFeedName,
|
|
8
|
+
provideRetiredInstances,
|
|
8
9
|
reserveThenDeposit,
|
|
9
10
|
sanitizePathSegment,
|
|
10
11
|
} from './utils.js';
|
|
@@ -84,7 +85,8 @@ export const ensureOracleBrand = async (
|
|
|
84
85
|
};
|
|
85
86
|
|
|
86
87
|
/**
|
|
87
|
-
* @param {EconomyBootstrapPowers
|
|
88
|
+
* @param {EconomyBootstrapPowers &
|
|
89
|
+
* PromiseSpaceOf<{ retiredContractInstances: MapStore<string, Instance> }>} powers
|
|
88
90
|
* @param {{
|
|
89
91
|
* AGORIC_INSTANCE_NAME: string;
|
|
90
92
|
* contractTerms: import('@agoric/inter-protocol/src/price/fluxAggregatorKit.js').ChainlinkConfig;
|
|
@@ -96,6 +98,7 @@ export const ensureOracleBrand = async (
|
|
|
96
98
|
const startPriceAggregatorInstance = async (
|
|
97
99
|
{
|
|
98
100
|
consume: {
|
|
101
|
+
agoricNames,
|
|
99
102
|
board,
|
|
100
103
|
chainStorage,
|
|
101
104
|
chainTimerService,
|
|
@@ -103,8 +106,10 @@ const startPriceAggregatorInstance = async (
|
|
|
103
106
|
highPrioritySendersManager,
|
|
104
107
|
namesByAddressAdmin,
|
|
105
108
|
startGovernedUpgradable,
|
|
109
|
+
retiredContractInstances: retiredContractInstancesP,
|
|
106
110
|
},
|
|
107
111
|
instance: { produce: produceInstance },
|
|
112
|
+
produce: { retiredContractInstances: produceRetiredInstances },
|
|
108
113
|
},
|
|
109
114
|
{ AGORIC_INSTANCE_NAME, contractTerms, brandIn, brandOut },
|
|
110
115
|
installation,
|
|
@@ -139,6 +144,22 @@ const startPriceAggregatorInstance = async (
|
|
|
139
144
|
// @ts-expect-error GovernableStartFn vs. fluxAggregatorContract.js start
|
|
140
145
|
installation,
|
|
141
146
|
});
|
|
147
|
+
const retiredContractInstances = await provideRetiredInstances(
|
|
148
|
+
retiredContractInstancesP,
|
|
149
|
+
produceRetiredInstances,
|
|
150
|
+
);
|
|
151
|
+
|
|
152
|
+
// save the instance so we can manage it later
|
|
153
|
+
const retiringInstance = await E(agoricNames).lookup(
|
|
154
|
+
'instance',
|
|
155
|
+
AGORIC_INSTANCE_NAME,
|
|
156
|
+
);
|
|
157
|
+
const boardID = await E(board).getId(retiringInstance);
|
|
158
|
+
retiredContractInstances.init(
|
|
159
|
+
`priceFeed-${AGORIC_INSTANCE_NAME}-${boardID}`,
|
|
160
|
+
retiringInstance,
|
|
161
|
+
);
|
|
162
|
+
|
|
142
163
|
produceInstance[AGORIC_INSTANCE_NAME].reset();
|
|
143
164
|
produceInstance[AGORIC_INSTANCE_NAME].resolve(governedKit.instance);
|
|
144
165
|
trace(
|
|
@@ -191,7 +212,9 @@ const distributeInvitations = async (
|
|
|
191
212
|
};
|
|
192
213
|
|
|
193
214
|
/**
|
|
194
|
-
* @param {EconomyBootstrapPowers &
|
|
215
|
+
* @param {EconomyBootstrapPowers &
|
|
216
|
+
* NamedVatPowers &
|
|
217
|
+
* PromiseSpaceOf<{ retiredContractInstances: MapStore<string, Instance> }>} powers
|
|
195
218
|
* @param {{
|
|
196
219
|
* options: PriceFeedConfig & {
|
|
197
220
|
* priceAggregatorRef: { bundleID: string };
|
|
@@ -300,6 +323,7 @@ export const getManifestForPriceFeeds = async (
|
|
|
300
323
|
namesByAddressAdmin: t,
|
|
301
324
|
priceAuthority: t,
|
|
302
325
|
priceAuthorityAdmin: t,
|
|
326
|
+
retiredContractInstances: t,
|
|
303
327
|
startGovernedUpgradable: t,
|
|
304
328
|
startUpgradable: t,
|
|
305
329
|
zoe: t,
|
|
@@ -307,9 +331,10 @@ export const getManifestForPriceFeeds = async (
|
|
|
307
331
|
installation: { produce: { priceAggregator: t } },
|
|
308
332
|
instance: {
|
|
309
333
|
produce: t,
|
|
334
|
+
consume: t,
|
|
310
335
|
},
|
|
311
336
|
oracleBrand: { produce: t },
|
|
312
|
-
produce: { priceAuthority8400: t },
|
|
337
|
+
produce: { priceAuthority8400: t, retiredContractInstances: t },
|
|
313
338
|
},
|
|
314
339
|
},
|
|
315
340
|
options: { ...priceFeedOptions },
|
|
@@ -10,7 +10,20 @@ import { makeGovernedTerms as makeGovernedATerms } from '../auction/params.js';
|
|
|
10
10
|
import { makeReserveTerms } from '../reserve/params.js';
|
|
11
11
|
import { makeGovernedTerms as makeGovernedVFTerms } from '../vaultFactory/params.js';
|
|
12
12
|
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* @import {GovernorCreatorFacet, GovernanceFacetKit, GovernorStartedInstallationKit} from '@agoric/governance/src/types.js';
|
|
15
|
+
* @import {StartedInstanceKit} from '@agoric/zoe/src/zoeService/utils.js';
|
|
16
|
+
* @import {AdminFacet} from '@agoric/zoe';
|
|
17
|
+
* @import {MapStore, SetStore} from '@agoric/store';
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
// Duplicated from vaultFactory/types-ambient.js to solve a CI problem.
|
|
21
|
+
// Not worth refactoring to DRY because vaultFactory is going away.
|
|
22
|
+
/**
|
|
23
|
+
* @typedef {object} InterestTiming
|
|
24
|
+
* @property {import('@agoric/time').RelativeTime} chargingPeriod in seconds
|
|
25
|
+
* @property {import('@agoric/time').RelativeTime} recordingPeriod in seconds
|
|
26
|
+
*/
|
|
14
27
|
|
|
15
28
|
const trace = makeTracer('RunEconBehaviors', true);
|
|
16
29
|
|
|
@@ -25,8 +38,10 @@ export const SECONDS_PER_WEEK = 7n * SECONDS_PER_DAY;
|
|
|
25
38
|
/**
|
|
26
39
|
* @typedef {object} PSMKit
|
|
27
40
|
* @property {string} label
|
|
28
|
-
* @property {Instance} psm
|
|
29
|
-
* @property {Instance
|
|
41
|
+
* @property {Instance<import('../psm/psm.js').start>} psm
|
|
42
|
+
* @property {Instance<
|
|
43
|
+
* import('../../../governance/src/contractGovernor.js').start
|
|
44
|
+
* >} psmGovernor
|
|
30
45
|
* @property {Awaited<
|
|
31
46
|
* ReturnType<
|
|
32
47
|
* Awaited<
|
|
@@ -157,9 +172,10 @@ export const setupReserve = async ({
|
|
|
157
172
|
'reserve.governor',
|
|
158
173
|
);
|
|
159
174
|
|
|
160
|
-
const [creatorFacet, publicFacet, instance] = await Promise.all([
|
|
175
|
+
const [creatorFacet, publicFacet, adminFacet, instance] = await Promise.all([
|
|
161
176
|
E(g.creatorFacet).getCreatorFacet(),
|
|
162
177
|
E(g.creatorFacet).getPublicFacet(),
|
|
178
|
+
E(g.creatorFacet).getAdminFacet(),
|
|
163
179
|
E(g.publicFacet).getGovernedContract(),
|
|
164
180
|
]);
|
|
165
181
|
|
|
@@ -169,7 +185,7 @@ export const setupReserve = async ({
|
|
|
169
185
|
instance,
|
|
170
186
|
publicFacet,
|
|
171
187
|
creatorFacet,
|
|
172
|
-
adminFacet
|
|
188
|
+
adminFacet,
|
|
173
189
|
|
|
174
190
|
governor: g.instance,
|
|
175
191
|
governorCreatorFacet: g.creatorFacet,
|
|
@@ -159,8 +159,8 @@ harden(replaceFeeDistributor);
|
|
|
159
159
|
|
|
160
160
|
const t = 'replaceFeeDistributor';
|
|
161
161
|
export const getManifestForReplaceFeeDistributor = async (
|
|
162
|
-
|
|
163
|
-
feeDistributorOptions,
|
|
162
|
+
{ restoreRef },
|
|
163
|
+
{ feeDistributorRef, ...feeDistributorOptions },
|
|
164
164
|
) => ({
|
|
165
165
|
manifest: {
|
|
166
166
|
[replaceFeeDistributor.name]: {
|
|
@@ -191,5 +191,8 @@ export const getManifestForReplaceFeeDistributor = async (
|
|
|
191
191
|
},
|
|
192
192
|
},
|
|
193
193
|
},
|
|
194
|
+
installations: {
|
|
195
|
+
feeDistributor: restoreRef(feeDistributorRef),
|
|
196
|
+
},
|
|
194
197
|
options: { ...feeDistributorOptions },
|
|
195
198
|
});
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
assertPathSegment,
|
|
16
16
|
makeStorageNodeChild,
|
|
17
17
|
} from '@agoric/internal/src/lib-chainStorage.js';
|
|
18
|
-
import { reserveThenDeposit } from './utils.js';
|
|
18
|
+
import { provideRetiredInstances, reserveThenDeposit } from './utils.js';
|
|
19
19
|
|
|
20
20
|
/** @import {EconomyBootstrapPowers} from './econ-behaviors.js' */
|
|
21
21
|
/** @import {EconCharterStartResult} from './econ-behaviors.js' */
|
|
@@ -181,8 +181,10 @@ const inviteToEconCharter = async (
|
|
|
181
181
|
* Starts a new Economic Committee (EC) by creating an instance with the
|
|
182
182
|
* provided committee specifications.
|
|
183
183
|
*
|
|
184
|
-
* @param {EconomyBootstrapPowers
|
|
185
|
-
*
|
|
184
|
+
* @param {EconomyBootstrapPowers &
|
|
185
|
+
* PromiseSpaceOf<{ retiredContractInstances: MapStore<string, Instance> }>} powers
|
|
186
|
+
* - The resources and capabilities required to start the committee.
|
|
187
|
+
*
|
|
186
188
|
* @param {{
|
|
187
189
|
* options: {
|
|
188
190
|
* committeeName: string;
|
|
@@ -196,12 +198,22 @@ const inviteToEconCharter = async (
|
|
|
196
198
|
*/
|
|
197
199
|
const startNewEconomicCommittee = async (
|
|
198
200
|
{
|
|
199
|
-
consume: {
|
|
200
|
-
|
|
201
|
+
consume: {
|
|
202
|
+
board,
|
|
203
|
+
chainStorage,
|
|
204
|
+
startUpgradable,
|
|
205
|
+
retiredContractInstances: retiredInstancesP,
|
|
206
|
+
},
|
|
207
|
+
produce: {
|
|
208
|
+
economicCommitteeKit,
|
|
209
|
+
economicCommitteeCreatorFacet,
|
|
210
|
+
retiredContractInstances: produceRetiredInstances,
|
|
211
|
+
},
|
|
201
212
|
installation: {
|
|
202
213
|
consume: { committee },
|
|
203
214
|
},
|
|
204
215
|
instance: {
|
|
216
|
+
consume: { economicCommittee: economicCommitteeOriginalP },
|
|
205
217
|
produce: { economicCommittee },
|
|
206
218
|
},
|
|
207
219
|
},
|
|
@@ -214,6 +226,19 @@ const startNewEconomicCommittee = async (
|
|
|
214
226
|
trace(`committeeName ${committeeName}`);
|
|
215
227
|
trace(`committeeSize ${committeeSize}`);
|
|
216
228
|
|
|
229
|
+
const retiredInstances = await provideRetiredInstances(
|
|
230
|
+
retiredInstancesP,
|
|
231
|
+
produceRetiredInstances,
|
|
232
|
+
);
|
|
233
|
+
|
|
234
|
+
// Record the retired electorate instance so we can manage it later.
|
|
235
|
+
const economicCommitteeOriginal = await economicCommitteeOriginalP;
|
|
236
|
+
const boardID = await E(board).getId(economicCommitteeOriginal);
|
|
237
|
+
retiredInstances.init(
|
|
238
|
+
`economicCommittee-${boardID}`,
|
|
239
|
+
economicCommitteeOriginal,
|
|
240
|
+
);
|
|
241
|
+
|
|
217
242
|
const committeesNode = await makeStorageNodeChild(
|
|
218
243
|
chainStorage,
|
|
219
244
|
COMMITTEES_ROOT,
|
|
@@ -264,33 +289,87 @@ const startNewEconomicCommittee = async (
|
|
|
264
289
|
* Starts a new Economic Committee Charter by creating an instance with the
|
|
265
290
|
* provided committee specifications.
|
|
266
291
|
*
|
|
267
|
-
* @param {EconomyBootstrapPowers
|
|
268
|
-
*
|
|
292
|
+
* @param {EconomyBootstrapPowers &
|
|
293
|
+
* PromiseSpaceOf<{ retiredContractInstances: MapStore<string, Instance> }>} powers
|
|
294
|
+
* - The resources and capabilities required to start the committee.
|
|
295
|
+
*
|
|
269
296
|
* @returns {Promise<EconCharterStartResult>} A promise that resolves to the
|
|
270
297
|
* charter kit result.
|
|
271
298
|
*/
|
|
272
299
|
const startNewEconCharter = async ({
|
|
273
|
-
consume: {
|
|
274
|
-
|
|
300
|
+
consume: {
|
|
301
|
+
board,
|
|
302
|
+
startUpgradable,
|
|
303
|
+
contractKits: contractKitsP,
|
|
304
|
+
econCharterKit: econCharterKitP,
|
|
305
|
+
retiredContractInstances: retiredContractInstancesP,
|
|
306
|
+
},
|
|
307
|
+
produce: {
|
|
308
|
+
econCharterKit: produceEconCharterKit,
|
|
309
|
+
retiredContractInstances: produceRetiredInstances,
|
|
310
|
+
},
|
|
275
311
|
installation: {
|
|
276
312
|
consume: { binaryVoteCounter: counterP, econCommitteeCharter: installP },
|
|
277
313
|
},
|
|
278
314
|
instance: {
|
|
279
315
|
produce: { econCommitteeCharter },
|
|
316
|
+
consume: { econCommitteeCharter: previousInstanceP },
|
|
280
317
|
},
|
|
281
318
|
}) => {
|
|
282
|
-
const [
|
|
319
|
+
const [
|
|
320
|
+
charterInstall,
|
|
321
|
+
counterInstall,
|
|
322
|
+
previousInstance,
|
|
323
|
+
contractKits,
|
|
324
|
+
econCharterKit,
|
|
325
|
+
retiredInstances,
|
|
326
|
+
] = await Promise.all([
|
|
283
327
|
installP,
|
|
284
328
|
counterP,
|
|
329
|
+
previousInstanceP,
|
|
330
|
+
contractKitsP,
|
|
331
|
+
econCharterKitP,
|
|
332
|
+
provideRetiredInstances(retiredContractInstancesP, produceRetiredInstances),
|
|
285
333
|
]);
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
}
|
|
334
|
+
|
|
335
|
+
const label = 'econCommitteeCharter';
|
|
336
|
+
const previousCharterKit = { ...econCharterKit, label };
|
|
337
|
+
|
|
338
|
+
const boardID = await E(board).getId(previousCharterKit.instance);
|
|
339
|
+
const identifier = `${label}-${boardID}`;
|
|
340
|
+
trace('Saving previous EC Charter Instance', label);
|
|
341
|
+
|
|
342
|
+
// save the old charter instance kit so we can manage it later
|
|
343
|
+
if (retiredInstances.has(identifier)) {
|
|
344
|
+
// bootstrap tests start having already run this upgrade. Actual upgrades on
|
|
345
|
+
// mainNet or testnets should start with the promiseSpace post upgrade-17,
|
|
346
|
+
// which doesn't have this entry in the map.
|
|
347
|
+
trace(
|
|
348
|
+
'⚠️ WARNING: collision on storing Charter in retireInstances not' +
|
|
349
|
+
' expected during chain upgrade. It IS normal during bootstrap tests',
|
|
350
|
+
);
|
|
351
|
+
} else {
|
|
352
|
+
retiredInstances.init(identifier, previousCharterKit.instance);
|
|
353
|
+
}
|
|
354
|
+
if (contractKits.has(previousInstance)) {
|
|
355
|
+
// bootstrap tests start having already run this upgrade. Actual upgrades on
|
|
356
|
+
// mainNet or testnets should start with the promiseSpace post upgrade-17,
|
|
357
|
+
// which doesn't have this entry in the map.
|
|
358
|
+
trace(
|
|
359
|
+
'⚠️ WARNING: collision on storing Charter in contractKits not' +
|
|
360
|
+
' expected during chain upgrade. It IS normal during bootstrap tests',
|
|
361
|
+
);
|
|
362
|
+
} else {
|
|
363
|
+
contractKits.init(previousInstance, previousCharterKit);
|
|
364
|
+
}
|
|
289
365
|
|
|
290
366
|
trace('Starting new EC Charter Instance');
|
|
291
367
|
|
|
368
|
+
const terms = harden({
|
|
369
|
+
binaryVoteCounterInstallation: counterInstall,
|
|
370
|
+
});
|
|
292
371
|
const startResult = await E(startUpgradable)({
|
|
293
|
-
label
|
|
372
|
+
label,
|
|
294
373
|
installation: charterInstall,
|
|
295
374
|
terms,
|
|
296
375
|
});
|
|
@@ -300,8 +379,8 @@ const startNewEconCharter = async ({
|
|
|
300
379
|
econCommitteeCharter.reset();
|
|
301
380
|
econCommitteeCharter.resolve(E.get(startResult).instance);
|
|
302
381
|
|
|
303
|
-
|
|
304
|
-
|
|
382
|
+
produceEconCharterKit.reset();
|
|
383
|
+
produceEconCharterKit.resolve(startResult);
|
|
305
384
|
return startResult;
|
|
306
385
|
};
|
|
307
386
|
|
|
@@ -309,6 +388,7 @@ const startNewEconCharter = async ({
|
|
|
309
388
|
* @typedef {PromiseSpaceOf<{
|
|
310
389
|
* auctionUpgradeNewInstance: Instance;
|
|
311
390
|
* auctionUpgradeNewGovCreator: any;
|
|
391
|
+
* retiredContractInstances: MapStore<string, Instance>;
|
|
312
392
|
* }>} interlockPowers
|
|
313
393
|
*/
|
|
314
394
|
|
|
@@ -485,13 +565,17 @@ export const getManifestForReplaceAllElectorates = async (
|
|
|
485
565
|
manifest: {
|
|
486
566
|
[replaceAllElectorates.name]: {
|
|
487
567
|
consume: {
|
|
568
|
+
agoricNames: true,
|
|
488
569
|
auctionUpgradeNewGovCreator: true,
|
|
489
570
|
auctionUpgradeNewInstance: true,
|
|
490
571
|
psmKit: true,
|
|
572
|
+
contractKits: true,
|
|
573
|
+
econCharterKit: true,
|
|
491
574
|
governedContractKits: true,
|
|
492
575
|
chainStorage: true,
|
|
493
576
|
highPrioritySendersManager: true,
|
|
494
577
|
namesByAddressAdmin: true,
|
|
578
|
+
retiredContractInstances: true,
|
|
495
579
|
// Rest of these are designed to be widely shared
|
|
496
580
|
board: true,
|
|
497
581
|
startUpgradable: true,
|
|
@@ -501,6 +585,7 @@ export const getManifestForReplaceAllElectorates = async (
|
|
|
501
585
|
economicCommitteeKit: true,
|
|
502
586
|
economicCommitteeCreatorFacet: true,
|
|
503
587
|
auctionUpgradeNewGovCreator: true,
|
|
588
|
+
retiredContractInstances: true,
|
|
504
589
|
},
|
|
505
590
|
installation: {
|
|
506
591
|
consume: {
|
|
@@ -514,6 +599,10 @@ export const getManifestForReplaceAllElectorates = async (
|
|
|
514
599
|
economicCommittee: true,
|
|
515
600
|
econCommitteeCharter: true,
|
|
516
601
|
},
|
|
602
|
+
consume: {
|
|
603
|
+
economicCommittee: true,
|
|
604
|
+
econCommitteeCharter: true,
|
|
605
|
+
},
|
|
517
606
|
},
|
|
518
607
|
},
|
|
519
608
|
},
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file this core-eval proposal is specific to the upgrade-18 scenario,
|
|
3
|
+
* handling tasks beyond generic Vault Factory null upgrade. For a reusable
|
|
4
|
+
* proposal, see upgrade-vaultFactory-proposal.js.
|
|
5
|
+
*/
|
|
6
|
+
|
|
1
7
|
import { E } from '@endo/far';
|
|
2
8
|
import { makeNotifierFromAsyncIterable } from '@agoric/notifier';
|
|
3
9
|
import { makeTracer } from '@agoric/internal/src/index.js';
|
|
@@ -49,10 +55,10 @@ export const upgradeVaults = async (
|
|
|
49
55
|
|
|
50
56
|
await priceAuthority8400;
|
|
51
57
|
|
|
58
|
+
/** @type {Instance<import('../auction/auctioneer.js').start>} */
|
|
52
59
|
const auctionNewInstance = await auctionUpgradeNewInstance;
|
|
53
60
|
auctionUpgradeNewInstanceProducer.reset();
|
|
54
61
|
const publicFacet = E(zoe).getPublicFacet(auctionNewInstance);
|
|
55
|
-
/** @type {import('@agoric/inter-protocol/src/auction/scheduler.js').FullSchedule} */
|
|
56
62
|
const schedules = await E(publicFacet).getSchedules();
|
|
57
63
|
const now = await E(chainTimerService).getCurrentTimestamp();
|
|
58
64
|
(schedules.nextAuctionSchedule &&
|
|
@@ -91,7 +97,6 @@ export const upgradeVaults = async (
|
|
|
91
97
|
for (const kwd of Object.keys(vaultBrands)) {
|
|
92
98
|
const collateralBrand = vaultBrands[kwd];
|
|
93
99
|
|
|
94
|
-
/** @type {any} */
|
|
95
100
|
const governedParams = await E(directorPF).getGovernedParams({
|
|
96
101
|
collateralBrand,
|
|
97
102
|
});
|
package/src/proposals/utils.d.ts
CHANGED
|
@@ -16,4 +16,6 @@ export function oracleBrandFeedName(inBrandName: any, outBrandName: any): string
|
|
|
16
16
|
export function scaledPriceFeedName(issuerName: any): string;
|
|
17
17
|
/** @type {(name: string) => string} */
|
|
18
18
|
export const sanitizePathSegment: (name: string) => string;
|
|
19
|
+
export function provideRetiredInstances(consume: Promise<MapStore>, produce: Producer<MapStore>): Promise<MapStore>;
|
|
20
|
+
import type { MapStore } from '@agoric/store';
|
|
19
21
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["utils.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["utils.js"],"names":[],"mappings":"AAgBO,mDAHI,IAAI,CAAC,OAAO,cAAc,EAAE,SAAS,CAAC,SACtC,MAAM,EAAE,EAAE,kBA+BpB;AAMM,+CAHI,IAAI,CAAC,OAAO,cAAc,EAAE,SAAS,CAAC,SACtC,MAAM,EAAE,kBAMhB;AAQI,8CALI,MAAM,uBACN,IAAI,CAAC,OAAO,cAAc,EAAE,SAAS,CAAC,QACtC,MAAM,YACN,IAAI,CAAC,OAAO,CAAC,EAAE,iBAuBzB;AA6BM,wCAPI,OAAO,CAAC;IACd,OAAO,EAAE,IAAI,CAAC,OAAO,iCAAiC,EAAE,UAAU,CAAC,CAAC;CACrE,CAAC,mCAEF;IAAkE,UAAU,EAApE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,eAAe;CAAC;oCAkCD,UAAK,EAAE,UAAK,EAAE,SAAI;;GAkBzD;AAEM,iFACsC;AAEtC,6DAC+B;AAEtC,uCAAuC;AACvC,kCADW,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAKjC;AAUK,iDAJI,OAAO,CAAC,QAAQ,CAAC,WACjB,QAAQ,CAAC,QAAQ,CAAC,GAChB,OAAO,CAAC,QAAQ,CAAC,CAW7B;8BA1LoC,eAAe"}
|
package/src/proposals/utils.js
CHANGED
|
@@ -3,8 +3,12 @@ import { E } from '@endo/far';
|
|
|
3
3
|
import { WalletName } from '@agoric/internal';
|
|
4
4
|
import { getCopyMapEntries, makeCopyMap } from '@agoric/store';
|
|
5
5
|
import { assertPathSegment } from '@agoric/internal/src/lib-chainStorage.js';
|
|
6
|
+
import { makeScalarBigMapStore } from '@agoric/vat-data';
|
|
6
7
|
|
|
7
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* @import {CopyMap} from '@endo/patterns';
|
|
10
|
+
* @import {MapStore, SetStore} from '@agoric/store';
|
|
11
|
+
*/
|
|
8
12
|
|
|
9
13
|
/**
|
|
10
14
|
* @param {ERef<import('@agoric/vats').NameAdmin>} nameAdmin
|
|
@@ -171,3 +175,22 @@ export const sanitizePathSegment = name => {
|
|
|
171
175
|
assertPathSegment(candidate);
|
|
172
176
|
return candidate;
|
|
173
177
|
};
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Idempotently provide an empty MapStore for the `retiredContractInstances`
|
|
181
|
+
* value in promise space
|
|
182
|
+
*
|
|
183
|
+
* @param {Promise<MapStore>} consume
|
|
184
|
+
* @param {Producer<MapStore>} produce
|
|
185
|
+
* @returns {Promise<MapStore>}
|
|
186
|
+
*/
|
|
187
|
+
export const provideRetiredInstances = async (consume, produce) => {
|
|
188
|
+
// Promise space has no way to look for an existing value other than awaiting a promise,
|
|
189
|
+
// but it does allow extra production so it's safe to do this redundantly.
|
|
190
|
+
produce.resolve(
|
|
191
|
+
makeScalarBigMapStore('retiredContractInstances', {
|
|
192
|
+
durable: true,
|
|
193
|
+
}),
|
|
194
|
+
);
|
|
195
|
+
return consume;
|
|
196
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { E } from '@endo/far';
|
|
2
|
+
import { makeTracer } from '@agoric/internal/src/debug.js';
|
|
3
|
+
import { reserveThenDeposit } from './utils.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @param {BootstrapPowers & {
|
|
7
|
+
* consume: {
|
|
8
|
+
* reserveKit: Promise<
|
|
9
|
+
* ReturnType<import('../reserve/assetReserve.js')['start']>
|
|
10
|
+
* >;
|
|
11
|
+
* };
|
|
12
|
+
* }} powers
|
|
13
|
+
* @param {{ options: { address: string; count?: number } }} namedArgs
|
|
14
|
+
*/
|
|
15
|
+
export const inviteReserveWithdrawer = async (
|
|
16
|
+
{ consume: { namesByAddressAdmin, reserveKit } },
|
|
17
|
+
{ options: { address, count = 1 } },
|
|
18
|
+
) => {
|
|
19
|
+
const trace = makeTracer('InviteReserveWithdrawer');
|
|
20
|
+
|
|
21
|
+
const maybeGovernedCreatorFacetP = E.get(reserveKit).creatorFacet;
|
|
22
|
+
const creatorFacetP = E(maybeGovernedCreatorFacetP)
|
|
23
|
+
.getLimitedCreatorFacet()
|
|
24
|
+
.catch(err => {
|
|
25
|
+
trace('Failed to get limited creator facet:', err);
|
|
26
|
+
return maybeGovernedCreatorFacetP;
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
const makeInvitation = () =>
|
|
30
|
+
// @ts-expect-error tolerate translation from governed to limited creatorFacet
|
|
31
|
+
E(creatorFacetP).makeSingleWithdrawalInvitation();
|
|
32
|
+
|
|
33
|
+
const invitations = await Promise.all(
|
|
34
|
+
Array.from({ length: count }, makeInvitation),
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
// Deposit the invitations, but don't block in case the address does not yet
|
|
38
|
+
// have a smart wallet.
|
|
39
|
+
void reserveThenDeposit(
|
|
40
|
+
`reserve withdrawer ${address}`,
|
|
41
|
+
namesByAddressAdmin,
|
|
42
|
+
address,
|
|
43
|
+
invitations,
|
|
44
|
+
);
|
|
45
|
+
};
|
|
46
|
+
harden(inviteReserveWithdrawer);
|
|
47
|
+
|
|
48
|
+
export const getManifestForInviteWithdrawer = async (
|
|
49
|
+
{ restoreRef: _ },
|
|
50
|
+
{ address, count },
|
|
51
|
+
) => {
|
|
52
|
+
return {
|
|
53
|
+
manifest: {
|
|
54
|
+
[inviteReserveWithdrawer.name]: /** @type {const} */ ({
|
|
55
|
+
consume: {
|
|
56
|
+
namesByAddressAdmin: true,
|
|
57
|
+
reserveKit: true,
|
|
58
|
+
},
|
|
59
|
+
}),
|
|
60
|
+
},
|
|
61
|
+
options: { address, count },
|
|
62
|
+
};
|
|
63
|
+
};
|