@agoric/inter-protocol 0.16.2-dev-ef82fbf.0 → 0.16.2-dev-dcf2772.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-ef82fbf.0+ef82fbf",
3
+ "version": "0.16.2-dev-dcf2772.0+dcf2772",
4
4
  "description": "Core cryptoeconomy contracts",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -31,15 +31,16 @@
31
31
  },
32
32
  "homepage": "https://github.com/Agoric/agoric-sdk#readme",
33
33
  "dependencies": {
34
- "@agoric/ertp": "0.16.3-dev-ef82fbf.0+ef82fbf",
35
- "@agoric/governance": "0.10.4-dev-ef82fbf.0+ef82fbf",
36
- "@agoric/internal": "0.3.3-dev-ef82fbf.0+ef82fbf",
37
- "@agoric/notifier": "0.6.3-dev-ef82fbf.0+ef82fbf",
38
- "@agoric/store": "0.9.3-dev-ef82fbf.0+ef82fbf",
39
- "@agoric/time": "0.3.3-dev-ef82fbf.0+ef82fbf",
40
- "@agoric/vat-data": "0.5.3-dev-ef82fbf.0+ef82fbf",
41
- "@agoric/vats": "0.15.2-dev-ef82fbf.0+ef82fbf",
42
- "@agoric/zoe": "0.26.3-dev-ef82fbf.0+ef82fbf",
34
+ "@agoric/ertp": "0.16.3-dev-dcf2772.0+dcf2772",
35
+ "@agoric/governance": "0.10.4-dev-dcf2772.0+dcf2772",
36
+ "@agoric/internal": "0.3.3-dev-dcf2772.0+dcf2772",
37
+ "@agoric/notifier": "0.6.3-dev-dcf2772.0+dcf2772",
38
+ "@agoric/store": "0.9.3-dev-dcf2772.0+dcf2772",
39
+ "@agoric/time": "0.3.3-dev-dcf2772.0+dcf2772",
40
+ "@agoric/vat-data": "0.5.3-dev-dcf2772.0+dcf2772",
41
+ "@agoric/vats": "0.15.2-dev-dcf2772.0+dcf2772",
42
+ "@agoric/zoe": "0.26.3-dev-dcf2772.0+dcf2772",
43
+ "@agoric/zone": "0.2.3-dev-dcf2772.0+dcf2772",
43
44
  "@endo/captp": "^4.4.3",
44
45
  "@endo/errors": "^1.2.8",
45
46
  "@endo/eventual-send": "^1.2.8",
@@ -50,10 +51,9 @@
50
51
  "jessie.js": "^0.3.4"
51
52
  },
52
53
  "devDependencies": {
53
- "@agoric/smart-wallet": "0.5.4-dev-ef82fbf.0+ef82fbf",
54
- "@agoric/swingset-liveslots": "0.10.3-dev-ef82fbf.0+ef82fbf",
55
- "@agoric/swingset-vat": "0.32.3-dev-ef82fbf.0+ef82fbf",
56
- "@agoric/zone": "0.2.3-dev-ef82fbf.0+ef82fbf",
54
+ "@agoric/smart-wallet": "0.5.4-dev-dcf2772.0+dcf2772",
55
+ "@agoric/swingset-liveslots": "0.10.3-dev-dcf2772.0+dcf2772",
56
+ "@agoric/swingset-vat": "0.32.3-dev-dcf2772.0+dcf2772",
57
57
  "@endo/bundle-source": "^3.5.0",
58
58
  "@endo/init": "^1.1.7",
59
59
  "@endo/promise-kit": "^1.1.8",
@@ -84,5 +84,5 @@
84
84
  "typeCoverage": {
85
85
  "atLeast": 95.71
86
86
  },
87
- "gitHead": "ef82fbf7466ea1b57c321f735d73fcee2c66fd11"
87
+ "gitHead": "dcf27725dd4b6b0bc0c5d6a476b6416899a5aad3"
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,eACnB;IACN,QAAQ,EAAE,OAAO,WAAW,EAAE,IAAI,CACtC,OAAa,8BAA8B,EAAE,IAAI,CAC5C,CAAC;IACF,sBAAsB,EAAE,UAAU,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,uBAAuB,EAAE,mBAAmB,CAAC;CACvE,WACO,OAAO,kBAAkB,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CAsEkiU,cAAc;kDAAuE,cAAc;;;;;;;GAHjrU;;;;6BAlFY,aAAa,GACrB,eAAe,CAAC;IACd,uBAAuB,EAAE,QAAQ,CAAC;CACnC,CAAC;6BAxBoB,eAAe"}
1
+ {"version":3,"file":"provisionPool.d.ts","sourceRoot":"","sources":["provisionPool.js"],"names":[],"mappings":"AAoBA,8CAA8C;AAE9C,2BAA2B;AAC3B,mBADW,YAAY,CAerB;AAqBK,2BAZI,GAAG,CAAC,cAAc,CAAC,eACnB;IACN,QAAQ,EAAE,OAAO,WAAW,EAAE,IAAI,CACtC,OAAa,8BAA8B,EAAE,IAAI,CAC5C,CAAC;IACF,sBAAsB,EAAE,UAAU,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,uBAAuB,EAAE,mBAAmB,CAAC;CACvE,WACO,OAAO,kBAAkB,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CA0E8zT,cAAc;kDAAuE,cAAc;;;;;;;GAH78T;;;;6BAtFY,aAAa,GACrB,eAAe,CAAC;IACd,uBAAuB,EAAE,QAAQ,CAAC;CACnC,CAAC;6BAxBoB,eAAe"}
@@ -12,7 +12,11 @@ import { prepareExo } from '@agoric/vat-data';
12
12
  import { provideSingleton } from '@agoric/zoe/src/contractSupport/durability.js';
13
13
  import { prepareRecorderKitMakers } from '@agoric/zoe/src/contractSupport/recorder.js';
14
14
  import { TopicsRecordShape } from '@agoric/zoe/src/contractSupport/topics.js';
15
- import { prepareProvisionPoolKit } from './provisionPoolKit.js';
15
+ import { makeDurableZone } from '@agoric/zone/durable.js';
16
+ import {
17
+ prepareBridgeProvisionTool,
18
+ prepareProvisionPoolKit,
19
+ } from './provisionPoolKit.js';
16
20
 
17
21
  /** @import {Marshal} from '@endo/marshal'; */
18
22
 
@@ -72,11 +76,15 @@ export const start = async (zcf, privateArgs, baggage) => {
72
76
  privateArgs.marshaller,
73
77
  );
74
78
 
75
- const makeProvisionPoolKit = prepareProvisionPoolKit(baggage, {
79
+ const zone = makeDurableZone(baggage);
80
+
81
+ const makeBridgeProvisionTool = prepareBridgeProvisionTool(zone);
82
+ const makeProvisionPoolKit = prepareProvisionPoolKit(zone, {
76
83
  makeRecorderKit,
77
84
  params,
78
85
  poolBank,
79
86
  zcf,
87
+ makeBridgeProvisionTool,
80
88
  });
81
89
 
82
90
  const provisionPoolKit = await provideSingleton(
@@ -1,13 +1,12 @@
1
- export function makeBridgeProvisionTool(sendInitialPayment: (depositBank: ERef<Bank>) => Promise<void>, onProvisioned: () => void): ({ bankManager, namesByAddressAdmin, walletFactory, }: ProvisionPoolKitReferences) => {
2
- fromBridge: (obj: any) => Promise<void>;
3
- } & import("@endo/pass-style").RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
4
- fromBridge: (obj: any) => Promise<void>;
1
+ export function prepareBridgeProvisionTool(zone: import("@agoric/zone").Zone): (bankManager?: any, walletFactory?: any, namesByAddressAdmin?: any, forHandler?: any) => import("@endo/exo").Guarded<{
2
+ fromBridge(obj: any): Promise<void>;
5
3
  }>;
6
- export function prepareProvisionPoolKit(baggage: import("@agoric/vat-data").Baggage, { makeRecorderKit, params, poolBank, zcf }: {
4
+ export function prepareProvisionPoolKit(zone: import("@agoric/zone").Zone, { makeRecorderKit, params, poolBank, zcf, makeBridgeProvisionTool }: {
7
5
  makeRecorderKit: import("@agoric/zoe/src/contractSupport/recorder.js").MakeRecorderKit;
8
6
  params: any;
9
7
  poolBank: import("@endo/far").ERef<Bank>;
10
8
  zcf: ZCF;
9
+ makeBridgeProvisionTool: ReturnType<typeof prepareBridgeProvisionTool>;
11
10
  }): ({ poolBrand, storageNode }: {
12
11
  poolBrand: Brand<"nat">;
13
12
  storageNode: ERef<StorageNode>;
@@ -1 +1 @@
1
- {"version":3,"file":"provisionPoolKit.d.ts","sourceRoot":"","sources":["provisionPoolKit.js"],"names":[],"mappings":"AAgFO,4DAHI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,iBAC1C,MAAM,IAAI,0DAGP,0BAA0B;;;;GA+BvC;AAWM,iDARI,OAAO,kBAAkB,EAAE,OAAO,8CAClC;IACN,eAAe,EAAE,OAAO,6CAA6C,EAAE,eAAe,CAAC;IACvF,MAAM,EAAE,GAAG,CAAC;IACZ,QAAQ,EAAE,OAAO,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,GAAG,EAAE,GAAG,CAAC;CACV,gCA0YC;IAA2B,SAAS,EAA5B,KAAK,CAAC,KAAK,CAAC;IACY,WAAW,EAAnC,KAAK,WAAW,CAAC;CACzB,KAAU,OAAO,CAAC,gBAAgB,CAAC,CAcvC;+BA1eY;IACR,OAAO,EAAE,GAAG,CAAC;IACb,MAAM,EAAE,GAAG,CAAC;IACZ,MAAM,EAAE,GAAG,CAAC;CACb;0BAIS,OAAO,qCAAqC,EAAE,QAAQ,CAClE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CAsW6B,cACrB;kDAEK,cAAG;;;;;;;;;;;;EAzWyC,CACtD;;iBAKU,KAAK,WAAW,CAAC;yBACjB,KAAK,OAAO,cAAc,EAAE,SAAS,CAAC;mBACtC,KACb,OAAW,6CAA6C,EAAE,wBAAwB,CAAC,cAAc,CAAC,CAC/F;;;;;;;;;;wBAMU,MAAM;;;;;yBACN,OAAO,KAAK,CAAC;;;;;0BAEb,OAAO,KAAK,CAAC;;0BAjCS,8BAA8B;0BAF3C,WAAW;4BACT,2BAA2B;iCAChB,8BAA8B"}
1
+ {"version":3,"file":"provisionPoolKit.d.ts","sourceRoot":"","sources":["provisionPoolKit.js"],"names":[],"mappings":"AA6EO,iDAFI,OAAO,cAAc,EAAE,IAAI;;GAyCnC;AAYI,8CATI,OAAO,cAAc,EAAE,IAAI,uEAC3B;IACN,eAAe,EAAE,OAAO,6CAA6C,EAAE,eAAe,CAAC;IACvF,MAAM,EAAE,GAAG,CAAC;IACZ,QAAQ,EAAE,OAAO,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,GAAG,EAAE,GAAG,CAAC;IACT,uBAAuB,EAAE,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC;CACxE,gCA6YC;IAA2B,SAAS,EAA5B,KAAK,CAAC,KAAK,CAAC;IACY,WAAW,EAAnC,KAAK,WAAW,CAAC;CACzB,KAAU,OAAO,CAAC,gBAAgB,CAAC,CAcvC;+BApfY;IACR,OAAO,EAAE,GAAG,CAAC;IACb,MAAM,EAAE,GAAG,CAAC;IACZ,MAAM,EAAE,GAAG,CAAC;CACb;0BAIS,OAAO,qCAAqC,EAAE,QAAQ,CAClE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CAsWa,cAAW;kDAEX,cACR;;;;;;;;;;;;EAzWoD,CACtD;;iBAKU,KAAK,WAAW,CAAC;yBACjB,KAAK,OAAO,cAAc,EAAE,SAAS,CAAC;mBACtC,KACb,OAAW,6CAA6C,EAAE,wBAAwB,CAAC,cAAc,CAAC,CAC/F;;;;;;;;;;wBAMU,MAAM;;;;;yBACN,OAAO,KAAK,CAAC;;;;;0BAEb,OAAO,KAAK,CAAC;;0BAjCS,8BAA8B;0BAF3C,WAAW;4BACT,2BAA2B;iCAChB,8BAA8B"}
@@ -1,7 +1,6 @@
1
1
  // @ts-check
2
2
  import { X, q, Fail } from '@endo/errors';
3
3
  import { E } from '@endo/far';
4
- import { Far } from '@endo/marshal';
5
4
 
6
5
  import { AmountMath, BrandShape } from '@agoric/ertp';
7
6
  import { deeplyFulfilledObject, makeTracer } from '@agoric/internal';
@@ -15,7 +14,6 @@ import {
15
14
  M,
16
15
  makeScalarBigMapStore,
17
16
  makeScalarBigSetStore,
18
- prepareExoClassKit,
19
17
  } from '@agoric/vat-data';
20
18
  import { PowerFlags } from '@agoric/vats/src/walletFlags.js';
21
19
  import {
@@ -75,18 +73,22 @@ const FIRST_LOWER_NEAR_KEYWORD = /^[a-z][a-zA-Z0-9_$]*$/;
75
73
  * Given attenuated access to the funding purse, handle requests to provision
76
74
  * smart wallets.
77
75
  *
78
- * @param {(depositBank: ERef<Bank>) => Promise<void>} sendInitialPayment
79
- * @param {() => void} onProvisioned
76
+ * @param {import('@agoric/zone').Zone} zone
80
77
  */
81
- export const makeBridgeProvisionTool = (sendInitialPayment, onProvisioned) => {
82
- /** @param {ProvisionPoolKitReferences} refs */
83
- const makeBridgeHandler = ({
84
- bankManager,
85
- namesByAddressAdmin,
86
- walletFactory,
87
- }) =>
88
- Far('provisioningHandler', {
89
- fromBridge: async obj => {
78
+ export const prepareBridgeProvisionTool = zone =>
79
+ zone.exoClass(
80
+ 'smartWalletProvisioningHandler',
81
+ M.interface('ProvisionBridgeHandlerMaker', {
82
+ fromBridge: M.callWhen(M.record()).returns(),
83
+ }),
84
+ (bankManager, walletFactory, namesByAddressAdmin, forHandler) => ({
85
+ bankManager,
86
+ walletFactory,
87
+ namesByAddressAdmin,
88
+ forHandler,
89
+ }),
90
+ {
91
+ async fromBridge(obj) {
90
92
  obj.type === 'PLEASE_PROVISION' ||
91
93
  Fail`Unrecognized request ${obj.type}`;
92
94
  trace('PLEASE_PROVISION', obj);
@@ -94,9 +96,12 @@ export const makeBridgeProvisionTool = (sendInitialPayment, onProvisioned) => {
94
96
  powerFlags.includes(PowerFlags.SMART_WALLET) ||
95
97
  Fail`missing SMART_WALLET in powerFlags`;
96
98
 
99
+ const { bankManager, walletFactory, namesByAddressAdmin, forHandler } =
100
+ this.state;
101
+
97
102
  const bank = E(bankManager).getBankForAddress(address);
98
103
  // only proceed if we can provide funds
99
- await sendInitialPayment(bank);
104
+ await forHandler.sendInitialPayment(bank);
100
105
 
101
106
  const [_, created] = await E(walletFactory).provideSmartWallet(
102
107
  address,
@@ -104,31 +109,30 @@ export const makeBridgeProvisionTool = (sendInitialPayment, onProvisioned) => {
104
109
  namesByAddressAdmin,
105
110
  );
106
111
  if (created) {
107
- onProvisioned();
112
+ forHandler.onProvisioned();
108
113
  }
109
114
  trace(created ? 'provisioned' : 're-provisioned', address);
110
115
  },
111
- });
112
- return makeBridgeHandler;
113
- };
116
+ },
117
+ );
114
118
 
115
119
  /**
116
- * @param {import('@agoric/vat-data').Baggage} baggage
120
+ * @param {import('@agoric/zone').Zone} zone
117
121
  * @param {{
118
122
  * makeRecorderKit: import('@agoric/zoe/src/contractSupport/recorder.js').MakeRecorderKit;
119
123
  * params: any;
120
124
  * poolBank: import('@endo/far').ERef<Bank>;
121
125
  * zcf: ZCF;
126
+ * makeBridgeProvisionTool: ReturnType<typeof prepareBridgeProvisionTool>;
122
127
  * }} powers
123
128
  */
124
129
  export const prepareProvisionPoolKit = (
125
- baggage,
126
- { makeRecorderKit, params, poolBank, zcf },
130
+ zone,
131
+ { makeRecorderKit, params, poolBank, zcf, makeBridgeProvisionTool },
127
132
  ) => {
128
133
  const zoe = zcf.getZoeService();
129
134
 
130
- const makeProvisionPoolKitInternal = prepareExoClassKit(
131
- baggage,
135
+ const makeProvisionPoolKitInternal = zone.exoClassKit(
132
136
  'ProvisionPoolKit',
133
137
  {
134
138
  machine: M.interface('ProvisionPoolKit machine', {
@@ -151,6 +155,7 @@ export const prepareProvisionPoolKit = (
151
155
  ackWallet: M.call(M.string()).returns(M.boolean()),
152
156
  }),
153
157
  helper: UnguardedHelperI,
158
+ forHandler: UnguardedHelperI,
154
159
  public: M.interface('ProvisionPoolKit public', {
155
160
  getPublicTopics: M.call().returns({ metrics: PublicTopicShape }),
156
161
  }),
@@ -217,23 +222,24 @@ export const prepareProvisionPoolKit = (
217
222
  const refs = await deeplyFulfilledObject(obj);
218
223
  Object.assign(this.state, refs);
219
224
  },
225
+ /** @returns {import('@agoric/vats').BridgeHandler} */
220
226
  makeHandler() {
221
227
  const { bankManager, namesByAddressAdmin, walletFactory } =
222
228
  this.state;
223
229
  if (!bankManager || !namesByAddressAdmin || !walletFactory) {
224
230
  throw Fail`must set references before handling requests`;
225
231
  }
226
- const { helper } = this.facets;
227
- // a bit obtuse but leave for backwards compatibility with tests
228
- const innerMaker = makeBridgeProvisionTool(
229
- bank => helper.sendInitialPayment(bank),
230
- () => helper.onProvisioned(),
231
- );
232
- return innerMaker({
232
+
233
+ const { forHandler } = this.facets;
234
+
235
+ const provisionHandler = makeBridgeProvisionTool(
233
236
  bankManager,
234
- namesByAddressAdmin,
235
237
  walletFactory,
236
- });
238
+ namesByAddressAdmin,
239
+ forHandler,
240
+ );
241
+
242
+ return provisionHandler;
237
243
  },
238
244
  /**
239
245
  * @param {Brand} brand
@@ -311,37 +317,6 @@ export const prepareProvisionPoolKit = (
311
317
  );
312
318
  facets.helper.publishMetrics();
313
319
  },
314
- onProvisioned() {
315
- const { state, facets } = this;
316
- state.walletsProvisioned += 1n;
317
- facets.helper.publishMetrics();
318
- },
319
- /** @param {ERef<Bank>} destBank */
320
- async sendInitialPayment(destBank) {
321
- const {
322
- facets: { helper },
323
- state: { fundPurse, poolBrand },
324
- } = this;
325
- const perAccountInitialAmount = /** @type {Amount<'nat'>} */ (
326
- params.getPerAccountInitialAmount()
327
- );
328
- const initialPmt = await E(fundPurse).withdraw(
329
- perAccountInitialAmount,
330
- );
331
-
332
- const destPurse = E(destBank).getPurse(poolBrand);
333
- return E(destPurse)
334
- .deposit(initialPmt)
335
- .then(amt => {
336
- helper.onSendFunds(perAccountInitialAmount);
337
- trace('provisionPool sent', amt);
338
- })
339
- .catch(reason => {
340
- console.error(X`initial deposit failed: ${q(reason)}`);
341
- void E(fundPurse).deposit(initialPmt);
342
- throw reason;
343
- });
344
- },
345
320
  /**
346
321
  * @param {ERef<Purse>} exchangePurse
347
322
  * @param {ERef<Brand>} brand
@@ -491,6 +466,39 @@ export const prepareProvisionPoolKit = (
491
466
  return rxd;
492
467
  },
493
468
  },
469
+ forHandler: {
470
+ onProvisioned() {
471
+ const { state, facets } = this;
472
+ state.walletsProvisioned += 1n;
473
+ facets.helper.publishMetrics();
474
+ },
475
+ /** @param {ERef<Bank>} destBank */
476
+ async sendInitialPayment(destBank) {
477
+ const {
478
+ facets: { helper },
479
+ state: { fundPurse, poolBrand },
480
+ } = this;
481
+ const perAccountInitialAmount = /** @type {Amount<'nat'>} */ (
482
+ params.getPerAccountInitialAmount()
483
+ );
484
+ const initialPmt = await E(fundPurse).withdraw(
485
+ perAccountInitialAmount,
486
+ );
487
+
488
+ const destPurse = E(destBank).getPurse(poolBrand);
489
+ return E(destPurse)
490
+ .deposit(initialPmt)
491
+ .then(amt => {
492
+ helper.onSendFunds(perAccountInitialAmount);
493
+ trace('provisionPool sent', amt);
494
+ })
495
+ .catch(reason => {
496
+ console.error(X`initial deposit failed: ${q(reason)}`);
497
+ void E(fundPurse).deposit(initialPmt);
498
+ throw reason;
499
+ });
500
+ },
501
+ },
494
502
  public: {
495
503
  getPublicTopics() {
496
504
  return {