@agoric/vats 0.15.2-dev-6bf6362.0.6bf6362 → 0.15.2-dev-01b8bed.0.01b8bed
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 +16 -16
- package/src/ibc.d.ts.map +1 -1
- package/src/ibc.js +22 -13
- package/src/proposals/network-proposal.d.ts +1 -1
- package/src/proposals/network-proposal.js +1 -1
- package/src/types.d.ts +14 -0
- package/src/types.d.ts.map +1 -1
- package/src/types.ts +15 -0
- package/tools/ibc-utils.d.ts +43 -5
- package/tools/ibc-utils.d.ts.map +1 -1
- package/tools/ibc-utils.js +199 -43
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agoric/vats",
|
|
3
|
-
"version": "0.15.2-dev-
|
|
3
|
+
"version": "0.15.2-dev-01b8bed.0.01b8bed",
|
|
4
4
|
"description": "Agoric's Vat library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./index.js",
|
|
@@ -22,19 +22,19 @@
|
|
|
22
22
|
"author": "Agoric",
|
|
23
23
|
"license": "Apache-2.0",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@agoric/cosmic-proto": "0.4.1-dev-
|
|
26
|
-
"@agoric/ertp": "0.16.3-dev-
|
|
27
|
-
"@agoric/governance": "0.10.4-dev-
|
|
28
|
-
"@agoric/internal": "0.3.3-dev-
|
|
29
|
-
"@agoric/network": "0.1.1-dev-
|
|
30
|
-
"@agoric/notifier": "0.6.3-dev-
|
|
31
|
-
"@agoric/store": "0.9.3-dev-
|
|
32
|
-
"@agoric/swingset-vat": "0.32.3-dev-
|
|
33
|
-
"@agoric/time": "0.3.3-dev-
|
|
34
|
-
"@agoric/vat-data": "0.5.3-dev-
|
|
35
|
-
"@agoric/vow": "0.1.1-dev-
|
|
36
|
-
"@agoric/zoe": "0.26.3-dev-
|
|
37
|
-
"@agoric/zone": "0.2.3-dev-
|
|
25
|
+
"@agoric/cosmic-proto": "0.4.1-dev-01b8bed.0.01b8bed",
|
|
26
|
+
"@agoric/ertp": "0.16.3-dev-01b8bed.0.01b8bed",
|
|
27
|
+
"@agoric/governance": "0.10.4-dev-01b8bed.0.01b8bed",
|
|
28
|
+
"@agoric/internal": "0.3.3-dev-01b8bed.0.01b8bed",
|
|
29
|
+
"@agoric/network": "0.1.1-dev-01b8bed.0.01b8bed",
|
|
30
|
+
"@agoric/notifier": "0.6.3-dev-01b8bed.0.01b8bed",
|
|
31
|
+
"@agoric/store": "0.9.3-dev-01b8bed.0.01b8bed",
|
|
32
|
+
"@agoric/swingset-vat": "0.32.3-dev-01b8bed.0.01b8bed",
|
|
33
|
+
"@agoric/time": "0.3.3-dev-01b8bed.0.01b8bed",
|
|
34
|
+
"@agoric/vat-data": "0.5.3-dev-01b8bed.0.01b8bed",
|
|
35
|
+
"@agoric/vow": "0.1.1-dev-01b8bed.0.01b8bed",
|
|
36
|
+
"@agoric/zoe": "0.26.3-dev-01b8bed.0.01b8bed",
|
|
37
|
+
"@agoric/zone": "0.2.3-dev-01b8bed.0.01b8bed",
|
|
38
38
|
"@endo/errors": "^1.2.13",
|
|
39
39
|
"@endo/far": "^1.1.14",
|
|
40
40
|
"@endo/import-bundle": "^1.5.2",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"jessie.js": "^0.3.4"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@agoric/swingset-liveslots": "0.10.3-dev-
|
|
50
|
+
"@agoric/swingset-liveslots": "0.10.3-dev-01b8bed.0.01b8bed",
|
|
51
51
|
"@endo/bundle-source": "^4.1.2",
|
|
52
52
|
"@endo/init": "^1.1.12",
|
|
53
53
|
"ava": "^5.3.0",
|
|
@@ -79,5 +79,5 @@
|
|
|
79
79
|
"typeCoverage": {
|
|
80
80
|
"atLeast": 90.31
|
|
81
81
|
},
|
|
82
|
-
"gitHead": "
|
|
82
|
+
"gitHead": "01b8beda43fafc16d741a066c3195941fe52a015"
|
|
83
83
|
}
|
package/src/ibc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ibc.d.ts","sourceRoot":"","sources":["ibc.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ibc.d.ts","sourceRoot":"","sources":["ibc.js"],"names":[],"mappings":"AAwDO,kDAHI,IAAI,GACF,GAAG,CA8Hf;AAMM,yCAHI,IAAI,UACJ,QAAQ;cASH,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC;;qBAOpC,eAAe;mBACjB,aAAa;EA8qBpC;AAIM,uCADK,IAAI;IAQV;;;OAGG;qBAFQ,MAAM,OACN,GAAG;GAYnB;yBA12Ba,OAAO,kBAAkB,CAAC;uBAG3B,IAAI,CAChB,cAAkB,EAClB,cAAkB,GAAG,WAAW,GAAG,qBAAqB,CACrD,GAAG;IACF,SAAS,EAAE,QAAQ,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACnC;0BAdmB,mBAAmB;8BAC0B,aAAa;qCAH+B,iBAAiB;mCAC4F,YAAY;yCAAZ,YAAY;wCAZpM,iBAAiB;4BAcc,aAAa;oCAF4I,YAAY;8BADzH,iBAAiB"}
|
package/src/ibc.js
CHANGED
|
@@ -11,6 +11,8 @@ import {
|
|
|
11
11
|
decodeRemoteIbcAddress,
|
|
12
12
|
encodeLocalIbcAddress,
|
|
13
13
|
encodeRemoteIbcAddress,
|
|
14
|
+
decodeIbcEndpoint,
|
|
15
|
+
encodeIbcEndpoint,
|
|
14
16
|
} from '../tools/ibc-utils.js';
|
|
15
17
|
|
|
16
18
|
const trace = makeTracer('IBC', false);
|
|
@@ -454,10 +456,12 @@ export const prepareIBCProtocol = (zone, powers) => {
|
|
|
454
456
|
connectionHops: rHops,
|
|
455
457
|
} = /** @type {IBCEvent<'channelOpenAck'>} */ (obj);
|
|
456
458
|
|
|
457
|
-
const
|
|
458
|
-
|
|
459
|
+
const readonlyOutbounds = this.state.srcPortToOutbounds.has(
|
|
460
|
+
portID,
|
|
461
|
+
)
|
|
462
|
+
? this.state.srcPortToOutbounds.get(portID)
|
|
459
463
|
: [];
|
|
460
|
-
const oidx =
|
|
464
|
+
const oidx = readonlyOutbounds.findIndex(
|
|
461
465
|
({
|
|
462
466
|
counterparty: { port_id: iPortID },
|
|
463
467
|
connectionHops: iHops,
|
|
@@ -477,8 +481,11 @@ export const prepareIBCProtocol = (zone, powers) => {
|
|
|
477
481
|
},
|
|
478
482
|
);
|
|
479
483
|
oidx >= 0 || Fail`${portID}: did not expect channelOpenAck`;
|
|
480
|
-
const { onConnectP, localAddr, ...chanInfo } =
|
|
481
|
-
|
|
484
|
+
const { onConnectP, localAddr, ...chanInfo } =
|
|
485
|
+
readonlyOutbounds[oidx];
|
|
486
|
+
const outbounds = readonlyOutbounds
|
|
487
|
+
.slice(0, oidx)
|
|
488
|
+
.concat(readonlyOutbounds.slice(oidx + 1));
|
|
482
489
|
if (outbounds.length === 0) {
|
|
483
490
|
srcPortToOutbounds.delete(portID);
|
|
484
491
|
} else {
|
|
@@ -493,7 +500,13 @@ export const prepareIBCProtocol = (zone, powers) => {
|
|
|
493
500
|
rVersion,
|
|
494
501
|
rChannelID,
|
|
495
502
|
);
|
|
496
|
-
const
|
|
503
|
+
const decodedLocal = decodeIbcEndpoint(localAddr);
|
|
504
|
+
const localAddress = encodeIbcEndpoint({
|
|
505
|
+
...decodedLocal,
|
|
506
|
+
order: chanInfo.order,
|
|
507
|
+
version: rVersion,
|
|
508
|
+
channelID,
|
|
509
|
+
});
|
|
497
510
|
const rchandler = makeIBCConnectionHandler(
|
|
498
511
|
{
|
|
499
512
|
protocolUtils: util,
|
|
@@ -791,13 +804,9 @@ export const prepareIBCProtocol = (zone, powers) => {
|
|
|
791
804
|
} = watcherContext;
|
|
792
805
|
const { channelKeyToAttempt, channelKeyToInfo } = this.state;
|
|
793
806
|
|
|
794
|
-
const
|
|
795
|
-
// Match: ... /ORDER/VERSION ...
|
|
796
|
-
new RegExp('^(/[^/]+/[^/]+)*/(ordered|unordered)/([^/]+)(/|$)'),
|
|
797
|
-
);
|
|
798
|
-
|
|
807
|
+
const al = decodeIbcEndpoint(attemptedLocal);
|
|
799
808
|
const channelKey = `${channelID}:${portID}`;
|
|
800
|
-
if (!
|
|
809
|
+
if (!al.version) {
|
|
801
810
|
throw Error(
|
|
802
811
|
`${channelKey}: cannot determine version from attempted local address ${attemptedLocal}`,
|
|
803
812
|
);
|
|
@@ -806,7 +815,7 @@ export const prepareIBCProtocol = (zone, powers) => {
|
|
|
806
815
|
channelKeyToAttempt.init(channelKey, attempt);
|
|
807
816
|
channelKeyToInfo.init(channelKey, obj);
|
|
808
817
|
|
|
809
|
-
const negotiatedVersion =
|
|
818
|
+
const negotiatedVersion = al.version;
|
|
810
819
|
|
|
811
820
|
try {
|
|
812
821
|
if (asyncVersions) {
|
|
@@ -55,7 +55,7 @@ export type SoloVats = {
|
|
|
55
55
|
*
|
|
56
56
|
* - loopback ports: `E(portAllocator).allocateCustomLocalPort()`
|
|
57
57
|
* - an echo port: `E(portAllocator).allocateCustomIBCPort("echo")`
|
|
58
|
-
* - echo port
|
|
58
|
+
* - echo port address: /ibc-port/custom-echo
|
|
59
59
|
*/
|
|
60
60
|
export type NetVats = {
|
|
61
61
|
network: ERef<NetworkVat>;
|
|
@@ -96,7 +96,7 @@ export const registerNetworkProtocols = async (vats, dibcBridgeManager) => {
|
|
|
96
96
|
*
|
|
97
97
|
* - loopback ports: `E(portAllocator).allocateCustomLocalPort()`
|
|
98
98
|
* - an echo port: `E(portAllocator).allocateCustomIBCPort("echo")`
|
|
99
|
-
* - echo port
|
|
99
|
+
* - echo port address: /ibc-port/custom-echo
|
|
100
100
|
*
|
|
101
101
|
* @param {BootstrapPowers & {
|
|
102
102
|
* produce: { portAllocator: Producer<any> };
|
package/src/types.d.ts
CHANGED
|
@@ -123,6 +123,20 @@ export type IBCPacket = JsonSafe<{
|
|
|
123
123
|
timeout_height?: PacketSDKType['timeout_height'];
|
|
124
124
|
timeout_timestamp?: PacketSDKType['timeout_timestamp'];
|
|
125
125
|
}>;
|
|
126
|
+
export interface NetworkEndpoints {
|
|
127
|
+
relative: {
|
|
128
|
+
ibc: [protocol: 'ibc', port: IBCPortID, channel: IBCChannelID];
|
|
129
|
+
};
|
|
130
|
+
absolute: {
|
|
131
|
+
ibc: [
|
|
132
|
+
protocol: 'ibc',
|
|
133
|
+
namespace: string,
|
|
134
|
+
reference: string,
|
|
135
|
+
port: IBCPortID,
|
|
136
|
+
channel: IBCChannelID
|
|
137
|
+
];
|
|
138
|
+
};
|
|
139
|
+
}
|
|
126
140
|
export type IBCCounterParty = {
|
|
127
141
|
port_id: IBCPortID;
|
|
128
142
|
channel_id: IBCChannelID;
|
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":"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"}
|
package/src/types.ts
CHANGED
|
@@ -150,6 +150,21 @@ export type IBCPacket = JsonSafe<{
|
|
|
150
150
|
timeout_timestamp?: PacketSDKType['timeout_timestamp'];
|
|
151
151
|
}>;
|
|
152
152
|
|
|
153
|
+
export interface NetworkEndpoints {
|
|
154
|
+
relative: {
|
|
155
|
+
ibc: [protocol: 'ibc', port: IBCPortID, channel: IBCChannelID];
|
|
156
|
+
};
|
|
157
|
+
absolute: {
|
|
158
|
+
ibc: [
|
|
159
|
+
protocol: 'ibc',
|
|
160
|
+
namespace: string,
|
|
161
|
+
reference: string,
|
|
162
|
+
port: IBCPortID,
|
|
163
|
+
channel: IBCChannelID,
|
|
164
|
+
];
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
|
|
153
168
|
export type IBCCounterParty = {
|
|
154
169
|
port_id: IBCPortID;
|
|
155
170
|
channel_id: IBCChannelID;
|
package/tools/ibc-utils.d.ts
CHANGED
|
@@ -1,6 +1,40 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @file Conversion from IBC endpoints to Agoric Network API Endpoints
|
|
3
|
+
* @summary Utilities for constructing and parsing Agoric Network API IBC addresses, which
|
|
4
|
+
* are used to identify IBC ports and channels in a Cosmos-participating
|
|
5
|
+
* blockchain.
|
|
6
|
+
*
|
|
7
|
+
* Agoric Network API addresses are roughly akin to Multiaddrs (@ref
|
|
8
|
+
* https://github.com/multiformats/js-multiaddr) but with a less rigid
|
|
9
|
+
* structure. Both share a similar textual representation, which is
|
|
10
|
+
* encapsulated protocols and values separated by slashes.
|
|
11
|
+
*/
|
|
2
12
|
/** @typedef {`/${string}ibc-port/${string}/${'ordered' | 'unordered'}/${string}`} RemoteIbcAddress */
|
|
3
|
-
|
|
13
|
+
/** @typedef {`/ibc-port/${string}`} LocalIbcAddress */
|
|
14
|
+
/**
|
|
15
|
+
* @import {IBCChannelID, IBCChannelOrdering,
|
|
16
|
+
* IBCConnectionID, IBCPortID} from '../src/types.js';
|
|
17
|
+
*/
|
|
18
|
+
export const IBC_ADDR_RE: RegExp;
|
|
19
|
+
export const VALID_ORDERS: readonly ["ordered", "unordered", "ORDERED", "UNORDERED"];
|
|
20
|
+
export function encodeSlashes(raw: string): string;
|
|
21
|
+
export function decodeSlashes(encoded: string): string;
|
|
22
|
+
export function validateIbcAddress(addr: any): any;
|
|
23
|
+
export function decodeIbcHops(h: string): IBCConnectionID[];
|
|
24
|
+
export function decodeIbcEndpoint(addr: string): {
|
|
25
|
+
hops: IBCConnectionID[];
|
|
26
|
+
portID: IBCPortID;
|
|
27
|
+
order?: IBCChannelOrdering;
|
|
28
|
+
version?: string;
|
|
29
|
+
channelID?: IBCChannelID;
|
|
30
|
+
};
|
|
31
|
+
export function encodeIbcEndpoint({ hops, portID, order: rawOrder, version, channelID, }: {
|
|
32
|
+
hops?: string[] | undefined;
|
|
33
|
+
portID: string;
|
|
34
|
+
order: "ordered" | "unordered" | "ORDERED" | "UNORDERED";
|
|
35
|
+
version: string;
|
|
36
|
+
channelID?: string | undefined;
|
|
37
|
+
}): import("@agoric/network").Endpoint;
|
|
4
38
|
/**
|
|
5
39
|
* @overload
|
|
6
40
|
* @param {string} remoteAddr
|
|
@@ -17,13 +51,17 @@ export function validateRemoteIbcAddress(remoteAddr: string, returnMatch?: undef
|
|
|
17
51
|
export function validateRemoteIbcAddress(remoteAddr: string, returnMatch: true): RegExpMatchArray;
|
|
18
52
|
export function decodeRemoteIbcAddress(remoteAddr: string): {
|
|
19
53
|
rPortID: string;
|
|
20
|
-
|
|
21
|
-
order: import("../index.js").IBCChannelOrdering;
|
|
54
|
+
order: IBCChannelOrdering;
|
|
22
55
|
version: string;
|
|
56
|
+
hops: `connection-${number}`[];
|
|
23
57
|
};
|
|
24
58
|
export function localAddrToPortID(localAddr: LocalIbcAddress): string;
|
|
25
|
-
export function encodeRemoteIbcAddress(hops: string[],
|
|
59
|
+
export function encodeRemoteIbcAddress(hops: string[], portID: string, order: "ordered" | "unordered" | "ORDERED" | "UNORDERED", version: string, channelID?: string): RemoteIbcAddress;
|
|
26
60
|
export function encodeLocalIbcAddress(portID: string, order: "ordered" | "unordered" | "ORDERED" | "UNORDERED", version: string): string;
|
|
27
61
|
export type RemoteIbcAddress = `/${string}ibc-port/${string}/${"ordered" | "unordered"}/${string}`;
|
|
28
62
|
export type LocalIbcAddress = `/ibc-port/${string}`;
|
|
63
|
+
import type { IBCConnectionID } from '../src/types.js';
|
|
64
|
+
import type { IBCPortID } from '../src/types.js';
|
|
65
|
+
import type { IBCChannelOrdering } from '../src/types.js';
|
|
66
|
+
import type { IBCChannelID } from '../src/types.js';
|
|
29
67
|
//# sourceMappingURL=ibc-utils.d.ts.map
|
package/tools/ibc-utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ibc-utils.d.ts","sourceRoot":"","sources":["ibc-utils.js"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ibc-utils.d.ts","sourceRoot":"","sources":["ibc-utils.js"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,sGAAsG;AACtG,uDAAuD;AAEvD;;;GAGG;AAEH,iCACsJ;AAGtJ,qFAKG;AAII,mCADK,MAAM,UAC8C;AAIzD,uCADK,MAAM,UACsD;AAGjE,mDASN;AAQM,iCAHI,MAAM,GACJ,eAAe,EAAE,CAsB7B;AAaM,wCATI,MAAM,GACJ;IACR,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,YAAY,CAAC;CAC1B,CAkBH;AAYM,0FAPJ;IAAwB,IAAI;IACP,MAAM,EAAnB,MAAM;IACkD,KAAK,EAA7D,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW;IACpC,OAAO,EAApB,MAAM;IACQ,SAAS;CAC/B,GAAU,OAAO,iBAAiB,EAAE,QAAQ,CAwC9C;;;;;;;AAIE,qDACQ,MAAM,gBACN,SAAS,GAAG,KAAK,GACf,OAAO,CACnB;;;;;;;AAEE,qDACQ,MAAM,eACN,IAAI,GACF,gBAAgB,CAC5B;AA0BM,mDADK,MAAM;;;;;EAYjB;AAOM,6CAHI,eAAe,GACb,MAAM,CAqBlB;AAWM,6CAPI,MAAM,EAAE,UACR,MAAM,SACN,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,WACjD,MAAM,cACN,MAAM,GACJ,gBAAgB,CAiB5B;AAQM,8CAJI,MAAM,SACN,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,WACjD,MAAM,UAIhB;+BAjQa,IAAI,MAAM,YAAY,MAAM,IAAI,SAAS,GAAG,WAAW,IAAI,MAAM,EAAE;8BACnE,aAAa,MAAM,EAAE;qCAIG,iBAAiB;+BAAjB,iBAAiB;wCAAjB,iBAAiB;kCAAjB,iBAAiB"}
|
package/tools/ibc-utils.js
CHANGED
|
@@ -1,11 +1,162 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @file Conversion from IBC endpoints to Agoric Network API Endpoints
|
|
3
|
+
* @summary Utilities for constructing and parsing Agoric Network API IBC addresses, which
|
|
4
|
+
* are used to identify IBC ports and channels in a Cosmos-participating
|
|
5
|
+
* blockchain.
|
|
6
|
+
*
|
|
7
|
+
* Agoric Network API addresses are roughly akin to Multiaddrs (@ref
|
|
8
|
+
* https://github.com/multiformats/js-multiaddr) but with a less rigid
|
|
9
|
+
* structure. Both share a similar textual representation, which is
|
|
10
|
+
* encapsulated protocols and values separated by slashes.
|
|
11
|
+
*/
|
|
5
12
|
|
|
6
|
-
|
|
13
|
+
/** @typedef {`/${string}ibc-port/${string}/${'ordered' | 'unordered'}/${string}`} RemoteIbcAddress */
|
|
7
14
|
/** @typedef {`/ibc-port/${string}`} LocalIbcAddress */
|
|
8
15
|
|
|
16
|
+
/**
|
|
17
|
+
* @import {IBCChannelID, IBCChannelOrdering,
|
|
18
|
+
* IBCConnectionID, IBCPortID} from '../src/types.js';
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
export const IBC_ADDR_RE =
|
|
22
|
+
/^(?<hops>\/ibc-hop\/[^/]+)*\/ibc-port\/(?<portID>[^/]+)(\/(?<order>ordered|unordered)\/(?<version>[^/]+)(\/ibc-channel\/(?<channelID>[^/]+))?)?$/s;
|
|
23
|
+
harden(IBC_ADDR_RE);
|
|
24
|
+
|
|
25
|
+
export const VALID_ORDERS = /** @type {const} */ ([
|
|
26
|
+
'ordered',
|
|
27
|
+
'unordered',
|
|
28
|
+
'ORDERED',
|
|
29
|
+
'UNORDERED',
|
|
30
|
+
]);
|
|
31
|
+
harden(VALID_ORDERS);
|
|
32
|
+
|
|
33
|
+
/** @param {string} raw */
|
|
34
|
+
export const encodeSlashes = raw => raw.replaceAll('/', '\\x2f');
|
|
35
|
+
harden(encodeSlashes);
|
|
36
|
+
|
|
37
|
+
/** @param {string} encoded */
|
|
38
|
+
export const decodeSlashes = encoded => encoded.replaceAll('\\x2f', '/');
|
|
39
|
+
harden(decodeSlashes);
|
|
40
|
+
|
|
41
|
+
export const validateIbcAddress = addr => {
|
|
42
|
+
const match = addr.match(IBC_ADDR_RE);
|
|
43
|
+
// .groups is to inform TS
|
|
44
|
+
if (!(match && match.groups)) {
|
|
45
|
+
throw TypeError(
|
|
46
|
+
`IBC address ${addr} must be '(/ibc-hop/CONNECTION)*/ibc-port/PORT/(ordered|unordered)/VERSION(/ibc-channel/CHANNEL_ID)?'`,
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
return match;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Decode the /ibc-hop/CONNECTION segments of an IBC address.
|
|
54
|
+
*
|
|
55
|
+
* @param {string} h
|
|
56
|
+
* @returns {IBCConnectionID[]}
|
|
57
|
+
*/
|
|
58
|
+
export const decodeIbcHops = h => {
|
|
59
|
+
/** @type {IBCConnectionID[]} */
|
|
60
|
+
const hops = [];
|
|
61
|
+
|
|
62
|
+
/** @type {string} */
|
|
63
|
+
while (h) {
|
|
64
|
+
const m = h.match(/^\/ibc-hop\/(?<hop>[^/]+)/);
|
|
65
|
+
if (!m || !m.groups) {
|
|
66
|
+
throw Error(
|
|
67
|
+
`internal: ${JSON.stringify(h)} did not begin with "/ibc-hop/XXX"`,
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
h = h.slice(m[0].length);
|
|
71
|
+
|
|
72
|
+
const hop = /** @type {IBCConnectionID} */ (m.groups.hop);
|
|
73
|
+
assert(typeof hop === 'string' && hop.startsWith('connection-'));
|
|
74
|
+
hops.push(hop);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return hops;
|
|
78
|
+
};
|
|
79
|
+
harden(decodeIbcHops);
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @param {string} addr
|
|
83
|
+
* @returns {{
|
|
84
|
+
* hops: IBCConnectionID[];
|
|
85
|
+
* portID: IBCPortID;
|
|
86
|
+
* order?: IBCChannelOrdering;
|
|
87
|
+
* version?: string;
|
|
88
|
+
* channelID?: IBCChannelID;
|
|
89
|
+
* }}
|
|
90
|
+
*/
|
|
91
|
+
export const decodeIbcEndpoint = addr => {
|
|
92
|
+
const match = validateIbcAddress(addr);
|
|
93
|
+
if (!match.groups)
|
|
94
|
+
throw Error('Unexpected error, validateRemoteIbcAddress should throw.');
|
|
95
|
+
|
|
96
|
+
const hops = decodeIbcHops(match.groups.hops);
|
|
97
|
+
|
|
98
|
+
// Generate a circuit.
|
|
99
|
+
const { portID, version, channelID, order } = match.groups;
|
|
100
|
+
return {
|
|
101
|
+
hops,
|
|
102
|
+
portID,
|
|
103
|
+
...(order && { order: order.toUpperCase() }),
|
|
104
|
+
...(version && { version: decodeSlashes(version) }),
|
|
105
|
+
...(channelID && { channelID }),
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
harden(decodeIbcEndpoint);
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* @param {object} spec
|
|
112
|
+
* @param {string[]} [spec.hops]
|
|
113
|
+
* @param {string} spec.portID
|
|
114
|
+
* @param {'ordered' | 'unordered' | 'ORDERED' | 'UNORDERED'} spec.order
|
|
115
|
+
* @param {string} spec.version
|
|
116
|
+
* @param {string} [spec.channelID]
|
|
117
|
+
* @returns {import('@agoric/network').Endpoint}
|
|
118
|
+
*/
|
|
119
|
+
export const encodeIbcEndpoint = ({
|
|
120
|
+
hops = [],
|
|
121
|
+
portID,
|
|
122
|
+
order: rawOrder,
|
|
123
|
+
version,
|
|
124
|
+
channelID,
|
|
125
|
+
}) => {
|
|
126
|
+
const isLegitString = str =>
|
|
127
|
+
typeof str === 'string' && str && !str.includes('/');
|
|
128
|
+
let addr = '';
|
|
129
|
+
assert(Array.isArray(hops), 'hops must be an array');
|
|
130
|
+
for (const hop of hops) {
|
|
131
|
+
assert(isLegitString(hop), `invalid hop ${hop}`);
|
|
132
|
+
addr += `/ibc-hop/${hop}`;
|
|
133
|
+
}
|
|
134
|
+
assert(isLegitString(portID), `invalid portID ${portID}`);
|
|
135
|
+
addr += `/ibc-port/${portID}`;
|
|
136
|
+
|
|
137
|
+
if (rawOrder !== undefined) {
|
|
138
|
+
assert(isLegitString(rawOrder), `invalid order ${rawOrder}`);
|
|
139
|
+
|
|
140
|
+
assert(
|
|
141
|
+
VALID_ORDERS.includes(rawOrder),
|
|
142
|
+
`invalid order ${rawOrder}; ${rawOrder} not found in ${JSON.stringify(VALID_ORDERS)}`,
|
|
143
|
+
);
|
|
144
|
+
|
|
145
|
+
const order = rawOrder.toLowerCase();
|
|
146
|
+
|
|
147
|
+
assert(typeof version === 'string' && version, 'missing version');
|
|
148
|
+
addr += `/${order}/${encodeSlashes(version)}`;
|
|
149
|
+
|
|
150
|
+
if (channelID !== undefined) {
|
|
151
|
+
assert(isLegitString(channelID), `invalid channelID ${channelID}`);
|
|
152
|
+
addr += `/ibc-channel/${channelID}`;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return addr;
|
|
157
|
+
};
|
|
158
|
+
harden(encodeIbcEndpoint);
|
|
159
|
+
|
|
9
160
|
/**
|
|
10
161
|
* @overload
|
|
11
162
|
* @param {string} remoteAddr
|
|
@@ -26,42 +177,34 @@ export const LOCAL_ADDR_RE = /^\/ibc-port\/(?<portID>[-a-zA-Z0-9._+#[\]<>]+)$/;
|
|
|
26
177
|
* @param {boolean} [returnMatch]
|
|
27
178
|
*/
|
|
28
179
|
export const validateRemoteIbcAddress = (remoteAddr, returnMatch = false) => {
|
|
29
|
-
const match = remoteAddr
|
|
180
|
+
const match = validateIbcAddress(remoteAddr);
|
|
30
181
|
// .groups is to inform TS https://github.com/microsoft/TypeScript/issues/32098
|
|
31
182
|
if (!(match && match.groups)) {
|
|
32
183
|
throw TypeError(
|
|
33
184
|
`Remote address ${remoteAddr} must be '(/ibc-hop/CONNECTION)*/ibc-port/PORT/(ordered|unordered)/VERSION'`,
|
|
34
185
|
);
|
|
35
186
|
}
|
|
187
|
+
if (match.groups.channelID) {
|
|
188
|
+
throw TypeError(
|
|
189
|
+
`Remote address ${remoteAddr} must not include channelID; found ${match.groups.channelID}`,
|
|
190
|
+
);
|
|
191
|
+
}
|
|
36
192
|
return returnMatch ? match : true;
|
|
37
193
|
};
|
|
194
|
+
harden(validateRemoteIbcAddress);
|
|
38
195
|
|
|
39
196
|
/** @param {string} remoteAddr */
|
|
40
197
|
export const decodeRemoteIbcAddress = remoteAddr => {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if (!m) {
|
|
52
|
-
throw Error(
|
|
53
|
-
`internal: ${JSON.stringify(h)} did not begin with "/ibc-hop/XXX"`,
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
h = h.substr(m[0].length);
|
|
57
|
-
// @ts-expect-error unchecked cast
|
|
58
|
-
hops.push(m.groups.hop);
|
|
59
|
-
}
|
|
60
|
-
// Generate a circuit.
|
|
61
|
-
const { portID: rPortID, version } = match.groups;
|
|
62
|
-
/** @type {import('../src/types.js').IBCChannelOrdering} */
|
|
63
|
-
const order = match.groups.order === 'ordered' ? 'ORDERED' : 'UNORDERED';
|
|
64
|
-
return { rPortID, hops, order, version };
|
|
198
|
+
validateRemoteIbcAddress(remoteAddr);
|
|
199
|
+
const {
|
|
200
|
+
hops,
|
|
201
|
+
portID: rPortID,
|
|
202
|
+
order,
|
|
203
|
+
version,
|
|
204
|
+
} = decodeIbcEndpoint(remoteAddr);
|
|
205
|
+
assert(order !== undefined, 'missing order');
|
|
206
|
+
assert(version !== undefined, 'missing version');
|
|
207
|
+
return { rPortID, order, version, hops };
|
|
65
208
|
};
|
|
66
209
|
harden(decodeRemoteIbcAddress);
|
|
67
210
|
|
|
@@ -70,36 +213,50 @@ harden(decodeRemoteIbcAddress);
|
|
|
70
213
|
* @returns {string}
|
|
71
214
|
*/
|
|
72
215
|
export const localAddrToPortID = localAddr => {
|
|
73
|
-
const m = localAddr.match(
|
|
216
|
+
const m = localAddr.match(IBC_ADDR_RE);
|
|
74
217
|
// .groups is to inform TS https://github.com/microsoft/TypeScript/issues/32098
|
|
75
218
|
if (!(m && m.groups)) {
|
|
76
219
|
throw TypeError(
|
|
77
220
|
`Invalid port specification ${localAddr}; expected "/ibc-port/PORT"`,
|
|
78
221
|
);
|
|
79
222
|
}
|
|
223
|
+
for (const group of Object.keys(m.groups)) {
|
|
224
|
+
if (group === 'portID') {
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
if (m.groups[group] !== undefined) {
|
|
228
|
+
throw TypeError(
|
|
229
|
+
`Invalid port specification ${localAddr}; unexpected ${group}=${m.groups[group]}`,
|
|
230
|
+
);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
80
233
|
return m.groups.portID;
|
|
81
234
|
};
|
|
82
235
|
harden(localAddrToPortID);
|
|
83
236
|
|
|
84
237
|
/**
|
|
85
238
|
* @param {string[]} hops
|
|
86
|
-
* @param {string}
|
|
239
|
+
* @param {string} portID
|
|
87
240
|
* @param {'ordered' | 'unordered' | 'ORDERED' | 'UNORDERED'} order
|
|
88
|
-
* @param {string}
|
|
89
|
-
* @param {string}
|
|
241
|
+
* @param {string} version
|
|
242
|
+
* @param {string} [channelID]
|
|
90
243
|
* @returns {RemoteIbcAddress}
|
|
91
244
|
*/
|
|
92
245
|
export const encodeRemoteIbcAddress = (
|
|
93
246
|
hops,
|
|
94
|
-
|
|
247
|
+
portID,
|
|
95
248
|
order,
|
|
96
|
-
|
|
97
|
-
|
|
249
|
+
version,
|
|
250
|
+
channelID,
|
|
98
251
|
) => {
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
252
|
+
const ep = encodeIbcEndpoint({
|
|
253
|
+
hops,
|
|
254
|
+
portID,
|
|
255
|
+
order,
|
|
256
|
+
version,
|
|
257
|
+
...(channelID && { channelID }),
|
|
258
|
+
});
|
|
259
|
+
return /** @type {RemoteIbcAddress} */ (ep);
|
|
103
260
|
};
|
|
104
261
|
harden(encodeRemoteIbcAddress);
|
|
105
262
|
|
|
@@ -109,7 +266,6 @@ harden(encodeRemoteIbcAddress);
|
|
|
109
266
|
* @param {string} version
|
|
110
267
|
*/
|
|
111
268
|
export const encodeLocalIbcAddress = (portID, order, version) => {
|
|
112
|
-
return
|
|
269
|
+
return encodeIbcEndpoint({ portID, order, version });
|
|
113
270
|
};
|
|
114
|
-
|
|
115
271
|
harden(encodeLocalIbcAddress);
|