Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Misc changes from eip-4844 branch #4924

Merged
merged 1 commit into from
Dec 20, 2022
Merged

Conversation

dapplion
Copy link
Contributor

Motivation

They are valuable but barely deserve individual PRs. Feel free to 👎 if the scope of this PR is too wide and should be split or re-done

Description

Misc changes from eip-4844 branch

@dapplion dapplion requested a review from a team as a code owner December 19, 2022 08:42
return this.produceBlockWrapper<BlockType.Full>(BlockType.Full, blockAttributes);
}

async produceBlindedBlock(blockAttributes: BlockAttributes): Promise<allForks.BlindedBeaconBlock> {
produceBlindedBlock(blockAttributes: BlockAttributes): Promise<allForks.BlindedBeaconBlock> {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Unnecessary async function

@@ -14,7 +14,7 @@ import {IBeaconClock} from "./interface.js";
export class LocalClock implements IBeaconClock {
private readonly config: IChainForkConfig;
private readonly genesisTime: number;
private timeoutId: NodeJS.Timeout;
private timeoutId: number | NodeJS.Timeout;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Allows to compile with any recent @types/node version. Has caused issues when installing individual local packages like c-kzg

describe("utils / params / assertEqualParams", () => {
it("default == default", () => {
const chainConfigJson = chainConfigToJson(chainConfig);
assertEqualParams(chainConfig, chainConfigJson);
});

it("default != other", () => {
const chainConfigJson = chainConfigToJson(chainConfig);
const ALTAIR_FORK_EPOCH = 10;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Make test deterministic test independent of current values of the default chain spec

@github-actions
Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 413c849 Previous: 941bef6 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.2265 ms/op 934.16 us/op 1.31
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 71.690 us/op 58.891 us/op 1.22
BLS verify - blst-native 1.8636 ms/op 2.1784 ms/op 0.86
BLS verifyMultipleSignatures 3 - blst-native 3.8092 ms/op 4.4846 ms/op 0.85
BLS verifyMultipleSignatures 8 - blst-native 8.1990 ms/op 9.6928 ms/op 0.85
BLS verifyMultipleSignatures 32 - blst-native 29.692 ms/op 35.233 ms/op 0.84
BLS aggregatePubkeys 32 - blst-native 39.578 us/op 46.618 us/op 0.85
BLS aggregatePubkeys 128 - blst-native 153.63 us/op 182.35 us/op 0.84
getAttestationsForBlock 88.767 ms/op 75.545 ms/op 1.18
isKnown best case - 1 super set check 426.00 ns/op 441.00 ns/op 0.97
isKnown normal case - 2 super set checks 424.00 ns/op 429.00 ns/op 0.99
isKnown worse case - 16 super set checks 421.00 ns/op 428.00 ns/op 0.98
CheckpointStateCache - add get delete 8.3290 us/op 8.3020 us/op 1.00
validate gossip signedAggregateAndProof - struct 4.2701 ms/op 5.0156 ms/op 0.85
validate gossip attestation - struct 2.0256 ms/op 2.3614 ms/op 0.86
pickEth1Vote - no votes 2.2090 ms/op 2.1390 ms/op 1.03
pickEth1Vote - max votes 16.790 ms/op 15.312 ms/op 1.10
pickEth1Vote - Eth1Data hashTreeRoot value x2048 11.933 ms/op 12.575 ms/op 0.95
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 20.762 ms/op 20.384 ms/op 1.02
pickEth1Vote - Eth1Data fastSerialize value x2048 1.2599 ms/op 1.0411 ms/op 1.21
pickEth1Vote - Eth1Data fastSerialize tree x2048 9.6891 ms/op 9.5284 ms/op 1.02
bytes32 toHexString 1.0090 us/op 822.00 ns/op 1.23
bytes32 Buffer.toString(hex) 598.00 ns/op 639.00 ns/op 0.94
bytes32 Buffer.toString(hex) from Uint8Array 914.00 ns/op 997.00 ns/op 0.92
bytes32 Buffer.toString(hex) + 0x 606.00 ns/op 647.00 ns/op 0.94
Object access 1 prop 0.27200 ns/op 0.26900 ns/op 1.01
Map access 1 prop 0.26700 ns/op 0.26100 ns/op 1.02
Object get x1000 16.881 ns/op 10.839 ns/op 1.56
Map get x1000 0.98600 ns/op 0.92100 ns/op 1.07
Object set x1000 113.88 ns/op 67.065 ns/op 1.70
Map set x1000 71.569 ns/op 41.694 ns/op 1.72
Return object 10000 times 0.36540 ns/op 0.43480 ns/op 0.84
Throw Error 10000 times 6.7592 us/op 6.6913 us/op 1.01
fastMsgIdFn sha256 / 200 bytes 4.2320 us/op 4.9370 us/op 0.86
fastMsgIdFn h32 xxhash / 200 bytes 461.00 ns/op 450.00 ns/op 1.02
fastMsgIdFn h64 xxhash / 200 bytes 647.00 ns/op 703.00 ns/op 0.92
fastMsgIdFn sha256 / 1000 bytes 13.595 us/op 15.686 us/op 0.87
fastMsgIdFn h32 xxhash / 1000 bytes 619.00 ns/op 626.00 ns/op 0.99
fastMsgIdFn h64 xxhash / 1000 bytes 718.00 ns/op 792.00 ns/op 0.91
fastMsgIdFn sha256 / 10000 bytes 116.93 us/op 136.27 us/op 0.86
fastMsgIdFn h32 xxhash / 10000 bytes 2.2900 us/op 2.4960 us/op 0.92
fastMsgIdFn h64 xxhash / 10000 bytes 1.5890 us/op 1.7940 us/op 0.89
enrSubnets - fastDeserialize 64 bits 2.2750 us/op 2.2680 us/op 1.00
enrSubnets - ssz BitVector 64 bits 790.00 ns/op 771.00 ns/op 1.02
enrSubnets - fastDeserialize 4 bits 289.00 ns/op 274.00 ns/op 1.05
enrSubnets - ssz BitVector 4 bits 859.00 ns/op 781.00 ns/op 1.10
prioritizePeers score -10:0 att 32-0.1 sync 2-0 95.167 us/op 76.380 us/op 1.25
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 135.15 us/op 113.37 us/op 1.19
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 263.00 us/op 205.44 us/op 1.28
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 412.61 us/op 319.94 us/op 1.29
prioritizePeers score 0:0 att 64-1 sync 4-1 509.93 us/op 387.53 us/op 1.32
array of 16000 items push then shift 2.8203 us/op 51.596 us/op 0.05
LinkedList of 16000 items push then shift 17.251 ns/op 12.079 ns/op 1.43
array of 16000 items push then pop 213.62 ns/op 181.51 ns/op 1.18
LinkedList of 16000 items push then pop 16.632 ns/op 11.786 ns/op 1.41
array of 24000 items push then shift 3.9681 us/op 77.358 us/op 0.05
LinkedList of 24000 items push then shift 19.841 ns/op 12.321 ns/op 1.61
array of 24000 items push then pop 213.54 ns/op 190.64 ns/op 1.12
LinkedList of 24000 items push then pop 17.877 ns/op 11.901 ns/op 1.50
intersect bitArray bitLen 8 29.087 ns/op 21.650 ns/op 1.34
intersect array and set length 8 158.76 ns/op 119.53 ns/op 1.33
intersect bitArray bitLen 128 108.06 ns/op 70.846 ns/op 1.53
intersect array and set length 128 2.2526 us/op 1.6125 us/op 1.40
Buffer.concat 32 items 5.2500 us/op 4.5280 us/op 1.16
Uint8Array.set 32 items 4.0150 us/op 3.6380 us/op 1.10
pass gossip attestations to forkchoice per slot 4.2251 ms/op 3.7229 ms/op 1.13
computeDeltas 5.8892 ms/op 4.6889 ms/op 1.26
computeProposerBoostScoreFromBalances 2.8485 ms/op 2.5828 ms/op 1.10
altair processAttestation - 250000 vs - 7PWei normalcase 3.7697 ms/op 3.3546 ms/op 1.12
altair processAttestation - 250000 vs - 7PWei worstcase 5.9913 ms/op 5.2215 ms/op 1.15
altair processAttestation - setStatus - 1/6 committees join 203.78 us/op 183.96 us/op 1.11
altair processAttestation - setStatus - 1/3 committees join 390.59 us/op 369.57 us/op 1.06
altair processAttestation - setStatus - 1/2 committees join 544.93 us/op 540.08 us/op 1.01
altair processAttestation - setStatus - 2/3 committees join 703.49 us/op 701.40 us/op 1.00
altair processAttestation - setStatus - 4/5 committees join 971.12 us/op 969.79 us/op 1.00
altair processAttestation - setStatus - 100% committees join 1.1510 ms/op 1.1622 ms/op 0.99
altair processBlock - 250000 vs - 7PWei normalcase 25.245 ms/op 22.944 ms/op 1.10
altair processBlock - 250000 vs - 7PWei normalcase hashState 39.335 ms/op 34.147 ms/op 1.15
altair processBlock - 250000 vs - 7PWei worstcase 77.778 ms/op 72.917 ms/op 1.07
altair processBlock - 250000 vs - 7PWei worstcase hashState 105.99 ms/op 98.950 ms/op 1.07
phase0 processBlock - 250000 vs - 7PWei normalcase 3.4142 ms/op 3.1337 ms/op 1.09
phase0 processBlock - 250000 vs - 7PWei worstcase 45.369 ms/op 50.178 ms/op 0.90
altair processEth1Data - 250000 vs - 7PWei normalcase 773.35 us/op 711.47 us/op 1.09
vc - 250000 eb 1 eth1 1 we 0 wn 0 - smpl 15 14.158 us/op 11.856 us/op 1.19
vc - 250000 eb 0.95 eth1 0.1 we 0.05 wn 0 - smpl 219 37.688 us/op 33.581 us/op 1.12
vc - 250000 eb 0.95 eth1 0.3 we 0.05 wn 0 - smpl 42 15.345 us/op 17.665 us/op 0.87
vc - 250000 eb 0.95 eth1 0.7 we 0.05 wn 0 - smpl 18 13.487 us/op 14.333 us/op 0.94
vc - 250000 eb 0.1 eth1 0.1 we 0 wn 0 - smpl 1020 165.46 us/op 131.08 us/op 1.26
vc - 250000 eb 0.03 eth1 0.03 we 0 wn 0 - smpl 11777 1.1187 ms/op 963.82 us/op 1.16
vc - 250000 eb 0.01 eth1 0.01 we 0 wn 0 - smpl 16384 1.4434 ms/op 1.2901 ms/op 1.12
vc - 250000 eb 0 eth1 0 we 0 wn 0 - smpl 16384 1.3242 ms/op 1.2702 ms/op 1.04
vc - 250000 eb 0 eth1 0 we 0 wn 0 nocache - smpl 16384 4.4777 ms/op 4.3389 ms/op 1.03
vc - 250000 eb 0 eth1 1 we 0 wn 0 - smpl 16384 2.9855 ms/op 2.8720 ms/op 1.04
vc - 250000 eb 0 eth1 1 we 0 wn 0 nocache - smpl 16384 6.9105 ms/op 6.9988 ms/op 0.99
Tree 40 250000 create 656.59 ms/op 572.17 ms/op 1.15
Tree 40 250000 get(125000) 294.34 ns/op 265.30 ns/op 1.11
Tree 40 250000 set(125000) 2.1616 us/op 1.9074 us/op 1.13
Tree 40 250000 toArray() 31.256 ms/op 25.598 ms/op 1.22
Tree 40 250000 iterate all - toArray() + loop 31.176 ms/op 25.812 ms/op 1.21
Tree 40 250000 iterate all - get(i) 108.44 ms/op 110.65 ms/op 0.98
MutableVector 250000 create 15.456 ms/op 12.651 ms/op 1.22
MutableVector 250000 get(125000) 13.326 ns/op 10.559 ns/op 1.26
MutableVector 250000 set(125000) 617.39 ns/op 483.99 ns/op 1.28
MutableVector 250000 toArray() 7.1966 ms/op 6.1157 ms/op 1.18
MutableVector 250000 iterate all - toArray() + loop 6.4187 ms/op 5.4370 ms/op 1.18
MutableVector 250000 iterate all - get(i) 3.4598 ms/op 2.6311 ms/op 1.31
Array 250000 create 6.0426 ms/op 5.2066 ms/op 1.16
Array 250000 clone - spread 2.1045 ms/op 1.9591 ms/op 1.07
Array 250000 get(125000) 0.89500 ns/op 0.95800 ns/op 0.93
Array 250000 set(125000) 0.92000 ns/op 0.94800 ns/op 0.97
Array 250000 iterate all - loop 167.73 us/op 151.07 us/op 1.11
effectiveBalanceIncrements clone Uint8Array 300000 70.724 us/op 33.097 us/op 2.14
effectiveBalanceIncrements clone MutableVector 300000 569.00 ns/op 551.00 ns/op 1.03
effectiveBalanceIncrements rw all Uint8Array 300000 252.57 us/op 244.12 us/op 1.03
effectiveBalanceIncrements rw all MutableVector 300000 162.80 ms/op 135.43 ms/op 1.20
phase0 afterProcessEpoch - 250000 vs - 7PWei 184.81 ms/op 187.05 ms/op 0.99
phase0 beforeProcessEpoch - 250000 vs - 7PWei 71.600 ms/op 57.815 ms/op 1.24
altair processEpoch - mainnet_e81889 493.26 ms/op 524.68 ms/op 0.94
mainnet_e81889 - altair beforeProcessEpoch 145.03 ms/op 116.73 ms/op 1.24
mainnet_e81889 - altair processJustificationAndFinalization 26.568 us/op 16.809 us/op 1.58
mainnet_e81889 - altair processInactivityUpdates 10.403 ms/op 9.0723 ms/op 1.15
mainnet_e81889 - altair processRewardsAndPenalties 90.156 ms/op 77.577 ms/op 1.16
mainnet_e81889 - altair processRegistryUpdates 3.2650 us/op 2.2560 us/op 1.45
mainnet_e81889 - altair processSlashings 810.00 ns/op 487.00 ns/op 1.66
mainnet_e81889 - altair processEth1DataReset 931.00 ns/op 503.00 ns/op 1.85
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.3556 ms/op 1.9825 ms/op 1.19
mainnet_e81889 - altair processSlashingsReset 6.3720 us/op 3.7890 us/op 1.68
mainnet_e81889 - altair processRandaoMixesReset 6.6700 us/op 4.3090 us/op 1.55
mainnet_e81889 - altair processHistoricalRootsUpdate 1.0080 us/op 577.00 ns/op 1.75
mainnet_e81889 - altair processParticipationFlagUpdates 2.6030 us/op 1.7980 us/op 1.45
mainnet_e81889 - altair processSyncCommitteeUpdates 922.00 ns/op 437.00 ns/op 2.11
mainnet_e81889 - altair afterProcessEpoch 194.96 ms/op 197.50 ms/op 0.99
phase0 processEpoch - mainnet_e58758 520.04 ms/op 480.13 ms/op 1.08
mainnet_e58758 - phase0 beforeProcessEpoch 223.41 ms/op 176.72 ms/op 1.26
mainnet_e58758 - phase0 processJustificationAndFinalization 22.405 us/op 18.236 us/op 1.23
mainnet_e58758 - phase0 processRewardsAndPenalties 74.874 ms/op 69.809 ms/op 1.07
mainnet_e58758 - phase0 processRegistryUpdates 11.248 us/op 8.0200 us/op 1.40
mainnet_e58758 - phase0 processSlashings 1.0400 us/op 543.00 ns/op 1.92
mainnet_e58758 - phase0 processEth1DataReset 1.2300 us/op 603.00 ns/op 2.04
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.9311 ms/op 1.8712 ms/op 1.03
mainnet_e58758 - phase0 processSlashingsReset 5.9380 us/op 4.5220 us/op 1.31
mainnet_e58758 - phase0 processRandaoMixesReset 6.5530 us/op 6.8000 us/op 0.96
mainnet_e58758 - phase0 processHistoricalRootsUpdate 1.1260 us/op 900.00 ns/op 1.25
mainnet_e58758 - phase0 processParticipationRecordUpdates 7.3370 us/op 7.7350 us/op 0.95
mainnet_e58758 - phase0 afterProcessEpoch 161.84 ms/op 157.14 ms/op 1.03
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.7775 ms/op 1.9888 ms/op 1.40
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 3.3169 ms/op 2.2772 ms/op 1.46
altair processInactivityUpdates - 250000 normalcase 36.728 ms/op 33.231 ms/op 1.11
altair processInactivityUpdates - 250000 worstcase 44.084 ms/op 40.096 ms/op 1.10
phase0 processRegistryUpdates - 250000 normalcase 11.261 us/op 9.7150 us/op 1.16
phase0 processRegistryUpdates - 250000 badcase_full_deposits 496.01 us/op 466.42 us/op 1.06
phase0 processRegistryUpdates - 250000 worstcase 0.5 210.25 ms/op 178.83 ms/op 1.18
altair processRewardsAndPenalties - 250000 normalcase 123.98 ms/op 101.19 ms/op 1.23
altair processRewardsAndPenalties - 250000 worstcase 116.19 ms/op 72.091 ms/op 1.61
phase0 getAttestationDeltas - 250000 normalcase 12.055 ms/op 11.420 ms/op 1.06
phase0 getAttestationDeltas - 250000 worstcase 12.084 ms/op 11.725 ms/op 1.03
phase0 processSlashings - 250000 worstcase 6.2289 ms/op 5.9056 ms/op 1.05
altair processSyncCommitteeUpdates - 250000 263.85 ms/op 289.40 ms/op 0.91
BeaconState.hashTreeRoot - No change 461.00 ns/op 521.00 ns/op 0.88
BeaconState.hashTreeRoot - 1 full validator 62.892 us/op 73.573 us/op 0.85
BeaconState.hashTreeRoot - 32 full validator 643.18 us/op 754.22 us/op 0.85
BeaconState.hashTreeRoot - 512 full validator 7.1253 ms/op 6.8741 ms/op 1.04
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 79.109 us/op 92.940 us/op 0.85
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.1999 ms/op 1.3454 ms/op 0.89
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 15.523 ms/op 16.256 ms/op 0.95
BeaconState.hashTreeRoot - 1 balances 61.079 us/op 65.527 us/op 0.93
BeaconState.hashTreeRoot - 32 balances 641.13 us/op 647.48 us/op 0.99
BeaconState.hashTreeRoot - 512 balances 5.6593 ms/op 6.1309 ms/op 0.92
BeaconState.hashTreeRoot - 250000 balances 86.871 ms/op 95.577 ms/op 0.91
aggregationBits - 2048 els - zipIndexesInBitList 28.996 us/op 24.255 us/op 1.20
regular array get 100000 times 67.356 us/op 60.492 us/op 1.11
wrappedArray get 100000 times 67.345 us/op 60.501 us/op 1.11
arrayWithProxy get 100000 times 27.594 ms/op 26.264 ms/op 1.05
ssz.Root.equals 1.0640 us/op 921.00 ns/op 1.16
byteArrayEquals 1.0830 us/op 935.00 ns/op 1.16
shuffle list - 16384 els 11.248 ms/op 11.368 ms/op 0.99
shuffle list - 250000 els 166.25 ms/op 167.77 ms/op 0.99
processSlot - 1 slots 13.703 us/op 13.862 us/op 0.99
processSlot - 32 slots 1.7272 ms/op 2.0207 ms/op 0.85
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 334.51 us/op 318.26 us/op 1.05
getCommitteeAssignments - req 1 vs - 250000 vc 5.5932 ms/op 5.4324 ms/op 1.03
getCommitteeAssignments - req 100 vs - 250000 vc 7.5682 ms/op 7.9536 ms/op 0.95
getCommitteeAssignments - req 1000 vs - 250000 vc 8.1281 ms/op 8.5156 ms/op 0.95
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 9.6800 ns/op 7.9500 ns/op 1.22
state getBlockRootAtSlot - 250000 vs - 7PWei 1.1678 us/op 1.1013 us/op 1.06
computeProposers - vc 250000 15.738 ms/op 17.129 ms/op 0.92
computeEpochShuffling - vc 250000 170.43 ms/op 170.69 ms/op 1.00
getNextSyncCommittee - vc 250000 262.73 ms/op 284.73 ms/op 0.92

by benchmarkbot/action

Copy link
Contributor

@g11tech g11tech left a comment

Choose a reason for hiding this comment

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

lgtm

@g11tech g11tech merged commit 3ba8c5b into unstable Dec 20, 2022
@g11tech g11tech deleted the dapplion/misc-eip4844-diff branch December 20, 2022 15:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants