Skip to content

Commit

Permalink
refactor: repurpose --builder flag to alias maxprofit builder.selecti…
Browse files Browse the repository at this point in the history
…on and turn builder off by default (#6081)

* refac: repurpose --builder flag to alias maxprofit builder.selection and turn builder off by default

* log init options for validator

* Update packages/cli/src/cmds/validator/options.ts

Co-authored-by: Nico Flaig <nflaig@protonmail.com>

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>
  • Loading branch information
g11tech and nflaig authored Nov 3, 2023
1 parent 618895c commit a311a8b
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 6 deletions.
12 changes: 10 additions & 2 deletions packages/cli/src/cmds/validator/handler.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
import path from "node:path";
import {setMaxListeners} from "node:events";
import {LevelDbController} from "@lodestar/db";
import {ProcessShutdownCallback, SlashingProtection, Validator, ValidatorProposerConfig} from "@lodestar/validator";
import {
ProcessShutdownCallback,
SlashingProtection,
Validator,
ValidatorProposerConfig,
defaultOptions,
} from "@lodestar/validator";
import {routes} from "@lodestar/api";
import {getMetrics, MetricsRegister} from "@lodestar/validator";
import {
Expand Down Expand Up @@ -216,7 +222,9 @@ function getProposerConfigFromArgs(
feeRecipient: args.suggestedFeeRecipient ? parseFeeRecipient(args.suggestedFeeRecipient) : undefined,
builder: {
gasLimit: args.defaultGasLimit,
selection: parseBuilderSelection(args["builder.selection"]),
selection: parseBuilderSelection(
args["builder.selection"] ?? (args["builder"] ? defaultOptions.builderAliasSelection : undefined)
),
},
};

Expand Down
5 changes: 2 additions & 3 deletions packages/cli/src/cmds/validator/options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -233,14 +233,13 @@ export const validatorOptions: CliCommandOptions<IValidatorCliArgs> = {

builder: {
type: "boolean",
description: "Enable execution payload production via a builder for better rewards",
description: `An alias for \`--builder.selection ${defaultOptions.builderAliasSelection}\` for the builder flow, ignored if \`--builder.selection\` is explicitly provided`,
group: "builder",
deprecated: "enabling or disabling builder flow is now solely managed by `builder.selection` flag",
},

"builder.selection": {
type: "string",
description: "Default builder block selection strategy: `maxprofit`, `builderalways`, or `builderonly`",
description: "Builder block selection strategy `maxprofit`, `builderalways`, `builderonly` or `executiononly`",
defaultDescription: `\`${defaultOptions.builderSelection}\``,
group: "builder",
},
Expand Down
3 changes: 2 additions & 1 deletion packages/validator/src/services/validatorStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,8 @@ type ValidatorData = ProposerConfig & {
export const defaultOptions = {
suggestedFeeRecipient: "0x0000000000000000000000000000000000000000",
defaultGasLimit: 30_000_000,
builderSelection: routes.validator.BuilderSelection.MaxProfit,
builderSelection: routes.validator.BuilderSelection.ExecutionOnly,
builderAliasSelection: routes.validator.BuilderSelection.MaxProfit,
// turn it off by default, turn it back on once other clients support v3 api
useProduceBlockV3: false,
};
Expand Down
12 changes: 12 additions & 0 deletions packages/validator/src/validator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,18 @@ export class Validator {
await assertEqualGenesis(opts, genesis);
logger.info("Verified connected beacon node and validator have the same genesisValidatorRoot");

const {useProduceBlockV3, valProposerConfig} = opts;
const defaultBuilderSelection =
valProposerConfig?.defaultConfig.builder?.selection ?? defaultOptions.builderSelection;
const strictFeeRecipientCheck = valProposerConfig?.defaultConfig.strictFeeRecipientCheck ?? false;
const suggestedFeeRecipient = valProposerConfig?.defaultConfig.feeRecipient ?? defaultOptions.suggestedFeeRecipient;
logger.info("Initializing validator", {
useProduceBlockV3,
defaultBuilderSelection,
suggestedFeeRecipient,
strictFeeRecipientCheck,
});

return Validator.init(opts, genesis, metrics);
}

Expand Down

1 comment on commit a311a8b

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for some benchmarks.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold.

Benchmark suite Current: a311a8b Previous: 618895c Ratio
forkChoice updateHead vc 600000 bc 64 eq 300000 55.077 ms/op 12.161 ms/op 4.53

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: a311a8b Previous: 618895c Ratio
altair processAttestation - 250000 vs - 7PWei normalcase 3.9631 ms/op 12.783 ms/op 0.31
Full benchmark results
Benchmark suite Current: a311a8b Previous: 618895c Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 526.27 us/op 492.96 us/op 1.07
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 87.475 us/op 51.187 us/op 1.71
BLS verify - blst-native 1.3281 ms/op 1.1275 ms/op 1.18
BLS verifyMultipleSignatures 3 - blst-native 2.8473 ms/op 2.4156 ms/op 1.18
BLS verifyMultipleSignatures 8 - blst-native 6.0661 ms/op 5.3997 ms/op 1.12
BLS verifyMultipleSignatures 32 - blst-native 22.138 ms/op 19.694 ms/op 1.12
BLS verifyMultipleSignatures 64 - blst-native 43.618 ms/op 38.996 ms/op 1.12
BLS verifyMultipleSignatures 128 - blst-native 88.147 ms/op 77.032 ms/op 1.14
BLS deserializing 10000 signatures 935.97 ms/op 823.42 ms/op 1.14
BLS deserializing 100000 signatures 9.4592 s/op 8.2348 s/op 1.15
BLS verifyMultipleSignatures - same message - 3 - blst-native 1.3861 ms/op 1.1410 ms/op 1.21
BLS verifyMultipleSignatures - same message - 8 - blst-native 1.5652 ms/op 1.2891 ms/op 1.21
BLS verifyMultipleSignatures - same message - 32 - blst-native 2.4265 ms/op 2.0193 ms/op 1.20
BLS verifyMultipleSignatures - same message - 64 - blst-native 3.5590 ms/op 3.0115 ms/op 1.18
BLS verifyMultipleSignatures - same message - 128 - blst-native 7.2337 ms/op 4.9875 ms/op 1.45
BLS aggregatePubkeys 32 - blst-native 28.454 us/op 23.089 us/op 1.23
BLS aggregatePubkeys 128 - blst-native 105.23 us/op 89.289 us/op 1.18
getAttestationsForBlock 43.556 ms/op 22.521 ms/op 1.93
isKnown best case - 1 super set check 519.00 ns/op 346.00 ns/op 1.50
isKnown normal case - 2 super set checks 438.00 ns/op 324.00 ns/op 1.35
isKnown worse case - 16 super set checks 440.00 ns/op 333.00 ns/op 1.32
CheckpointStateCache - add get delete 6.5920 us/op 3.7620 us/op 1.75
validate api signedAggregateAndProof - struct 2.8646 ms/op 2.4675 ms/op 1.16
validate gossip signedAggregateAndProof - struct 2.8993 ms/op 2.5021 ms/op 1.16
validate gossip attestation - vc 640000 1.4152 ms/op 1.1822 ms/op 1.20
batch validate gossip attestation - vc 640000 - chunk 32 167.61 us/op 138.52 us/op 1.21
batch validate gossip attestation - vc 640000 - chunk 64 145.37 us/op 123.92 us/op 1.17
batch validate gossip attestation - vc 640000 - chunk 128 135.34 us/op 118.23 us/op 1.14
batch validate gossip attestation - vc 640000 - chunk 256 143.28 us/op 114.97 us/op 1.25
pickEth1Vote - no votes 1.3652 ms/op 911.02 us/op 1.50
pickEth1Vote - max votes 10.548 ms/op 7.0477 ms/op 1.50
pickEth1Vote - Eth1Data hashTreeRoot value x2048 19.183 ms/op 14.173 ms/op 1.35
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 25.918 ms/op 29.806 ms/op 0.87
pickEth1Vote - Eth1Data fastSerialize value x2048 714.00 us/op 478.38 us/op 1.49
pickEth1Vote - Eth1Data fastSerialize tree x2048 6.0616 ms/op 3.6198 ms/op 1.67
bytes32 toHexString 565.00 ns/op 503.00 ns/op 1.12
bytes32 Buffer.toString(hex) 312.00 ns/op 304.00 ns/op 1.03
bytes32 Buffer.toString(hex) from Uint8Array 481.00 ns/op 438.00 ns/op 1.10
bytes32 Buffer.toString(hex) + 0x 304.00 ns/op 320.00 ns/op 0.95
Object access 1 prop 0.16900 ns/op 0.22000 ns/op 0.77
Map access 1 prop 0.15100 ns/op 0.20100 ns/op 0.75
Object get x1000 7.7850 ns/op 5.5820 ns/op 1.39
Map get x1000 0.62900 ns/op 0.53600 ns/op 1.17
Object set x1000 56.591 ns/op 25.956 ns/op 2.18
Map set x1000 42.450 ns/op 17.877 ns/op 2.37
Return object 10000 times 0.26750 ns/op 0.24230 ns/op 1.10
Throw Error 10000 times 4.0297 us/op 2.8726 us/op 1.40
fastMsgIdFn sha256 / 200 bytes 3.4370 us/op 2.0260 us/op 1.70
fastMsgIdFn h32 xxhash / 200 bytes 327.00 ns/op 376.00 ns/op 0.87
fastMsgIdFn h64 xxhash / 200 bytes 361.00 ns/op 375.00 ns/op 0.96
fastMsgIdFn sha256 / 1000 bytes 11.817 us/op 6.0810 us/op 1.94
fastMsgIdFn h32 xxhash / 1000 bytes 454.00 ns/op 483.00 ns/op 0.94
fastMsgIdFn h64 xxhash / 1000 bytes 426.00 ns/op 420.00 ns/op 1.01
fastMsgIdFn sha256 / 10000 bytes 106.00 us/op 54.295 us/op 1.95
fastMsgIdFn h32 xxhash / 10000 bytes 2.0230 us/op 1.9340 us/op 1.05
fastMsgIdFn h64 xxhash / 10000 bytes 1.3980 us/op 1.2900 us/op 1.08
send data - 1000 256B messages 20.324 ms/op 16.177 ms/op 1.26
send data - 1000 512B messages 28.895 ms/op 18.252 ms/op 1.58
send data - 1000 1024B messages 43.369 ms/op 25.569 ms/op 1.70
send data - 1000 1200B messages 36.828 ms/op 27.020 ms/op 1.36
send data - 1000 2048B messages 43.996 ms/op 34.220 ms/op 1.29
send data - 1000 4096B messages 34.305 ms/op 28.406 ms/op 1.21
send data - 1000 16384B messages 113.80 ms/op 80.392 ms/op 1.42
send data - 1000 65536B messages 459.41 ms/op 402.37 ms/op 1.14
enrSubnets - fastDeserialize 64 bits 1.4050 us/op 1.3400 us/op 1.05
enrSubnets - ssz BitVector 64 bits 529.00 ns/op 574.00 ns/op 0.92
enrSubnets - fastDeserialize 4 bits 233.00 ns/op 283.00 ns/op 0.82
enrSubnets - ssz BitVector 4 bits 531.00 ns/op 528.00 ns/op 1.01
prioritizePeers score -10:0 att 32-0.1 sync 2-0 116.88 us/op 82.645 us/op 1.41
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 142.63 us/op 83.218 us/op 1.71
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 189.27 us/op 113.28 us/op 1.67
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 344.57 us/op 210.50 us/op 1.64
prioritizePeers score 0:0 att 64-1 sync 4-1 390.30 us/op 237.26 us/op 1.65
array of 16000 items push then shift 1.6769 us/op 1.3276 us/op 1.26
LinkedList of 16000 items push then shift 9.7530 ns/op 6.0610 ns/op 1.61
array of 16000 items push then pop 105.82 ns/op 70.253 ns/op 1.51
LinkedList of 16000 items push then pop 9.3560 ns/op 5.7870 ns/op 1.62
array of 24000 items push then shift 2.6603 us/op 1.9554 us/op 1.36
LinkedList of 24000 items push then shift 9.8860 ns/op 6.0310 ns/op 1.64
array of 24000 items push then pop 162.18 ns/op 131.04 ns/op 1.24
LinkedList of 24000 items push then pop 9.2190 ns/op 6.2370 ns/op 1.48
intersect bitArray bitLen 8 7.1610 ns/op 5.5450 ns/op 1.29
intersect array and set length 8 69.481 ns/op 46.869 ns/op 1.48
intersect bitArray bitLen 128 34.717 ns/op 26.989 ns/op 1.29
intersect array and set length 128 993.88 ns/op 639.77 ns/op 1.55
bitArray.getTrueBitIndexes() bitLen 128 1.7800 us/op 1.6490 us/op 1.08
bitArray.getTrueBitIndexes() bitLen 248 3.1410 us/op 2.4250 us/op 1.30
bitArray.getTrueBitIndexes() bitLen 512 5.7900 us/op 4.0410 us/op 1.43
Buffer.concat 32 items 1.0560 us/op 862.00 ns/op 1.23
Uint8Array.set 32 items 1.9420 us/op 1.4450 us/op 1.34
Set add up to 64 items then delete first 5.1282 us/op 1.7988 us/op 2.85
OrderedSet add up to 64 items then delete first 6.7759 us/op 2.7293 us/op 2.48
Set add up to 64 items then delete last 5.5969 us/op 2.0609 us/op 2.72
OrderedSet add up to 64 items then delete last 7.2667 us/op 3.3249 us/op 2.19
Set add up to 64 items then delete middle 5.5359 us/op 2.0589 us/op 2.69
OrderedSet add up to 64 items then delete middle 8.7835 us/op 4.3776 us/op 2.01
Set add up to 128 items then delete first 10.650 us/op 3.9122 us/op 2.72
OrderedSet add up to 128 items then delete first 14.239 us/op 5.8840 us/op 2.42
Set add up to 128 items then delete last 10.564 us/op 3.8404 us/op 2.75
OrderedSet add up to 128 items then delete last 14.561 us/op 6.0285 us/op 2.42
Set add up to 128 items then delete middle 10.576 us/op 3.9063 us/op 2.71
OrderedSet add up to 128 items then delete middle 19.368 us/op 11.203 us/op 1.73
Set add up to 256 items then delete first 20.566 us/op 7.7684 us/op 2.65
OrderedSet add up to 256 items then delete first 31.362 us/op 12.069 us/op 2.60
Set add up to 256 items then delete last 22.117 us/op 7.9872 us/op 2.77
OrderedSet add up to 256 items then delete last 29.087 us/op 12.345 us/op 2.36
Set add up to 256 items then delete middle 21.737 us/op 8.5795 us/op 2.53
OrderedSet add up to 256 items then delete middle 52.410 us/op 36.941 us/op 1.42
transfer serialized Status (84 B) 1.9200 us/op 1.6000 us/op 1.20
copy serialized Status (84 B) 1.8100 us/op 1.4860 us/op 1.22
transfer serialized SignedVoluntaryExit (112 B) 2.3050 us/op 1.5650 us/op 1.47
copy serialized SignedVoluntaryExit (112 B) 2.0150 us/op 1.4490 us/op 1.39
transfer serialized ProposerSlashing (416 B) 3.1890 us/op 1.7050 us/op 1.87
copy serialized ProposerSlashing (416 B) 3.0850 us/op 1.8910 us/op 1.63
transfer serialized Attestation (485 B) 3.5710 us/op 1.7550 us/op 2.03
copy serialized Attestation (485 B) 3.3790 us/op 1.7640 us/op 1.92
transfer serialized AttesterSlashing (33232 B) 2.9830 us/op 2.5380 us/op 1.18
copy serialized AttesterSlashing (33232 B) 8.0970 us/op 9.5780 us/op 0.85
transfer serialized Small SignedBeaconBlock (128000 B) 3.3450 us/op 2.6500 us/op 1.26
copy serialized Small SignedBeaconBlock (128000 B) 16.938 us/op 26.984 us/op 0.63
transfer serialized Avg SignedBeaconBlock (200000 B) 4.1960 us/op 2.3470 us/op 1.79
copy serialized Avg SignedBeaconBlock (200000 B) 31.452 us/op 43.820 us/op 0.72
transfer serialized BlobsSidecar (524380 B) 4.1010 us/op 2.6410 us/op 1.55
copy serialized BlobsSidecar (524380 B) 220.66 us/op 116.32 us/op 1.90
transfer serialized Big SignedBeaconBlock (1000000 B) 6.2650 us/op 3.3100 us/op 1.89
copy serialized Big SignedBeaconBlock (1000000 B) 202.12 us/op 215.06 us/op 0.94
pass gossip attestations to forkchoice per slot 4.4891 ms/op 2.8380 ms/op 1.58
forkChoice updateHead vc 100000 bc 64 eq 0 761.06 us/op 482.34 us/op 1.58
forkChoice updateHead vc 600000 bc 64 eq 0 4.9194 ms/op 3.0077 ms/op 1.64
forkChoice updateHead vc 1000000 bc 64 eq 0 7.7290 ms/op 4.5432 ms/op 1.70
forkChoice updateHead vc 600000 bc 320 eq 0 4.6120 ms/op 2.6454 ms/op 1.74
forkChoice updateHead vc 600000 bc 1200 eq 0 4.7604 ms/op 2.7716 ms/op 1.72
forkChoice updateHead vc 600000 bc 7200 eq 0 6.8695 ms/op 3.4828 ms/op 1.97
forkChoice updateHead vc 600000 bc 64 eq 1000 13.242 ms/op 10.373 ms/op 1.28
forkChoice updateHead vc 600000 bc 64 eq 10000 15.801 ms/op 9.8645 ms/op 1.60
forkChoice updateHead vc 600000 bc 64 eq 300000 55.077 ms/op 12.161 ms/op 4.53
computeDeltas 500000 validators 300 proto nodes 7.1914 ms/op 3.1184 ms/op 2.31
computeDeltas 500000 validators 1200 proto nodes 6.9650 ms/op 3.6818 ms/op 1.89
computeDeltas 500000 validators 7200 proto nodes 6.9439 ms/op 3.1981 ms/op 2.17
computeDeltas 750000 validators 300 proto nodes 11.239 ms/op 4.9197 ms/op 2.28
computeDeltas 750000 validators 1200 proto nodes 9.9880 ms/op 4.8755 ms/op 2.05
computeDeltas 750000 validators 7200 proto nodes 10.314 ms/op 5.0171 ms/op 2.06
computeDeltas 1400000 validators 300 proto nodes 19.970 ms/op 10.282 ms/op 1.94
computeDeltas 1400000 validators 1200 proto nodes 18.933 ms/op 10.768 ms/op 1.76
computeDeltas 1400000 validators 7200 proto nodes 19.484 ms/op 9.7215 ms/op 2.00
computeDeltas 2100000 validators 300 proto nodes 29.006 ms/op 14.249 ms/op 2.04
computeDeltas 2100000 validators 1200 proto nodes 29.244 ms/op 15.160 ms/op 1.93
computeDeltas 2100000 validators 7200 proto nodes 29.971 ms/op 14.818 ms/op 2.02
computeProposerBoostScoreFromBalances 500000 validators 3.5125 ms/op 2.8930 ms/op 1.21
computeProposerBoostScoreFromBalances 750000 validators 3.5055 ms/op 2.8920 ms/op 1.21
computeProposerBoostScoreFromBalances 1400000 validators 3.6256 ms/op 2.9361 ms/op 1.23
computeProposerBoostScoreFromBalances 2100000 validators 3.5986 ms/op 2.9915 ms/op 1.20
altair processAttestation - 250000 vs - 7PWei normalcase 3.9631 ms/op 12.783 ms/op 0.31
altair processAttestation - 250000 vs - 7PWei worstcase 4.8119 ms/op 12.375 ms/op 0.39
altair processAttestation - setStatus - 1/6 committees join 243.74 us/op 183.88 us/op 1.33
altair processAttestation - setStatus - 1/3 committees join 424.00 us/op 257.85 us/op 1.64
altair processAttestation - setStatus - 1/2 committees join 539.55 us/op 311.88 us/op 1.73
altair processAttestation - setStatus - 2/3 committees join 698.14 us/op 331.71 us/op 2.10
altair processAttestation - setStatus - 4/5 committees join 933.37 us/op 554.74 us/op 1.68
altair processAttestation - setStatus - 100% committees join 1.0519 ms/op 588.18 us/op 1.79
altair processBlock - 250000 vs - 7PWei normalcase 12.101 ms/op 10.266 ms/op 1.18
altair processBlock - 250000 vs - 7PWei normalcase hashState 51.639 ms/op 41.150 ms/op 1.25
altair processBlock - 250000 vs - 7PWei worstcase 48.708 ms/op 42.412 ms/op 1.15
altair processBlock - 250000 vs - 7PWei worstcase hashState 101.52 ms/op 108.59 ms/op 0.93
phase0 processBlock - 250000 vs - 7PWei normalcase 4.0756 ms/op 2.2212 ms/op 1.83
phase0 processBlock - 250000 vs - 7PWei worstcase 38.792 ms/op 26.671 ms/op 1.45
altair processEth1Data - 250000 vs - 7PWei normalcase 1.0689 ms/op 460.20 us/op 2.32
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 21.107 us/op 14.303 us/op 1.48
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 126.35 us/op 51.789 us/op 2.44
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 46.639 us/op 17.643 us/op 2.64
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 23.852 us/op 15.948 us/op 1.50
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 252.88 us/op 173.35 us/op 1.46
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 2.0488 ms/op 1.0752 ms/op 1.91
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.3405 ms/op 1.6037 ms/op 1.46
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.4059 ms/op 1.5285 ms/op 1.57
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 6.3871 ms/op 4.2723 ms/op 1.49
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 3.6052 ms/op 2.2487 ms/op 1.60
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 14.658 ms/op 5.2732 ms/op 2.78
Tree 40 250000 create 1.0760 s/op 255.63 ms/op 4.21
Tree 40 250000 get(125000) 263.85 ns/op 134.44 ns/op 1.96
Tree 40 250000 set(125000) 3.3813 us/op 827.17 ns/op 4.09
Tree 40 250000 toArray() 35.889 ms/op 29.768 ms/op 1.21
Tree 40 250000 iterate all - toArray() + loop 37.497 ms/op 23.184 ms/op 1.62
Tree 40 250000 iterate all - get(i) 102.28 ms/op 60.034 ms/op 1.70
MutableVector 250000 create 25.486 ms/op 12.053 ms/op 2.11
MutableVector 250000 get(125000) 12.244 ns/op 6.2240 ns/op 1.97
MutableVector 250000 set(125000) 854.56 ns/op 223.38 ns/op 3.83
MutableVector 250000 toArray() 6.7441 ms/op 2.7597 ms/op 2.44
MutableVector 250000 iterate all - toArray() + loop 6.8621 ms/op 4.7855 ms/op 1.43
MutableVector 250000 iterate all - get(i) 2.9729 ms/op 1.4304 ms/op 2.08
Array 250000 create 6.9340 ms/op 4.5071 ms/op 1.54
Array 250000 clone - spread 7.2508 ms/op 1.1982 ms/op 6.05
Array 250000 get(125000) 2.9660 ns/op 0.62000 ns/op 4.78
Array 250000 set(125000) 2.8780 ns/op 0.70800 ns/op 4.06
Array 250000 iterate all - loop 141.19 us/op 87.632 us/op 1.61
effectiveBalanceIncrements clone Uint8Array 300000 98.836 us/op 15.118 us/op 6.54
effectiveBalanceIncrements clone MutableVector 300000 2.5130 us/op 323.00 ns/op 7.78
effectiveBalanceIncrements rw all Uint8Array 300000 238.91 us/op 173.16 us/op 1.38
effectiveBalanceIncrements rw all MutableVector 300000 266.23 ms/op 78.842 ms/op 3.38
phase0 afterProcessEpoch - 250000 vs - 7PWei 186.06 ms/op 84.293 ms/op 2.21
phase0 beforeProcessEpoch - 250000 vs - 7PWei 70.901 ms/op 57.570 ms/op 1.23
altair processEpoch - mainnet_e81889 718.45 ms/op 485.79 ms/op 1.48
mainnet_e81889 - altair beforeProcessEpoch 122.22 ms/op 78.445 ms/op 1.56
mainnet_e81889 - altair processJustificationAndFinalization 39.245 us/op 17.079 us/op 2.30
mainnet_e81889 - altair processInactivityUpdates 9.8384 ms/op 7.7604 ms/op 1.27
mainnet_e81889 - altair processRewardsAndPenalties 82.439 ms/op 70.059 ms/op 1.18
mainnet_e81889 - altair processRegistryUpdates 7.8780 us/op 3.6380 us/op 2.17
mainnet_e81889 - altair processSlashings 1.4670 us/op 721.00 ns/op 2.03
mainnet_e81889 - altair processEth1DataReset 1.9630 us/op 425.00 ns/op 4.62
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.3112 ms/op 917.58 us/op 2.52
mainnet_e81889 - altair processSlashingsReset 9.4930 us/op 3.8820 us/op 2.45
mainnet_e81889 - altair processRandaoMixesReset 13.710 us/op 3.2060 us/op 4.28
mainnet_e81889 - altair processHistoricalRootsUpdate 2.3050 us/op 3.1760 us/op 0.73
mainnet_e81889 - altair processParticipationFlagUpdates 6.0590 us/op 1.6170 us/op 3.75
mainnet_e81889 - altair processSyncCommitteeUpdates 2.3080 us/op 742.00 ns/op 3.11
mainnet_e81889 - altair afterProcessEpoch 138.76 ms/op 84.995 ms/op 1.63
capella processEpoch - mainnet_e217614 2.8448 s/op 2.1211 s/op 1.34
mainnet_e217614 - capella beforeProcessEpoch 552.62 ms/op 453.19 ms/op 1.22
mainnet_e217614 - capella processJustificationAndFinalization 20.360 us/op 9.7790 us/op 2.08
mainnet_e217614 - capella processInactivityUpdates 22.486 ms/op 16.188 ms/op 1.39
mainnet_e217614 - capella processRewardsAndPenalties 615.74 ms/op 493.92 ms/op 1.25
mainnet_e217614 - capella processRegistryUpdates 33.656 us/op 19.639 us/op 1.71
mainnet_e217614 - capella processSlashings 775.00 ns/op 450.00 ns/op 1.72
mainnet_e217614 - capella processEth1DataReset 618.00 ns/op 448.00 ns/op 1.38
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.4755 ms/op 3.1101 ms/op 1.44
mainnet_e217614 - capella processSlashingsReset 3.9690 us/op 2.6880 us/op 1.48
mainnet_e217614 - capella processRandaoMixesReset 6.9960 us/op 3.6100 us/op 1.94
mainnet_e217614 - capella processHistoricalRootsUpdate 707.00 ns/op 693.00 ns/op 1.02
mainnet_e217614 - capella processParticipationFlagUpdates 2.6430 us/op 1.4090 us/op 1.88
mainnet_e217614 - capella afterProcessEpoch 324.19 ms/op 212.77 ms/op 1.52
phase0 processEpoch - mainnet_e58758 530.15 ms/op 358.76 ms/op 1.48
mainnet_e58758 - phase0 beforeProcessEpoch 170.20 ms/op 119.34 ms/op 1.43
mainnet_e58758 - phase0 processJustificationAndFinalization 26.850 us/op 10.832 us/op 2.48
mainnet_e58758 - phase0 processRewardsAndPenalties 74.553 ms/op 46.233 ms/op 1.61
mainnet_e58758 - phase0 processRegistryUpdates 20.149 us/op 10.054 us/op 2.00
mainnet_e58758 - phase0 processSlashings 876.00 ns/op 425.00 ns/op 2.06
mainnet_e58758 - phase0 processEth1DataReset 705.00 ns/op 701.00 ns/op 1.01
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.2800 ms/op 852.30 us/op 1.50
mainnet_e58758 - phase0 processSlashingsReset 5.1420 us/op 2.4420 us/op 2.11
mainnet_e58758 - phase0 processRandaoMixesReset 9.8110 us/op 3.2960 us/op 2.98
mainnet_e58758 - phase0 processHistoricalRootsUpdate 982.00 ns/op 545.00 ns/op 1.80
mainnet_e58758 - phase0 processParticipationRecordUpdates 8.0630 us/op 2.7710 us/op 2.91
mainnet_e58758 - phase0 afterProcessEpoch 107.83 ms/op 68.760 ms/op 1.57
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.3402 ms/op 916.09 us/op 1.46
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.6578 ms/op 1.1756 ms/op 1.41
altair processInactivityUpdates - 250000 normalcase 24.819 ms/op 25.158 ms/op 0.99
altair processInactivityUpdates - 250000 worstcase 23.806 ms/op 25.755 ms/op 0.92
phase0 processRegistryUpdates - 250000 normalcase 13.084 us/op 7.2610 us/op 1.80
phase0 processRegistryUpdates - 250000 badcase_full_deposits 446.74 us/op 366.88 us/op 1.22
phase0 processRegistryUpdates - 250000 worstcase 0.5 177.53 ms/op 135.87 ms/op 1.31
altair processRewardsAndPenalties - 250000 normalcase 73.259 ms/op 64.376 ms/op 1.14
altair processRewardsAndPenalties - 250000 worstcase 76.296 ms/op 63.129 ms/op 1.21
phase0 getAttestationDeltas - 250000 normalcase 12.602 ms/op 8.3145 ms/op 1.52
phase0 getAttestationDeltas - 250000 worstcase 11.970 ms/op 6.5628 ms/op 1.82
phase0 processSlashings - 250000 worstcase 2.4855 ms/op 1.8947 ms/op 1.31
altair processSyncCommitteeUpdates - 250000 185.96 ms/op 127.93 ms/op 1.45
BeaconState.hashTreeRoot - No change 268.00 ns/op 412.00 ns/op 0.65
BeaconState.hashTreeRoot - 1 full validator 183.49 us/op 133.50 us/op 1.37
BeaconState.hashTreeRoot - 32 full validator 2.1315 ms/op 1.3245 ms/op 1.61
BeaconState.hashTreeRoot - 512 full validator 17.267 ms/op 14.045 ms/op 1.23
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 176.32 us/op 133.66 us/op 1.32
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.9212 ms/op 1.7377 ms/op 1.68
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 33.428 ms/op 30.651 ms/op 1.09
BeaconState.hashTreeRoot - 1 balances 172.61 us/op 143.04 us/op 1.21
BeaconState.hashTreeRoot - 32 balances 1.4005 ms/op 1.4212 ms/op 0.99
BeaconState.hashTreeRoot - 512 balances 14.598 ms/op 13.109 ms/op 1.11
BeaconState.hashTreeRoot - 250000 balances 241.53 ms/op 178.21 ms/op 1.36
aggregationBits - 2048 els - zipIndexesInBitList 33.155 us/op 11.055 us/op 3.00
byteArrayEquals 32 53.951 ns/op 48.711 ns/op 1.11
Buffer.compare 32 58.486 ns/op 40.559 ns/op 1.44
byteArrayEquals 1024 1.5843 us/op 1.2788 us/op 1.24
Buffer.compare 1024 75.613 ns/op 46.867 ns/op 1.61
byteArrayEquals 16384 25.334 us/op 22.207 us/op 1.14
Buffer.compare 16384 272.10 ns/op 236.94 ns/op 1.15
byteArrayEquals 123687377 195.63 ms/op 171.94 ms/op 1.14
Buffer.compare 123687377 10.589 ms/op 6.9089 ms/op 1.53
byteArrayEquals 32 - diff last byte 57.527 ns/op 50.924 ns/op 1.13
Buffer.compare 32 - diff last byte 64.691 ns/op 40.630 ns/op 1.59
byteArrayEquals 1024 - diff last byte 1.5565 us/op 1.2843 us/op 1.21
Buffer.compare 1024 - diff last byte 77.721 ns/op 47.859 ns/op 1.62
byteArrayEquals 16384 - diff last byte 24.544 us/op 20.828 us/op 1.18
Buffer.compare 16384 - diff last byte 288.66 ns/op 220.40 ns/op 1.31
byteArrayEquals 123687377 - diff last byte 196.51 ms/op 169.33 ms/op 1.16
Buffer.compare 123687377 - diff last byte 11.109 ms/op 6.8393 ms/op 1.62
byteArrayEquals 32 - random bytes 7.7120 ns/op 6.1680 ns/op 1.25
Buffer.compare 32 - random bytes 67.960 ns/op 43.077 ns/op 1.58
byteArrayEquals 1024 - random bytes 7.3520 ns/op 6.3120 ns/op 1.16
Buffer.compare 1024 - random bytes 67.397 ns/op 44.249 ns/op 1.52
byteArrayEquals 16384 - random bytes 7.5290 ns/op 5.3340 ns/op 1.41
Buffer.compare 16384 - random bytes 68.414 ns/op 42.837 ns/op 1.60
byteArrayEquals 123687377 - random bytes 13.050 ns/op 8.7700 ns/op 1.49
Buffer.compare 123687377 - random bytes 80.000 ns/op 51.620 ns/op 1.55
regular array get 100000 times 38.048 us/op 35.163 us/op 1.08
wrappedArray get 100000 times 37.253 us/op 34.619 us/op 1.08
arrayWithProxy get 100000 times 16.208 ms/op 11.983 ms/op 1.35
ssz.Root.equals 61.368 ns/op 58.662 ns/op 1.05
byteArrayEquals 56.921 ns/op 51.544 ns/op 1.10
Buffer.compare 14.111 ns/op 11.540 ns/op 1.22
shuffle list - 16384 els 8.0968 ms/op 6.4268 ms/op 1.26
shuffle list - 250000 els 119.53 ms/op 81.649 ms/op 1.46
processSlot - 1 slots 19.898 us/op 19.786 us/op 1.01
processSlot - 32 slots 3.4305 ms/op 4.4019 ms/op 0.78
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 64.836 ms/op 55.741 ms/op 1.16
getCommitteeAssignments - req 1 vs - 250000 vc 2.6865 ms/op 2.3509 ms/op 1.14
getCommitteeAssignments - req 100 vs - 250000 vc 4.1390 ms/op 3.5083 ms/op 1.18
getCommitteeAssignments - req 1000 vs - 250000 vc 4.4916 ms/op 3.9272 ms/op 1.14
findModifiedValidators - 10000 modified validators 597.84 ms/op 540.02 ms/op 1.11
findModifiedValidators - 1000 modified validators 556.64 ms/op 423.95 ms/op 1.31
findModifiedValidators - 100 modified validators 493.56 ms/op 394.36 ms/op 1.25
findModifiedValidators - 10 modified validators 469.44 ms/op 359.61 ms/op 1.31
findModifiedValidators - 1 modified validators 454.20 ms/op 356.77 ms/op 1.27
findModifiedValidators - no difference 461.99 ms/op 390.77 ms/op 1.18
compare ViewDUs 5.0583 s/op 4.9290 s/op 1.03
compare each validator Uint8Array 2.1518 s/op 1.6847 s/op 1.28
compare ViewDU to Uint8Array 1.4707 s/op 927.24 ms/op 1.59
migrate state 1000000 validators, 24 modified, 0 new 894.94 ms/op 693.89 ms/op 1.29
migrate state 1000000 validators, 1700 modified, 1000 new 1.1949 s/op 967.31 ms/op 1.24
migrate state 1000000 validators, 3400 modified, 2000 new 1.3407 s/op 1.1512 s/op 1.16
migrate state 1500000 validators, 24 modified, 0 new 768.28 ms/op 589.89 ms/op 1.30
migrate state 1500000 validators, 1700 modified, 1000 new 1.0844 s/op 963.19 ms/op 1.13
migrate state 1500000 validators, 3400 modified, 2000 new 1.3544 s/op 1.1352 s/op 1.19
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.5200 ns/op 4.9500 ns/op 0.91
state getBlockRootAtSlot - 250000 vs - 7PWei 667.55 ns/op 450.26 ns/op 1.48
computeProposers - vc 250000 9.3947 ms/op 5.9652 ms/op 1.57
computeEpochShuffling - vc 250000 109.54 ms/op 69.558 ms/op 1.57
getNextSyncCommittee - vc 250000 163.37 ms/op 106.02 ms/op 1.54
computeSigningRoot for AttestationData 26.059 us/op 22.746 us/op 1.15
hash AttestationData serialized data then Buffer.toString(base64) 2.4371 us/op 1.2459 us/op 1.96
toHexString serialized data 1.1437 us/op 811.17 ns/op 1.41
Buffer.toString(base64) 221.74 ns/op 153.34 ns/op 1.45

Please sign in to comment.