@hyperbridge/sdk 1.0.0 → 1.2.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/README.md +45 -3
- package/dist/browser/index.d.ts +2190 -0
- package/dist/browser/index.js +11662 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/web_bg.wasm +0 -0
- package/dist/node/index.d.ts +2190 -0
- package/dist/node/index.js +11613 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/node_bg.wasm +0 -0
- package/package.json +46 -16
- package/plugins/vite.d.ts +11 -0
- package/plugins/vite.js +55 -0
- package/dist/abis/erc6160.d.ts +0 -370
- package/dist/abis/erc6160.js +0 -238
- package/dist/abis/erc6160.js.map +0 -1
- package/dist/abis/evmHost.d.ts +0 -1752
- package/dist/abis/evmHost.js +0 -2250
- package/dist/abis/evmHost.js.map +0 -1
- package/dist/abis/handler.d.ts +0 -580
- package/dist/abis/handler.js +0 -750
- package/dist/abis/handler.js.map +0 -1
- package/dist/abis/pingModule.d.ts +0 -594
- package/dist/abis/pingModule.js +0 -765
- package/dist/abis/pingModule.js.map +0 -1
- package/dist/abis/tokenGateway.d.ts +0 -839
- package/dist/abis/tokenGateway.js +0 -471
- package/dist/abis/tokenGateway.js.map +0 -1
- package/dist/chain.d.ts +0 -83
- package/dist/chain.js +0 -34
- package/dist/chain.js.map +0 -1
- package/dist/chains/evm.d.ts +0 -86
- package/dist/chains/evm.js +0 -249
- package/dist/chains/evm.js.map +0 -1
- package/dist/chains/substrate.d.ts +0 -88
- package/dist/chains/substrate.js +0 -287
- package/dist/chains/substrate.js.map +0 -1
- package/dist/client.d.ts +0 -216
- package/dist/client.js +0 -774
- package/dist/client.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.js +0 -7
- package/dist/index.js.map +0 -1
- package/dist/queries.d.ts +0 -3
- package/dist/queries.js +0 -78
- package/dist/queries.js.map +0 -1
- package/dist/tests/hyperbridgeRequests.test.d.ts +0 -1
- package/dist/tests/hyperbridgeRequests.test.js +0 -415
- package/dist/tests/hyperbridgeRequests.test.js.map +0 -1
- package/dist/tests/postRequest.test.d.ts +0 -1
- package/dist/tests/postRequest.test.js +0 -293
- package/dist/tests/postRequest.test.js.map +0 -1
- package/dist/tests/setup.d.ts +0 -1
- package/dist/tests/setup.js +0 -6
- package/dist/tests/setup.js.map +0 -1
- package/dist/tests/tokenGateway.test.d.ts +0 -1
- package/dist/tests/tokenGateway.test.js +0 -85
- package/dist/tests/tokenGateway.test.js.map +0 -1
- package/dist/tests/xcmGateway.test.d.ts +0 -1
- package/dist/tests/xcmGateway.test.js +0 -71
- package/dist/tests/xcmGateway.test.js.map +0 -1
- package/dist/types/index.d.ts +0 -238
- package/dist/types/index.js +0 -30
- package/dist/types/index.js.map +0 -1
- package/dist/utils/mmr.d.ts +0 -13
- package/dist/utils/mmr.js +0 -153
- package/dist/utils/mmr.js.map +0 -1
- package/dist/utils/substrate.d.ts +0 -1913
- package/dist/utils/substrate.js +0 -361
- package/dist/utils/substrate.js.map +0 -1
- package/dist/utils/tokenGateway.d.ts +0 -68
- package/dist/utils/tokenGateway.js +0 -151
- package/dist/utils/tokenGateway.js.map +0 -1
- package/dist/utils/xcmGateway.d.ts +0 -81
- package/dist/utils/xcmGateway.js +0 -218
- package/dist/utils/xcmGateway.js.map +0 -1
- package/dist/utils.d.ts +0 -57
- package/dist/utils.js +0 -96
- package/dist/utils.js.map +0 -1
package/dist/types/index.d.ts
DELETED
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
import { Hex } from "viem";
|
|
2
|
-
export type HexString = `0x${string}`;
|
|
3
|
-
export interface IConfig {
|
|
4
|
-
source: IEvmConfig | ISubstrateConfig;
|
|
5
|
-
dest: IEvmConfig | ISubstrateConfig;
|
|
6
|
-
hyperbridge: IHyperbridgeConfig;
|
|
7
|
-
tracing?: boolean;
|
|
8
|
-
}
|
|
9
|
-
export interface IEvmConfig {
|
|
10
|
-
rpcUrl: string;
|
|
11
|
-
stateMachineId: string;
|
|
12
|
-
host: string;
|
|
13
|
-
consensusStateId: string;
|
|
14
|
-
}
|
|
15
|
-
export interface ISubstrateConfig {
|
|
16
|
-
wsUrl: string;
|
|
17
|
-
consensusStateId: string;
|
|
18
|
-
hasher: "Keccak" | "Blake2";
|
|
19
|
-
stateMachineId: string;
|
|
20
|
-
}
|
|
21
|
-
export interface IHyperbridgeConfig {
|
|
22
|
-
wsUrl: string;
|
|
23
|
-
stateMachineId: string;
|
|
24
|
-
consensusStateId: string;
|
|
25
|
-
}
|
|
26
|
-
export interface IPostRequest {
|
|
27
|
-
source: string;
|
|
28
|
-
dest: string;
|
|
29
|
-
from: HexString;
|
|
30
|
-
to: HexString;
|
|
31
|
-
nonce: bigint;
|
|
32
|
-
body: HexString;
|
|
33
|
-
timeoutTimestamp: bigint;
|
|
34
|
-
}
|
|
35
|
-
export interface IGetRequest {
|
|
36
|
-
source: string;
|
|
37
|
-
dest: string;
|
|
38
|
-
from: string;
|
|
39
|
-
nonce: bigint;
|
|
40
|
-
height: bigint;
|
|
41
|
-
keys: HexString[];
|
|
42
|
-
timeoutTimestamp: bigint;
|
|
43
|
-
}
|
|
44
|
-
export interface IPostResponse {
|
|
45
|
-
post: IPostRequest;
|
|
46
|
-
response: string;
|
|
47
|
-
timeoutTimestamp: bigint;
|
|
48
|
-
}
|
|
49
|
-
export interface ClientConfig {
|
|
50
|
-
pollInterval?: number;
|
|
51
|
-
url?: string;
|
|
52
|
-
source: IEvmConfig | ISubstrateConfig;
|
|
53
|
-
dest: IEvmConfig | ISubstrateConfig;
|
|
54
|
-
hyperbridge: IHyperbridgeConfig;
|
|
55
|
-
}
|
|
56
|
-
export interface RetryConfig {
|
|
57
|
-
maxRetries: number;
|
|
58
|
-
backoffMs: number;
|
|
59
|
-
}
|
|
60
|
-
export interface IsmpRequest {
|
|
61
|
-
source: string;
|
|
62
|
-
dest: string;
|
|
63
|
-
from: string;
|
|
64
|
-
to: string;
|
|
65
|
-
nonce: bigint;
|
|
66
|
-
body: string;
|
|
67
|
-
timeoutTimestamp: bigint;
|
|
68
|
-
storage_key?: string;
|
|
69
|
-
}
|
|
70
|
-
export declare enum RequestStatus {
|
|
71
|
-
SOURCE = "SOURCE",
|
|
72
|
-
SOURCE_FINALIZED = "SOURCE_FINALIZED",
|
|
73
|
-
HYPERBRIDGE_DELIVERED = "HYPERBRIDGE_DELIVERED",
|
|
74
|
-
HYPERBRIDGE_FINALIZED = "HYPERBRIDGE_FINALIZED",
|
|
75
|
-
DESTINATION = "DESTINATION",
|
|
76
|
-
TIMED_OUT = "TIMED_OUT",
|
|
77
|
-
HYPERBRIDGE_TIMED_OUT = "HYPERBRIDGE_TIMED_OUT"
|
|
78
|
-
}
|
|
79
|
-
export declare enum TimeoutStatus {
|
|
80
|
-
PENDING_TIMEOUT = "PENDING_TIMEOUT",
|
|
81
|
-
DESTINATION_FINALIZED_TIMEOUT = "DESTINATION_FINALIZED_TIMEOUT",
|
|
82
|
-
HYPERBRIDGE_TIMED_OUT = "HYPERBRIDGE_TIMED_OUT",
|
|
83
|
-
HYPERBRIDGE_FINALIZED_TIMEOUT = "HYPERBRIDGE_FINALIZED_TIMEOUT",
|
|
84
|
-
TIMED_OUT = "TIMED_OUT"
|
|
85
|
-
}
|
|
86
|
-
export declare enum HyperClientStatus {
|
|
87
|
-
PENDING = "PENDING",
|
|
88
|
-
SOURCE_FINALIZED = "SOURCE_FINALIZED",
|
|
89
|
-
HYPERBRIDGE_FINALIZED = "HYPERBRIDGE_FINALIZED",
|
|
90
|
-
HYPERBRIDGE_VERIFIED = "HYPERBRIDGE_VERIFIED",
|
|
91
|
-
DESTINATION = "DESTINATION",
|
|
92
|
-
TIMED_OUT = "TIMED_OUT",
|
|
93
|
-
HYPERBRIDGE_TIMED_OUT = "HYPERBRIDGE_TIMED_OUT",
|
|
94
|
-
ERROR = "ERROR"
|
|
95
|
-
}
|
|
96
|
-
export interface BlockMetadata {
|
|
97
|
-
blockHash: string;
|
|
98
|
-
blockNumber: number;
|
|
99
|
-
transactionHash: string;
|
|
100
|
-
calldata?: string;
|
|
101
|
-
}
|
|
102
|
-
export interface PostRequestStatus {
|
|
103
|
-
status: RequestStatus;
|
|
104
|
-
metadata: Partial<BlockMetadata>;
|
|
105
|
-
}
|
|
106
|
-
export interface PostRequestTimeoutStatus {
|
|
107
|
-
status: TimeoutStatus;
|
|
108
|
-
metadata?: Partial<BlockMetadata>;
|
|
109
|
-
}
|
|
110
|
-
export interface StateMachineUpdate {
|
|
111
|
-
height: number;
|
|
112
|
-
chain: string;
|
|
113
|
-
blockHash: string;
|
|
114
|
-
blockNumber: number;
|
|
115
|
-
transactionHash: string;
|
|
116
|
-
transactionIndex: number;
|
|
117
|
-
stateMachineId: string;
|
|
118
|
-
createdAt: string;
|
|
119
|
-
}
|
|
120
|
-
export interface RequestResponse {
|
|
121
|
-
requests: {
|
|
122
|
-
nodes: Array<{
|
|
123
|
-
source: string;
|
|
124
|
-
dest: string;
|
|
125
|
-
to: HexString;
|
|
126
|
-
from: HexString;
|
|
127
|
-
nonce: bigint;
|
|
128
|
-
body: HexString;
|
|
129
|
-
timeoutTimestamp: bigint;
|
|
130
|
-
statusMetadata: {
|
|
131
|
-
nodes: Array<{
|
|
132
|
-
blockHash: string;
|
|
133
|
-
blockNumber: string;
|
|
134
|
-
timestamp: string;
|
|
135
|
-
chain: string;
|
|
136
|
-
status: string;
|
|
137
|
-
transactionHash: string;
|
|
138
|
-
}>;
|
|
139
|
-
};
|
|
140
|
-
}>;
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
export type RequestStatusWithMetadata = {
|
|
144
|
-
status: RequestStatus.SOURCE;
|
|
145
|
-
metadata: {
|
|
146
|
-
blockHash: string;
|
|
147
|
-
blockNumber: number;
|
|
148
|
-
transactionHash: string;
|
|
149
|
-
};
|
|
150
|
-
} | {
|
|
151
|
-
status: RequestStatus.SOURCE_FINALIZED;
|
|
152
|
-
metadata: {
|
|
153
|
-
blockHash: string;
|
|
154
|
-
blockNumber: number;
|
|
155
|
-
transactionHash: string;
|
|
156
|
-
};
|
|
157
|
-
} | {
|
|
158
|
-
status: RequestStatus.HYPERBRIDGE_DELIVERED;
|
|
159
|
-
metadata: {
|
|
160
|
-
blockHash: string;
|
|
161
|
-
blockNumber: number;
|
|
162
|
-
transactionHash: string;
|
|
163
|
-
};
|
|
164
|
-
} | {
|
|
165
|
-
status: RequestStatus.HYPERBRIDGE_FINALIZED;
|
|
166
|
-
metadata: {
|
|
167
|
-
calldata: Hex;
|
|
168
|
-
blockHash: string;
|
|
169
|
-
blockNumber: number;
|
|
170
|
-
transactionHash: string;
|
|
171
|
-
};
|
|
172
|
-
} | {
|
|
173
|
-
status: RequestStatus.DESTINATION;
|
|
174
|
-
metadata: {
|
|
175
|
-
blockHash: string;
|
|
176
|
-
blockNumber: number;
|
|
177
|
-
transactionHash: string;
|
|
178
|
-
};
|
|
179
|
-
} | {
|
|
180
|
-
status: TimeoutStatus.PENDING_TIMEOUT;
|
|
181
|
-
metadata: {
|
|
182
|
-
blockHash: string;
|
|
183
|
-
blockNumber: number;
|
|
184
|
-
transactionHash: string;
|
|
185
|
-
};
|
|
186
|
-
} | {
|
|
187
|
-
status: TimeoutStatus.DESTINATION_FINALIZED_TIMEOUT;
|
|
188
|
-
metadata: {
|
|
189
|
-
blockHash: string;
|
|
190
|
-
blockNumber: number;
|
|
191
|
-
transactionHash: string;
|
|
192
|
-
};
|
|
193
|
-
} | {
|
|
194
|
-
status: TimeoutStatus.HYPERBRIDGE_TIMED_OUT;
|
|
195
|
-
metadata: {
|
|
196
|
-
blockHash: string;
|
|
197
|
-
blockNumber: number;
|
|
198
|
-
transactionHash: string;
|
|
199
|
-
};
|
|
200
|
-
} | {
|
|
201
|
-
status: TimeoutStatus.HYPERBRIDGE_FINALIZED_TIMEOUT;
|
|
202
|
-
metadata: {
|
|
203
|
-
calldata: Hex;
|
|
204
|
-
blockHash: string;
|
|
205
|
-
blockNumber: number;
|
|
206
|
-
transactionHash: string;
|
|
207
|
-
};
|
|
208
|
-
} | {
|
|
209
|
-
status: TimeoutStatus.TIMED_OUT;
|
|
210
|
-
metadata: {
|
|
211
|
-
blockHash: string;
|
|
212
|
-
blockNumber: number;
|
|
213
|
-
transactionHash: string;
|
|
214
|
-
};
|
|
215
|
-
};
|
|
216
|
-
export interface RequestWithStatus {
|
|
217
|
-
source: string;
|
|
218
|
-
dest: string;
|
|
219
|
-
to: HexString;
|
|
220
|
-
from: HexString;
|
|
221
|
-
nonce: bigint;
|
|
222
|
-
body: HexString;
|
|
223
|
-
timeoutTimestamp: bigint;
|
|
224
|
-
statuses: Array<RequestStatusWithMetadata>;
|
|
225
|
-
}
|
|
226
|
-
export interface RequestCommitment {
|
|
227
|
-
requests: {
|
|
228
|
-
nodes: Array<{
|
|
229
|
-
id: string;
|
|
230
|
-
commitment: string;
|
|
231
|
-
}>;
|
|
232
|
-
};
|
|
233
|
-
}
|
|
234
|
-
export interface StateMachineResponse {
|
|
235
|
-
stateMachineUpdateEvents: {
|
|
236
|
-
nodes: StateMachineUpdate[];
|
|
237
|
-
};
|
|
238
|
-
}
|
package/dist/types/index.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
export var RequestStatus;
|
|
2
|
-
(function (RequestStatus) {
|
|
3
|
-
RequestStatus["SOURCE"] = "SOURCE";
|
|
4
|
-
RequestStatus["SOURCE_FINALIZED"] = "SOURCE_FINALIZED";
|
|
5
|
-
RequestStatus["HYPERBRIDGE_DELIVERED"] = "HYPERBRIDGE_DELIVERED";
|
|
6
|
-
RequestStatus["HYPERBRIDGE_FINALIZED"] = "HYPERBRIDGE_FINALIZED";
|
|
7
|
-
RequestStatus["DESTINATION"] = "DESTINATION";
|
|
8
|
-
RequestStatus["TIMED_OUT"] = "TIMED_OUT";
|
|
9
|
-
RequestStatus["HYPERBRIDGE_TIMED_OUT"] = "HYPERBRIDGE_TIMED_OUT";
|
|
10
|
-
})(RequestStatus || (RequestStatus = {}));
|
|
11
|
-
export var TimeoutStatus;
|
|
12
|
-
(function (TimeoutStatus) {
|
|
13
|
-
TimeoutStatus["PENDING_TIMEOUT"] = "PENDING_TIMEOUT";
|
|
14
|
-
TimeoutStatus["DESTINATION_FINALIZED_TIMEOUT"] = "DESTINATION_FINALIZED_TIMEOUT";
|
|
15
|
-
TimeoutStatus["HYPERBRIDGE_TIMED_OUT"] = "HYPERBRIDGE_TIMED_OUT";
|
|
16
|
-
TimeoutStatus["HYPERBRIDGE_FINALIZED_TIMEOUT"] = "HYPERBRIDGE_FINALIZED_TIMEOUT";
|
|
17
|
-
TimeoutStatus["TIMED_OUT"] = "TIMED_OUT";
|
|
18
|
-
})(TimeoutStatus || (TimeoutStatus = {}));
|
|
19
|
-
export var HyperClientStatus;
|
|
20
|
-
(function (HyperClientStatus) {
|
|
21
|
-
HyperClientStatus["PENDING"] = "PENDING";
|
|
22
|
-
HyperClientStatus["SOURCE_FINALIZED"] = "SOURCE_FINALIZED";
|
|
23
|
-
HyperClientStatus["HYPERBRIDGE_FINALIZED"] = "HYPERBRIDGE_FINALIZED";
|
|
24
|
-
HyperClientStatus["HYPERBRIDGE_VERIFIED"] = "HYPERBRIDGE_VERIFIED";
|
|
25
|
-
HyperClientStatus["DESTINATION"] = "DESTINATION";
|
|
26
|
-
HyperClientStatus["TIMED_OUT"] = "TIMED_OUT";
|
|
27
|
-
HyperClientStatus["HYPERBRIDGE_TIMED_OUT"] = "HYPERBRIDGE_TIMED_OUT";
|
|
28
|
-
HyperClientStatus["ERROR"] = "ERROR";
|
|
29
|
-
})(HyperClientStatus || (HyperClientStatus = {}));
|
|
30
|
-
//# sourceMappingURL=index.js.map
|
package/dist/types/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AA2HA,MAAM,CAAN,IAAY,aAQX;AARD,WAAY,aAAa;IACxB,kCAAiB,CAAA;IACjB,sDAAqC,CAAA;IACrC,gEAA+C,CAAA;IAC/C,gEAA+C,CAAA;IAC/C,4CAA2B,CAAA;IAC3B,wCAAuB,CAAA;IACvB,gEAA+C,CAAA;AAChD,CAAC,EARW,aAAa,KAAb,aAAa,QAQxB;AAED,MAAM,CAAN,IAAY,aAMX;AAND,WAAY,aAAa;IACxB,oDAAmC,CAAA;IACnC,gFAA+D,CAAA;IAC/D,gEAA+C,CAAA;IAC/C,gFAA+D,CAAA;IAC/D,wCAAuB,CAAA;AACxB,CAAC,EANW,aAAa,KAAb,aAAa,QAMxB;AAED,MAAM,CAAN,IAAY,iBASX;AATD,WAAY,iBAAiB;IAC5B,wCAAmB,CAAA;IACnB,0DAAqC,CAAA;IACrC,oEAA+C,CAAA;IAC/C,kEAA6C,CAAA;IAC7C,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,oEAA+C,CAAA;IAC/C,oCAAe,CAAA;AAChB,CAAC,EATW,iBAAiB,KAAjB,iBAAiB,QAS5B"}
|
package/dist/utils/mmr.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Converts a node's MMR position to its k-index
|
|
3
|
-
* @param leaves - Array of leaf positions
|
|
4
|
-
* @param mmrSize - Size of the MMR
|
|
5
|
-
* @returns Array of tuples containing position and k-index
|
|
6
|
-
*/
|
|
7
|
-
export declare function mmrPositionToKIndex(initialLeaves: bigint[], mmrSize: bigint): Array<[bigint, bigint]>;
|
|
8
|
-
/**
|
|
9
|
-
* Calculate the total size of MMR (number of nodes) from the number of leaves.
|
|
10
|
-
* @param numberOfLeaves - The number of leaves in the MMR
|
|
11
|
-
* @returns The total size of the MMR (total number of nodes)
|
|
12
|
-
*/
|
|
13
|
-
export declare function calculateMMRSize(numberOfLeaves: bigint): bigint;
|
package/dist/utils/mmr.js
DELETED
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Gets peak position for a given height
|
|
3
|
-
*/
|
|
4
|
-
function getPeakPosByHeight(height) {
|
|
5
|
-
return (1n << BigInt(height + 1)) - 2n;
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Gets the height and position of the leftmost peak
|
|
9
|
-
*/
|
|
10
|
-
function leftPeakHeightPos(mmrSize) {
|
|
11
|
-
let height = 1;
|
|
12
|
-
let prevPos = 0n;
|
|
13
|
-
let pos = getPeakPosByHeight(height);
|
|
14
|
-
while (pos < mmrSize) {
|
|
15
|
-
height += 1;
|
|
16
|
-
prevPos = pos;
|
|
17
|
-
pos = getPeakPosByHeight(height);
|
|
18
|
-
}
|
|
19
|
-
return [height - 1, prevPos];
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Gets the right peak at a given height and position
|
|
23
|
-
*/
|
|
24
|
-
function getRightPeak(initialHeight, initialPos, mmrSize) {
|
|
25
|
-
let height = initialHeight;
|
|
26
|
-
let pos = initialPos;
|
|
27
|
-
// move to right sibling pos
|
|
28
|
-
pos += siblingOffset(height);
|
|
29
|
-
// loop until we find a pos in mmr
|
|
30
|
-
while (pos > mmrSize - 1n) {
|
|
31
|
-
if (height === 0) {
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
// move to left child
|
|
35
|
-
pos -= parentOffset(height - 1);
|
|
36
|
-
height -= 1;
|
|
37
|
-
}
|
|
38
|
-
return [height, pos];
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Gets all peaks in the MMR
|
|
42
|
-
*/
|
|
43
|
-
function getPeaks(mmrSize) {
|
|
44
|
-
const positions = [];
|
|
45
|
-
let [height, pos] = leftPeakHeightPos(mmrSize);
|
|
46
|
-
positions.push(pos);
|
|
47
|
-
while (height > 0) {
|
|
48
|
-
const peak = getRightPeak(height, pos, mmrSize);
|
|
49
|
-
if (!peak)
|
|
50
|
-
break;
|
|
51
|
-
[height, pos] = peak;
|
|
52
|
-
positions.push(pos);
|
|
53
|
-
}
|
|
54
|
-
return positions;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Checks if a number consists of all ones in its binary representation
|
|
58
|
-
*/
|
|
59
|
-
function allOnes(num) {
|
|
60
|
-
if (num === 0n)
|
|
61
|
-
return false;
|
|
62
|
-
return num
|
|
63
|
-
.toString(2)
|
|
64
|
-
.split("")
|
|
65
|
-
.every((bit) => bit === "1");
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Calculates the position after jumping left in the tree
|
|
69
|
-
*/
|
|
70
|
-
function jumpLeft(pos) {
|
|
71
|
-
const bitLength = pos.toString(2).length;
|
|
72
|
-
const mostSignificantBits = 1n << BigInt(bitLength - 1);
|
|
73
|
-
return pos - (mostSignificantBits - 1n);
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Calculates the height of a position in the tree
|
|
77
|
-
*/
|
|
78
|
-
function posHeightInTree(initialPos) {
|
|
79
|
-
let pos = initialPos + 1n;
|
|
80
|
-
while (!allOnes(pos)) {
|
|
81
|
-
pos = jumpLeft(pos);
|
|
82
|
-
}
|
|
83
|
-
return pos.toString(2).length - 1;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Calculates the parent offset for a given height
|
|
87
|
-
*/
|
|
88
|
-
function parentOffset(height) {
|
|
89
|
-
return 2n << BigInt(height);
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Calculates the sibling offset for a given height
|
|
93
|
-
*/
|
|
94
|
-
function siblingOffset(height) {
|
|
95
|
-
return (2n << BigInt(height)) - 1n;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Takes elements from a vector while they satisfy a predicate
|
|
99
|
-
*/
|
|
100
|
-
function takeWhileVec(v, p) {
|
|
101
|
-
const index = v.findIndex((item) => !p(item));
|
|
102
|
-
if (index === -1) {
|
|
103
|
-
const result = [...v];
|
|
104
|
-
v.length = 0;
|
|
105
|
-
return result;
|
|
106
|
-
}
|
|
107
|
-
return v.splice(0, index);
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Converts a node's MMR position to its k-index
|
|
111
|
-
* @param leaves - Array of leaf positions
|
|
112
|
-
* @param mmrSize - Size of the MMR
|
|
113
|
-
* @returns Array of tuples containing position and k-index
|
|
114
|
-
*/
|
|
115
|
-
export function mmrPositionToKIndex(initialLeaves, mmrSize) {
|
|
116
|
-
const leaves = [...initialLeaves];
|
|
117
|
-
const peaks = getPeaks(mmrSize);
|
|
118
|
-
const leavesWithKIndices = [];
|
|
119
|
-
for (const peak of peaks) {
|
|
120
|
-
const peakLeaves = takeWhileVec(leaves, (pos) => pos <= peak);
|
|
121
|
-
if (peakLeaves.length > 0) {
|
|
122
|
-
for (const pos of peakLeaves) {
|
|
123
|
-
const height = posHeightInTree(peak);
|
|
124
|
-
let index = 0n;
|
|
125
|
-
let parentPos = peak;
|
|
126
|
-
for (let h = height; h >= 1; h--) {
|
|
127
|
-
const leftChild = parentPos - parentOffset(h - 1);
|
|
128
|
-
const rightChild = leftChild + siblingOffset(h - 1);
|
|
129
|
-
index *= 2n;
|
|
130
|
-
if (leftChild >= pos) {
|
|
131
|
-
parentPos = leftChild;
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
parentPos = rightChild;
|
|
135
|
-
index += 1n;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
leavesWithKIndices.push([pos, index]);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
return leavesWithKIndices;
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Calculate the total size of MMR (number of nodes) from the number of leaves.
|
|
146
|
-
* @param numberOfLeaves - The number of leaves in the MMR
|
|
147
|
-
* @returns The total size of the MMR (total number of nodes)
|
|
148
|
-
*/
|
|
149
|
-
export function calculateMMRSize(numberOfLeaves) {
|
|
150
|
-
const numberOfPeaks = numberOfLeaves.toString(2).split("1").length - 1;
|
|
151
|
-
return 2n * numberOfLeaves - BigInt(numberOfPeaks);
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=mmr.js.map
|
package/dist/utils/mmr.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mmr.js","sourceRoot":"","sources":["../../src/utils/mmr.ts"],"names":[],"mappings":"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"}
|