Skip to content

EIP-4844: Add engine API getBlobsBundle method#4843

Merged
g11tech merged 2 commits intounstablefrom
dapplion/eip-4844-getBlobsBundle
Dec 5, 2022
Merged

EIP-4844: Add engine API getBlobsBundle method#4843
g11tech merged 2 commits intounstablefrom
dapplion/eip-4844-getBlobsBundle

Conversation

@dapplion
Copy link
Contributor

@dapplion dapplion commented Dec 5, 2022

Motivation

Description

  • Add engine API getBlobsBundle method
  • Update consumers to use ForkName

@dapplion dapplion requested a review from a team as a code owner December 5, 2022 08:01
@dapplion dapplion changed the title Add engine API getBlobsBundle method EIP-4844: Add engine API getBlobsBundle method Dec 5, 2022
@dapplion dapplion added the spec-deneb 🐡 Issues targeting the Deneb spec version label Dec 5, 2022
@github-actions
Copy link
Contributor

github-actions bot commented Dec 5, 2022

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 11d6233 Previous: 1fde79d Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.9720 ms/op 2.3952 ms/op 0.82
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 70.293 us/op 79.363 us/op 0.89
BLS verify - blst-native 1.8576 ms/op 1.9986 ms/op 0.93
BLS verifyMultipleSignatures 3 - blst-native 3.8063 ms/op 4.2332 ms/op 0.90
BLS verifyMultipleSignatures 8 - blst-native 8.2038 ms/op 8.8027 ms/op 0.93
BLS verifyMultipleSignatures 32 - blst-native 29.751 ms/op 34.314 ms/op 0.87
BLS aggregatePubkeys 32 - blst-native 39.180 us/op 48.821 us/op 0.80
BLS aggregatePubkeys 128 - blst-native 153.58 us/op 163.45 us/op 0.94
getAttestationsForBlock 81.936 ms/op 102.00 ms/op 0.80
isKnown best case - 1 super set check 416.00 ns/op 436.00 ns/op 0.95
isKnown normal case - 2 super set checks 407.00 ns/op 421.00 ns/op 0.97
isKnown worse case - 16 super set checks 405.00 ns/op 442.00 ns/op 0.92
CheckpointStateCache - add get delete 8.3840 us/op 9.4070 us/op 0.89
validate gossip signedAggregateAndProof - struct 4.2658 ms/op 4.7969 ms/op 0.89
validate gossip attestation - struct 2.0438 ms/op 2.0977 ms/op 0.97
pickEth1Vote - no votes 1.9965 ms/op 2.0058 ms/op 1.00
pickEth1Vote - max votes 17.795 ms/op 21.064 ms/op 0.84
pickEth1Vote - Eth1Data hashTreeRoot value x2048 10.528 ms/op 11.254 ms/op 0.94
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 19.233 ms/op 21.036 ms/op 0.91
pickEth1Vote - Eth1Data fastSerialize value x2048 1.5013 ms/op 1.6766 ms/op 0.90
pickEth1Vote - Eth1Data fastSerialize tree x2048 12.131 ms/op 15.477 ms/op 0.78
bytes32 toHexString 1.0170 us/op 1.1290 us/op 0.90
bytes32 Buffer.toString(hex) 674.00 ns/op 746.00 ns/op 0.90
bytes32 Buffer.toString(hex) from Uint8Array 898.00 ns/op 1.0470 us/op 0.86
bytes32 Buffer.toString(hex) + 0x 687.00 ns/op 688.00 ns/op 1.00
Object access 1 prop 0.33300 ns/op 0.34100 ns/op 0.98
Map access 1 prop 0.28900 ns/op 0.27500 ns/op 1.05
Object get x1000 16.617 ns/op 13.368 ns/op 1.24
Map get x1000 1.0320 ns/op 0.75700 ns/op 1.36
Object set x1000 111.07 ns/op 85.592 ns/op 1.30
Map set x1000 66.829 ns/op 63.109 ns/op 1.06
Return object 10000 times 0.37320 ns/op 0.39670 ns/op 0.94
Throw Error 10000 times 6.0574 us/op 6.4669 us/op 0.94
fastMsgIdFn sha256 / 200 bytes 4.2080 us/op 5.1520 us/op 0.82
fastMsgIdFn h32 xxhash / 200 bytes 515.00 ns/op 579.00 ns/op 0.89
fastMsgIdFn h64 xxhash / 200 bytes 674.00 ns/op 721.00 ns/op 0.93
fastMsgIdFn sha256 / 1000 bytes 13.207 us/op 14.306 us/op 0.92
fastMsgIdFn h32 xxhash / 1000 bytes 659.00 ns/op 667.00 ns/op 0.99
fastMsgIdFn h64 xxhash / 1000 bytes 803.00 ns/op 881.00 ns/op 0.91
fastMsgIdFn sha256 / 10000 bytes 113.35 us/op 120.15 us/op 0.94
fastMsgIdFn h32 xxhash / 10000 bytes 2.3750 us/op 2.2780 us/op 1.04
fastMsgIdFn h64 xxhash / 10000 bytes 1.7570 us/op 1.7690 us/op 0.99
enrSubnets - fastDeserialize 64 bits 2.5380 us/op 2.7610 us/op 0.92
enrSubnets - ssz BitVector 64 bits 726.00 ns/op 861.00 ns/op 0.84
enrSubnets - fastDeserialize 4 bits 352.00 ns/op 364.00 ns/op 0.97
enrSubnets - ssz BitVector 4 bits 711.00 ns/op 695.00 ns/op 1.02
prioritizePeers score -10:0 att 32-0.1 sync 2-0 88.647 us/op 90.494 us/op 0.98
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 121.22 us/op 122.51 us/op 0.99
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 201.27 us/op 228.55 us/op 0.88
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 438.13 us/op 498.16 us/op 0.88
prioritizePeers score 0:0 att 64-1 sync 4-1 454.79 us/op 482.54 us/op 0.94
RateTracker 1000000 limit, 1 obj count per request 181.45 ns/op 163.35 ns/op 1.11
RateTracker 1000000 limit, 2 obj count per request 135.10 ns/op 116.16 ns/op 1.16
RateTracker 1000000 limit, 4 obj count per request 112.74 ns/op 97.823 ns/op 1.15
RateTracker 1000000 limit, 8 obj count per request 101.08 ns/op 89.142 ns/op 1.13
RateTracker with prune 4.1890 us/op 4.0900 us/op 1.02
array of 16000 items push then shift 2.8181 us/op 4.2745 us/op 0.66
LinkedList of 16000 items push then shift 17.095 ns/op 14.993 ns/op 1.14
array of 16000 items push then pop 244.15 ns/op 212.11 ns/op 1.15
LinkedList of 16000 items push then pop 16.469 ns/op 13.661 ns/op 1.21
array of 24000 items push then shift 3.9596 us/op 6.3622 us/op 0.62
LinkedList of 24000 items push then shift 20.805 ns/op 16.140 ns/op 1.29
array of 24000 items push then pop 207.82 ns/op 203.90 ns/op 1.02
LinkedList of 24000 items push then pop 17.867 ns/op 14.571 ns/op 1.23
intersect bitArray bitLen 8 11.762 ns/op 9.7590 ns/op 1.21
intersect array and set length 8 162.00 ns/op 152.06 ns/op 1.07
intersect bitArray bitLen 128 61.934 ns/op 57.488 ns/op 1.08
intersect array and set length 128 2.1670 us/op 1.7687 us/op 1.23
Buffer.concat 32 items 2.1720 ns/op 1.8720 ns/op 1.16
pass gossip attestations to forkchoice per slot 7.3501 ms/op 3.5583 ms/op 2.07
computeDeltas 5.4160 ms/op 5.1914 ms/op 1.04
computeProposerBoostScoreFromBalances 921.15 us/op 712.25 us/op 1.29
altair processAttestation - 250000 vs - 7PWei normalcase 3.4469 ms/op 3.7455 ms/op 0.92
altair processAttestation - 250000 vs - 7PWei worstcase 5.4342 ms/op 5.8901 ms/op 0.92
altair processAttestation - setStatus - 1/6 committees join 207.19 us/op 200.75 us/op 1.03
altair processAttestation - setStatus - 1/3 committees join 397.26 us/op 402.99 us/op 0.99
altair processAttestation - setStatus - 1/2 committees join 557.63 us/op 575.29 us/op 0.97
altair processAttestation - setStatus - 2/3 committees join 715.20 us/op 757.32 us/op 0.94
altair processAttestation - setStatus - 4/5 committees join 991.04 us/op 1.0110 ms/op 0.98
altair processAttestation - setStatus - 100% committees join 1.1697 ms/op 1.3092 ms/op 0.89
altair processBlock - 250000 vs - 7PWei normalcase 26.980 ms/op 26.738 ms/op 1.01
altair processBlock - 250000 vs - 7PWei normalcase hashState 42.894 ms/op 43.711 ms/op 0.98
altair processBlock - 250000 vs - 7PWei worstcase 83.053 ms/op 79.531 ms/op 1.04
altair processBlock - 250000 vs - 7PWei worstcase hashState 109.23 ms/op 98.296 ms/op 1.11
phase0 processBlock - 250000 vs - 7PWei normalcase 3.2879 ms/op 3.5202 ms/op 0.93
phase0 processBlock - 250000 vs - 7PWei worstcase 45.093 ms/op 43.190 ms/op 1.04
altair processEth1Data - 250000 vs - 7PWei normalcase 764.88 us/op 734.92 us/op 1.04
vc - 250000 eb 1 eth1 1 we 0 wn 0 - smpl 15 7.9530 us/op 20.075 us/op 0.40
vc - 250000 eb 0.95 eth1 0.1 we 0.05 wn 0 - smpl 219 37.352 us/op 45.087 us/op 0.83
vc - 250000 eb 0.95 eth1 0.3 we 0.05 wn 0 - smpl 42 10.877 us/op 25.600 us/op 0.42
vc - 250000 eb 0.95 eth1 0.7 we 0.05 wn 0 - smpl 18 8.2850 us/op 21.210 us/op 0.39
vc - 250000 eb 0.1 eth1 0.1 we 0 wn 0 - smpl 1020 142.57 us/op 134.01 us/op 1.06
vc - 250000 eb 0.03 eth1 0.03 we 0 wn 0 - smpl 11777 1.2369 ms/op 1.1139 ms/op 1.11
vc - 250000 eb 0.01 eth1 0.01 we 0 wn 0 - smpl 141069 14.686 ms/op 13.075 ms/op 1.12
vc - 250000 eb 0 eth1 0 we 0 wn 0 - smpl 250000 24.781 ms/op 23.415 ms/op 1.06
vc - 250000 eb 0 eth1 0 we 0 wn 0 nocache - smpl 250000 86.006 ms/op 76.872 ms/op 1.12
vc - 250000 eb 0 eth1 1 we 0 wn 0 - smpl 250000 47.757 ms/op 44.208 ms/op 1.08
vc - 250000 eb 0 eth1 1 we 0 wn 0 nocache - smpl 250000 137.52 ms/op 123.31 ms/op 1.12
Tree 40 250000 create 763.98 ms/op 757.50 ms/op 1.01
Tree 40 250000 get(125000) 296.05 ns/op 257.99 ns/op 1.15
Tree 40 250000 set(125000) 2.2166 us/op 2.1617 us/op 1.03
Tree 40 250000 toArray() 31.343 ms/op 32.374 ms/op 0.97
Tree 40 250000 iterate all - toArray() + loop 31.715 ms/op 32.960 ms/op 0.96
Tree 40 250000 iterate all - get(i) 110.40 ms/op 108.83 ms/op 1.01
MutableVector 250000 create 14.651 ms/op 13.369 ms/op 1.10
MutableVector 250000 get(125000) 13.562 ns/op 11.575 ns/op 1.17
MutableVector 250000 set(125000) 607.29 ns/op 545.94 ns/op 1.11
MutableVector 250000 toArray() 7.1257 ms/op 6.2579 ms/op 1.14
MutableVector 250000 iterate all - toArray() + loop 7.4148 ms/op 6.2043 ms/op 1.20
MutableVector 250000 iterate all - get(i) 3.2900 ms/op 2.6749 ms/op 1.23
Array 250000 create 6.5908 ms/op 5.6554 ms/op 1.17
Array 250000 clone - spread 3.5385 ms/op 3.1076 ms/op 1.14
Array 250000 get(125000) 1.4790 ns/op 1.3990 ns/op 1.06
Array 250000 set(125000) 1.4710 ns/op 1.3240 ns/op 1.11
Array 250000 iterate all - loop 167.77 us/op 119.56 us/op 1.40
effectiveBalanceIncrements clone Uint8Array 300000 81.273 us/op 64.298 us/op 1.26
effectiveBalanceIncrements clone MutableVector 300000 666.00 ns/op 934.00 ns/op 0.71
effectiveBalanceIncrements rw all Uint8Array 300000 254.03 us/op 242.30 us/op 1.05
effectiveBalanceIncrements rw all MutableVector 300000 159.24 ms/op 192.29 ms/op 0.83
phase0 afterProcessEpoch - 250000 vs - 7PWei 182.55 ms/op 165.34 ms/op 1.10
phase0 beforeProcessEpoch - 250000 vs - 7PWei 68.073 ms/op 99.949 ms/op 0.68
altair processEpoch - mainnet_e81889 603.57 ms/op 538.90 ms/op 1.12
mainnet_e81889 - altair beforeProcessEpoch 94.762 ms/op 130.98 ms/op 0.72
mainnet_e81889 - altair processJustificationAndFinalization 20.542 us/op 69.371 us/op 0.30
mainnet_e81889 - altair processInactivityUpdates 10.941 ms/op 9.3178 ms/op 1.17
mainnet_e81889 - altair processRewardsAndPenalties 156.38 ms/op 89.595 ms/op 1.75
mainnet_e81889 - altair processRegistryUpdates 3.4610 us/op 14.945 us/op 0.23
mainnet_e81889 - altair processSlashings 782.00 ns/op 4.1410 us/op 0.19
mainnet_e81889 - altair processEth1DataReset 1.1040 us/op 4.3760 us/op 0.25
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.7337 ms/op 1.9670 ms/op 1.39
mainnet_e81889 - altair processSlashingsReset 6.4840 us/op 27.487 us/op 0.24
mainnet_e81889 - altair processRandaoMixesReset 8.0970 us/op 25.159 us/op 0.32
mainnet_e81889 - altair processHistoricalRootsUpdate 945.00 ns/op 3.9940 us/op 0.24
mainnet_e81889 - altair processParticipationFlagUpdates 3.2190 us/op 15.278 us/op 0.21
mainnet_e81889 - altair processSyncCommitteeUpdates 999.00 ns/op 3.5080 us/op 0.28
mainnet_e81889 - altair afterProcessEpoch 192.67 ms/op 172.46 ms/op 1.12
phase0 processEpoch - mainnet_e58758 529.43 ms/op 493.85 ms/op 1.07
mainnet_e58758 - phase0 beforeProcessEpoch 251.86 ms/op 260.13 ms/op 0.97
mainnet_e58758 - phase0 processJustificationAndFinalization 18.112 us/op 63.352 us/op 0.29
mainnet_e58758 - phase0 processRewardsAndPenalties 114.53 ms/op 112.07 ms/op 1.02
mainnet_e58758 - phase0 processRegistryUpdates 9.3500 us/op 34.207 us/op 0.27
mainnet_e58758 - phase0 processSlashings 820.00 ns/op 3.9930 us/op 0.21
mainnet_e58758 - phase0 processEth1DataReset 691.00 ns/op 3.8360 us/op 0.18
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 2.4127 ms/op 1.9498 ms/op 1.24
mainnet_e58758 - phase0 processSlashingsReset 5.7040 us/op 19.124 us/op 0.30
mainnet_e58758 - phase0 processRandaoMixesReset 7.1090 us/op 26.058 us/op 0.27
mainnet_e58758 - phase0 processHistoricalRootsUpdate 800.00 ns/op 4.3150 us/op 0.19
mainnet_e58758 - phase0 processParticipationRecordUpdates 4.5390 us/op 24.125 us/op 0.19
mainnet_e58758 - phase0 afterProcessEpoch 158.94 ms/op 134.75 ms/op 1.18
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.5396 ms/op 1.9822 ms/op 1.28
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 3.4664 ms/op 2.2041 ms/op 1.57
altair processInactivityUpdates - 250000 normalcase 40.067 ms/op 47.645 ms/op 0.84
altair processInactivityUpdates - 250000 worstcase 40.731 ms/op 55.703 ms/op 0.73
phase0 processRegistryUpdates - 250000 normalcase 7.9390 us/op 29.695 us/op 0.27
phase0 processRegistryUpdates - 250000 badcase_full_deposits 409.36 us/op 448.64 us/op 0.91
phase0 processRegistryUpdates - 250000 worstcase 0.5 204.21 ms/op 228.74 ms/op 0.89
altair processRewardsAndPenalties - 250000 normalcase 85.069 ms/op 135.80 ms/op 0.63
altair processRewardsAndPenalties - 250000 worstcase 131.93 ms/op 80.118 ms/op 1.65
phase0 getAttestationDeltas - 250000 normalcase 12.284 ms/op 11.512 ms/op 1.07
phase0 getAttestationDeltas - 250000 worstcase 12.526 ms/op 11.690 ms/op 1.07
phase0 processSlashings - 250000 worstcase 5.8032 ms/op 5.8091 ms/op 1.00
altair processSyncCommitteeUpdates - 250000 275.79 ms/op 267.40 ms/op 1.03
BeaconState.hashTreeRoot - No change 474.00 ns/op 460.00 ns/op 1.03
BeaconState.hashTreeRoot - 1 full validator 65.509 us/op 61.382 us/op 1.07
BeaconState.hashTreeRoot - 32 full validator 631.83 us/op 624.11 us/op 1.01
BeaconState.hashTreeRoot - 512 full validator 6.5978 ms/op 6.7505 ms/op 0.98
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 81.693 us/op 84.040 us/op 0.97
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.1941 ms/op 1.1719 ms/op 1.02
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 15.628 ms/op 14.657 ms/op 1.07
BeaconState.hashTreeRoot - 1 balances 68.844 us/op 58.336 us/op 1.18
BeaconState.hashTreeRoot - 32 balances 588.81 us/op 561.78 us/op 1.05
BeaconState.hashTreeRoot - 512 balances 5.5618 ms/op 5.7629 ms/op 0.97
BeaconState.hashTreeRoot - 250000 balances 88.813 ms/op 88.042 ms/op 1.01
aggregationBits - 2048 els - zipIndexesInBitList 32.756 us/op 21.679 us/op 1.51
regular array get 100000 times 67.444 us/op 45.457 us/op 1.48
wrappedArray get 100000 times 67.370 us/op 46.295 us/op 1.46
arrayWithProxy get 100000 times 28.544 ms/op 27.715 ms/op 1.03
ssz.Root.equals 510.00 ns/op 466.00 ns/op 1.09
byteArrayEquals 500.00 ns/op 413.00 ns/op 1.21
shuffle list - 16384 els 11.153 ms/op 9.1569 ms/op 1.22
shuffle list - 250000 els 164.98 ms/op 137.88 ms/op 1.20
processSlot - 1 slots 13.017 us/op 13.045 us/op 1.00
processSlot - 32 slots 1.8428 ms/op 1.8176 ms/op 1.01
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 393.31 us/op 357.18 us/op 1.10
getCommitteeAssignments - req 1 vs - 250000 vc 5.3166 ms/op 4.2755 ms/op 1.24
getCommitteeAssignments - req 100 vs - 250000 vc 7.2852 ms/op 6.1270 ms/op 1.19
getCommitteeAssignments - req 1000 vs - 250000 vc 7.7752 ms/op 6.4460 ms/op 1.21
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 9.4500 ns/op 7.8900 ns/op 1.20
state getBlockRootAtSlot - 250000 vs - 7PWei 1.0804 us/op 924.44 ns/op 1.17
computeProposers - vc 250000 17.118 ms/op 15.780 ms/op 1.08
computeEpochShuffling - vc 250000 167.31 ms/op 144.12 ms/op 1.16
getNextSyncCommittee - vc 250000 282.60 ms/op 268.06 ms/op 1.05

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 6ea9a9a into unstable Dec 5, 2022
@g11tech g11tech deleted the dapplion/eip-4844-getBlobsBundle branch December 5, 2022 12:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

spec-deneb 🐡 Issues targeting the Deneb spec version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants