@agoric/vats 0.15.2-dev-19b9351.0 → 0.15.2-dev-4dd330d.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 +2 -2
- package/src/bridge-target.d.ts.map +1 -1
- package/src/bridge-target.js +15 -4
- package/src/localchain.d.ts +113 -50
- package/src/localchain.d.ts.map +1 -1
- package/src/localchain.js +255 -23
- package/src/proposals/localchain-hook-msg-send.d.ts +26 -0
- package/src/proposals/localchain-hook-msg-send.d.ts.map +1 -0
- package/src/proposals/localchain-hook-msg-send.js +70 -0
- package/src/proposals/localchain-proposal.d.ts +3 -1
- package/src/proposals/localchain-proposal.d.ts.map +1 -1
- package/src/proposals/localchain-proposal.js +21 -4
- package/src/proposals/localchain-test.d.ts +5 -1
- package/src/proposals/localchain-test.d.ts.map +1 -1
- package/src/proposals/localchain-test.js +72 -14
- package/src/proposals/upgrade-vats-generic-proposal.d.ts +3 -1
- package/src/proposals/upgrade-vats-generic-proposal.d.ts.map +1 -1
- package/src/proposals/upgrade-vats-generic-proposal.js +9 -4
- package/src/types.d.ts +8 -4
- package/src/types.d.ts.map +1 -1
- package/src/types.ts +6 -4
- package/src/vat-localchain.d.ts +38 -5
- package/src/vat-localchain.d.ts.map +1 -1
- package/src/vat-localchain.js +41 -6
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// @ts-check
|
|
2
|
+
import { Far } from '@endo/far';
|
|
2
3
|
import { heapVowE as E } from '@agoric/vow/vat.js';
|
|
3
4
|
import { typedJson } from '@agoric/cosmic-proto';
|
|
4
5
|
|
|
@@ -12,7 +13,7 @@ import { typedJson } from '@agoric/cosmic-proto';
|
|
|
12
13
|
* @param {{ testResultPath: string }} options.options
|
|
13
14
|
*/
|
|
14
15
|
export const testLocalChain = async (
|
|
15
|
-
{ consume: { chainStorage, localchain } },
|
|
16
|
+
{ consume: { board, chainStorage, localchain } },
|
|
16
17
|
{ options: { testResultPath } },
|
|
17
18
|
) => {
|
|
18
19
|
console.warn('=== localchain test started (result in', testResultPath, ')!');
|
|
@@ -23,24 +24,35 @@ export const testLocalChain = async (
|
|
|
23
24
|
throw Error('no chainStorage');
|
|
24
25
|
}
|
|
25
26
|
|
|
27
|
+
for (const nodeName of testResultPath.split('.')) {
|
|
28
|
+
node = E(node).makeChildNode(nodeName);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** @type {PromiseSettledResult<any>} */
|
|
26
32
|
let result;
|
|
27
33
|
try {
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
34
|
+
const lcaSender = await E(localchain).makeAccount();
|
|
35
|
+
const lcaReceiver = await E(localchain).makeAccount();
|
|
36
|
+
const senderAddress = await E(lcaSender).getAddress();
|
|
37
|
+
const receiverAddress = await E(lcaReceiver).getAddress();
|
|
38
|
+
console.info('created accounts', {
|
|
39
|
+
lcaSender,
|
|
40
|
+
lcaReceiver,
|
|
41
|
+
senderAddress,
|
|
42
|
+
receiverAddress,
|
|
43
|
+
});
|
|
32
44
|
|
|
33
45
|
const queryMsg = typedJson('/cosmos.bank.v1beta1.QueryAllBalancesRequest', {
|
|
34
|
-
address,
|
|
46
|
+
address: receiverAddress,
|
|
35
47
|
});
|
|
36
48
|
const balances = await E(localchain).query(queryMsg);
|
|
37
49
|
console.info('balances', balances);
|
|
38
50
|
|
|
39
|
-
await E(
|
|
51
|
+
await E(lcaReceiver)
|
|
40
52
|
.executeTx([
|
|
41
53
|
typedJson('/cosmos.bank.v1beta1.MsgSend', {
|
|
42
|
-
fromAddress:
|
|
43
|
-
toAddress:
|
|
54
|
+
fromAddress: receiverAddress,
|
|
55
|
+
toAddress: receiverAddress,
|
|
44
56
|
amount: [{ denom: 'ucosm', amount: '1' }],
|
|
45
57
|
}),
|
|
46
58
|
])
|
|
@@ -61,16 +73,58 @@ export const testLocalChain = async (
|
|
|
61
73
|
throw Error('emptyQuery results should be empty');
|
|
62
74
|
}
|
|
63
75
|
|
|
64
|
-
|
|
76
|
+
const tap = Far(
|
|
77
|
+
'Localchain Tap',
|
|
78
|
+
/** @type {import('../bridge-target.js').TargetApp} */ ({
|
|
79
|
+
async receiveUpcall(obj) {
|
|
80
|
+
console.info('=== localchain test tap received upcall', obj);
|
|
81
|
+
await E(E(node).makeChildNode('tap')).setValue(JSON.stringify(obj));
|
|
82
|
+
},
|
|
83
|
+
}),
|
|
84
|
+
);
|
|
85
|
+
await E(lcaReceiver).monitorTransfers(tap);
|
|
86
|
+
|
|
87
|
+
const testMore = Far('Localchain Test More', {
|
|
88
|
+
async sendTo(toAddress, amount) {
|
|
89
|
+
/** @type {PromiseSettledResult<any>} */
|
|
90
|
+
let sendToResult;
|
|
91
|
+
await null;
|
|
92
|
+
try {
|
|
93
|
+
console.info('=== localchain test sendTo called');
|
|
94
|
+
const execResult = await E(lcaSender).executeTx([
|
|
95
|
+
typedJson('/cosmos.bank.v1beta1.MsgSend', {
|
|
96
|
+
fromAddress: senderAddress,
|
|
97
|
+
toAddress,
|
|
98
|
+
amount,
|
|
99
|
+
}),
|
|
100
|
+
]);
|
|
101
|
+
sendToResult = {
|
|
102
|
+
status: 'fulfilled',
|
|
103
|
+
value: { toAddress, amount, execResult },
|
|
104
|
+
};
|
|
105
|
+
} catch (e) {
|
|
106
|
+
console.error('=== localchain test sendTo failed', e);
|
|
107
|
+
sendToResult = {
|
|
108
|
+
status: 'rejected',
|
|
109
|
+
reason: { toAddress, amount, error: String(e) },
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
console.info('== localchain sendTo result', sendToResult);
|
|
113
|
+
await E(node).setValue(JSON.stringify(sendToResult));
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
const testMoreBoardId = await E(board).getId(testMore);
|
|
117
|
+
|
|
118
|
+
result = {
|
|
119
|
+
status: 'fulfilled',
|
|
120
|
+
value: { receiverAddress, senderAddress, testMoreBoardId },
|
|
121
|
+
};
|
|
65
122
|
} catch (e) {
|
|
66
123
|
console.error('test failed with', e);
|
|
67
|
-
result = {
|
|
124
|
+
result = { status: 'rejected', reason: String(e) };
|
|
68
125
|
}
|
|
69
126
|
|
|
70
127
|
console.warn('=== localchain test done, setting', { result });
|
|
71
|
-
for (const nodeName of testResultPath.split('.')) {
|
|
72
|
-
node = E(node).makeChildNode(nodeName);
|
|
73
|
-
}
|
|
74
128
|
await E(node).setValue(JSON.stringify(result));
|
|
75
129
|
};
|
|
76
130
|
|
|
@@ -78,9 +132,13 @@ export const getManifestForLocalChainTest = (_powers, { testResultPath }) => ({
|
|
|
78
132
|
manifest: {
|
|
79
133
|
[testLocalChain.name]: {
|
|
80
134
|
consume: {
|
|
135
|
+
board: 'vats',
|
|
81
136
|
chainStorage: 'bridge',
|
|
82
137
|
localchain: 'localchain',
|
|
83
138
|
},
|
|
139
|
+
produce: {
|
|
140
|
+
testLocalChain: 'localchain-test',
|
|
141
|
+
},
|
|
84
142
|
},
|
|
85
143
|
},
|
|
86
144
|
options: {
|
|
@@ -12,7 +12,9 @@ export function upgradeVatsGeneric({ consume: { vatAdminSvc, vatStore } }: Boots
|
|
|
12
12
|
[vatName: string]: import("@agoric/swingset-vat").VatUpgradeOptions;
|
|
13
13
|
};
|
|
14
14
|
};
|
|
15
|
-
}): Promise<
|
|
15
|
+
}): Promise<{
|
|
16
|
+
[name: string]: any;
|
|
17
|
+
}>;
|
|
16
18
|
export function upgradeZoeContractsGeneric({ consume }: PromiseSpaceOf<Record<string, any>>, options: {
|
|
17
19
|
options: {
|
|
18
20
|
contractKitSpecs: ContractKitSpec[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade-vats-generic-proposal.d.ts","sourceRoot":"","sources":["upgrade-vats-generic-proposal.js"],"names":[],"mappings":"AAwBO,2EAjBI,eAAe,GAAG;IACxB,OAAO,EAAE;QACP,WAAW,EAAE,WAAW,CAAC;QACzB,QAAQ,EAAE,QAAQ,CACxB,MAAc,EACd,OAAe,sBAAsB,EAAE,gBAAgB,CAChD,CAAC;KACH,CAAC;CACH,WAED;IAKW,OAAO,EALV;QACN,UAAU,EAAE;YAAE,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAAA;SAAE,CAAC;QAChD,UAAU,CAAC,EAAE;YACjB,CAAO,OAAO,EAAE,MAAM,GAAG,OAAO,sBAAsB,EAAE,iBAAiB,CAAC;SACrE,CAAC;KACH;CACH
|
|
1
|
+
{"version":3,"file":"upgrade-vats-generic-proposal.d.ts","sourceRoot":"","sources":["upgrade-vats-generic-proposal.js"],"names":[],"mappings":"AAwBO,2EAjBI,eAAe,GAAG;IACxB,OAAO,EAAE;QACP,WAAW,EAAE,WAAW,CAAC;QACzB,QAAQ,EAAE,QAAQ,CACxB,MAAc,EACd,OAAe,sBAAsB,EAAE,gBAAgB,CAChD,CAAC;KACH,CAAC;CACH,WAED;IAKW,OAAO,EALV;QACN,UAAU,EAAE;YAAE,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAAA;SAAE,CAAC;QAChD,UAAU,CAAC,EAAE;YACjB,CAAO,OAAO,EAAE,MAAM,GAAG,OAAO,sBAAsB,EAAE,iBAAiB,CAAC;SACrE,CAAC;KACH;CACH;;GA0BA;AAcM,wDAPI,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,WAE3C;IAGW,OAAO,EAHV;QACN,gBAAgB,EAAE,eAAe,EAAE,CAAC;QACpC,sBAAsB,EAAE;YAAE,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAAA;SAAE,CAAC;KAChE;CACH,iBAqEA;AAEM;;;;;QAKH,CAAC,kBAAkB,CAAC,IAAI,CAAC;;;;;;UAMxB;;;;;;EAGH;AASK,uEANI,GAAG,gDACH;IACN,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,sBAAsB,EAAE;QAAE,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAAA;KAAE,CAAC;CAChE;;QAmBE,CAAC,0BAA0B,CAAC,IAAI,CAAC;;;;UAIhC;;;;;;;;;;;EAaN;8BA1IY;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE"}
|
|
@@ -29,18 +29,24 @@ export const upgradeVatsGeneric = async (
|
|
|
29
29
|
trace('Starting upgrade of vats');
|
|
30
30
|
const { bundleRefs, vatOptions = {} } = options.options;
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
await null;
|
|
33
|
+
|
|
34
|
+
/** @type {{ [name: string]: any }} */
|
|
35
|
+
const upgradeRoots = {};
|
|
36
|
+
for (const [name, ref] of Object.entries(bundleRefs)) {
|
|
33
37
|
assert(ref.bundleID, `bundleID missing for ${name}`);
|
|
34
38
|
trace(name, `BUNDLE ID: `, ref.bundleID);
|
|
35
39
|
const bundleCap = await E(vatAdminSvc).getBundleCap(ref.bundleID);
|
|
36
40
|
|
|
37
|
-
trace(name, 'Getting admin node from vatStore');
|
|
38
|
-
const { adminNode } = await E(vatStore).get(name);
|
|
41
|
+
trace(name, 'Getting admin node and root from vatStore');
|
|
42
|
+
const { adminNode, root } = await E(vatStore).get(name);
|
|
39
43
|
trace(name, 'Upgrading via adminNode');
|
|
40
44
|
await E(adminNode).upgrade(bundleCap, vatOptions[name] || {});
|
|
45
|
+
upgradeRoots[name] = root;
|
|
41
46
|
}
|
|
42
47
|
|
|
43
48
|
trace('Done upgrading vats');
|
|
49
|
+
return upgradeRoots;
|
|
44
50
|
};
|
|
45
51
|
|
|
46
52
|
/**
|
|
@@ -147,7 +153,6 @@ export const getManifestForUpgradingVats = (
|
|
|
147
153
|
* contractKitSpecs: ContractKitSpec[];
|
|
148
154
|
* installationBundleRefs: { [bundleName: string]: VatSourceRef };
|
|
149
155
|
* }} options
|
|
150
|
-
* @returns
|
|
151
156
|
*/
|
|
152
157
|
export const getManifestForUpgradingZoeContractKits = (
|
|
153
158
|
{ restoreRef },
|
package/src/types.d.ts
CHANGED
|
@@ -87,7 +87,7 @@ export type NamesByAddressAdmin = NameAdmin & {
|
|
|
87
87
|
/** An object that can receive messages from the bridge device */
|
|
88
88
|
export type BridgeHandler = {
|
|
89
89
|
/** Handle an inbound message */
|
|
90
|
-
fromBridge: (obj: any) => Promise<unknown
|
|
90
|
+
fromBridge: (obj: any) => Promise<unknown> | unknown;
|
|
91
91
|
};
|
|
92
92
|
export type ScopedBridgeManagerMethods<B extends BridgeId> = {
|
|
93
93
|
/**
|
|
@@ -180,11 +180,15 @@ type IBCPacketEvents = {
|
|
|
180
180
|
type IBCEventType = 'IBC_EVENT' | 'VTRANSFER_IBC_EVENT';
|
|
181
181
|
export type IBCEvent<E extends IBCBridgeEvent, T extends IBCEventType = 'IBC_EVENT'> = {
|
|
182
182
|
type: T;
|
|
183
|
-
blockHeight
|
|
184
|
-
|
|
183
|
+
/** blockHeight may be missing from synthetic packets. */
|
|
184
|
+
blockHeight?: number;
|
|
185
|
+
/** blockTime may be missing from synthetic packets. */
|
|
186
|
+
blockTime?: number;
|
|
185
187
|
event: E;
|
|
186
188
|
/** e.g. the chain address of the LocalChainAccount */
|
|
187
|
-
target?: string
|
|
189
|
+
target?: string | {
|
|
190
|
+
onlyIfRegistered: string;
|
|
191
|
+
};
|
|
188
192
|
} & {
|
|
189
193
|
[K in keyof IBCPacketEvents[E]]: IBCPacketEvents[E][K];
|
|
190
194
|
};
|
package/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AACzF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,MAAM,MAAM,KAAK,GAAG,UAAU,CAC5B,UAAU,CAAC,cAAc,gBAAgB,EAAE,eAAe,CAAC,CAC5D,CAAC,OAAO,CAAC,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,CAAC,KAAK,GAAG,GAAG,IAAI;IACjC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9B;;;OAGG;IACH,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5C,2DAA2D;IAC3D,OAAO,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAC1D,qDAAqD;IACrD,IAAI,EAAE,MAAM,MAAM,EAAE,CAAC;IACrB,sDAAsD;IACtD,MAAM,EAAE,MAAM,KAAK,EAAE,CAAC;CACvB,CAAC;AAEF,iDAAiD;AACjD,MAAM,MAAM,SAAS,GAAG;IACtB,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACxE;;;;OAIG;IACH,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC;;;OAGG;IACH,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,CAAC,CAAC;IAClE,yDAAyD;IACzD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAChE;;;;OAIG;IACH,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACnE;;;OAGG;IACH,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD,0EAA0E;IAC1E,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB;;;;OAIG;IACH,QAAQ,EAAE,CAAC,EAAE,EAAE,SAAS,GAAG,oBAAoB,KAAK,IAAI,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,oFAAoF;IACpF,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEF,iCAAiC;AACjC,MAAM,MAAM,UAAU,GAAG;IACvB,kBAAkB;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB;IACnB,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG;IAC3C,YAAY,IAAI,MAAM,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG;IAC5C,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,kBAAkB,CAAC;KAC/B,CAAC,CAAC;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACxD,CAAC;AAEF,iEAAiE;AACjE,MAAM,MAAM,aAAa,GAAG;IAC1B,gCAAgC;IAChC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CACtD,CAAC;AAEF,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,QAAQ,IAAI;IAC3D;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;IACtB,uCAAuC;IACvC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,qCAAqC;IACrC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IACtD,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;CACtD,CAAC;AAEF,6DAA6D;AAC7D,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,QAAQ,IAAI,OAAO,CAC3D,0BAA0B,CAAC,CAAC,CAAC,CAC9B,CAAC;AAEF,uCAAuC;AACvC,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,CAAC,CAAC,SAAS,QAAQ,EAC3B,QAAQ,EAAE,CAAC,EACX,OAAO,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,KAC5B,mBAAmB,CAAC,CAAC,CAAC,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAC/B,MAAM,MAAM,YAAY,GAAG,WAAW,MAAM,EAAE,CAAC;AAC/C,MAAM,MAAM,eAAe,GAAG,cAAc,MAAM,EAAE,CAAC;AACrD,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,WAAW,CAAC;AAEzD,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC;IAC/B,IAAI,EAAE,KAAK,CAAC;IACZ,cAAc,EAAE,YAAY,CAAC;IAC7B,WAAW,EAAE,SAAS,CAAC;IACvB,mBAAmB,EAAE,YAAY,CAAC;IAClC,gBAAgB,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,cAAc,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACjD,iBAAiB,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;CACxD,CAAC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,SAAS,CAAC;IACnB,UAAU,EAAE,YAAY,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,cAAc,EAAE,eAAe,EAAE,CAAC;IAClC,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,YAAY,CAAC;IACxB,YAAY,EAAE,eAAe,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,6EAA6E;AAC7E,MAAM,MAAM,cAAc,GACtB,sBAAsB,GACtB,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,oBAAoB,GACpB,kBAAkB,GAClB,qBAAqB,GACrB,eAAe,GACf,uBAAuB,GACvB,eAAe,GACf,YAAY,CAAC;AAEjB,KAAK,eAAe,GAAG;IACrB,eAAe,EAAE,cAAc,CAAC;IAChC,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,kBAAkB,EAAE,cAAc,CAAC;IACnC,aAAa,EAAE;QACb,MAAM,EAAE,SAAS,CAAC;KACnB,CAAC;IACF,qBAAqB,EAAE;QACrB,eAAe,EAAE,KAAK,CAAC;QACvB,MAAM,EAAE,SAAS,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,oBAAoB,EAAE;QACpB,eAAe,EAAE,KAAK,CAAC;QACvB,MAAM,EAAE,SAAS,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,aAAa,EAAE;QACb,MAAM,EAAE,SAAS,CAAC;KACnB,CAAC;IACF,gBAAgB,EAAE;QAAE,SAAS,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE,CAAC;IACjE,mBAAmB,EAAE;QAAE,SAAS,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE,CAAC;IACpE,UAAU,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE,CAAC;CAC9D,CAAC;AAEF;;;GAGG;AACH,KAAK,YAAY,GAAG,WAAW,GAAG,qBAAqB,CAAC;AAExD,MAAM,MAAM,QAAQ,CAClB,CAAC,SAAS,cAAc,EACxB,CAAC,SAAS,YAAY,GAAG,WAAW,IAClC;IACF,IAAI,EAAE,CAAC,CAAC;IACR,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,CAAC,CAAC;IACT,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,GAAG;QAAE,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD,GAAG;KACD,CAAC,IAAI,MAAM,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACvD,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,iBAAiB,GACzB,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,GACjB,sBAAsB,GACtB,uBAAuB,GACvB,UAAU,GACV,iBAAiB,GACjB,kBAAkB,CAAC;AAEvB,KAAK,eAAe,GAAG;IACrB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,eAAe,EAAE,sBAAsB,CAAC;IACxC,eAAe,EAAE;QACf,MAAM,EAAE,SAAS,CAAC;QAClB,GAAG,EAAE,KAAK,CAAC;KACZ,CAAC;IACF,oBAAoB,EAAE,uBAAuB,CAAC;IAC9C,qBAAqB,EAAE;QACrB,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,gBAAgB,CAAC,CAAC;KAC3D,CAAC;IACF,QAAQ,EAAE;QAAE,MAAM,EAAE;YAAE,WAAW,EAAE,SAAS,CAAA;SAAE,CAAA;KAAE,CAAC;IACjD,eAAe,EAAE;QACf,MAAM,EAAE,SAAS,CAAC;KACnB,CAAC;IACF,gBAAgB,EAAE,sBAAsB,CAAC;CAC1C,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,iBAAiB,IAAI;IACnD,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,CAAC,CAAC;CACX,GAAG;KACD,CAAC,IAAI,MAAM,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,iBAAiB,IAAI;KACpD,CAAC,IAAI,MAAM,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,iBAAiB,IACvD,CAAC,SAAS,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAEhE,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,iBAAiB,IACvD,eAAe,CAAC,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAE7D,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,uBAAuB,GAAG,uBAAuB,GAAG;IACvD,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,kBAAkB,GAAG,aAAa,CAAC,CAAC;CAC7D,CAAC;AAEF,KAAK,sBAAsB,GAAG,uBAAuB,GAAG;IACtD,MAAM,EAAE,IAAI,CACV,SAAS,EACP,kBAAkB,GAClB,aAAa,GACb,qBAAqB,GACrB,gBAAgB,CACnB,CAAC;CACH,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,SAAS,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GACzB,QAAQ,CAAC,uBAAuB,EAAE,qBAAqB,CAAC,GACxD,QAAQ,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,GACvD,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC"}
|
package/src/types.ts
CHANGED
|
@@ -103,7 +103,7 @@ export type NamesByAddressAdmin = NameAdmin & {
|
|
|
103
103
|
/** An object that can receive messages from the bridge device */
|
|
104
104
|
export type BridgeHandler = {
|
|
105
105
|
/** Handle an inbound message */
|
|
106
|
-
fromBridge: (obj: any) => Promise<unknown
|
|
106
|
+
fromBridge: (obj: any) => Promise<unknown> | unknown;
|
|
107
107
|
};
|
|
108
108
|
|
|
109
109
|
export type ScopedBridgeManagerMethods<B extends BridgeId> = {
|
|
@@ -217,11 +217,13 @@ export type IBCEvent<
|
|
|
217
217
|
T extends IBCEventType = 'IBC_EVENT',
|
|
218
218
|
> = {
|
|
219
219
|
type: T;
|
|
220
|
-
blockHeight
|
|
221
|
-
|
|
220
|
+
/** blockHeight may be missing from synthetic packets. */
|
|
221
|
+
blockHeight?: number;
|
|
222
|
+
/** blockTime may be missing from synthetic packets. */
|
|
223
|
+
blockTime?: number;
|
|
222
224
|
event: E;
|
|
223
225
|
/** e.g. the chain address of the LocalChainAccount */
|
|
224
|
-
target?: string;
|
|
226
|
+
target?: string | { onlyIfRegistered: string };
|
|
225
227
|
} & {
|
|
226
228
|
[K in keyof IBCPacketEvents[E]]: IBCPacketEvents[E][K];
|
|
227
229
|
};
|
package/src/vat-localchain.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export function buildRootObject(_vatPowers: any,
|
|
1
|
+
export function buildRootObject(_vatPowers: any, _vatParameters: any, baggage: any): {
|
|
2
2
|
/**
|
|
3
3
|
* Create a local chain that allows permissionlessly making fresh local
|
|
4
4
|
* chain accounts, then using them to send chain queries and transactions.
|
|
5
5
|
*
|
|
6
|
-
* @param {
|
|
6
|
+
* @param {LocalChainPowers} powers
|
|
7
7
|
*/
|
|
8
|
-
makeLocalChain(powers:
|
|
8
|
+
makeLocalChain(powers: LocalChainPowers): import("@endo/exo").Guarded<{
|
|
9
9
|
makeAccount(): import("@agoric/vow").PromiseVow<LocalChainAccount>;
|
|
10
10
|
query<T extends import("@agoric/cosmic-proto").TypedJson = {
|
|
11
11
|
'@type': string;
|
|
@@ -19,14 +19,30 @@ export function buildRootObject(_vatPowers: any, _args: any, baggage: any): {
|
|
|
19
19
|
};
|
|
20
20
|
}[]>;
|
|
21
21
|
}>;
|
|
22
|
+
/**
|
|
23
|
+
* Associate a TransferMiddleware instance with its corresponding
|
|
24
|
+
* ScopedBridgeManager. This is necessary because existing LocalChain
|
|
25
|
+
* instances need the power to inject vtransfer messages when they initiate
|
|
26
|
+
* a MsgSend.
|
|
27
|
+
*
|
|
28
|
+
* By using a WeakMap, we ensure that only possession of both the map and a
|
|
29
|
+
* TransferMiddleware ocap can be amplified into the associated manager.
|
|
30
|
+
*
|
|
31
|
+
* @param {import('./transfer.js').TransferMiddleware} transfer
|
|
32
|
+
* @param {Pick<
|
|
33
|
+
* import('./types.js').ScopedBridgeManager<'vtransfer'>,
|
|
34
|
+
* 'fromBridge'
|
|
35
|
+
* >} transferBridgeManager
|
|
36
|
+
*/
|
|
37
|
+
linkTransferMiddlewareToBridgeManager(transfer: import("./transfer.js").TransferMiddleware, transferBridgeManager: Pick<import("./types.js").ScopedBridgeManager<"vtransfer">, "fromBridge">): void;
|
|
22
38
|
} & RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
|
|
23
39
|
/**
|
|
24
40
|
* Create a local chain that allows permissionlessly making fresh local
|
|
25
41
|
* chain accounts, then using them to send chain queries and transactions.
|
|
26
42
|
*
|
|
27
|
-
* @param {
|
|
43
|
+
* @param {LocalChainPowers} powers
|
|
28
44
|
*/
|
|
29
|
-
makeLocalChain(powers:
|
|
45
|
+
makeLocalChain(powers: LocalChainPowers): import("@endo/exo").Guarded<{
|
|
30
46
|
makeAccount(): import("@agoric/vow").PromiseVow<LocalChainAccount>;
|
|
31
47
|
query<T extends import("@agoric/cosmic-proto").TypedJson = {
|
|
32
48
|
'@type': string;
|
|
@@ -40,6 +56,23 @@ export function buildRootObject(_vatPowers: any, _args: any, baggage: any): {
|
|
|
40
56
|
};
|
|
41
57
|
}[]>;
|
|
42
58
|
}>;
|
|
59
|
+
/**
|
|
60
|
+
* Associate a TransferMiddleware instance with its corresponding
|
|
61
|
+
* ScopedBridgeManager. This is necessary because existing LocalChain
|
|
62
|
+
* instances need the power to inject vtransfer messages when they initiate
|
|
63
|
+
* a MsgSend.
|
|
64
|
+
*
|
|
65
|
+
* By using a WeakMap, we ensure that only possession of both the map and a
|
|
66
|
+
* TransferMiddleware ocap can be amplified into the associated manager.
|
|
67
|
+
*
|
|
68
|
+
* @param {import('./transfer.js').TransferMiddleware} transfer
|
|
69
|
+
* @param {Pick<
|
|
70
|
+
* import('./types.js').ScopedBridgeManager<'vtransfer'>,
|
|
71
|
+
* 'fromBridge'
|
|
72
|
+
* >} transferBridgeManager
|
|
73
|
+
*/
|
|
74
|
+
linkTransferMiddlewareToBridgeManager(transfer: import("./transfer.js").TransferMiddleware, transferBridgeManager: Pick<import("./types.js").ScopedBridgeManager<"vtransfer">, "fromBridge">): void;
|
|
43
75
|
}>;
|
|
44
76
|
export type LocalChainVat = ReturnType<typeof buildRootObject>;
|
|
77
|
+
import type { LocalChainPowers } from './localchain.js';
|
|
45
78
|
//# sourceMappingURL=vat-localchain.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vat-localchain.d.ts","sourceRoot":"","sources":["vat-localchain.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vat-localchain.d.ts","sourceRoot":"","sources":["vat-localchain.js"],"names":[],"mappings":"AAWO;IAUH;;;;;OAKG;2BADQ,gBAAgB;;;;;;;;;;;;;;IAM3B;;;;;;;;;;;;;;OAcG;oDALQ,OAAO,eAAe,EAAE,kBAAkB,yBAC1C,IAAI,CACd,OAAW,YAAY,EAAE,mBAAmB,CAAC,WAAW,CAAC,EACzD,YAAgB,CACb;;IAvBJ;;;;;OAKG;2BADQ,gBAAgB;;;;;;;;;;;;;;IAM3B;;;;;;;;;;;;;;OAcG;oDALQ,OAAO,eAAe,EAAE,kBAAkB,yBAC1C,IAAI,CACd,OAAW,YAAY,EAAE,mBAAmB,CAAC,WAAW,CAAC,EACzD,YAAgB,CACb;GAiBP;4BAEa,UAAU,CAAC,OAAO,eAAe,CAAC;sCAvDb,iBAAiB"}
|
package/src/vat-localchain.js
CHANGED
|
@@ -5,24 +5,59 @@ import { prepareVowTools } from '@agoric/vow/vat.js';
|
|
|
5
5
|
|
|
6
6
|
import { prepareLocalChainTools } from './localchain.js';
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* @import {LocalChainPowers} from './localchain.js';
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
export const buildRootObject = (_vatPowers, _vatParameters, baggage) => {
|
|
9
13
|
const zone = makeDurableZone(baggage);
|
|
10
14
|
const vowTools = prepareVowTools(zone.subZone('VowTools'));
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
vowTools,
|
|
14
|
-
|
|
15
|
+
const powersForTransfer = zone.weakMapStore('powersForTransfer');
|
|
16
|
+
const makeLocalChain = prepareLocalChainTools(zone.subZone('localchain'), {
|
|
17
|
+
...vowTools,
|
|
18
|
+
powersForTransfer,
|
|
19
|
+
});
|
|
15
20
|
|
|
16
21
|
return Far('LocalChainVat', {
|
|
17
22
|
/**
|
|
18
23
|
* Create a local chain that allows permissionlessly making fresh local
|
|
19
24
|
* chain accounts, then using them to send chain queries and transactions.
|
|
20
25
|
*
|
|
21
|
-
* @param {
|
|
26
|
+
* @param {LocalChainPowers} powers
|
|
22
27
|
*/
|
|
23
28
|
makeLocalChain(powers) {
|
|
24
29
|
return makeLocalChain(powers);
|
|
25
30
|
},
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Associate a TransferMiddleware instance with its corresponding
|
|
34
|
+
* ScopedBridgeManager. This is necessary because existing LocalChain
|
|
35
|
+
* instances need the power to inject vtransfer messages when they initiate
|
|
36
|
+
* a MsgSend.
|
|
37
|
+
*
|
|
38
|
+
* By using a WeakMap, we ensure that only possession of both the map and a
|
|
39
|
+
* TransferMiddleware ocap can be amplified into the associated manager.
|
|
40
|
+
*
|
|
41
|
+
* @param {import('./transfer.js').TransferMiddleware} transfer
|
|
42
|
+
* @param {Pick<
|
|
43
|
+
* import('./types.js').ScopedBridgeManager<'vtransfer'>,
|
|
44
|
+
* 'fromBridge'
|
|
45
|
+
* >} transferBridgeManager
|
|
46
|
+
*/
|
|
47
|
+
linkTransferMiddlewareToBridgeManager(transfer, transferBridgeManager) {
|
|
48
|
+
if (!powersForTransfer.has(transfer)) {
|
|
49
|
+
powersForTransfer.init(
|
|
50
|
+
transfer,
|
|
51
|
+
harden({
|
|
52
|
+
transferBridgeManager,
|
|
53
|
+
}),
|
|
54
|
+
);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const existing = powersForTransfer.get(transfer);
|
|
58
|
+
const updated = harden({ ...existing, transferBridgeManager });
|
|
59
|
+
powersForTransfer.set(transfer, updated);
|
|
60
|
+
},
|
|
26
61
|
});
|
|
27
62
|
};
|
|
28
63
|
|