@agoric/inter-protocol 0.16.2-dev-d492653.0 → 0.16.2-dev-26b0505.0

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agoric/inter-protocol",
3
- "version": "0.16.2-dev-d492653.0+d492653",
3
+ "version": "0.16.2-dev-26b0505.0+26b0505",
4
4
  "description": "Core cryptoeconomy contracts",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -31,16 +31,16 @@
31
31
  },
32
32
  "homepage": "https://github.com/Agoric/agoric-sdk#readme",
33
33
  "dependencies": {
34
- "@agoric/assert": "0.6.1-dev-d492653.0+d492653",
35
- "@agoric/ertp": "0.16.3-dev-d492653.0+d492653",
36
- "@agoric/governance": "0.10.4-dev-d492653.0+d492653",
37
- "@agoric/internal": "0.3.3-dev-d492653.0+d492653",
38
- "@agoric/notifier": "0.6.3-dev-d492653.0+d492653",
39
- "@agoric/store": "0.9.3-dev-d492653.0+d492653",
40
- "@agoric/time": "0.3.3-dev-d492653.0+d492653",
41
- "@agoric/vat-data": "0.5.3-dev-d492653.0+d492653",
42
- "@agoric/vats": "0.15.2-dev-d492653.0+d492653",
43
- "@agoric/zoe": "0.26.3-dev-d492653.0+d492653",
34
+ "@agoric/assert": "0.6.1-dev-26b0505.0+26b0505",
35
+ "@agoric/ertp": "0.16.3-dev-26b0505.0+26b0505",
36
+ "@agoric/governance": "0.10.4-dev-26b0505.0+26b0505",
37
+ "@agoric/internal": "0.3.3-dev-26b0505.0+26b0505",
38
+ "@agoric/notifier": "0.6.3-dev-26b0505.0+26b0505",
39
+ "@agoric/store": "0.9.3-dev-26b0505.0+26b0505",
40
+ "@agoric/time": "0.3.3-dev-26b0505.0+26b0505",
41
+ "@agoric/vat-data": "0.5.3-dev-26b0505.0+26b0505",
42
+ "@agoric/vats": "0.15.2-dev-26b0505.0+26b0505",
43
+ "@agoric/zoe": "0.26.3-dev-26b0505.0+26b0505",
44
44
  "@endo/captp": "^4.2.0",
45
45
  "@endo/eventual-send": "^1.2.2",
46
46
  "@endo/far": "^1.1.2",
@@ -50,10 +50,10 @@
50
50
  "jessie.js": "^0.3.4"
51
51
  },
52
52
  "devDependencies": {
53
- "@agoric/smart-wallet": "0.5.4-dev-d492653.0+d492653",
54
- "@agoric/swingset-liveslots": "0.10.3-dev-d492653.0+d492653",
55
- "@agoric/swingset-vat": "0.32.3-dev-d492653.0+d492653",
56
- "@agoric/zone": "0.2.3-dev-d492653.0+d492653",
53
+ "@agoric/smart-wallet": "0.5.4-dev-26b0505.0+26b0505",
54
+ "@agoric/swingset-liveslots": "0.10.3-dev-26b0505.0+26b0505",
55
+ "@agoric/swingset-vat": "0.32.3-dev-26b0505.0+26b0505",
56
+ "@agoric/zone": "0.2.3-dev-26b0505.0+26b0505",
57
57
  "@endo/bundle-source": "^3.2.3",
58
58
  "@endo/init": "^1.1.2",
59
59
  "@endo/promise-kit": "^1.1.2",
@@ -84,5 +84,5 @@
84
84
  "typeCoverage": {
85
85
  "atLeast": 95.81
86
86
  },
87
- "gitHead": "d49265372b3cdd681558791b0c780e1c3062bdcc"
87
+ "gitHead": "26b0505898de4f4bd8bccdfff5f9993c73ac12f5"
88
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"provisionPool.d.ts","sourceRoot":"","sources":["provisionPool.js"],"names":[],"mappings":"AAgBA,8CAA8C;AAE9C,2BAA2B;AAC3B,mBADW,YAAY,CAerB;AAqBK,2BAZI,GAAG,CAAC,cAAc,CAAC;cAEf,OAAO,WAAW,EAAE,IAAI,CACtC,OAAa,8BAA8B,EAAE,IAAI,CAC5C;4BACuB,UAAU;iBACrB,WAAW;;sBAEN,OAAO,uBAAuB,EAAE,mBAAmB;YAE/D,OAAO,kBAAkB,EAAE,OAAO;;;;;;;;;;;;;;;;;gDAsEi4E,QAAQ;;;sDAA6i/B,OAAO,eAAe,EAAE,OAAO,CAAC,SAAQ,IAAK,CAAC;;yCAAvpS,OAAO;;;gDAA48I,SAAS;;;;;;;;;;;;;;;;;;;8EAAqqJ,OAAO;;;;;;;;;;;;;;;;;;;;;;;;8EAAP,OAAO;;;;;;;;;;;;;;;;;;;;;;;;8EAAP,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;iCAAnx+B,0BAA0B;;;;;;2BAAgkC,KAAK,YAA2B,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;GAHn3H;;;;6BAlFY,aAAa,GACzB,eAAmB,CAAC;IACpB,uBAA6B,EAAE,QAAQ,CAAC;CACnC,CAAC;6BAxBoB,eAAe"}
1
+ {"version":3,"file":"provisionPool.d.ts","sourceRoot":"","sources":["provisionPool.js"],"names":[],"mappings":"AAgBA,8CAA8C;AAE9C,2BAA2B;AAC3B,mBADW,YAAY,CAerB;AAqBK,2BAZI,GAAG,CAAC,cAAc,CAAC;cAEf,OAAO,WAAW,EAAE,IAAI,CACtC,OAAa,8BAA8B,EAAE,IAAI,CAC5C;4BACuB,UAAU;iBACrB,WAAW;;sBAEN,OAAO,uBAAuB,EAAE,mBAAmB;YAE/D,OAAO,kBAAkB,EAAE,OAAO;;;;;;;;;;;;;;;;;gDAsEkqF,QAAQ;;;sDAA4w+B,OAAO,eAAe,EAAE,OAAO,CAAC,SAAQ,IAAK,CAAC;;yCAAvpS,OAAO;;;gDAA48I,SAAS;;;;;;;;;;;;;;;;;;;8EAAqqJ,OAAO;;;;;;;;;;;;;;;;;;;;;;;;8EAAP,OAAO;;;;;;;;;;;;;;;;;;;;;;;;8EAAP,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;iCAAx/9B,0BAA0B;;;;;;2BAAgkC,KAAK,YAA2B,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;GAH9oI;;;;6BAlFY,aAAa,GACzB,eAAmB,CAAC;IACpB,uBAA6B,EAAE,QAAQ,CAAC;CACnC,CAAC;6BAxBoB,eAAe"}
@@ -245,6 +245,12 @@ export function prepareProvisionPoolKit(baggage: import("@agoric/vat-data").Bagg
245
245
  onProvisioned(): void;
246
246
  /** @param {ERef<Bank>} destBank */
247
247
  sendInitialPayment(destBank: ERef<Bank>): Promise<void>;
248
+ /**
249
+ * @param {ERef<Purse>} exchangePurse
250
+ * @param {ERef<Brand>} brand
251
+ */
252
+ watchCurrentAmount(exchangePurse: ERef<globalThis.Purse>, brand: ERef<globalThis.Brand>): void;
253
+ watchAssetSubscription(): Promise<undefined>;
248
254
  /**
249
255
  * @param {object} [options]
250
256
  * @param {MetricsNotification} [options.metrics]
@@ -296,7 +302,7 @@ export type PsmInstance = import("@agoric/zoe/src/zoeService/utils.js").Instance
296
302
  Electorate: "invitation";
297
303
  }>;
298
304
  }>;
299
- getInvitation: (name: any) => Promise<Invitation<unknown, undefined>>; /** @param {string} address */
305
+ getInvitation: (name: any) => Promise<Invitation<unknown, undefined>>;
300
306
  getLimitedCreatorFacet: () => import("@endo/exo").Guarded<{
301
307
  getRewardAllocation(): Allocation;
302
308
  makeCollectFeesInvitation(): Promise<Invitation<string, undefined>>;
@@ -351,7 +357,9 @@ export type ProvisionPoolKitReferences = {
351
357
  }>>;
352
358
  namesByAddressAdmin: ERef<import("@agoric/vats").NameAdmin>;
353
359
  walletFactory: ERef<{
354
- provideSmartWallet(address: string, bank: ERef<import("@agoric/vats/src/vat-bank.js").Bank>, namesByAddressAdmin: ERef<import("@agoric/vats/src/types.js").NameAdmin>): Promise<[wallet: {
360
+ provideSmartWallet(address: string, bank: ERef<import(
361
+ /** @param {ERef<Bank>} destBank */
362
+ "@agoric/vats/src/vat-bank.js").Bank>, namesByAddressAdmin: ERef<import("@agoric/vats/src/types.js").NameAdmin>): Promise<[wallet: {
355
363
  handleBridgeAction(actionCapData: import("@endo/marshal").CapData<string | null>, canSpend?: boolean | undefined): Promise<void>;
356
364
  getDepositFacet(): import("@endo/exo").Guarded<{
357
365
  receive(payment: Payment): Promise<Amount>;
@@ -449,7 +457,9 @@ export type ProvisionPoolKitReferences = {
449
457
  repairWalletForIncarnation2(key: object): void;
450
458
  }>> & import("@endo/marshal").RemotableObject, isNew: boolean]>;
451
459
  } & import("../../../node_modules/@endo/exo/src/get-interface.js").GetInterfaceGuard<{
452
- provideSmartWallet(address: string, bank: ERef<import("@agoric/vats/src/vat-bank.js").Bank>, namesByAddressAdmin: ERef<import("@agoric/vats/src/types.js").NameAdmin>): Promise<[wallet: {
460
+ provideSmartWallet(address: string, bank: ERef<import(
461
+ /** @param {ERef<Bank>} destBank */
462
+ "@agoric/vats/src/vat-bank.js").Bank>, namesByAddressAdmin: ERef<import("@agoric/vats/src/types.js").NameAdmin>): Promise<[wallet: {
453
463
  handleBridgeAction(actionCapData: import("@endo/marshal").CapData<string | null>, canSpend?: boolean | undefined): Promise<void>;
454
464
  getDepositFacet(): import("@endo/exo").Guarded<{
455
465
  receive(payment: Payment): Promise<Amount>;
@@ -547,7 +557,9 @@ export type ProvisionPoolKitReferences = {
547
557
  repairWalletForIncarnation2(key: object): void;
548
558
  }>> & import("@endo/marshal").RemotableObject, isNew: boolean]>;
549
559
  }> & import("@endo/eventual-send").RemotableBrand<{}, {
550
- provideSmartWallet(address: string, bank: ERef<import("@agoric/vats/src/vat-bank.js").Bank>, namesByAddressAdmin: ERef<import("@agoric/vats/src/types.js").NameAdmin>): Promise<[wallet: {
560
+ provideSmartWallet(address: string, bank: ERef<import(
561
+ /** @param {ERef<Bank>} destBank */
562
+ "@agoric/vats/src/vat-bank.js").Bank>, namesByAddressAdmin: ERef<import("@agoric/vats/src/types.js").NameAdmin>): Promise<[wallet: {
551
563
  handleBridgeAction(actionCapData: import("@endo/marshal").CapData<string | null>, canSpend?: boolean | undefined): Promise<void>;
552
564
  getDepositFacet(): import("@endo/exo").Guarded<{
553
565
  receive(payment: Payment): Promise<Amount>;
@@ -645,7 +657,9 @@ export type ProvisionPoolKitReferences = {
645
657
  repairWalletForIncarnation2(key: object): void;
646
658
  }>> & import("@endo/marshal").RemotableObject, isNew: boolean]>;
647
659
  } & import("../../../node_modules/@endo/exo/src/get-interface.js").GetInterfaceGuard<{
648
- provideSmartWallet(address: string, bank: ERef<import("@agoric/vats/src/vat-bank.js").Bank>, namesByAddressAdmin: ERef<import("@agoric/vats/src/types.js").NameAdmin>): Promise<[wallet: {
660
+ provideSmartWallet(address: string, bank: ERef<import(
661
+ /** @param {ERef<Bank>} destBank */
662
+ "@agoric/vats/src/vat-bank.js").Bank>, namesByAddressAdmin: ERef<import("@agoric/vats/src/types.js").NameAdmin>): Promise<[wallet: {
649
663
  handleBridgeAction(actionCapData: import("@endo/marshal").CapData<string | null>, canSpend?: boolean | undefined): Promise<void>;
650
664
  getDepositFacet(): import("@endo/exo").Guarded<{
651
665
  receive(payment: Payment): Promise<Amount>;
@@ -1 +1 @@
1
- {"version":3,"file":"provisionPoolKit.d.ts","sourceRoot":"","sources":["provisionPoolKit.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provisionPoolKit.d.ts","sourceRoot":"","sources":["provisionPoolKit.js"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  // @ts-check
2
2
  import { AmountMath, BrandShape } from '@agoric/ertp';
3
- import { deeplyFulfilledObject } from '@agoric/internal';
3
+ import { deeplyFulfilledObject, makeTracer } from '@agoric/internal';
4
4
  import { UnguardedHelperI } from '@agoric/internal/src/typeGuards.js';
5
5
  import {
6
6
  observeIteration,
@@ -21,9 +21,16 @@ import {
21
21
  import { InstanceHandleShape } from '@agoric/zoe/src/typeGuards.js';
22
22
  import { E } from '@endo/far';
23
23
  import { Far } from '@endo/marshal';
24
+ import { isUpgradeDisconnection } from '@agoric/internal/src/upgrade-api.js';
24
25
 
25
26
  const { details: X, quote: q, Fail } = assert;
26
27
 
28
+ const trace = makeTracer('ProvPool');
29
+
30
+ const FIRST_UPPER_KEYWORD = /^[A-Z][a-zA-Z0-9_$]*$/;
31
+ // see https://github.com/Agoric/agoric-sdk/issues/8238
32
+ const FIRST_LOWER_NEAR_KEYWORD = /^[a-z][a-zA-Z0-9_$]*$/;
33
+
27
34
  /**
28
35
  * @import {ERef} from '@endo/far'
29
36
  * @import {Amount} from '@agoric/ertp/src/types.js'
@@ -73,7 +80,7 @@ export const makeBridgeProvisionTool = (sendInitialPayment, onProvisioned) => {
73
80
  fromBridge: async obj => {
74
81
  obj.type === 'PLEASE_PROVISION' ||
75
82
  Fail`Unrecognized request ${obj.type}`;
76
- console.info('PLEASE_PROVISION', obj);
83
+ trace('PLEASE_PROVISION', obj);
77
84
  const { address, powerFlags } = obj;
78
85
  powerFlags.includes(PowerFlags.SMART_WALLET) ||
79
86
  Fail`missing SMART_WALLET in powerFlags`;
@@ -90,7 +97,7 @@ export const makeBridgeProvisionTool = (sendInitialPayment, onProvisioned) => {
90
97
  if (created) {
91
98
  onProvisioned();
92
99
  }
93
- console.info(created ? 'provisioned' : 're-provisioned', address);
100
+ trace(created ? 'provisioned' : 're-provisioned', address);
94
101
  },
95
102
  });
96
103
  return makeBridgeHandler;
@@ -149,7 +156,7 @@ export const prepareProvisionPoolKit = (
149
156
  /** @type {import('@agoric/zoe/src/contractSupport/recorder.js').RecorderKit<MetricsNotification>} */
150
157
  const metricsRecorderKit = makeRecorderKit(metricsNode);
151
158
 
152
- /** @type {MapStore<Brand, PsmInstance>} */
159
+ /** @type {MapStore<ERef<Brand>, PsmInstance>} */
153
160
  const brandToPSM = makeScalarBigMapStore('brandToPSM', { durable: true });
154
161
  const revivableAddresses = makeScalarBigSetStore('revivableAddresses', {
155
162
  durable: true,
@@ -184,7 +191,7 @@ export const prepareProvisionPoolKit = (
184
191
  machine: {
185
192
  /** @param {string[]} oldAddresses */
186
193
  addRevivableAddresses(oldAddresses) {
187
- console.log('revivableAddresses count', oldAddresses.length);
194
+ trace('revivableAddresses count', oldAddresses.length);
188
195
  this.state.revivableAddresses.addAll(oldAddresses);
189
196
  },
190
197
  getWalletReviver() {
@@ -318,7 +325,7 @@ export const prepareProvisionPoolKit = (
318
325
  .deposit(initialPmt)
319
326
  .then(amt => {
320
327
  helper.onSendFunds(perAccountInitialAmount);
321
- console.log('provisionPool sent', amt);
328
+ trace('provisionPool sent', amt);
322
329
  })
323
330
  .catch(reason => {
324
331
  console.error(X`initial deposit failed: ${q(reason)}`);
@@ -327,62 +334,114 @@ export const prepareProvisionPoolKit = (
327
334
  });
328
335
  },
329
336
  /**
330
- * @param {object} [options]
331
- * @param {MetricsNotification} [options.metrics]
337
+ * @param {ERef<Purse>} exchangePurse
338
+ * @param {ERef<Brand>} brand
332
339
  */
333
- start({ metrics } = {}) {
340
+ watchCurrentAmount(exchangePurse, brand) {
334
341
  const {
335
342
  state: { brandToPSM, poolBrand },
336
343
  facets: { helper },
337
344
  } = this;
338
345
 
339
- // Must match. poolBrand is from durable state and the param is from
340
- // the contract, so it technically can change between incarnations.
341
- // That would be a severe bug.
342
- AmountMath.coerce(poolBrand, params.getPerAccountInitialAmount());
346
+ void observeNotifier(E(exchangePurse).getCurrentAmountNotifier(), {
347
+ updateState: async amount => {
348
+ trace('provisionPool balance update', amount);
349
+ if (AmountMath.isEmpty(amount) || amount.brand === poolBrand) {
350
+ return;
351
+ }
352
+ if (!brandToPSM.has(brand)) {
353
+ console.error('funds arrived but no PSM instance', brand);
354
+ return;
355
+ }
356
+ const instance = brandToPSM.get(brand);
357
+ const payment = E(exchangePurse).withdraw(amount);
358
+ await helper
359
+ .swap(payment, amount, instance)
360
+ .catch(async reason => {
361
+ console.error(X`swap failed: ${reason}`);
362
+ const resolvedPayment = await payment;
363
+ return E(exchangePurse).deposit(resolvedPayment);
364
+ });
365
+ },
366
+ fail: reason => {
367
+ if (isUpgradeDisconnection(reason)) {
368
+ void helper.watchCurrentAmount(exchangePurse, brand);
369
+ } else {
370
+ console.error(reason);
371
+ }
372
+ },
373
+ });
374
+ },
375
+ watchAssetSubscription() {
376
+ const { facets } = this;
377
+ const { helper } = facets;
343
378
 
344
- void observeIteration(
379
+ /** @param {import('@agoric/vats/src/vat-bank.js').AssetDescriptor} desc */
380
+ const repairDesc = desc => {
381
+ if (desc.issuerName.match(FIRST_UPPER_KEYWORD)) {
382
+ trace(`Saving Issuer ${desc.issuerName}`);
383
+ return desc;
384
+ } else if (desc.issuerName.match(FIRST_LOWER_NEAR_KEYWORD)) {
385
+ const bad = desc.issuerName;
386
+ const goodName = bad.replace(bad[0], bad[0].toUpperCase());
387
+
388
+ trace(
389
+ `Saving Issuer ${desc.issuerName} with repaired keyword ${goodName}`,
390
+ );
391
+ return { ...desc, issuerName: goodName };
392
+ } else {
393
+ console.error(
394
+ `unable to save issuer with illegal keyword: ${desc.issuerName}`,
395
+ );
396
+ return undefined;
397
+ }
398
+ };
399
+
400
+ return observeIteration(
345
401
  subscribeEach(E(poolBank).getAssetSubscription()),
346
402
  {
347
403
  updateState: async desc => {
348
- console.log('provisionPool notified of new asset', desc.brand);
349
- await zcf.saveIssuer(desc.issuer, desc.issuerName);
404
+ await null;
405
+ const issuer = zcf.getTerms().issuers[desc.issuerName];
406
+ if (issuer === desc.issuer) {
407
+ trace('provisionPool re-notified of known asset', desc.brand);
408
+ } else {
409
+ const goodDesc = repairDesc(desc);
410
+ if (goodDesc) {
411
+ await zcf.saveIssuer(goodDesc.issuer, goodDesc.issuerName);
412
+ } else {
413
+ console.error(
414
+ `unable to save issuer with illegal keyword: ${desc.issuerName}`,
415
+ );
416
+ }
417
+ }
418
+
350
419
  /** @type {ERef<Purse>} */
351
420
  const exchangePurse = E(poolBank).getPurse(desc.brand);
352
- void observeNotifier(
353
- E(exchangePurse).getCurrentAmountNotifier(),
354
- {
355
- updateState: async amount => {
356
- console.log('provisionPool balance update', amount);
357
- if (
358
- AmountMath.isEmpty(amount) ||
359
- amount.brand === poolBrand
360
- ) {
361
- return;
362
- }
363
- if (!brandToPSM.has(desc.brand)) {
364
- console.error(
365
- 'funds arrived but no PSM instance',
366
- desc.brand,
367
- );
368
- return;
369
- }
370
- const instance = brandToPSM.get(desc.brand);
371
- const payment = E(exchangePurse).withdraw(amount);
372
- await helper
373
- .swap(payment, amount, instance)
374
- .catch(async reason => {
375
- console.error(X`swap failed: ${reason}`);
376
- const resolvedPayment = await payment;
377
- return E(exchangePurse).deposit(resolvedPayment);
378
- });
379
- },
380
- fail: reason => console.error(reason),
381
- },
382
- );
421
+ helper.watchCurrentAmount(exchangePurse, desc.brand);
422
+ },
423
+ fail: _reason => {
424
+ void helper.watchAssetSubscription();
383
425
  },
384
426
  },
385
427
  );
428
+ },
429
+ /**
430
+ * @param {object} [options]
431
+ * @param {MetricsNotification} [options.metrics]
432
+ */
433
+ start({ metrics } = {}) {
434
+ const {
435
+ state: { poolBrand },
436
+ facets: { helper },
437
+ } = this;
438
+
439
+ // Must match. poolBrand is from durable state and the param is from
440
+ // the contract, so it technically can change between incarnations.
441
+ // That would be a severe bug.
442
+ AmountMath.coerce(poolBrand, params.getPerAccountInitialAmount());
443
+
444
+ void helper.watchAssetSubscription();
386
445
 
387
446
  if (metrics) {
388
447
  // Restore state.