Skip to content

Commit a00dbf0

Browse files
committed
chore: revert async aggregate with randomness (#7218)
Revert "feat: asyncAggregateWithRandomness (#7204)" This reverts commit e31d535.
1 parent 70f67bb commit a00dbf0

File tree

10 files changed

+64
-51
lines changed

10 files changed

+64
-51
lines changed

packages/beacon-node/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@
9595
},
9696
"dependencies": {
9797
"@chainsafe/as-sha256": "^0.5.0",
98-
"@chainsafe/blst": "^2.2.0",
98+
"@chainsafe/blst": "^2.1.0",
9999
"@chainsafe/discv5": "^9.0.0",
100100
"@chainsafe/enr": "^3.0.0",
101101
"@chainsafe/libp2p-gossipsub": "^13.0.0",

packages/beacon-node/src/chain/bls/multithread/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ export class BlsMultiThreadWorkerPool implements IBlsVerifier {
394394
try {
395395
// Note: This can throw, must be handled per-job.
396396
// Pubkey and signature aggregation is defered here
397-
workReq = await jobItemWorkReq(job, this.metrics);
397+
workReq = jobItemWorkReq(job, this.metrics);
398398
} catch (e) {
399399
this.metrics?.blsThreadPool.errorAggregateSignatureSetsCount.inc({type: job.type});
400400

packages/beacon-node/src/chain/bls/multithread/jobItem.ts

+13-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {PublicKey, asyncAggregateWithRandomness} from "@chainsafe/blst";
1+
import {PublicKey, aggregateWithRandomness} from "@chainsafe/blst";
22
import {ISignatureSet, SignatureSetType} from "@lodestar/state-transition";
33
import {VerifySignatureOpts} from "../interface.js";
44
import {getAggregatedPubkey} from "../utils.js";
@@ -48,7 +48,7 @@ export function jobItemSigSets(job: JobQueueItem): number {
4848
* Prepare BlsWorkReq from JobQueueItem
4949
* WARNING: May throw with untrusted user input
5050
*/
51-
export async function jobItemWorkReq(job: JobQueueItem, metrics: Metrics | null): Promise<BlsWorkReq> {
51+
export function jobItemWorkReq(job: JobQueueItem, metrics: Metrics | null): BlsWorkReq {
5252
switch (job.type) {
5353
case JobQueueItemType.default:
5454
return {
@@ -61,9 +61,17 @@ export async function jobItemWorkReq(job: JobQueueItem, metrics: Metrics | null)
6161
})),
6262
};
6363
case JobQueueItemType.sameMessage: {
64-
const {pk, sig} = await asyncAggregateWithRandomness(
65-
job.sets.map((set) => ({pk: set.publicKey, sig: set.signature}))
66-
);
64+
// This is slow code on main thread (mainly signature deserialization + group check).
65+
// Ideally it can be taken off-thread, but in the mean time, keep track of total time spent here.
66+
// As of July 2024, for a node subscribing to all subnets, with 1 signature per validator per epoch,
67+
// it takes around 2.02 min to perform this operation for a single epoch.
68+
// cpu profile on main thread has 250s idle so this only works until we reach 3M validators
69+
// However, for normal node with only 2 to 7 subnet subscriptions per epoch this works until 27M validators
70+
// and not a problem in the near future
71+
// this is monitored on v1.21.0 https://github.com/ChainSafe/lodestar/pull/6894/files#r1687359225
72+
const timer = metrics?.blsThreadPool.aggregateWithRandomnessMainThreadDuration.startTimer();
73+
const {pk, sig} = aggregateWithRandomness(job.sets.map((set) => ({pk: set.publicKey, sig: set.signature})));
74+
timer?.();
6775

6876
return {
6977
opts: job.opts,

packages/beacon-node/src/metrics/metrics/lodestar.ts

+5
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,11 @@ export function createLodestarMetrics(
497497
name: "lodestar_bls_thread_pool_batchable_sig_sets_total",
498498
help: "Count of total batchable signature sets",
499499
}),
500+
aggregateWithRandomnessMainThreadDuration: register.histogram({
501+
name: "lodestar_bls_thread_pool_aggregate_with_randomness_main_thread_time_seconds",
502+
help: "Total time performing aggregateWithRandomness on main thread",
503+
buckets: [0.001, 0.005, 0.01, 0.1],
504+
}),
500505
pubkeysAggregationMainThreadDuration: register.histogram({
501506
name: "lodestar_bls_thread_pool_pubkeys_aggregation_main_thread_time_seconds",
502507
help: "Total time spent aggregating pubkeys on main thread",

packages/cli/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
"dependencies": {
5454
"@chainsafe/bls-keygen": "^0.4.0",
5555
"@chainsafe/bls-keystore": "^3.1.0",
56-
"@chainsafe/blst": "^2.2.0",
56+
"@chainsafe/blst": "^2.1.0",
5757
"@chainsafe/discv5": "^9.0.0",
5858
"@chainsafe/enr": "^3.0.0",
5959
"@chainsafe/persistent-merkle-tree": "^0.8.0",

packages/flare/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
],
6060
"dependencies": {
6161
"@chainsafe/bls-keygen": "^0.4.0",
62-
"@chainsafe/blst": "^2.2.0",
62+
"@chainsafe/blst": "^2.1.0",
6363
"@lodestar/api": "^1.23.0",
6464
"@lodestar/config": "^1.23.0",
6565
"@lodestar/params": "^1.23.0",

packages/state-transition/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
"types": "lib/index.d.ts",
6060
"dependencies": {
6161
"@chainsafe/as-sha256": "^0.5.0",
62-
"@chainsafe/blst": "^2.2.0",
62+
"@chainsafe/blst": "^2.1.0",
6363
"@chainsafe/persistent-merkle-tree": "^0.8.0",
6464
"@chainsafe/persistent-ts": "^0.19.1",
6565
"@chainsafe/pubkey-index-map": "2.0.0",

packages/test-utils/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
],
5959
"dependencies": {
6060
"@chainsafe/bls-keystore": "^3.1.0",
61-
"@chainsafe/blst": "^2.2.0",
61+
"@chainsafe/blst": "^2.1.0",
6262
"@lodestar/params": "^1.23.0",
6363
"@lodestar/utils": "^1.23.0",
6464
"axios": "^1.3.4",

packages/validator/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
"blockchain"
4646
],
4747
"dependencies": {
48-
"@chainsafe/blst": "^2.2.0",
48+
"@chainsafe/blst": "^2.1.0",
4949
"@chainsafe/ssz": "^0.18.0",
5050
"@lodestar/api": "^1.23.0",
5151
"@lodestar/config": "^1.23.0",

yarn.lock

+39-39
Original file line numberDiff line numberDiff line change
@@ -399,40 +399,40 @@
399399
"@chainsafe/bls-keygen" "^0.4.0"
400400
bls-eth-wasm "^0.4.8"
401401

402-
"@chainsafe/blst-darwin-arm64@2.2.0":
403-
version "2.2.0"
404-
resolved "https://registry.yarnpkg.com/@chainsafe/blst-darwin-arm64/-/blst-darwin-arm64-2.2.0.tgz#0ab9083805c308106c2f2107df1e6376d9190b1b"
405-
integrity sha512-BOOy2KHbV028cioPWaAMqHdLRKd6/3XyEmUEcQC2E/SpyYLdNcaKiBUYIU4pT9CrWBbJJxX68UI+3vZVg0M8/w==
402+
"@chainsafe/blst-darwin-arm64@2.1.0":
403+
version "2.1.0"
404+
resolved "https://registry.yarnpkg.com/@chainsafe/blst-darwin-arm64/-/blst-darwin-arm64-2.1.0.tgz#8871d62dc0402df30adbd6f52fbbd02d59f3c5ff"
405+
integrity sha512-7iPRlSbQxEZ2AblmkFLuhnVPUipvA0UenEaUCaLC1MhGFpSwy5bSrF8Krs/E++GN3p2LVz7ZH3tlDfFL0z1EvQ==
406406

407-
"@chainsafe/blst-darwin-x64@2.2.0":
408-
version "2.2.0"
409-
resolved "https://registry.yarnpkg.com/@chainsafe/blst-darwin-x64/-/blst-darwin-x64-2.2.0.tgz#231943a7736f3f89d35e03fec890b7809c98ff1a"
410-
integrity sha512-jG64cwIdPT7u/haRrW26tWCpfMfHBQCfGY169mFQifCwO4VEwvaiVBPOh5olFis6LjpcmD+O0jpM8GqrnsmUHQ==
407+
"@chainsafe/blst-darwin-x64@2.1.0":
408+
version "2.1.0"
409+
resolved "https://registry.yarnpkg.com/@chainsafe/blst-darwin-x64/-/blst-darwin-x64-2.1.0.tgz#8fe58d92b72b1b872f8b687a0aad8beda3e09072"
410+
integrity sha512-aeoidOpOYVmRFeHVm1p/Axd6CfqWpr6SIift216/HTDBTiuJCGSJqHzk9RHf7gzkr6WtxO7g/6AtkagZA2VPFg==
411411

412-
"@chainsafe/blst-linux-arm64-gnu@2.2.0":
413-
version "2.2.0"
414-
resolved "https://registry.yarnpkg.com/@chainsafe/blst-linux-arm64-gnu/-/blst-linux-arm64-gnu-2.2.0.tgz#721aeec63e8e02aba3358a0084c095403a5438fa"
415-
integrity sha512-L8xV2uuLn8we76vdzfryS9ePdheuZrmY6yArGUFaF1Uzcwml6V1/VvyPl9/uooo/YfVRIrvF/D+lQfI2GFAnhw==
412+
"@chainsafe/blst-linux-arm64-gnu@2.1.0":
413+
version "2.1.0"
414+
resolved "https://registry.yarnpkg.com/@chainsafe/blst-linux-arm64-gnu/-/blst-linux-arm64-gnu-2.1.0.tgz#323789a10679cf81813b1e664ef4187a2e941cff"
415+
integrity sha512-d2zgqoJOqkWg2sZbNR7pv8f+oYPOJmnMu46Uulm6NkW3iYNZIc2KkVjBXGYk7xJ+U8ZEzb7KZ7gRB9315sWBcg==
416416

417-
"@chainsafe/blst-linux-arm64-musl@2.2.0":
418-
version "2.2.0"
419-
resolved "https://registry.yarnpkg.com/@chainsafe/blst-linux-arm64-musl/-/blst-linux-arm64-musl-2.2.0.tgz#dbbabaab93156548c86e2b2b3a1d27160b715000"
420-
integrity sha512-0Vn0luxLYVgC3lvWT1MapFHSAoz99PldqjhilXTGv0AcAk/X5LXPH2RC9Dp2KJGqthyUkpbk1j47jUBfBI+BIg==
417+
"@chainsafe/blst-linux-arm64-musl@2.1.0":
418+
version "2.1.0"
419+
resolved "https://registry.yarnpkg.com/@chainsafe/blst-linux-arm64-musl/-/blst-linux-arm64-musl-2.1.0.tgz#4a308d6b1f71a57a6ecc6cc0531746f5cd8ae3d0"
420+
integrity sha512-w+KiL8ViLXigZVS++tdCwnMBnbc4HXb8claKOnlCppE1rAeF0Dt186AU2TRpqOop3QoOqckqvsguR9iQwZlTUw==
421421

422-
"@chainsafe/blst-linux-x64-gnu@2.2.0":
423-
version "2.2.0"
424-
resolved "https://registry.yarnpkg.com/@chainsafe/blst-linux-x64-gnu/-/blst-linux-x64-gnu-2.2.0.tgz#9f8ab825621b75227c75bb75d369d3d42e91fa74"
425-
integrity sha512-gEY/z2SDBA7kXtFEI9VNhWTJAIjx16jdeAyCaS2k4ACGurWZaWk+Ee4KniTsr4WieSqeuNTUr7Pdja0Sr4EKNQ==
422+
"@chainsafe/blst-linux-x64-gnu@2.1.0":
423+
version "2.1.0"
424+
resolved "https://registry.yarnpkg.com/@chainsafe/blst-linux-x64-gnu/-/blst-linux-x64-gnu-2.1.0.tgz#c015f9f25aab10bba7720518ba9dc19bb850dcc3"
425+
integrity sha512-2xdOIkkJTvi+/gUoiPQO+p+2o19pixLsH5BOrwxY+EABLL6wxZ82w5LatV3x27YJTk7PbAlyT36n7CjmzaZ/tw==
426426

427-
"@chainsafe/blst-linux-x64-musl@2.2.0":
428-
version "2.2.0"
429-
resolved "https://registry.yarnpkg.com/@chainsafe/blst-linux-x64-musl/-/blst-linux-x64-musl-2.2.0.tgz#11e99ac12b0f83cad68da56f4e9cfc4aa403a2e6"
430-
integrity sha512-58GKtiUmtVSuerRzPEcMNQZpICPboBKFnL7+1Wo+PSuajkvbae7tEFrFTtWeMoKIPgOEsPMnk96LF+0yNgavUg==
427+
"@chainsafe/blst-linux-x64-musl@2.1.0":
428+
version "2.1.0"
429+
resolved "https://registry.yarnpkg.com/@chainsafe/blst-linux-x64-musl/-/blst-linux-x64-musl-2.1.0.tgz#da4ac690cc3b59bc21c4578d30502490c044f7fb"
430+
integrity sha512-/ddO38KkTTgTmXBLAubU1fjUWcQy90sdUi0IoRm5RprdpXvTSGZ1m8XrcxwEYkUO+KpnacOuU0UDwerHMJl4DA==
431431

432-
"@chainsafe/blst-win32-x64-msvc@2.2.0":
433-
version "2.2.0"
434-
resolved "https://registry.yarnpkg.com/@chainsafe/blst-win32-x64-msvc/-/blst-win32-x64-msvc-2.2.0.tgz#f32b164721ff5edc279f6d6cd0fffde0ad2fe16c"
435-
integrity sha512-UFrZshl4dfX5Uh2zeKXAZtrkQ+otczHMON2tsrapQNICWmfHZrzE6pKuBL+9QeGAbgflwpbz7+D5nQRDpiuHxQ==
432+
"@chainsafe/blst-win32-x64-msvc@2.1.0":
433+
version "2.1.0"
434+
resolved "https://registry.yarnpkg.com/@chainsafe/blst-win32-x64-msvc/-/blst-win32-x64-msvc-2.1.0.tgz#edaff899194caa4e40901af90779721673671631"
435+
integrity sha512-wSRVGoLrluus38fmYYS0ft3VSG2EaeeWvb7yxvrAS8xUsaRFRClYo/3kaEHR3D9B9Nu5wiuWfob6DoM3w9deLw==
436436

437437
"@chainsafe/blst@^0.2.0":
438438
version "0.2.11"
@@ -443,18 +443,18 @@
443443
node-fetch "^2.6.1"
444444
node-gyp "^8.4.0"
445445

446-
"@chainsafe/blst@^2.2.0":
447-
version "2.2.0"
448-
resolved "https://registry.yarnpkg.com/@chainsafe/blst/-/blst-2.2.0.tgz#ced8b861b94934e3c1c53e173c3e1205d775d93b"
449-
integrity sha512-VBaQoNE2a9d9+skAjQKv3Suk0yGKqp3mZM0YWYJNPj/Ae/f6lAyeVSgKqo2LrsNQBzD/LqrJLKUY8rJT3vDKLA==
446+
"@chainsafe/blst@^2.1.0":
447+
version "2.1.0"
448+
resolved "https://registry.yarnpkg.com/@chainsafe/blst/-/blst-2.1.0.tgz#1df4fa8e390db5c3cceed673b57468e23b4da36f"
449+
integrity sha512-oY5k4whglgVOkisfujO0s1QgCOp3N/J3GogRbHhuNLrf6KN0zs1C3pKHg66EQhQqWVYnFY2Shx2s71/NFD7y+A==
450450
optionalDependencies:
451-
"@chainsafe/blst-darwin-arm64" "2.2.0"
452-
"@chainsafe/blst-darwin-x64" "2.2.0"
453-
"@chainsafe/blst-linux-arm64-gnu" "2.2.0"
454-
"@chainsafe/blst-linux-arm64-musl" "2.2.0"
455-
"@chainsafe/blst-linux-x64-gnu" "2.2.0"
456-
"@chainsafe/blst-linux-x64-musl" "2.2.0"
457-
"@chainsafe/blst-win32-x64-msvc" "2.2.0"
451+
"@chainsafe/blst-darwin-arm64" "2.1.0"
452+
"@chainsafe/blst-darwin-x64" "2.1.0"
453+
"@chainsafe/blst-linux-arm64-gnu" "2.1.0"
454+
"@chainsafe/blst-linux-arm64-musl" "2.1.0"
455+
"@chainsafe/blst-linux-x64-gnu" "2.1.0"
456+
"@chainsafe/blst-linux-x64-musl" "2.1.0"
457+
"@chainsafe/blst-win32-x64-msvc" "2.1.0"
458458

459459
"@chainsafe/discv5@^9.0.0":
460460
version "9.0.0"

0 commit comments

Comments
 (0)