@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 +15 -15
- package/src/provisionPool.d.ts.map +1 -1
- package/src/provisionPool.js +10 -2
- package/src/provisionPoolKit.d.ts +4 -5
- package/src/provisionPoolKit.d.ts.map +1 -1
- package/src/provisionPoolKit.js +71 -63
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agoric/inter-protocol",
|
|
3
|
-
"version": "0.16.2-dev-
|
|
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-
|
|
35
|
-
"@agoric/governance": "0.10.4-dev-
|
|
36
|
-
"@agoric/internal": "0.3.3-dev-
|
|
37
|
-
"@agoric/notifier": "0.6.3-dev-
|
|
38
|
-
"@agoric/store": "0.9.3-dev-
|
|
39
|
-
"@agoric/time": "0.3.3-dev-
|
|
40
|
-
"@agoric/vat-data": "0.5.3-dev-
|
|
41
|
-
"@agoric/vats": "0.15.2-dev-
|
|
42
|
-
"@agoric/zoe": "0.26.3-dev-
|
|
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-
|
|
54
|
-
"@agoric/swingset-liveslots": "0.10.3-dev-
|
|
55
|
-
"@agoric/swingset-vat": "0.32.3-dev-
|
|
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": "
|
|
87
|
+
"gitHead": "dcf27725dd4b6b0bc0c5d6a476b6416899a5aad3"
|
|
88
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provisionPool.d.ts","sourceRoot":"","sources":["provisionPool.js"],"names":[],"mappings":"
|
|
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"}
|
package/src/provisionPool.js
CHANGED
|
@@ -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 {
|
|
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
|
|
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
|
|
2
|
-
fromBridge
|
|
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(
|
|
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":"
|
|
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"}
|
package/src/provisionPoolKit.js
CHANGED
|
@@ -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 {(
|
|
79
|
-
* @param {() => void} onProvisioned
|
|
76
|
+
* @param {import('@agoric/zone').Zone} zone
|
|
80
77
|
*/
|
|
81
|
-
export const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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
|
-
|
|
113
|
-
};
|
|
116
|
+
},
|
|
117
|
+
);
|
|
114
118
|
|
|
115
119
|
/**
|
|
116
|
-
* @param {import('@agoric/
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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 {
|