Skip to content

Add support for eth_getBlockByHash and eth_getBlockByNumber - #5339

Merged
wemeetagain merged 4 commits into
unstablefrom
nh/web3-get-block
Apr 5, 2023
Merged

Add support for eth_getBlockByHash and eth_getBlockByNumber#5339
wemeetagain merged 4 commits into
unstablefrom
nh/web3-get-block

Conversation

@nazarhussain

Copy link
Copy Markdown
Contributor

Motivation

Add support for eth_getBlockByHash and eth_getBlockByNumber

Description

Add support for eth_getBlockByHash and eth_getBlockByNumber

Partially: #4706

Steps to test or reproduce

Run all tests.

@nazarhussain
nazarhussain requested a review from a team as a code owner April 4, 2023 12:17
Base automatically changed from nh/web3-calls to unstable April 5, 2023 11:04
@github-actions

github-actions Bot commented Apr 5, 2023

Copy link
Copy Markdown
Contributor

Performance Report

鉁旓笍 no performance regression detected

Full benchmark results
Benchmark suite Current: 840ec88 Previous: 9d459af Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 609.62 us/op 978.79 us/op 0.62
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 60.835 us/op 55.782 us/op 1.09
BLS verify - blst-native 1.3109 ms/op 1.2552 ms/op 1.04
BLS verifyMultipleSignatures 3 - blst-native 2.5998 ms/op 2.5494 ms/op 1.02
BLS verifyMultipleSignatures 8 - blst-native 5.5925 ms/op 5.4943 ms/op 1.02
BLS verifyMultipleSignatures 32 - blst-native 20.333 ms/op 19.919 ms/op 1.02
BLS aggregatePubkeys 32 - blst-native 27.264 us/op 26.427 us/op 1.03
BLS aggregatePubkeys 128 - blst-native 105.99 us/op 103.61 us/op 1.02
getAttestationsForBlock 66.824 ms/op 60.952 ms/op 1.10
isKnown best case - 1 super set check 269.00 ns/op 263.00 ns/op 1.02
isKnown normal case - 2 super set checks 262.00 ns/op 257.00 ns/op 1.02
isKnown worse case - 16 super set checks 263.00 ns/op 249.00 ns/op 1.06
CheckpointStateCache - add get delete 6.1790 us/op 5.7580 us/op 1.07
validate gossip signedAggregateAndProof - struct 2.9026 ms/op 2.8006 ms/op 1.04
validate gossip attestation - struct 1.3883 ms/op 1.3428 ms/op 1.03
pickEth1Vote - no votes 1.4066 ms/op 1.3547 ms/op 1.04
pickEth1Vote - max votes 11.155 ms/op 10.903 ms/op 1.02
pickEth1Vote - Eth1Data hashTreeRoot value x2048 10.063 ms/op 9.5300 ms/op 1.06
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 16.589 ms/op 19.967 ms/op 0.83
pickEth1Vote - Eth1Data fastSerialize value x2048 793.77 us/op 830.48 us/op 0.96
pickEth1Vote - Eth1Data fastSerialize tree x2048 6.4834 ms/op 5.9110 ms/op 1.10
bytes32 toHexString 779.00 ns/op 695.00 ns/op 1.12
bytes32 Buffer.toString(hex) 477.00 ns/op 423.00 ns/op 1.13
bytes32 Buffer.toString(hex) from Uint8Array 657.00 ns/op 629.00 ns/op 1.04
bytes32 Buffer.toString(hex) + 0x 438.00 ns/op 422.00 ns/op 1.04
Object access 1 prop 0.19700 ns/op 0.19700 ns/op 1.00
Map access 1 prop 0.16800 ns/op 0.16700 ns/op 1.01
Object get x1000 7.1850 ns/op 7.0860 ns/op 1.01
Map get x1000 0.69100 ns/op 0.69400 ns/op 1.00
Object set x1000 68.527 ns/op 73.138 ns/op 0.94
Map set x1000 55.406 ns/op 57.171 ns/op 0.97
Return object 10000 times 0.25400 ns/op 0.24420 ns/op 1.04
Throw Error 10000 times 4.4035 us/op 4.4165 us/op 1.00
fastMsgIdFn sha256 / 200 bytes 3.7030 us/op 3.6290 us/op 1.02
fastMsgIdFn h32 xxhash / 200 bytes 327.00 ns/op 325.00 ns/op 1.01
fastMsgIdFn h64 xxhash / 200 bytes 500.00 ns/op 464.00 ns/op 1.08
fastMsgIdFn sha256 / 1000 bytes 12.135 us/op 11.982 us/op 1.01
fastMsgIdFn h32 xxhash / 1000 bytes 454.00 ns/op 446.00 ns/op 1.02
fastMsgIdFn h64 xxhash / 1000 bytes 564.00 ns/op 548.00 ns/op 1.03
fastMsgIdFn sha256 / 10000 bytes 108.50 us/op 106.01 us/op 1.02
fastMsgIdFn h32 xxhash / 10000 bytes 2.1160 us/op 2.0100 us/op 1.05
fastMsgIdFn h64 xxhash / 10000 bytes 1.5100 us/op 1.4600 us/op 1.03
enrSubnets - fastDeserialize 64 bits 1.8390 us/op 1.7950 us/op 1.02
enrSubnets - ssz BitVector 64 bits 704.00 ns/op 618.00 ns/op 1.14
enrSubnets - fastDeserialize 4 bits 222.00 ns/op 223.00 ns/op 1.00
enrSubnets - ssz BitVector 4 bits 631.00 ns/op 638.00 ns/op 0.99
prioritizePeers score -10:0 att 32-0.1 sync 2-0 126.71 us/op 132.03 us/op 0.96
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 167.32 us/op 178.98 us/op 0.93
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 200.35 us/op 207.59 us/op 0.97
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 371.32 us/op 380.15 us/op 0.98
prioritizePeers score 0:0 att 64-1 sync 4-1 468.41 us/op 453.25 us/op 1.03
array of 16000 items push then shift 1.7201 us/op 1.7257 us/op 1.00
LinkedList of 16000 items push then shift 9.5120 ns/op 9.6000 ns/op 0.99
array of 16000 items push then pop 122.50 ns/op 121.73 ns/op 1.01
LinkedList of 16000 items push then pop 9.5590 ns/op 9.0010 ns/op 1.06
array of 24000 items push then shift 2.4588 us/op 2.4678 us/op 1.00
LinkedList of 24000 items push then shift 10.054 ns/op 9.7680 ns/op 1.03
array of 24000 items push then pop 90.308 ns/op 86.506 ns/op 1.04
LinkedList of 24000 items push then pop 9.4250 ns/op 9.1940 ns/op 1.03
intersect bitArray bitLen 8 14.380 ns/op 13.579 ns/op 1.06
intersect array and set length 8 114.70 ns/op 96.203 ns/op 1.19
intersect bitArray bitLen 128 46.505 ns/op 46.501 ns/op 1.00
intersect array and set length 128 1.3698 us/op 1.2866 us/op 1.06
Buffer.concat 32 items 3.1750 us/op 3.0140 us/op 1.05
Uint8Array.set 32 items 3.3960 us/op 2.7090 us/op 1.25
pass gossip attestations to forkchoice per slot 3.9296 ms/op 2.9616 ms/op 1.33
computeDeltas 3.5260 ms/op 3.3472 ms/op 1.05
computeProposerBoostScoreFromBalances 1.9440 ms/op 2.2703 ms/op 0.86
altair processAttestation - 250000 vs - 7PWei normalcase 4.2318 ms/op 3.4043 ms/op 1.24
altair processAttestation - 250000 vs - 7PWei worstcase 7.3094 ms/op 4.9310 ms/op 1.48
altair processAttestation - setStatus - 1/6 committees join 189.75 us/op 141.68 us/op 1.34
altair processAttestation - setStatus - 1/3 committees join 341.40 us/op 280.45 us/op 1.22
altair processAttestation - setStatus - 1/2 committees join 478.01 us/op 367.18 us/op 1.30
altair processAttestation - setStatus - 2/3 committees join 482.77 us/op 457.05 us/op 1.06
altair processAttestation - setStatus - 4/5 committees join 715.55 us/op 646.44 us/op 1.11
altair processAttestation - setStatus - 100% committees join 834.91 us/op 751.63 us/op 1.11
altair processBlock - 250000 vs - 7PWei normalcase 19.847 ms/op 19.782 ms/op 1.00
altair processBlock - 250000 vs - 7PWei normalcase hashState 31.603 ms/op 26.779 ms/op 1.18
altair processBlock - 250000 vs - 7PWei worstcase 56.728 ms/op 57.904 ms/op 0.98
altair processBlock - 250000 vs - 7PWei worstcase hashState 89.026 ms/op 82.577 ms/op 1.08
phase0 processBlock - 250000 vs - 7PWei normalcase 2.4980 ms/op 1.9415 ms/op 1.29
phase0 processBlock - 250000 vs - 7PWei worstcase 31.981 ms/op 28.008 ms/op 1.14
altair processEth1Data - 250000 vs - 7PWei normalcase 525.53 us/op 516.90 us/op 1.02
vc - 250000 eb 1 eth1 1 we 0 wn 0 - smpl 15 9.5830 us/op 6.7250 us/op 1.42
vc - 250000 eb 0.95 eth1 0.1 we 0.05 wn 0 - smpl 219 38.935 us/op 31.653 us/op 1.23
vc - 250000 eb 0.95 eth1 0.3 we 0.05 wn 0 - smpl 42 19.505 us/op 9.4100 us/op 2.07
vc - 250000 eb 0.95 eth1 0.7 we 0.05 wn 0 - smpl 18 15.254 us/op 6.6760 us/op 2.28
vc - 250000 eb 0.1 eth1 0.1 we 0 wn 0 - smpl 1020 134.87 us/op 121.30 us/op 1.11
vc - 250000 eb 0.03 eth1 0.03 we 0 wn 0 - smpl 11777 995.96 us/op 950.74 us/op 1.05
vc - 250000 eb 0.01 eth1 0.01 we 0 wn 0 - smpl 16384 1.2968 ms/op 1.0907 ms/op 1.19
vc - 250000 eb 0 eth1 0 we 0 wn 0 - smpl 16384 1.3888 ms/op 1.0484 ms/op 1.32
vc - 250000 eb 0 eth1 0 we 0 wn 0 nocache - smpl 16384 4.4269 ms/op 2.3681 ms/op 1.87
vc - 250000 eb 0 eth1 1 we 0 wn 0 - smpl 16384 2.0472 ms/op 3.0146 ms/op 0.68
vc - 250000 eb 0 eth1 1 we 0 wn 0 nocache - smpl 16384 6.0476 ms/op 3.7496 ms/op 1.61
Tree 40 250000 create 809.81 ms/op 303.85 ms/op 2.67
Tree 40 250000 get(125000) 247.41 ns/op 182.58 ns/op 1.36
Tree 40 250000 set(125000) 2.3994 us/op 975.25 ns/op 2.46
Tree 40 250000 toArray() 32.614 ms/op 19.668 ms/op 1.66
Tree 40 250000 iterate all - toArray() + loop 28.254 ms/op 18.559 ms/op 1.52
Tree 40 250000 iterate all - get(i) 83.833 ms/op 71.767 ms/op 1.17
MutableVector 250000 create 13.733 ms/op 11.952 ms/op 1.15
MutableVector 250000 get(125000) 7.4890 ns/op 6.3690 ns/op 1.18
MutableVector 250000 set(125000) 340.30 ns/op 264.94 ns/op 1.28
MutableVector 250000 toArray() 4.2032 ms/op 2.9577 ms/op 1.42
MutableVector 250000 iterate all - toArray() + loop 4.5456 ms/op 2.9845 ms/op 1.52
MutableVector 250000 iterate all - get(i) 1.6250 ms/op 1.5662 ms/op 1.04
Array 250000 create 4.0156 ms/op 2.5840 ms/op 1.55
Array 250000 clone - spread 1.3829 ms/op 1.2069 ms/op 1.15
Array 250000 get(125000) 0.91000 ns/op 0.58500 ns/op 1.56
Array 250000 set(125000) 1.4500 ns/op 0.67100 ns/op 2.16
Array 250000 iterate all - loop 113.26 us/op 109.93 us/op 1.03
effectiveBalanceIncrements clone Uint8Array 300000 49.620 us/op 27.900 us/op 1.78
effectiveBalanceIncrements clone MutableVector 300000 425.00 ns/op 382.00 ns/op 1.11
effectiveBalanceIncrements rw all Uint8Array 300000 182.68 us/op 169.53 us/op 1.08
effectiveBalanceIncrements rw all MutableVector 300000 106.97 ms/op 81.693 ms/op 1.31
phase0 afterProcessEpoch - 250000 vs - 7PWei 126.55 ms/op 112.49 ms/op 1.13
phase0 beforeProcessEpoch - 250000 vs - 7PWei 44.570 ms/op 40.270 ms/op 1.11
altair processEpoch - mainnet_e81889 362.11 ms/op 343.36 ms/op 1.05
mainnet_e81889 - altair beforeProcessEpoch 72.562 ms/op 66.531 ms/op 1.09
mainnet_e81889 - altair processJustificationAndFinalization 21.511 us/op 26.956 us/op 0.80
mainnet_e81889 - altair processInactivityUpdates 7.6391 ms/op 5.2683 ms/op 1.45
mainnet_e81889 - altair processRewardsAndPenalties 67.989 ms/op 87.580 ms/op 0.78
mainnet_e81889 - altair processRegistryUpdates 3.2960 us/op 4.1930 us/op 0.79
mainnet_e81889 - altair processSlashings 612.00 ns/op 842.00 ns/op 0.73
mainnet_e81889 - altair processEth1DataReset 690.00 ns/op 854.00 ns/op 0.81
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.8907 ms/op 2.2820 ms/op 0.83
mainnet_e81889 - altair processSlashingsReset 5.8860 us/op 7.7170 us/op 0.76
mainnet_e81889 - altair processRandaoMixesReset 6.0910 us/op 7.4190 us/op 0.82
mainnet_e81889 - altair processHistoricalRootsUpdate 1.1860 us/op 977.00 ns/op 1.21
mainnet_e81889 - altair processParticipationFlagUpdates 4.3790 us/op 4.0900 us/op 1.07
mainnet_e81889 - altair processSyncCommitteeUpdates 569.00 ns/op 1.0070 us/op 0.57
mainnet_e81889 - altair afterProcessEpoch 134.17 ms/op 119.66 ms/op 1.12
phase0 processEpoch - mainnet_e58758 406.64 ms/op 362.15 ms/op 1.12
mainnet_e58758 - phase0 beforeProcessEpoch 151.78 ms/op 145.25 ms/op 1.04
mainnet_e58758 - phase0 processJustificationAndFinalization 22.974 us/op 26.707 us/op 0.86
mainnet_e58758 - phase0 processRewardsAndPenalties 52.863 ms/op 70.885 ms/op 0.75
mainnet_e58758 - phase0 processRegistryUpdates 11.782 us/op 12.893 us/op 0.91
mainnet_e58758 - phase0 processSlashings 857.00 ns/op 1.0680 us/op 0.80
mainnet_e58758 - phase0 processEth1DataReset 940.00 ns/op 494.00 ns/op 1.90
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.2855 ms/op 1.8175 ms/op 0.71
mainnet_e58758 - phase0 processSlashingsReset 7.2680 us/op 4.8280 us/op 1.51
mainnet_e58758 - phase0 processRandaoMixesReset 9.7570 us/op 5.8420 us/op 1.67
mainnet_e58758 - phase0 processHistoricalRootsUpdate 2.1330 us/op 817.00 ns/op 2.61
mainnet_e58758 - phase0 processParticipationRecordUpdates 5.1310 us/op 5.8430 us/op 0.88
mainnet_e58758 - phase0 afterProcessEpoch 109.51 ms/op 104.30 ms/op 1.05
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.3563 ms/op 1.2447 ms/op 1.09
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.1340 ms/op 1.9950 ms/op 1.07
altair processInactivityUpdates - 250000 normalcase 27.493 ms/op 27.185 ms/op 1.01
altair processInactivityUpdates - 250000 worstcase 28.042 ms/op 24.987 ms/op 1.12
phase0 processRegistryUpdates - 250000 normalcase 8.6210 us/op 7.2690 us/op 1.19
phase0 processRegistryUpdates - 250000 badcase_full_deposits 326.92 us/op 473.82 us/op 0.69
phase0 processRegistryUpdates - 250000 worstcase 0.5 143.69 ms/op 141.44 ms/op 1.02
altair processRewardsAndPenalties - 250000 normalcase 73.748 ms/op 71.766 ms/op 1.03
altair processRewardsAndPenalties - 250000 worstcase 76.179 ms/op 76.565 ms/op 0.99
phase0 getAttestationDeltas - 250000 normalcase 7.8460 ms/op 6.5490 ms/op 1.20
phase0 getAttestationDeltas - 250000 worstcase 6.9327 ms/op 6.5215 ms/op 1.06
phase0 processSlashings - 250000 worstcase 3.5664 ms/op 3.5802 ms/op 1.00
altair processSyncCommitteeUpdates - 250000 209.93 ms/op 167.15 ms/op 1.26
BeaconState.hashTreeRoot - No change 408.00 ns/op 268.00 ns/op 1.52
BeaconState.hashTreeRoot - 1 full validator 56.597 us/op 61.928 us/op 0.91
BeaconState.hashTreeRoot - 32 full validator 631.09 us/op 691.10 us/op 0.91
BeaconState.hashTreeRoot - 512 full validator 6.0251 ms/op 6.2106 ms/op 0.97
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 66.906 us/op 62.948 us/op 1.06
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.0240 ms/op 859.26 us/op 1.19
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 12.926 ms/op 11.168 ms/op 1.16
BeaconState.hashTreeRoot - 1 balances 56.075 us/op 58.697 us/op 0.96
BeaconState.hashTreeRoot - 32 balances 516.29 us/op 567.09 us/op 0.91
BeaconState.hashTreeRoot - 512 balances 5.1050 ms/op 4.7847 ms/op 1.07
BeaconState.hashTreeRoot - 250000 balances 77.242 ms/op 77.546 ms/op 1.00
aggregationBits - 2048 els - zipIndexesInBitList 19.481 us/op 16.084 us/op 1.21
regular array get 100000 times 43.924 us/op 32.983 us/op 1.33
wrappedArray get 100000 times 34.001 us/op 32.939 us/op 1.03
arrayWithProxy get 100000 times 18.013 ms/op 16.043 ms/op 1.12
ssz.Root.equals 579.00 ns/op 565.00 ns/op 1.02
byteArrayEquals 560.00 ns/op 563.00 ns/op 0.99
shuffle list - 16384 els 7.0352 ms/op 6.9001 ms/op 1.02
shuffle list - 250000 els 103.71 ms/op 101.93 ms/op 1.02
processSlot - 1 slots 9.0230 us/op 9.3210 us/op 0.97
processSlot - 32 slots 1.4008 ms/op 1.5220 ms/op 0.92
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 39.787 ms/op 35.252 ms/op 1.13
getCommitteeAssignments - req 1 vs - 250000 vc 3.1062 ms/op 2.9142 ms/op 1.07
getCommitteeAssignments - req 100 vs - 250000 vc 4.3655 ms/op 4.1434 ms/op 1.05
getCommitteeAssignments - req 1000 vs - 250000 vc 4.7267 ms/op 4.4933 ms/op 1.05
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.7000 ns/op 4.4600 ns/op 1.05
state getBlockRootAtSlot - 250000 vs - 7PWei 726.43 ns/op 571.28 ns/op 1.27
computeProposers - vc 250000 11.393 ms/op 10.133 ms/op 1.12
computeEpochShuffling - vc 250000 108.78 ms/op 102.67 ms/op 1.06
getNextSyncCommittee - vc 250000 180.16 ms/op 166.97 ms/op 1.08

by benchmarkbot/action

@wemeetagain
wemeetagain merged commit b56770b into unstable Apr 5, 2023
@wemeetagain
wemeetagain deleted the nh/web3-get-block branch April 5, 2023 13:52
@wemeetagain

Copy link
Copy Markdown
Member

馃帀 This PR is included in v1.8.0 馃帀

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.

2 participants