@agoric/smart-wallet 0.5.4-dev-af57c38.0 → 0.5.4-dev-99fc025.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 +13 -13
- package/src/offerWatcher.d.ts.map +1 -1
- package/src/offerWatcher.js +3 -1
- package/src/smartWallet.d.ts.map +1 -1
- package/src/smartWallet.js +115 -39
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agoric/smart-wallet",
|
|
3
|
-
"version": "0.5.4-dev-
|
|
3
|
+
"version": "0.5.4-dev-99fc025.0+99fc025",
|
|
4
4
|
"description": "Wallet contract",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"lint:eslint": "eslint ."
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@agoric/cosmic-proto": "0.3.1-dev-
|
|
20
|
-
"@agoric/swingset-vat": "0.32.3-dev-
|
|
19
|
+
"@agoric/cosmic-proto": "0.3.1-dev-99fc025.0+99fc025",
|
|
20
|
+
"@agoric/swingset-vat": "0.32.3-dev-99fc025.0+99fc025",
|
|
21
21
|
"@endo/bundle-source": "^3.0.2",
|
|
22
22
|
"@endo/captp": "^4.0.2",
|
|
23
23
|
"@endo/init": "^1.0.2",
|
|
@@ -25,15 +25,15 @@
|
|
|
25
25
|
"import-meta-resolve": "^2.2.1"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@agoric/assert": "0.6.1-dev-
|
|
29
|
-
"@agoric/casting": "0.4.3-dev-
|
|
30
|
-
"@agoric/ertp": "0.16.3-dev-
|
|
31
|
-
"@agoric/internal": "0.3.3-dev-
|
|
32
|
-
"@agoric/notifier": "0.6.3-dev-
|
|
33
|
-
"@agoric/store": "0.9.3-dev-
|
|
34
|
-
"@agoric/vat-data": "0.5.3-dev-
|
|
35
|
-
"@agoric/vats": "0.15.2-dev-
|
|
36
|
-
"@agoric/zoe": "0.26.3-dev-
|
|
28
|
+
"@agoric/assert": "0.6.1-dev-99fc025.0+99fc025",
|
|
29
|
+
"@agoric/casting": "0.4.3-dev-99fc025.0+99fc025",
|
|
30
|
+
"@agoric/ertp": "0.16.3-dev-99fc025.0+99fc025",
|
|
31
|
+
"@agoric/internal": "0.3.3-dev-99fc025.0+99fc025",
|
|
32
|
+
"@agoric/notifier": "0.6.3-dev-99fc025.0+99fc025",
|
|
33
|
+
"@agoric/store": "0.9.3-dev-99fc025.0+99fc025",
|
|
34
|
+
"@agoric/vat-data": "0.5.3-dev-99fc025.0+99fc025",
|
|
35
|
+
"@agoric/vats": "0.15.2-dev-99fc025.0+99fc025",
|
|
36
|
+
"@agoric/zoe": "0.26.3-dev-99fc025.0+99fc025",
|
|
37
37
|
"@endo/eventual-send": "^1.1.0",
|
|
38
38
|
"@endo/far": "^1.0.2",
|
|
39
39
|
"@endo/marshal": "^1.1.0",
|
|
@@ -69,5 +69,5 @@
|
|
|
69
69
|
"typeCoverage": {
|
|
70
70
|
"atLeast": 94.07
|
|
71
71
|
},
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "99fc025340e007fa01de005fa6133491d2c75d6e"
|
|
73
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"offerWatcher.d.ts","sourceRoot":"","sources":["offerWatcher.js"],"names":[],"mappings":"AAsEO,6CAHI,eAAe,QACf,QAAQ,oDAQlB;AA8BM;;;;;;IAwED,gDAAgD;oBAArC,eAAe,CAAC,gBAAgB,CAAC;IAyB5C,+CAA+C;mBAApC,eAAe,CAAC,eAAe,CAAC;IAkB3C,iDAAiD;qBAAtC,eAAe,CAAC,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"offerWatcher.d.ts","sourceRoot":"","sources":["offerWatcher.js"],"names":[],"mappings":"AAsEO,6CAHI,eAAe,QACf,QAAQ,oDAQlB;AA8BM;;;;;;IAwED,gDAAgD;oBAArC,eAAe,CAAC,gBAAgB,CAAC;IAyB5C,+CAA+C;mBAApC,eAAe,CAAC,eAAe,CAAC;IAkB3C,iDAAiD;qBAAtC,eAAe,CAAC,iBAAiB,CAAC;GAoBlD;0BAlOY,OAAO,aAAa,EAAE,SAAS,GAAG;IAC9C,KAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,MAAU,CAAC,EAAE,OAAO,GAAG,cAAc,aAAa,EAAE,kBAAkB,CAAC;IACvE,OAAW,CAAC,EAAE,mBAAmB,CAAC;CAC/B;;;;qDAKS,OAAO,4BAA4B,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;8BAIlE;IACZ,aAAe,EAAE,oBAAoB,OAAO,CAAC,CAAC;IAC9C,eAAiB,EAAE,oBAAoB,MAAM,CAAC,CAAC;IAC/C,cAAgB,EAAE,oBAAoB,qBAAqB,CAAC,CAAC;CAC1D;+BAmNU,WAAW,0BAA0B,CAAC"}
|
package/src/offerWatcher.js
CHANGED
|
@@ -232,7 +232,9 @@ export const prepareOfferWatcher = baggage => {
|
|
|
232
232
|
*/
|
|
233
233
|
onRejected(err, seat) {
|
|
234
234
|
const { facets } = this;
|
|
235
|
-
|
|
235
|
+
if (isUpgradeDisconnection(err)) {
|
|
236
|
+
void watchForNumWants(facets, seat);
|
|
237
|
+
}
|
|
236
238
|
},
|
|
237
239
|
},
|
|
238
240
|
},
|
package/src/smartWallet.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartWallet.d.ts","sourceRoot":"","sources":["smartWallet.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"smartWallet.d.ts","sourceRoot":"","sources":["smartWallet.js"],"names":[],"mappings":"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"}
|
package/src/smartWallet.js
CHANGED
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
objectMap,
|
|
14
14
|
StorageNodeShape,
|
|
15
15
|
} from '@agoric/internal';
|
|
16
|
-
import {
|
|
16
|
+
import { isUpgradeDisconnection } from '@agoric/internal/src/upgrade-api.js';
|
|
17
17
|
import { M, mustMatch } from '@agoric/store';
|
|
18
18
|
import {
|
|
19
19
|
appendToStoredArray,
|
|
@@ -22,8 +22,10 @@ import {
|
|
|
22
22
|
import {
|
|
23
23
|
makeScalarBigMapStore,
|
|
24
24
|
makeScalarBigWeakMapStore,
|
|
25
|
+
prepareExoClass,
|
|
25
26
|
prepareExoClassKit,
|
|
26
27
|
provide,
|
|
28
|
+
watchPromise,
|
|
27
29
|
} from '@agoric/vat-data';
|
|
28
30
|
import {
|
|
29
31
|
prepareRecorderKit,
|
|
@@ -271,6 +273,59 @@ export const prepareSmartWallet = (baggage, shared) => {
|
|
|
271
273
|
|
|
272
274
|
const makeOfferWatcher = prepareOfferWatcher(baggage);
|
|
273
275
|
|
|
276
|
+
const updateShape = {
|
|
277
|
+
value: AmountShape,
|
|
278
|
+
updateCount: M.bigint(),
|
|
279
|
+
};
|
|
280
|
+
|
|
281
|
+
const NotifierShape = M.remotable();
|
|
282
|
+
const amountWatcherGuard = M.interface('paymentWatcher', {
|
|
283
|
+
onFulfilled: M.call(updateShape, NotifierShape).returns(),
|
|
284
|
+
onRejected: M.call(M.any(), NotifierShape).returns(M.promise()),
|
|
285
|
+
});
|
|
286
|
+
|
|
287
|
+
const prepareAmountWatcher = () =>
|
|
288
|
+
prepareExoClass(
|
|
289
|
+
baggage,
|
|
290
|
+
'AmountWatcher',
|
|
291
|
+
amountWatcherGuard,
|
|
292
|
+
/**
|
|
293
|
+
* @param {Purse} purse
|
|
294
|
+
* @param {ReturnType<makeWalletWithResolvedStorageNodes>['helper']} helper
|
|
295
|
+
*/
|
|
296
|
+
(purse, helper) => ({ purse, helper }),
|
|
297
|
+
{
|
|
298
|
+
/**
|
|
299
|
+
* @param {{ value: Amount, updateCount: bigint | undefined }} updateRecord
|
|
300
|
+
* @param { Notifier<Amount> } notifier
|
|
301
|
+
* @returns {void}
|
|
302
|
+
*/
|
|
303
|
+
onFulfilled(updateRecord, notifier) {
|
|
304
|
+
const { helper, purse } = this.state;
|
|
305
|
+
helper.updateBalance(purse, updateRecord.value);
|
|
306
|
+
helper.watchNextBalance(
|
|
307
|
+
this.self,
|
|
308
|
+
notifier,
|
|
309
|
+
updateRecord.updateCount,
|
|
310
|
+
);
|
|
311
|
+
},
|
|
312
|
+
/**
|
|
313
|
+
* @param {unknown} err
|
|
314
|
+
* @returns {Promise<void>}
|
|
315
|
+
*/
|
|
316
|
+
onRejected(err) {
|
|
317
|
+
const { helper, purse } = this.state;
|
|
318
|
+
if (isUpgradeDisconnection(err)) {
|
|
319
|
+
return helper.watchPurse(purse); // retry
|
|
320
|
+
}
|
|
321
|
+
helper.logWalletError(`failed amount observer`, err);
|
|
322
|
+
throw err;
|
|
323
|
+
},
|
|
324
|
+
},
|
|
325
|
+
);
|
|
326
|
+
|
|
327
|
+
const makeAmountWatcher = prepareAmountWatcher();
|
|
328
|
+
|
|
274
329
|
/**
|
|
275
330
|
* @param {UniqueParams} unique
|
|
276
331
|
* @returns {State}
|
|
@@ -356,7 +411,9 @@ export const prepareSmartWallet = (baggage, shared) => {
|
|
|
356
411
|
.returns(M.promise()),
|
|
357
412
|
publishCurrentState: M.call().returns(),
|
|
358
413
|
watchPurse: M.call(M.eref(PurseShape)).returns(M.promise()),
|
|
359
|
-
|
|
414
|
+
watchNextBalance: M.call(M.any(), NotifierShape, M.bigint()).returns(),
|
|
415
|
+
repairUnwatchedSeats: M.call().returns(M.promise()),
|
|
416
|
+
repairUnwatchedPurses: M.call().returns(M.promise()),
|
|
360
417
|
updateStatus: M.call(M.any()).returns(),
|
|
361
418
|
addContinuingOffer: M.call(
|
|
362
419
|
M.or(M.number(), M.string()),
|
|
@@ -478,32 +535,24 @@ export const prepareSmartWallet = (baggage, shared) => {
|
|
|
478
535
|
|
|
479
536
|
/** @type {(purse: ERef<Purse>) => Promise<void>} */
|
|
480
537
|
async watchPurse(purseRef) {
|
|
481
|
-
const {
|
|
538
|
+
const { helper } = this.facets;
|
|
539
|
+
|
|
540
|
+
// This would seem to fit the observeNotifier() pattern,
|
|
541
|
+
// but purse notifiers are not necessarily durable.
|
|
542
|
+
// If there is an error due to upgrade, retry watchPurse().
|
|
482
543
|
|
|
483
544
|
const purse = await purseRef; // promises don't fit in durable storage
|
|
545
|
+
const handler = makeAmountWatcher(purse, helper);
|
|
484
546
|
|
|
485
|
-
const { helper } = this.facets;
|
|
486
547
|
// publish purse's balance and changes
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
);
|
|
496
|
-
void observeNotifier(E(purse).getCurrentAmountNotifier(), {
|
|
497
|
-
updateState(balance) {
|
|
498
|
-
helper.updateBalance(purse, balance);
|
|
499
|
-
},
|
|
500
|
-
fail(reason) {
|
|
501
|
-
facets.helper.logWalletError(
|
|
502
|
-
'⚠️ failed updateState observer',
|
|
503
|
-
reason,
|
|
504
|
-
);
|
|
505
|
-
},
|
|
506
|
-
});
|
|
548
|
+
const notifier = await E(purse).getCurrentAmountNotifier();
|
|
549
|
+
const startP = E(notifier).getUpdateSince(undefined);
|
|
550
|
+
watchPromise(startP, handler, notifier);
|
|
551
|
+
},
|
|
552
|
+
|
|
553
|
+
watchNextBalance(handler, notifier, updateCount) {
|
|
554
|
+
const nextP = E(notifier).getUpdateSince(updateCount);
|
|
555
|
+
watchPromise(nextP, handler, notifier);
|
|
507
556
|
},
|
|
508
557
|
|
|
509
558
|
/**
|
|
@@ -580,8 +629,6 @@ export const prepareSmartWallet = (baggage, shared) => {
|
|
|
580
629
|
const { zoe, agoricNames, invitationBrand, invitationIssuer } =
|
|
581
630
|
shared;
|
|
582
631
|
|
|
583
|
-
await null;
|
|
584
|
-
|
|
585
632
|
const invitationFromSpec = makeInvitationsHelper(
|
|
586
633
|
zoe,
|
|
587
634
|
agoricNames,
|
|
@@ -590,26 +637,49 @@ export const prepareSmartWallet = (baggage, shared) => {
|
|
|
590
637
|
state.offerToInvitationMakers.get,
|
|
591
638
|
);
|
|
592
639
|
|
|
640
|
+
const watcherPromises = [];
|
|
593
641
|
for (const seatId of liveOfferSeats.keys()) {
|
|
594
642
|
facets.helper.logWalletInfo(`repairing ${seatId}`);
|
|
595
643
|
const offerSpec = liveOffers.get(seatId);
|
|
596
644
|
const seat = liveOfferSeats.get(seatId);
|
|
597
645
|
|
|
598
646
|
const invitation = invitationFromSpec(offerSpec.invitationSpec);
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
647
|
+
watcherPromises.push(
|
|
648
|
+
E.when(
|
|
649
|
+
E(invitationIssuer).getAmountOf(invitation),
|
|
650
|
+
invitationAmount => {
|
|
651
|
+
const watcher = makeOfferWatcher(
|
|
652
|
+
facets.helper,
|
|
653
|
+
facets.deposit,
|
|
654
|
+
offerSpec,
|
|
655
|
+
address,
|
|
656
|
+
invitationAmount,
|
|
657
|
+
seat,
|
|
658
|
+
);
|
|
659
|
+
return watchOfferOutcomes(watcher, seat);
|
|
660
|
+
},
|
|
661
|
+
),
|
|
608
662
|
);
|
|
609
|
-
|
|
610
|
-
void watchOfferOutcomes(watcher, seat);
|
|
611
663
|
trace(`Repaired seat ${seatId} for wallet ${address}`);
|
|
612
664
|
}
|
|
665
|
+
|
|
666
|
+
await Promise.all(watcherPromises);
|
|
667
|
+
},
|
|
668
|
+
async repairUnwatchedPurses() {
|
|
669
|
+
const { state, facets } = this;
|
|
670
|
+
const { helper, self } = facets;
|
|
671
|
+
const { invitationPurse, address } = state;
|
|
672
|
+
|
|
673
|
+
const brandToPurses = getBrandToPurses(walletPurses, self);
|
|
674
|
+
trace(`Found ${brandToPurses.values()} purse(s) for ${address}`);
|
|
675
|
+
for (const purses of brandToPurses.values()) {
|
|
676
|
+
for (const record of purses) {
|
|
677
|
+
void helper.watchPurse(record.purse);
|
|
678
|
+
trace(`Repaired purse ${record.petname} of ${address}`);
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
void helper.watchPurse(invitationPurse);
|
|
613
683
|
},
|
|
614
684
|
|
|
615
685
|
/** @param {import('./offers.js').OfferStatus} offerStatus */
|
|
@@ -898,8 +968,12 @@ export const prepareSmartWallet = (baggage, shared) => {
|
|
|
898
968
|
await watchOfferOutcomes(watcher, seatRef);
|
|
899
969
|
} catch (err) {
|
|
900
970
|
facets.helper.logWalletError('OFFER ERROR:', err);
|
|
971
|
+
|
|
901
972
|
// Notify the user
|
|
902
|
-
if (
|
|
973
|
+
if (err.upgradeMessage === 'vat upgraded') {
|
|
974
|
+
// The offer watchers will reconnect. Don't reclaim or exit
|
|
975
|
+
return;
|
|
976
|
+
} else if (watcher) {
|
|
903
977
|
watcher.helper.updateStatus({ error: err.toString() });
|
|
904
978
|
} else {
|
|
905
979
|
facets.helper.updateStatus({
|
|
@@ -1035,13 +1109,15 @@ export const prepareSmartWallet = (baggage, shared) => {
|
|
|
1035
1109
|
* @param {object} key
|
|
1036
1110
|
*/
|
|
1037
1111
|
repairWalletForIncarnation2(key) {
|
|
1038
|
-
const { facets } = this;
|
|
1112
|
+
const { state, facets } = this;
|
|
1039
1113
|
|
|
1040
1114
|
if (key !== shared.secretWalletFactoryKey) {
|
|
1041
1115
|
return;
|
|
1042
1116
|
}
|
|
1043
1117
|
|
|
1044
1118
|
void facets.helper.repairUnwatchedSeats();
|
|
1119
|
+
void facets.helper.repairUnwatchedPurses();
|
|
1120
|
+
trace(`repaired wallet ${state.address}`);
|
|
1045
1121
|
},
|
|
1046
1122
|
},
|
|
1047
1123
|
},
|