Skip to content

fix: align gloas external signer requests with remote signing api - #10071

Merged
nflaig merged 1 commit into
unstablefrom
nflaig/external-signer-gloas-versioning
Sep 14, 2026
Merged

nflaig merged 1 commit into
unstablefrom
nflaig/external-signer-gloas-versioning

Conversation

@nflaig

@nflaig nflaig commented Sep 12, 2026

Copy link
Copy Markdown
Member

Aligns the external signer client with the Glamsterdam additions to the remote signing api (ethereum/remote-signing-api#28). All new gloas payloads are version-wrapped like BLOCK_V2 and AGGREGATE_AND_PROOF_V2, and the PTC signing type is named after the message the validator produces, consistent with ATTESTATION and SYNC_COMMITTEE_MESSAGE which also carry only the signed data.

  • rename PAYLOAD_ATTESTATION to PAYLOAD_ATTESTATION_MESSAGE, body key payload_attestation_message
  • wrap execution_payload_envelope, payload_attestation_message, proposer_preferences and builder_request_auth in {version, data}, version is the fork at the message slot
  • add web3signer e2e cases for the four signing types, skipped until the test image supports gloas

The same request shapes are implemented in Consensys-Incorporated/web3signer#1192.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 12, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-12T16:14:25.066228Z ec270da Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@nflaig
nflaig marked this pull request as draft September 12, 2026 16:04
@nflaig
nflaig marked this pull request as ready for review September 12, 2026 16:10
@codecov

codecov Bot commented Sep 12, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 52.78%. Comparing base (a0619b2) to head (ec270da).

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable   #10071   +/-   ##
=========================================
  Coverage     52.78%   52.78%           
=========================================
  Files           848      848           
  Lines         58976    58976           
  Branches       4345     4345           
=========================================
  Hits          31128    31128           
  Misses        27791    27791           
  Partials         57       57           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

Copy link
Copy Markdown
Contributor

Performance Report

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: ed1bbd8 Previous: a0619b2 Ratio
archive index / 1 slots / 8 columns / legacy 87.459 us/op 281.57 us/op 0.31
Full benchmark results
Benchmark suite Current: ed1bbd8 Previous: a0619b2 Ratio
getPubkeys - native cache - req 1000 vs - 250000 vc 976.83 us/op 387.84 us/op 2.52
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 35.953 us/op 38.438 us/op 0.94
BLS verify - blst 830.53 us/op 884.24 us/op 0.94
BLS verifyMultipleSignatures 3 - blst 1.3258 ms/op 1.3629 ms/op 0.97
BLS verifyMultipleSignatures 8 - blst 2.2800 ms/op 2.2390 ms/op 1.02
BLS verifyMultipleSignatures 32 - blst 7.2513 ms/op 7.4027 ms/op 0.98
BLS verifyMultipleSignatures 64 - blst 13.480 ms/op 14.174 ms/op 0.95
BLS verifyMultipleSignatures 128 - blst 26.121 ms/op 26.885 ms/op 0.97
BLS deserializing 10000 signatures 645.23 ms/op 623.93 ms/op 1.03
BLS deserializing 100000 signatures 6.5064 s/op 6.3074 s/op 1.03
BLS verifyMultipleSignatures - same message - 3 - blst 962.83 us/op 939.68 us/op 1.02
BLS verifyMultipleSignatures - same message - 8 - blst 1.0916 ms/op 1.0682 ms/op 1.02
BLS verifyMultipleSignatures - same message - 32 - blst 1.7127 ms/op 1.6755 ms/op 1.02
BLS verifyMultipleSignatures - same message - 64 - blst 2.5407 ms/op 2.4910 ms/op 1.02
BLS verifyMultipleSignatures - same message - 128 - blst 4.2048 ms/op 4.0876 ms/op 1.03
BLS aggregatePubkeys 32 - blst 19.833 us/op 19.290 us/op 1.03
BLS aggregatePubkeys 128 - blst 71.451 us/op 70.464 us/op 1.01
getSlashingsAndExits - default max 41.186 us/op 38.384 us/op 1.07
getSlashingsAndExits - 2k 329.71 us/op 333.21 us/op 0.99
proposeBlockBody type=full, size=empty 1.1141 ms/op 622.54 us/op 1.79
isKnown best case - 1 super set check 165.00 ns/op 165.00 ns/op 1.00
isKnown normal case - 2 super set checks 163.00 ns/op 157.00 ns/op 1.04
isKnown worse case - 16 super set checks 180.00 ns/op 156.00 ns/op 1.15
validate api signedAggregateAndProof - struct 1.4675 ms/op 1.5164 ms/op 0.97
validate gossip signedAggregateAndProof - struct 1.4971 ms/op 1.5110 ms/op 0.99
batch validate gossip attestation - vc 640000 - chunk 32 124.71 us/op 123.71 us/op 1.01
batch validate gossip attestation - vc 640000 - chunk 64 104.67 us/op 106.64 us/op 0.98
batch validate gossip attestation - vc 640000 - chunk 128 90.462 us/op 95.297 us/op 0.95
batch validate gossip attestation - vc 640000 - chunk 256 95.924 us/op 93.394 us/op 1.03
bytes32 toHexString 296.00 ns/op 284.00 ns/op 1.04
bytes32 Buffer.toString(hex) 166.00 ns/op 165.00 ns/op 1.01
bytes32 Buffer.toString(hex) from Uint8Array 242.00 ns/op 239.00 ns/op 1.01
bytes32 Buffer.toString(hex) + 0x 166.00 ns/op 167.00 ns/op 0.99
Return object 10000 times 0.21660 ns/op 0.20940 ns/op 1.03
Throw Error 10000 times 3.4896 us/op 3.3492 us/op 1.04
toHex 103.60 ns/op 96.266 ns/op 1.08
Buffer.from 90.254 ns/op 86.735 ns/op 1.04
shared Buffer 61.804 ns/op 61.677 ns/op 1.00
fastMsgIdFn sha256 / 200 bytes 1.4750 us/op 1.4520 us/op 1.02
fastMsgIdFn h32 xxhash / 200 bytes 152.00 ns/op 155.00 ns/op 0.98
fastMsgIdFn h64 xxhash / 200 bytes 199.00 ns/op 199.00 ns/op 1.00
fastMsgIdFn sha256 / 1000 bytes 4.8350 us/op 4.7140 us/op 1.03
fastMsgIdFn h32 xxhash / 1000 bytes 244.00 ns/op 245.00 ns/op 1.00
fastMsgIdFn h64 xxhash / 1000 bytes 257.00 ns/op 245.00 ns/op 1.05
fastMsgIdFn sha256 / 10000 bytes 42.855 us/op 41.716 us/op 1.03
fastMsgIdFn h32 xxhash / 10000 bytes 1.2800 us/op 1.2700 us/op 1.01
fastMsgIdFn h64 xxhash / 10000 bytes 841.00 ns/op 827.00 ns/op 1.02
send data - 1000 256B messages 4.0975 ms/op 3.9901 ms/op 1.03
send data - 1000 512B messages 5.2260 ms/op 5.0736 ms/op 1.03
send data - 1000 1024B messages 5.8087 ms/op 5.3044 ms/op 1.10
send data - 1000 1200B messages 6.1515 ms/op 5.9965 ms/op 1.03
send data - 1000 2048B messages 9.4395 ms/op 11.908 ms/op 0.79
send data - 1000 4096B messages 35.523 ms/op 54.708 ms/op 0.65
send data - 1000 16384B messages 258.09 ms/op 293.57 ms/op 0.88
send data - 1000 65536B messages 1.6566 s/op 1.8383 s/op 0.90
enrSubnets - fastDeserialize 64 bits 698.00 ns/op 750.00 ns/op 0.93
enrSubnets - ssz BitVector 64 bits 256.00 ns/op 252.00 ns/op 1.02
enrSubnets - fastDeserialize 4 bits 92.000 ns/op 104.00 ns/op 0.88
enrSubnets - ssz BitVector 4 bits 259.00 ns/op 264.00 ns/op 0.98
prioritizePeers score -10:0 att 32-0.1 sync 2-0 188.92 us/op 199.21 us/op 0.95
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 216.87 us/op 224.39 us/op 0.97
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 341.45 us/op 325.65 us/op 1.05
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 550.41 us/op 579.22 us/op 0.95
prioritizePeers score 0:0 att 64-1 sync 4-1 703.92 us/op 674.58 us/op 1.04
archive index / 1 slot / archive root index lookup 21.280 us/op 17.096 us/op 1.24
archive index / 1 slot / archive block lookup, decode and hash 2.6139 ms/op 2.6950 ms/op 0.97
archive index / 1 slots / 1 columns / legacy 25.684 us/op 23.034 us/op 1.12
archive index / 1 slots / 1 columns / flat files 177.43 us/op 160.43 us/op 1.11
archive index / 1 slots / 8 columns / legacy 87.459 us/op 281.57 us/op 0.31
archive index / 1 slots / 8 columns / flat files 369.97 us/op 360.85 us/op 1.03
archive index / 1 slots / 128 columns / legacy 9.7230 ms/op 9.2573 ms/op 1.05
archive index / 1 slots / 128 columns / flat files 5.3028 ms/op 4.4689 ms/op 1.19
archive index / 8 slots / 1 columns / legacy 190.19 us/op 173.24 us/op 1.10
archive index / 8 slots / 1 columns / flat files 1.3130 ms/op 1.1080 ms/op 1.18
archive index / 8 slots / 8 columns / legacy 6.4700 ms/op 2.1946 ms/op 2.95
archive index / 8 slots / 8 columns / flat files 3.0551 ms/op 2.8030 ms/op 1.09
archive index / 8 slots / 128 columns / legacy 79.203 ms/op 63.773 ms/op 1.24
archive index / 8 slots / 128 columns / flat files 225.88 ms/op 232.05 ms/op 0.97
head state / 1 slot / archive root index lookup 22.087 us/op 16.028 us/op 1.38
head state / 1 slot / archive block lookup, decode and hash 2.6061 ms/op 2.6790 ms/op 0.97
head state / 1 slots / 1 columns / legacy 22.709 us/op 21.952 us/op 1.03
head state / 1 slots / 1 columns / flat files 150.22 us/op 115.69 us/op 1.30
head state / 1 slots / 8 columns / legacy 79.439 us/op 73.431 us/op 1.08
head state / 1 slots / 8 columns / flat files 333.34 us/op 314.36 us/op 1.06
head state / 1 slots / 128 columns / legacy 7.4612 ms/op 8.2863 ms/op 0.90
head state / 1 slots / 128 columns / flat files 4.3142 ms/op 4.5691 ms/op 0.94
head state / 8 slots / 1 columns / legacy 187.44 us/op 172.91 us/op 1.08
head state / 8 slots / 1 columns / flat files 1.1290 ms/op 933.51 us/op 1.21
head state / 8 slots / 8 columns / legacy 659.43 us/op 752.15 us/op 0.88
head state / 8 slots / 8 columns / flat files 2.7889 ms/op 2.4293 ms/op 1.15
head state / 8 slots / 128 columns / legacy 80.654 ms/op 99.995 ms/op 0.81
head state / 8 slots / 128 columns / flat files 236.76 ms/op 229.96 ms/op 1.03
array of 16000 items push then shift 1.1925 us/op 1.2911 us/op 0.92
LinkedList of 16000 items push then shift 7.0110 ns/op 6.7310 ns/op 1.04
array of 16000 items push then pop 75.285 ns/op 76.163 ns/op 0.99
LinkedList of 16000 items push then pop 5.6470 ns/op 5.8320 ns/op 0.97
array of 24000 items push then shift 1.7625 us/op 1.9129 us/op 0.92
LinkedList of 24000 items push then shift 6.6410 ns/op 6.4200 ns/op 1.03
array of 24000 items push then pop 107.90 ns/op 104.22 ns/op 1.04
LinkedList of 24000 items push then pop 5.7310 ns/op 5.8810 ns/op 0.97
intersect bitArray bitLen 8 3.6500 ns/op 3.8190 ns/op 0.96
intersect array and set length 8 27.483 ns/op 29.213 ns/op 0.94
intersect bitArray bitLen 128 21.925 ns/op 23.091 ns/op 0.95
intersect array and set length 128 465.81 ns/op 492.67 ns/op 0.95
bitArray.getTrueBitIndexes() bitLen 128 883.00 ns/op 913.00 ns/op 0.97
bitArray.getTrueBitIndexes() bitLen 248 1.6100 us/op 1.6630 us/op 0.97
bitArray.getTrueBitIndexes() bitLen 512 3.3440 us/op 3.4400 us/op 0.97
Full columns - reconstruct all 6 blobs 169.84 us/op 161.30 us/op 1.05
Full columns - reconstruct half of the blobs out of 6 62.036 us/op 70.034 us/op 0.89
Full columns - reconstruct single blob out of 6 33.607 us/op 34.265 us/op 0.98
Half columns - reconstruct all 6 blobs 381.39 ms/op 375.03 ms/op 1.02
Half columns - reconstruct half of the blobs out of 6 188.68 ms/op 188.46 ms/op 1.00
Half columns - reconstruct single blob out of 6 68.131 ms/op 66.142 ms/op 1.03
Set add up to 64 items then delete first 2.2864 us/op 1.6442 us/op 1.39
OrderedSet add up to 64 items then delete first 3.6142 us/op 2.4954 us/op 1.45
Set add up to 64 items then delete last 2.5182 us/op 1.8707 us/op 1.35
OrderedSet add up to 64 items then delete last 3.4578 us/op 2.7500 us/op 1.26
Set add up to 64 items then delete middle 2.2009 us/op 1.8611 us/op 1.18
OrderedSet add up to 64 items then delete middle 4.9640 us/op 4.1789 us/op 1.19
Set add up to 128 items then delete first 4.3723 us/op 3.6997 us/op 1.18
OrderedSet add up to 128 items then delete first 6.8017 us/op 5.7013 us/op 1.19
Set add up to 128 items then delete last 4.0598 us/op 3.5395 us/op 1.15
OrderedSet add up to 128 items then delete last 5.9492 us/op 5.2497 us/op 1.13
Set add up to 128 items then delete middle 3.9656 us/op 3.5775 us/op 1.11
OrderedSet add up to 128 items then delete middle 11.934 us/op 10.978 us/op 1.09
Set add up to 256 items then delete first 8.0371 us/op 7.6045 us/op 1.06
OrderedSet add up to 256 items then delete first 12.446 us/op 11.450 us/op 1.09
Set add up to 256 items then delete last 7.7254 us/op 7.1719 us/op 1.08
OrderedSet add up to 256 items then delete last 11.771 us/op 10.875 us/op 1.08
Set add up to 256 items then delete middle 7.7565 us/op 7.2151 us/op 1.08
OrderedSet add up to 256 items then delete middle 35.658 us/op 33.973 us/op 1.05
runFastConfirmationRules vc:100000 bc:96 eq:0 4.8611 ms/op 4.5318 ms/op 1.07
runFastConfirmationRules vc:600000 bc:96 eq:0 35.479 ms/op 33.858 ms/op 1.05
runFastConfirmationRules vc:1000000 bc:96 eq:0 53.138 ms/op 57.811 ms/op 0.92
runFastConfirmationRules vc:600000 bc:320 eq:0 32.111 ms/op 33.936 ms/op 0.95
runFastConfirmationRules vc:100000 bc:96 eq:1000 1.0604 s/op 1.1232 s/op 0.94
pass gossip attestations to forkchoice per slot 2.6643 ms/op 2.5425 ms/op 1.05
forkChoice updateHead vc 100000 bc 64 eq 0 422.39 us/op 429.78 us/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 0 2.5112 ms/op 2.5681 ms/op 0.98
forkChoice updateHead vc 1000000 bc 64 eq 0 4.1872 ms/op 4.2218 ms/op 0.99
forkChoice updateHead vc 600000 bc 320 eq 0 2.5122 ms/op 2.5015 ms/op 1.00
forkChoice updateHead vc 600000 bc 1200 eq 0 2.5953 ms/op 2.5559 ms/op 1.02
forkChoice updateHead vc 600000 bc 7200 eq 0 2.5853 ms/op 2.9977 ms/op 0.86
forkChoice updateHead vc 600000 bc 64 eq 1000 2.2386 ms/op 2.5993 ms/op 0.86
forkChoice updateHead vc 600000 bc 64 eq 10000 2.3481 ms/op 2.6337 ms/op 0.89
forkChoice updateHead vc 600000 bc 64 eq 300000 6.4492 ms/op 6.9802 ms/op 0.92
forkChoice updateHead vc 600000 bc 64 eq 0 gloas boosted 2.2923 ms/op 2.4995 ms/op 0.92
computeDeltas 1400000 validators 0% inactive 10.975 ms/op 12.384 ms/op 0.89
computeDeltas 1400000 validators 10% inactive 10.342 ms/op 11.953 ms/op 0.87
computeDeltas 1400000 validators 20% inactive 9.6821 ms/op 11.295 ms/op 0.86
computeDeltas 1400000 validators 50% inactive 7.9848 ms/op 9.0310 ms/op 0.88
computeDeltas 2100000 validators 0% inactive 16.508 ms/op 18.815 ms/op 0.88
computeDeltas 2100000 validators 10% inactive 15.767 ms/op 17.975 ms/op 0.88
computeDeltas 2100000 validators 20% inactive 15.233 ms/op 16.768 ms/op 0.91
computeDeltas 2100000 validators 50% inactive 12.480 ms/op 11.395 ms/op 1.10
altair processAttestation - 250000 vs - 7PWei normalcase 2.0010 ms/op 1.5342 ms/op 1.30
altair processAttestation - 250000 vs - 7PWei worstcase 3.2776 ms/op 2.3748 ms/op 1.38
altair processAttestation - setStatus - 1/6 committees join 93.754 us/op 100.01 us/op 0.94
altair processAttestation - setStatus - 1/3 committees join 189.22 us/op 191.65 us/op 0.99
altair processAttestation - setStatus - 1/2 committees join 266.62 us/op 278.66 us/op 0.96
altair processAttestation - setStatus - 2/3 committees join 339.21 us/op 359.86 us/op 0.94
altair processAttestation - setStatus - 4/5 committees join 498.36 us/op 506.73 us/op 0.98
altair processAttestation - setStatus - 100% committees join 580.34 us/op 597.49 us/op 0.97
altair processBlock - 250000 vs - 7PWei normalcase 4.5788 ms/op 3.2729 ms/op 1.40
altair processBlock - 250000 vs - 7PWei normalcase hashState 23.059 ms/op 20.987 ms/op 1.10
altair processBlock - 250000 vs - 7PWei worstcase 23.210 ms/op 21.970 ms/op 1.06
altair processBlock - 250000 vs - 7PWei worstcase hashState 55.852 ms/op 49.803 ms/op 1.12
phase0 processBlock - 250000 vs - 7PWei normalcase 1.3223 ms/op 1.2645 ms/op 1.05
phase0 processBlock - 250000 vs - 7PWei worstcase 18.765 ms/op 19.393 ms/op 0.97
altair processEth1Data - 250000 vs - 7PWei normalcase 303.76 us/op 300.18 us/op 1.01
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 3.1950 us/op 3.5490 us/op 0.90
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 19.608 us/op 21.600 us/op 0.91
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 5.8750 us/op 6.1090 us/op 0.96
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.8060 us/op 4.8870 us/op 0.78
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 91.772 us/op 102.63 us/op 0.89
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.4644 ms/op 1.3818 ms/op 1.06
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.9297 ms/op 1.8309 ms/op 1.05
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.9119 ms/op 1.7970 ms/op 1.06
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.8268 ms/op 3.3612 ms/op 1.14
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.2411 ms/op 2.0710 ms/op 1.08
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.2000 ms/op 3.6782 ms/op 1.14
Tree 40 250000 create 328.45 ms/op 303.06 ms/op 1.08
Tree 40 250000 get(125000) 98.252 ns/op 98.393 ns/op 1.00
Tree 40 250000 set(125000) 1.0383 us/op 1.0426 us/op 1.00
Tree 40 250000 toArray() 10.055 ms/op 9.5534 ms/op 1.05
Tree 40 250000 iterate all - toArray() + loop 10.088 ms/op 9.5833 ms/op 1.05
Tree 40 250000 iterate all - get(i) 40.191 ms/op 33.637 ms/op 1.19
Array 250000 create 2.4217 ms/op 2.3022 ms/op 1.05
Array 250000 clone - spread 774.59 us/op 752.72 us/op 1.03
Array 250000 get(125000) 0.30400 ns/op 0.29100 ns/op 1.04
Array 250000 set(125000) 0.30800 ns/op 0.29500 ns/op 1.04
Array 250000 iterate all - loop 58.574 us/op 56.446 us/op 1.04
phase0 afterProcessEpoch - 250000 vs - 7PWei 40.646 ms/op 57.633 ms/op 0.71
Array.fill - length 1000000 4.3060 ms/op 4.0299 ms/op 1.07
Array push - length 1000000 15.000 ms/op 13.210 ms/op 1.14
Array.get 0.21230 ns/op 0.20074 ns/op 1.06
Uint8Array.get 0.22867 ns/op 0.25890 ns/op 0.88
phase0 beforeProcessEpoch - 250000 vs - 7PWei 14.509 ms/op 12.961 ms/op 1.12
altair processEpoch - mainnet_e81889 260.93 ms/op 199.40 ms/op 1.31
mainnet_e81889 - altair beforeProcessEpoch 34.783 ms/op 37.367 ms/op 0.93
mainnet_e81889 - altair processJustificationAndFinalization 5.2160 us/op 4.5250 us/op 1.15
mainnet_e81889 - altair processInactivityUpdates 3.5672 ms/op 3.4114 ms/op 1.05
mainnet_e81889 - altair processRewardsAndPenalties 18.068 ms/op 16.460 ms/op 1.10
mainnet_e81889 - altair processRegistryUpdates 591.00 ns/op 556.00 ns/op 1.06
mainnet_e81889 - altair processSlashings 148.00 ns/op 145.00 ns/op 1.02
mainnet_e81889 - altair processEth1DataReset 147.00 ns/op 142.00 ns/op 1.04
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.7360 ms/op 1.6515 ms/op 1.05
mainnet_e81889 - altair processSlashingsReset 714.00 ns/op 683.00 ns/op 1.05
mainnet_e81889 - altair processRandaoMixesReset 943.00 ns/op 893.00 ns/op 1.06
mainnet_e81889 - altair processHistoricalRootsUpdate 146.00 ns/op 144.00 ns/op 1.01
mainnet_e81889 - altair processParticipationFlagUpdates 464.00 ns/op 453.00 ns/op 1.02
mainnet_e81889 - altair processSyncCommitteeUpdates 118.00 ns/op 117.00 ns/op 1.01
mainnet_e81889 - altair afterProcessEpoch 44.360 ms/op 41.095 ms/op 1.08
capella processEpoch - mainnet_e217614 811.10 ms/op 614.64 ms/op 1.32
mainnet_e217614 - capella beforeProcessEpoch 75.217 ms/op 64.309 ms/op 1.17
mainnet_e217614 - capella processJustificationAndFinalization 5.1340 us/op 4.4330 us/op 1.16
mainnet_e217614 - capella processInactivityUpdates 11.057 ms/op 10.936 ms/op 1.01
mainnet_e217614 - capella processRewardsAndPenalties 95.872 ms/op 92.161 ms/op 1.04
mainnet_e217614 - capella processRegistryUpdates 4.5950 us/op 4.4140 us/op 1.04
mainnet_e217614 - capella processSlashings 143.00 ns/op 146.00 ns/op 0.98
mainnet_e217614 - capella processEth1DataReset 138.00 ns/op 146.00 ns/op 0.95
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.2457 ms/op 5.1780 ms/op 0.82
mainnet_e217614 - capella processSlashingsReset 695.00 ns/op 664.00 ns/op 1.05
mainnet_e217614 - capella processRandaoMixesReset 976.00 ns/op 890.00 ns/op 1.10
mainnet_e217614 - capella processHistoricalRootsUpdate 142.00 ns/op 143.00 ns/op 0.99
mainnet_e217614 - capella processParticipationFlagUpdates 447.00 ns/op 444.00 ns/op 1.01
mainnet_e217614 - capella afterProcessEpoch 109.14 ms/op 108.29 ms/op 1.01
phase0 processEpoch - mainnet_e58758 242.33 ms/op 192.36 ms/op 1.26
mainnet_e58758 - phase0 beforeProcessEpoch 49.492 ms/op 37.830 ms/op 1.31
mainnet_e58758 - phase0 processJustificationAndFinalization 5.4810 us/op 4.5410 us/op 1.21
mainnet_e58758 - phase0 processRewardsAndPenalties 17.776 ms/op 15.546 ms/op 1.14
mainnet_e58758 - phase0 processRegistryUpdates 2.2810 us/op 2.1920 us/op 1.04
mainnet_e58758 - phase0 processSlashings 142.00 ns/op 145.00 ns/op 0.98
mainnet_e58758 - phase0 processEth1DataReset 138.00 ns/op 139.00 ns/op 0.99
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 846.60 us/op 821.41 us/op 1.03
mainnet_e58758 - phase0 processSlashingsReset 822.00 ns/op 796.00 ns/op 1.03
mainnet_e58758 - phase0 processRandaoMixesReset 1.0730 us/op 901.00 ns/op 1.19
mainnet_e58758 - phase0 processHistoricalRootsUpdate 155.00 ns/op 141.00 ns/op 1.10
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.0340 us/op 914.00 ns/op 1.13
mainnet_e58758 - phase0 afterProcessEpoch 33.030 ms/op 32.645 ms/op 1.01
phase0 processEffectiveBalanceUpdates - 250000 normalcase 927.64 us/op 998.14 us/op 0.93
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.8970 ms/op 1.6668 ms/op 1.14
gloas processInactivityUpdates - 250000 inactivity leak all eligible missed target 9.2808 ms/op 8.9377 ms/op 1.04
phase0 processRegistryUpdates - 250000 normalcase 2.4310 us/op 2.6560 us/op 0.92
phase0 processRegistryUpdates - 250000 badcase_full_deposits 146.74 us/op 148.94 us/op 0.99
phase0 processRegistryUpdates - 250000 worstcase 0.5 50.584 ms/op 47.669 ms/op 1.06
altair processRewardsAndPenalties - 250000 normalcase 14.457 ms/op 14.024 ms/op 1.03
altair processRewardsAndPenalties - 250000 worstcase 14.354 ms/op 13.718 ms/op 1.05
phase0 getAttestationDeltas - 250000 normalcase 5.7249 ms/op 5.5054 ms/op 1.04
phase0 getAttestationDeltas - 250000 worstcase 6.0937 ms/op 5.5299 ms/op 1.10
phase0 processSlashings - 250000 worstcase 57.660 us/op 70.205 us/op 0.82
altair processSyncCommitteeUpdates - 250000 9.5044 ms/op 9.8196 ms/op 0.97
BeaconState.hashTreeRoot - No change 164.00 ns/op 178.00 ns/op 0.92
BeaconState.hashTreeRoot - 1 full validator 78.832 us/op 63.408 us/op 1.24
BeaconState.hashTreeRoot - 32 full validator 974.02 us/op 667.22 us/op 1.46
BeaconState.hashTreeRoot - 512 full validator 7.6432 ms/op 7.1109 ms/op 1.07
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 114.42 us/op 75.670 us/op 1.51
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.6549 ms/op 1.0720 ms/op 1.54
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 15.319 ms/op 14.421 ms/op 1.06
BeaconState.hashTreeRoot - 1 balances 76.368 us/op 60.152 us/op 1.27
BeaconState.hashTreeRoot - 32 balances 894.12 us/op 592.70 us/op 1.51
BeaconState.hashTreeRoot - 512 balances 5.1355 ms/op 4.9233 ms/op 1.04
BeaconState.hashTreeRoot - 250000 balances 144.53 ms/op 112.57 ms/op 1.28
aggregationBits - 2048 els - zipIndexesInBitList 19.017 us/op 18.645 us/op 1.02
regular array get 100000 times 21.853 us/op 22.405 us/op 0.98
wrappedArray get 100000 times 21.807 us/op 22.406 us/op 0.97
arrayWithProxy get 100000 times 9.1459 ms/op 10.347 ms/op 0.88
ssz.Root.equals 20.652 ns/op 21.218 ns/op 0.97
byteArrayEquals 20.207 ns/op 21.040 ns/op 0.96
Buffer.compare 8.3950 ns/op 8.7480 ns/op 0.96
processSlot - 1 slots 9.6890 us/op 8.1690 us/op 1.19
processSlot - 32 slots 2.2422 ms/op 1.6243 ms/op 1.38
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.0177 ms/op 2.6748 ms/op 1.13
getCommitteeAssignments - req 1 vs - 250000 vc 1.7248 ms/op 1.6652 ms/op 1.04
getCommitteeAssignments - req 100 vs - 250000 vc 3.5375 ms/op 3.3943 ms/op 1.04
getCommitteeAssignments - req 1000 vs - 250000 vc 3.7900 ms/op 3.6437 ms/op 1.04
findModifiedValidators - 10000 modified validators 734.39 ms/op 804.58 ms/op 0.91
findModifiedValidators - 1000 modified validators 577.19 ms/op 492.35 ms/op 1.17
findModifiedValidators - 100 modified validators 296.12 ms/op 341.94 ms/op 0.87
findModifiedValidators - 10 modified validators 301.87 ms/op 296.70 ms/op 1.02
findModifiedValidators - 1 modified validators 225.77 ms/op 177.71 ms/op 1.27
findModifiedValidators - no difference 209.69 ms/op 217.90 ms/op 0.96
migrate state 1500000 validators, 3400 modified, 2000 new 3.6479 s/op 2.6768 s/op 1.36
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.5100 ns/op 3.6700 ns/op 0.96
state getBlockRootAtSlot - 250000 vs - 7PWei 443.56 ns/op 309.37 ns/op 1.43
computeProposerIndex 100000 validators 1.4777 ms/op 1.3553 ms/op 1.09
getNextSyncCommitteeIndices 1000 validators 3.0161 ms/op 2.8672 ms/op 1.05
getNextSyncCommitteeIndices 10000 validators 27.432 ms/op 25.853 ms/op 1.06
getNextSyncCommitteeIndices 100000 validators 92.844 ms/op 88.010 ms/op 1.05
computeProposers - vc 250000 567.88 us/op 586.16 us/op 0.97
computeEpochShuffling - vc 250000 40.549 ms/op 38.189 ms/op 1.06
getNextSyncCommittee - vc 250000 9.7413 ms/op 9.5178 ms/op 1.02
nodejs block root to RootHex using toHex 98.815 ns/op 96.145 ns/op 1.03
nodejs block root to RootHex using toRootHex 65.734 ns/op 64.684 ns/op 1.02
nodejs fromHex(blob) 953.01 us/op 826.78 us/op 1.15
nodejs fromHexInto(blob) 648.07 us/op 633.20 us/op 1.02
nodejs block root to RootHex using the deprecated toHexString 656.15 ns/op 645.29 ns/op 1.02
nodejs byteArrayEquals 32 bytes (block root) 26.684 ns/op 25.916 ns/op 1.03
nodejs byteArrayEquals 48 bytes (pubkey) 38.578 ns/op 37.291 ns/op 1.03
nodejs byteArrayEquals 96 bytes (signature) 36.250 ns/op 39.276 ns/op 0.92
nodejs byteArrayEquals 1024 bytes 44.155 ns/op 46.394 ns/op 0.95
nodejs byteArrayEquals 131072 bytes (blob) 1.7917 us/op 1.7439 us/op 1.03
browser block root to RootHex using toHex 148.32 ns/op 145.82 ns/op 1.02
browser block root to RootHex using toRootHex 134.50 ns/op 129.85 ns/op 1.04
browser fromHex(blob) 1.9038 ms/op 1.8256 ms/op 1.04
browser fromHexInto(blob) 646.75 us/op 637.18 us/op 1.02
browser block root to RootHex using the deprecated toHexString 428.01 ns/op 419.29 ns/op 1.02
browser byteArrayEquals 32 bytes (block root) 29.210 ns/op 28.210 ns/op 1.04
browser byteArrayEquals 48 bytes (pubkey) 40.965 ns/op 39.831 ns/op 1.03
browser byteArrayEquals 96 bytes (signature) 76.217 ns/op 74.451 ns/op 1.02
browser byteArrayEquals 1024 bytes 773.89 ns/op 754.64 ns/op 1.03
browser byteArrayEquals 131072 bytes (blob) 98.372 us/op 95.307 us/op 1.03

by benchmarkbot/action

@matthewkeil matthewkeil moved this from In Progress to Awaiting Author in Lodestar Team Coordination Sep 14, 2026
@nflaig
nflaig merged commit 1dc17ce into unstable Sep 14, 2026
32 of 34 checks passed
@nflaig
nflaig deleted the nflaig/external-signer-gloas-versioning branch September 14, 2026 10:52
@github-project-automation github-project-automation Bot moved this from Awaiting Author to Done in Lodestar Team Coordination Sep 14, 2026
@wemeetagain

Copy link
Copy Markdown
Member

🎉 This PR is included in v1.49.0 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

4 participants