@obolnetwork/obol-sdk 2.12.1 → 2.12.4
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 +6 -4
- package/dist/browser/src/index.js +146 -62
- package/dist/browser/src/index.js.map +1 -1
- package/dist/cjs/src/index.js +149 -62
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/verification/clusterLockValidationWorker.js +39 -10
- package/dist/cjs/src/verification/clusterLockValidationWorker.js.map +1 -1
- package/dist/cjs/src/verification/parallelPool.js +33 -14
- package/dist/cjs/src/verification/parallelPool.js.map +1 -1
- package/dist/esm/src/{chunk-RYTIXFRX.js → chunk-FGMJVLIN.js} +53 -15
- package/dist/esm/src/chunk-FGMJVLIN.js.map +1 -0
- package/dist/esm/src/{chunk-5ASVONSJ.js → chunk-YZWJJHPO.js} +9 -7
- package/dist/esm/src/chunk-YZWJJHPO.js.map +1 -0
- package/dist/esm/src/index.js +56 -7
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/verification/clusterLockValidationWorker.js +9 -3
- package/dist/esm/src/verification/clusterLockValidationWorker.js.map +1 -1
- package/dist/esm/src/verification/parallelPool.js +1 -1
- package/dist/types/src/base.d.ts +5 -3
- package/dist/types/src/errors.d.ts +22 -4
- package/dist/types/src/index.d.ts +5 -6
- package/dist/types/src/services.d.ts +6 -3
- package/dist/types/src/verification/parallelPool.d.ts +4 -0
- package/dist/types/src/verification/validationConcurrency.d.ts +11 -0
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/dist/esm/src/chunk-5ASVONSJ.js.map +0 -1
- package/dist/esm/src/chunk-RYTIXFRX.js.map +0 -1
- package/dist/types/test/client/ajv.spec.d.ts +0 -1
- package/dist/types/test/client/methods.spec.d.ts +0 -18
- package/dist/types/test/eoa/eoa.spec.d.ts +0 -1
- package/dist/types/test/exit/ethUtils.spec.d.ts +0 -1
- package/dist/types/test/exit/exit.spec.d.ts +0 -1
- package/dist/types/test/exit/verificationHelpers.spec.d.ts +0 -1
- package/dist/types/test/fixtures.d.ts +0 -359
- package/dist/types/test/incentives/incentives.spec.d.ts +0 -1
- package/dist/types/test/splits/splits.spec.d.ts +0 -1
- package/dist/types/test/verification/parallelPool.spec.d.ts +0 -1
|
@@ -107,6 +107,22 @@ var __yieldStar = (value) => {
|
|
|
107
107
|
// src/verification/clusterLockValidationWorker.ts
|
|
108
108
|
var import_node_worker_threads = require("worker_threads");
|
|
109
109
|
|
|
110
|
+
// src/errors.ts
|
|
111
|
+
var ClusterLockValidationTimeoutError = class _ClusterLockValidationTimeoutError extends Error {
|
|
112
|
+
/**
|
|
113
|
+
* @param timeoutMs - Worker deadline that was exceeded (`VALIDATION_WORKER_TIMEOUT_MS`
|
|
114
|
+
* for the whole-lock worker, `WORKER_TIMEOUT_MS` for per-chunk BLS workers).
|
|
115
|
+
*/
|
|
116
|
+
constructor(timeoutMs) {
|
|
117
|
+
super(
|
|
118
|
+
`Cluster lock validation exceeded worker time limit (${timeoutMs} ms). Retry later; this does not imply invalid lock data.`
|
|
119
|
+
);
|
|
120
|
+
this.timeoutMs = timeoutMs;
|
|
121
|
+
this.name = "ClusterLockValidationTimeoutError";
|
|
122
|
+
Object.setPrototypeOf(this, _ClusterLockValidationTimeoutError.prototype);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
|
|
110
126
|
// src/verification/common.ts
|
|
111
127
|
var import_ssz7 = require("@chainsafe/ssz");
|
|
112
128
|
var import_elliptic = __toESM(require("elliptic"));
|
|
@@ -138,7 +154,7 @@ var import_ethers = require("ethers");
|
|
|
138
154
|
// package.json
|
|
139
155
|
var package_default = {
|
|
140
156
|
name: "@obolnetwork/obol-sdk",
|
|
141
|
-
version: "2.12.
|
|
157
|
+
version: "2.12.4",
|
|
142
158
|
description: "A package for creating Distributed Validators using the Obol API.",
|
|
143
159
|
bugs: {
|
|
144
160
|
url: "https://github.com/obolnetwork/obol-sdk/issues"
|
|
@@ -153,7 +169,7 @@ var package_default = {
|
|
|
153
169
|
"build:clean": "rm -rf ./dist",
|
|
154
170
|
build: "npm-run-all build:clean build:tsup",
|
|
155
171
|
"build:tsup": "tsup && tsc -b ./tsconfig.types.json",
|
|
156
|
-
test: "NODE_OPTIONS=--experimental-vm-modules jest test/**/**.spec.ts --testPathIgnorePatterns=test/sdk-package/",
|
|
172
|
+
test: "NODE_OPTIONS=--experimental-vm-modules OBOL_SDK_MAX_CONCURRENT_LOCK_VALIDATIONS=0 jest test/**/**.spec.ts --testPathIgnorePatterns=test/sdk-package/",
|
|
157
173
|
"generate-typedoc": "typedoc",
|
|
158
174
|
"npm:publish": "npm publish --tag latest",
|
|
159
175
|
"npm:publish:next": "npm publish --tag next",
|
|
@@ -216,7 +232,6 @@ var package_default = {
|
|
|
216
232
|
"ajv-formats": "3.0.1",
|
|
217
233
|
"ajv-keywords": "5.1.0",
|
|
218
234
|
"cross-fetch": "4.1.0",
|
|
219
|
-
dotenv: "17.4.2",
|
|
220
235
|
elliptic: "6.6.1",
|
|
221
236
|
ethers: "6.16.0",
|
|
222
237
|
semver: "7.7.4",
|
|
@@ -229,6 +244,7 @@ var package_default = {
|
|
|
229
244
|
"@types/node": "24.12.2",
|
|
230
245
|
"@types/semver": "7.7.1",
|
|
231
246
|
"@types/uuid": "9.0.8",
|
|
247
|
+
dotenv: "17.4.2",
|
|
232
248
|
"@typescript-eslint/eslint-plugin": "6.21.0",
|
|
233
249
|
"@typescript-eslint/parser": "6.21.0",
|
|
234
250
|
eslint: "8.57.1",
|
|
@@ -341,8 +357,6 @@ var MAINNET_SPLIT_V2_FACTORY_BYTECODE = "0x6080604090808252600480361015610015575
|
|
|
341
357
|
var HOODI_SPLIT_V2_FACTORY_BYTECODE = "0x6080604090808252600480361015610015575f80fd5b5f3560e01c9182632556fa391461043c5750816380ebf0ab146102be5781639e317f121461027a578163cd6bc1211461023f578163e9889edd1461016d578163f79918b0146100de575063fc6119b11461006d575f80fd5b346100da575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100da576020905173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000f9c25250523df26343222fc46de932355b850c97168152f35b5f80fd5b82346100da577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc916080833601126100da5780359267ffffffffffffffff84116100da5760809084360301126100da5761016573ffffffffffffffffffffffffffffffffffffffff916020946101526105e7565b61015a61060a565b91606435930161090f565b915191168152f35b82346100da5760209073ffffffffffffffffffffffffffffffffffffffff6101656101a061019a3661062d565b91610b37565b309061023a7f000000000000000000000000f9c25250523df26343222fc46de932355b850c9790604051916c5af43d3d93803e605757fd5bf36051526044526f593da1005b3d3d3d3d363d3d37363d736030527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff6020527060593d8160093d39f336602c57343d527f5f526071600f20916040525f606052565b610b7a565b82346100da576102546101a061019a3661062d565b803b151573ffffffffffffffffffffffffffffffffffffffff8351921682526020820152f35b82346100da5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100da57602091355f525f8252805f20549051908152f35b82346100da577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc9181833601126100da5780359267ffffffffffffffff84116100da5760809084360301126100da5761016561039c73ffffffffffffffffffffffffffffffffffffffff9261034a6103766103376105e7565b875192839160209a8b84019601866107c7565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610858565b519020805f525f8652845f205490855191878301528682526103978261083c565b6108c2565b848151910120309061023a7f000000000000000000000000f9c25250523df26343222fc46de932355b850c9790604051916c5af43d3d93803e605757fd5bf36051526044526f593da1005b3d3d3d3d363d3d37363d736030527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff6020527060593d8160093d39f336602c57343d527f5f526071600f20916040525f606052565b9083346100da577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6060813601126100da5782359067ffffffffffffffff82116100da5760809082850192360301126100da576104976105e7565b6105286104a261060a565b6104e4602097888101906104bb8161034a888a866107c7565b519020805f525f8952865f20908154916001830190558751918a8301528982526103978261083c565b73ffffffffffffffffffffffffffffffffffffffff9281898593519101207f000000000000000000000000f9c25250523df26343222fc46de932355b850c97610aae565b1695863b156100da575f858592610569895194859384937fbaa7fda400000000000000000000000000000000000000000000000000000000855284016107c7565b0381838b5af180156105dd57928795927fb3ec24e9259e438f9917b49f27c0dd89a11b7626cb63e6fc977863c0b26a681b95926105ba956105ce575b508188519586956060875260608701906106f5565b93168a85015216868301520390a251908152f35b6105d7906107fb565b8a6105a5565b86513d5f823e3d90fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100da57565b6044359073ffffffffffffffffffffffffffffffffffffffff821682036100da57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc906060828201126100da576004359167ffffffffffffffff83116100da57826080920301126100da576004019060243573ffffffffffffffffffffffffffffffffffffffff811681036100da579060443590565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156100da57016020813591019167ffffffffffffffff82116100da578160051b360383136100da57565b6080820161070382806106a2565b608085529182905260a08401915f905b80821061078f5750505061072a60208301836106a2565b909284830360208601528183527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82116100da5760609160051b8094602085013760408101356040860152013561ffff81168091036100da5760606020940152010190565b90919283359073ffffffffffffffffffffffffffffffffffffffff82168092036100da57600191815260208091019401920190610713565b9073ffffffffffffffffffffffffffffffffffffffff6107f46020929594956040855260408501906106f5565b9416910152565b67ffffffffffffffff811161080f57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040810190811067ffffffffffffffff82111761080f57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761080f57604052565b908151915f5b8381106108af575050015f815290565b806020809284010151818501520161089f565b61090d909291926108e160405194859260208401526040830190610899565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283610858565b565b93929161091d838387610b37565b7f000000000000000000000000f9c25250523df26343222fc46de932355b850c976109bb308361023a8490604051916c5af43d3d93803e605757fd5bf36051526044526f593da1005b3d3d3d3d363d3d37363d736030527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff6020527060593d8160093d39f336602c57343d527f5f526071600f20916040525f606052565b803b610aa55750906109cc91610aae565b9473ffffffffffffffffffffffffffffffffffffffff9283871694853b156100da57604051947fbaa7fda40000000000000000000000000000000000000000000000000000000086525f8680610a268688600484016107c7565b0381838b5af1948515610a9a577fc4cec5a1846f5c98dc275670618bfecffec4da2e7cba63760ef46f38c75d236e96610a7496610a8b575b50816040519687966080885260808801906106f5565b9416602086015216604084015260608301520390a2565b610a94906107fb565b5f610a5e565b6040513d5f823e3d90fd5b96505050505050565b9190604051926c5af43d3d93803e605757fd5bf36051526044526f593da1005b3d3d3d3d363d3d37363d736030527f9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff6020527060593d8160093d39f336602c57343d527f5f526071600f5ff5916040525f6060528115610b2a57565b63301164255f526004601cfd5b6040519291610b4f9184916108e191602084016107c7565b610b7460206040518093610b668383018097610899565b908152038084520182610858565b51902090565b91909160ff5f5360355260601b60015260155260555f20905f60355256fea2646970667358221220edd55753c55f257991df670fc562cdf54adb62d710125933fc4a0a7afddbc02564736f6c63430008170033";
|
|
342
358
|
|
|
343
359
|
// src/constants.ts
|
|
344
|
-
var dotenv = __toESM(require("dotenv"));
|
|
345
|
-
dotenv.config();
|
|
346
360
|
var EIP712_DOMAIN_NAME = "Obol";
|
|
347
361
|
var EIP712_DOMAIN_VERSION = "1";
|
|
348
362
|
var CreatorConfigHashSigningTypes = {
|
|
@@ -4956,7 +4970,7 @@ function verifySharesSync(shares, distributedKeys, threshold) {
|
|
|
4956
4970
|
}
|
|
4957
4971
|
function runWorkerAggregatePubkeys(wt, workerFile, data) {
|
|
4958
4972
|
return __async(this, null, function* () {
|
|
4959
|
-
return yield new Promise((resolve) => {
|
|
4973
|
+
return yield new Promise((resolve, reject) => {
|
|
4960
4974
|
let settled = false;
|
|
4961
4975
|
const worker = new wt.Worker(workerFile, { workerData: data });
|
|
4962
4976
|
const finish = (result) => {
|
|
@@ -4967,7 +4981,11 @@ function runWorkerAggregatePubkeys(wt, workerFile, data) {
|
|
|
4967
4981
|
resolve(result);
|
|
4968
4982
|
};
|
|
4969
4983
|
const timer = setTimeout(() => {
|
|
4970
|
-
|
|
4984
|
+
if (settled) return;
|
|
4985
|
+
settled = true;
|
|
4986
|
+
clearTimeout(timer);
|
|
4987
|
+
worker.terminate();
|
|
4988
|
+
reject(new ClusterLockValidationTimeoutError(WORKER_TIMEOUT_MS));
|
|
4971
4989
|
}, WORKER_TIMEOUT_MS);
|
|
4972
4990
|
worker.once("message", (msg) => {
|
|
4973
4991
|
finish(msg instanceof Uint8Array ? msg : null);
|
|
@@ -4983,7 +5001,7 @@ function runWorkerAggregatePubkeys(wt, workerFile, data) {
|
|
|
4983
5001
|
}
|
|
4984
5002
|
function runWorker(wt, workerFile, data) {
|
|
4985
5003
|
return __async(this, null, function* () {
|
|
4986
|
-
return yield new Promise((resolve) => {
|
|
5004
|
+
return yield new Promise((resolve, reject) => {
|
|
4987
5005
|
let settled = false;
|
|
4988
5006
|
const worker = new wt.Worker(workerFile, { workerData: data });
|
|
4989
5007
|
const finish = (result) => {
|
|
@@ -4994,7 +5012,11 @@ function runWorker(wt, workerFile, data) {
|
|
|
4994
5012
|
resolve(result);
|
|
4995
5013
|
};
|
|
4996
5014
|
const timer = setTimeout(() => {
|
|
4997
|
-
|
|
5015
|
+
if (settled) return;
|
|
5016
|
+
settled = true;
|
|
5017
|
+
clearTimeout(timer);
|
|
5018
|
+
worker.terminate();
|
|
5019
|
+
reject(new ClusterLockValidationTimeoutError(WORKER_TIMEOUT_MS));
|
|
4998
5020
|
}, WORKER_TIMEOUT_MS);
|
|
4999
5021
|
worker.once("message", (msg) => {
|
|
5000
5022
|
finish(msg === true);
|
|
@@ -14655,6 +14677,9 @@ var isValidClusterLock = (clusterLock, safeRpcUrl) => __async(null, null, functi
|
|
|
14655
14677
|
}
|
|
14656
14678
|
return true;
|
|
14657
14679
|
} catch (err) {
|
|
14680
|
+
if (err instanceof ClusterLockValidationTimeoutError) {
|
|
14681
|
+
throw err;
|
|
14682
|
+
}
|
|
14658
14683
|
return false;
|
|
14659
14684
|
}
|
|
14660
14685
|
});
|
|
@@ -14665,7 +14690,11 @@ if (import_node_worker_threads.parentPort) {
|
|
|
14665
14690
|
const port = import_node_worker_threads.parentPort;
|
|
14666
14691
|
void isValidClusterLock(input.lock, input.safeRpcUrl).then((ok) => {
|
|
14667
14692
|
port.postMessage(ok);
|
|
14668
|
-
}).catch(() => {
|
|
14693
|
+
}).catch((err) => {
|
|
14694
|
+
if (err instanceof ClusterLockValidationTimeoutError) {
|
|
14695
|
+
port.postMessage({ validationTimeoutMs: err.timeoutMs });
|
|
14696
|
+
return;
|
|
14697
|
+
}
|
|
14669
14698
|
port.postMessage(false);
|
|
14670
14699
|
});
|
|
14671
14700
|
}
|