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

feat: add ERC-55 support to ExecutionAddress #6355

Merged
merged 6 commits into from
Feb 6, 2024

Conversation

jeluard
Copy link
Contributor

@jeluard jeluard commented Jan 25, 2024

Motivation

Format ExecutionAddress as ERC55 for API consumption. ERC55 is reimplemented on top of ethereum-cryptography/keccak.js to reduce external dependencies.

Closes #6211

@jeluard jeluard force-pushed the jeluard/erc55-execution-address branch 2 times, most recently from 48d50e4 to 0e78950 Compare January 25, 2024 15:01
Copy link

codecov bot commented Jan 25, 2024

Codecov Report

Merging #6355 (0ce6074) into unstable (00dfa63) will not change coverage.
The diff coverage is n/a.

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #6355   +/-   ##
=========================================
  Coverage     60.15%   60.15%           
=========================================
  Files           407      407           
  Lines         46512    46512           
  Branches       1551     1551           
=========================================
  Hits          27978    27978           
  Misses        18502    18502           
  Partials         32       32           

@jeluard jeluard force-pushed the jeluard/erc55-execution-address branch 2 times, most recently from 673d430 to 304cd45 Compare January 25, 2024 15:56
Copy link
Contributor

github-actions bot commented Jan 25, 2024

⚠️ 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: 25f9ce0 Previous: 00dfa63 Ratio
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 14.871 us/op 3.8680 us/op 3.84
Full benchmark results
Benchmark suite Current: 25f9ce0 Previous: 00dfa63 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 633.43 us/op 684.00 us/op 0.93
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 88.020 us/op 59.111 us/op 1.49
BLS verify - blst-native 1.3193 ms/op 1.1248 ms/op 1.17
BLS verifyMultipleSignatures 3 - blst-native 2.7537 ms/op 2.4066 ms/op 1.14
BLS verifyMultipleSignatures 8 - blst-native 6.0690 ms/op 5.3349 ms/op 1.14
BLS verifyMultipleSignatures 32 - blst-native 22.132 ms/op 19.397 ms/op 1.14
BLS verifyMultipleSignatures 64 - blst-native 43.661 ms/op 37.987 ms/op 1.15
BLS verifyMultipleSignatures 128 - blst-native 86.640 ms/op 75.634 ms/op 1.15
BLS deserializing 10000 signatures 924.00 ms/op 815.67 ms/op 1.13
BLS deserializing 100000 signatures 9.4246 s/op 8.3433 s/op 1.13
BLS verifyMultipleSignatures - same message - 3 - blst-native 1.3341 ms/op 1.2159 ms/op 1.10
BLS verifyMultipleSignatures - same message - 8 - blst-native 1.6402 ms/op 1.2978 ms/op 1.26
BLS verifyMultipleSignatures - same message - 32 - blst-native 2.7954 ms/op 2.0581 ms/op 1.36
BLS verifyMultipleSignatures - same message - 64 - blst-native 4.2449 ms/op 4.0723 ms/op 1.04
BLS verifyMultipleSignatures - same message - 128 - blst-native 7.1332 ms/op 5.0152 ms/op 1.42
BLS aggregatePubkeys 32 - blst-native 31.984 us/op 22.698 us/op 1.41
BLS aggregatePubkeys 128 - blst-native 100.11 us/op 89.114 us/op 1.12
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 54.559 ms/op 42.295 ms/op 1.29
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 46.652 ms/op 39.405 ms/op 1.18
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 34.743 ms/op 25.263 ms/op 1.38
getSlashingsAndExits - default max 152.49 us/op 142.00 us/op 1.07
getSlashingsAndExits - 2k 396.06 us/op 342.30 us/op 1.16
proposeBlockBody type=full, size=empty 5.1775 ms/op 4.0434 ms/op 1.28
isKnown best case - 1 super set check 341.00 ns/op 335.00 ns/op 1.02
isKnown normal case - 2 super set checks 352.00 ns/op 316.00 ns/op 1.11
isKnown worse case - 16 super set checks 349.00 ns/op 304.00 ns/op 1.15
CheckpointStateCache - add get delete 5.7690 us/op 5.1420 us/op 1.12
validate api signedAggregateAndProof - struct 2.8091 ms/op 2.5634 ms/op 1.10
validate gossip signedAggregateAndProof - struct 2.8037 ms/op 2.4344 ms/op 1.15
validate gossip attestation - vc 640000 1.3732 ms/op 1.1748 ms/op 1.17
batch validate gossip attestation - vc 640000 - chunk 32 165.68 us/op 145.33 us/op 1.14
batch validate gossip attestation - vc 640000 - chunk 64 150.60 us/op 131.03 us/op 1.15
batch validate gossip attestation - vc 640000 - chunk 128 142.90 us/op 120.12 us/op 1.19
batch validate gossip attestation - vc 640000 - chunk 256 143.33 us/op 118.93 us/op 1.21
pickEth1Vote - no votes 1.5382 ms/op 1.2650 ms/op 1.22
pickEth1Vote - max votes 10.726 ms/op 11.827 ms/op 0.91
pickEth1Vote - Eth1Data hashTreeRoot value x2048 20.066 ms/op 15.426 ms/op 1.30
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 33.083 ms/op 20.482 ms/op 1.62
pickEth1Vote - Eth1Data fastSerialize value x2048 769.89 us/op 443.67 us/op 1.74
pickEth1Vote - Eth1Data fastSerialize tree x2048 5.9169 ms/op 3.7958 ms/op 1.56
bytes32 toHexString 540.00 ns/op 548.00 ns/op 0.99
bytes32 Buffer.toString(hex) 292.00 ns/op 336.00 ns/op 0.87
bytes32 Buffer.toString(hex) from Uint8Array 511.00 ns/op 485.00 ns/op 1.05
bytes32 Buffer.toString(hex) + 0x 298.00 ns/op 349.00 ns/op 0.85
Object access 1 prop 0.17100 ns/op 0.21200 ns/op 0.81
Map access 1 prop 0.15500 ns/op 0.20100 ns/op 0.77
Object get x1000 7.9630 ns/op 5.1980 ns/op 1.53
Map get x1000 1.1260 ns/op 0.79900 ns/op 1.41
Object set x1000 59.033 ns/op 30.928 ns/op 1.91
Map set x1000 49.169 ns/op 17.989 ns/op 2.73
Return object 10000 times 0.25780 ns/op 0.22660 ns/op 1.14
Throw Error 10000 times 4.0302 us/op 2.6858 us/op 1.50
fastMsgIdFn sha256 / 200 bytes 3.4140 us/op 2.0700 us/op 1.65
fastMsgIdFn h32 xxhash / 200 bytes 293.00 ns/op 316.00 ns/op 0.93
fastMsgIdFn h64 xxhash / 200 bytes 341.00 ns/op 379.00 ns/op 0.90
fastMsgIdFn sha256 / 1000 bytes 11.642 us/op 6.2020 us/op 1.88
fastMsgIdFn h32 xxhash / 1000 bytes 499.00 ns/op 448.00 ns/op 1.11
fastMsgIdFn h64 xxhash / 1000 bytes 480.00 ns/op 427.00 ns/op 1.12
fastMsgIdFn sha256 / 10000 bytes 108.28 us/op 52.374 us/op 2.07
fastMsgIdFn h32 xxhash / 10000 bytes 2.1220 us/op 1.8590 us/op 1.14
fastMsgIdFn h64 xxhash / 10000 bytes 1.4490 us/op 1.2830 us/op 1.13
send data - 1000 256B messages 20.711 ms/op 11.844 ms/op 1.75
send data - 1000 512B messages 27.385 ms/op 16.252 ms/op 1.69
send data - 1000 1024B messages 43.937 ms/op 28.161 ms/op 1.56
send data - 1000 1200B messages 41.319 ms/op 35.088 ms/op 1.18
send data - 1000 2048B messages 55.590 ms/op 39.988 ms/op 1.39
send data - 1000 4096B messages 49.239 ms/op 35.559 ms/op 1.38
send data - 1000 16384B messages 124.72 ms/op 85.979 ms/op 1.45
send data - 1000 65536B messages 479.36 ms/op 440.28 ms/op 1.09
enrSubnets - fastDeserialize 64 bits 1.2820 us/op 1.0640 us/op 1.20
enrSubnets - ssz BitVector 64 bits 399.00 ns/op 450.00 ns/op 0.89
enrSubnets - fastDeserialize 4 bits 166.00 ns/op 199.00 ns/op 0.83
enrSubnets - ssz BitVector 4 bits 411.00 ns/op 445.00 ns/op 0.92
prioritizePeers score -10:0 att 32-0.1 sync 2-0 103.70 us/op 71.654 us/op 1.45
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 122.81 us/op 78.569 us/op 1.56
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 162.61 us/op 108.91 us/op 1.49
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 287.19 us/op 188.90 us/op 1.52
prioritizePeers score 0:0 att 64-1 sync 4-1 349.81 us/op 204.31 us/op 1.71
array of 16000 items push then shift 1.6264 us/op 1.3314 us/op 1.22
LinkedList of 16000 items push then shift 8.8190 ns/op 6.0160 ns/op 1.47
array of 16000 items push then pop 76.787 ns/op 98.365 ns/op 0.78
LinkedList of 16000 items push then pop 8.6170 ns/op 5.9400 ns/op 1.45
array of 24000 items push then shift 2.3733 us/op 1.8558 us/op 1.28
LinkedList of 24000 items push then shift 8.7120 ns/op 7.0260 ns/op 1.24
array of 24000 items push then pop 101.31 ns/op 85.882 ns/op 1.18
LinkedList of 24000 items push then pop 8.5370 ns/op 5.7900 ns/op 1.47
intersect bitArray bitLen 8 6.8310 ns/op 4.8080 ns/op 1.42
intersect array and set length 8 62.303 ns/op 48.355 ns/op 1.29
intersect bitArray bitLen 128 34.961 ns/op 28.780 ns/op 1.21
intersect array and set length 128 842.40 ns/op 692.62 ns/op 1.22
bitArray.getTrueBitIndexes() bitLen 128 1.4280 us/op 1.2670 us/op 1.13
bitArray.getTrueBitIndexes() bitLen 248 2.4800 us/op 2.1560 us/op 1.15
bitArray.getTrueBitIndexes() bitLen 512 4.8890 us/op 3.9630 us/op 1.23
Buffer.concat 32 items 988.00 ns/op 832.00 ns/op 1.19
Uint8Array.set 32 items 2.2240 us/op 1.5910 us/op 1.40
Set add up to 64 items then delete first 4.2814 us/op 1.7765 us/op 2.41
OrderedSet add up to 64 items then delete first 5.4750 us/op 2.6874 us/op 2.04
Set add up to 64 items then delete last 4.6294 us/op 2.0403 us/op 2.27
OrderedSet add up to 64 items then delete last 6.0784 us/op 2.9808 us/op 2.04
Set add up to 64 items then delete middle 4.5445 us/op 1.9923 us/op 2.28
OrderedSet add up to 64 items then delete middle 7.1683 us/op 4.2265 us/op 1.70
Set add up to 128 items then delete first 9.1229 us/op 3.9514 us/op 2.31
OrderedSet add up to 128 items then delete first 11.508 us/op 6.2040 us/op 1.85
Set add up to 128 items then delete last 8.9987 us/op 3.8158 us/op 2.36
OrderedSet add up to 128 items then delete last 11.840 us/op 5.7147 us/op 2.07
Set add up to 128 items then delete middle 8.9826 us/op 3.8492 us/op 2.33
OrderedSet add up to 128 items then delete middle 17.284 us/op 10.877 us/op 1.59
Set add up to 256 items then delete first 18.289 us/op 7.6834 us/op 2.38
OrderedSet add up to 256 items then delete first 23.336 us/op 12.158 us/op 1.92
Set add up to 256 items then delete last 17.799 us/op 7.4444 us/op 2.39
OrderedSet add up to 256 items then delete last 25.988 us/op 11.365 us/op 2.29
Set add up to 256 items then delete middle 18.315 us/op 7.4250 us/op 2.47
OrderedSet add up to 256 items then delete middle 46.108 us/op 30.334 us/op 1.52
transfer serialized Status (84 B) 1.6400 us/op 1.3300 us/op 1.23
copy serialized Status (84 B) 1.3590 us/op 1.0580 us/op 1.28
transfer serialized SignedVoluntaryExit (112 B) 1.8250 us/op 1.3120 us/op 1.39
copy serialized SignedVoluntaryExit (112 B) 1.3940 us/op 1.1020 us/op 1.26
transfer serialized ProposerSlashing (416 B) 3.2140 us/op 1.9610 us/op 1.64
copy serialized ProposerSlashing (416 B) 2.9560 us/op 2.0300 us/op 1.46
transfer serialized Attestation (485 B) 3.3640 us/op 2.0770 us/op 1.62
copy serialized Attestation (485 B) 2.9270 us/op 1.7380 us/op 1.68
transfer serialized AttesterSlashing (33232 B) 2.9210 us/op 2.0930 us/op 1.40
copy serialized AttesterSlashing (33232 B) 6.7850 us/op 5.1030 us/op 1.33
transfer serialized Small SignedBeaconBlock (128000 B) 3.1580 us/op 2.2360 us/op 1.41
copy serialized Small SignedBeaconBlock (128000 B) 23.326 us/op 12.057 us/op 1.93
transfer serialized Avg SignedBeaconBlock (200000 B) 3.4480 us/op 2.0560 us/op 1.68
copy serialized Avg SignedBeaconBlock (200000 B) 28.107 us/op 17.843 us/op 1.58
transfer serialized BlobsSidecar (524380 B) 3.1490 us/op 1.8660 us/op 1.69
copy serialized BlobsSidecar (524380 B) 85.100 us/op 73.719 us/op 1.15
transfer serialized Big SignedBeaconBlock (1000000 B) 3.4190 us/op 2.0990 us/op 1.63
copy serialized Big SignedBeaconBlock (1000000 B) 165.55 us/op 132.92 us/op 1.25
pass gossip attestations to forkchoice per slot 4.3031 ms/op 2.6458 ms/op 1.63
forkChoice updateHead vc 100000 bc 64 eq 0 731.31 us/op 496.91 us/op 1.47
forkChoice updateHead vc 600000 bc 64 eq 0 4.6208 ms/op 2.5642 ms/op 1.80
forkChoice updateHead vc 1000000 bc 64 eq 0 7.1121 ms/op 4.3253 ms/op 1.64
forkChoice updateHead vc 600000 bc 320 eq 0 4.0960 ms/op 2.6313 ms/op 1.56
forkChoice updateHead vc 600000 bc 1200 eq 0 4.3468 ms/op 2.6818 ms/op 1.62
forkChoice updateHead vc 600000 bc 7200 eq 0 5.4085 ms/op 3.2177 ms/op 1.68
forkChoice updateHead vc 600000 bc 64 eq 1000 11.036 ms/op 9.8004 ms/op 1.13
forkChoice updateHead vc 600000 bc 64 eq 10000 11.884 ms/op 9.8880 ms/op 1.20
forkChoice updateHead vc 600000 bc 64 eq 300000 15.316 ms/op 11.872 ms/op 1.29
computeDeltas 500000 validators 300 proto nodes 6.5591 ms/op 3.1550 ms/op 2.08
computeDeltas 500000 validators 1200 proto nodes 6.4455 ms/op 3.0425 ms/op 2.12
computeDeltas 500000 validators 7200 proto nodes 6.2936 ms/op 2.9930 ms/op 2.10
computeDeltas 750000 validators 300 proto nodes 9.5273 ms/op 4.6445 ms/op 2.05
computeDeltas 750000 validators 1200 proto nodes 9.3919 ms/op 4.4902 ms/op 2.09
computeDeltas 750000 validators 7200 proto nodes 9.5487 ms/op 4.7106 ms/op 2.03
computeDeltas 1400000 validators 300 proto nodes 19.000 ms/op 8.8414 ms/op 2.15
computeDeltas 1400000 validators 1200 proto nodes 19.036 ms/op 9.1566 ms/op 2.08
computeDeltas 1400000 validators 7200 proto nodes 18.774 ms/op 8.7482 ms/op 2.15
computeDeltas 2100000 validators 300 proto nodes 29.624 ms/op 12.896 ms/op 2.30
computeDeltas 2100000 validators 1200 proto nodes 29.271 ms/op 12.919 ms/op 2.27
computeDeltas 2100000 validators 7200 proto nodes 28.853 ms/op 13.389 ms/op 2.16
altair processAttestation - 250000 vs - 7PWei normalcase 2.2779 ms/op 1.5855 ms/op 1.44
altair processAttestation - 250000 vs - 7PWei worstcase 3.3162 ms/op 2.2388 ms/op 1.48
altair processAttestation - setStatus - 1/6 committees join 182.39 us/op 74.941 us/op 2.43
altair processAttestation - setStatus - 1/3 committees join 347.81 us/op 153.62 us/op 2.26
altair processAttestation - setStatus - 1/2 committees join 477.72 us/op 213.83 us/op 2.23
altair processAttestation - setStatus - 2/3 committees join 585.09 us/op 285.88 us/op 2.05
altair processAttestation - setStatus - 4/5 committees join 792.09 us/op 390.93 us/op 2.03
altair processAttestation - setStatus - 100% committees join 924.08 us/op 462.04 us/op 2.00
altair processBlock - 250000 vs - 7PWei normalcase 10.195 ms/op 7.7470 ms/op 1.32
altair processBlock - 250000 vs - 7PWei normalcase hashState 33.624 ms/op 29.179 ms/op 1.15
altair processBlock - 250000 vs - 7PWei worstcase 44.607 ms/op 32.207 ms/op 1.39
altair processBlock - 250000 vs - 7PWei worstcase hashState 99.033 ms/op 79.405 ms/op 1.25
phase0 processBlock - 250000 vs - 7PWei normalcase 2.8002 ms/op 1.8229 ms/op 1.54
phase0 processBlock - 250000 vs - 7PWei worstcase 31.577 ms/op 23.480 ms/op 1.34
altair processEth1Data - 250000 vs - 7PWei normalcase 514.92 us/op 357.56 us/op 1.44
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 11.650 us/op 9.1400 us/op 1.27
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 73.976 us/op 41.346 us/op 1.79
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 14.115 us/op 5.0180 us/op 2.81
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 14.871 us/op 3.8680 us/op 3.84
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 192.11 us/op 153.50 us/op 1.25
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.3642 ms/op 1.1420 ms/op 1.19
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.0558 ms/op 1.1865 ms/op 1.73
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.8797 ms/op 1.0431 ms/op 1.80
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.3405 ms/op 2.7924 ms/op 1.55
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.7132 ms/op 2.0044 ms/op 1.35
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 5.7432 ms/op 3.8856 ms/op 1.48
Tree 40 250000 create 528.76 ms/op 259.83 ms/op 2.04
Tree 40 250000 get(125000) 223.65 ns/op 115.53 ns/op 1.94
Tree 40 250000 set(125000) 1.2999 us/op 751.98 ns/op 1.73
Tree 40 250000 toArray() 27.466 ms/op 9.7883 ms/op 2.81
Tree 40 250000 iterate all - toArray() + loop 25.593 ms/op 10.064 ms/op 2.54
Tree 40 250000 iterate all - get(i) 78.974 ms/op 42.097 ms/op 1.88
MutableVector 250000 create 15.527 ms/op 11.900 ms/op 1.30
MutableVector 250000 get(125000) 6.8600 ns/op 5.6580 ns/op 1.21
MutableVector 250000 set(125000) 393.87 ns/op 218.40 ns/op 1.80
MutableVector 250000 toArray() 4.2614 ms/op 3.0036 ms/op 1.42
MutableVector 250000 iterate all - toArray() + loop 5.3355 ms/op 3.3155 ms/op 1.61
MutableVector 250000 iterate all - get(i) 1.6348 ms/op 1.2950 ms/op 1.26
Array 250000 create 3.8175 ms/op 2.9946 ms/op 1.27
Array 250000 clone - spread 1.5255 ms/op 1.1861 ms/op 1.29
Array 250000 get(125000) 1.2970 ns/op 1.0190 ns/op 1.27
Array 250000 set(125000) 5.4120 ns/op 1.2100 ns/op 4.47
Array 250000 iterate all - loop 172.16 us/op 146.47 us/op 1.18
effectiveBalanceIncrements clone Uint8Array 300000 59.457 us/op 26.247 us/op 2.27
effectiveBalanceIncrements clone MutableVector 300000 454.00 ns/op 426.00 ns/op 1.07
effectiveBalanceIncrements rw all Uint8Array 300000 210.63 us/op 177.63 us/op 1.19
effectiveBalanceIncrements rw all MutableVector 300000 109.61 ms/op 69.854 ms/op 1.57
phase0 afterProcessEpoch - 250000 vs - 7PWei 123.16 ms/op 73.517 ms/op 1.68
phase0 beforeProcessEpoch - 250000 vs - 7PWei 62.313 ms/op 33.745 ms/op 1.85
altair processEpoch - mainnet_e81889 586.85 ms/op 413.34 ms/op 1.42
mainnet_e81889 - altair beforeProcessEpoch 92.895 ms/op 71.573 ms/op 1.30
mainnet_e81889 - altair processJustificationAndFinalization 17.519 us/op 10.185 us/op 1.72
mainnet_e81889 - altair processInactivityUpdates 7.1671 ms/op 4.5232 ms/op 1.58
mainnet_e81889 - altair processRewardsAndPenalties 84.792 ms/op 58.621 ms/op 1.45
mainnet_e81889 - altair processRegistryUpdates 3.0000 us/op 1.8210 us/op 1.65
mainnet_e81889 - altair processSlashings 555.00 ns/op 567.00 ns/op 0.98
mainnet_e81889 - altair processEth1DataReset 630.00 ns/op 539.00 ns/op 1.17
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.4516 ms/op 1.7812 ms/op 0.81
mainnet_e81889 - altair processSlashingsReset 4.5670 us/op 2.2560 us/op 2.02
mainnet_e81889 - altair processRandaoMixesReset 7.2470 us/op 2.5850 us/op 2.80
mainnet_e81889 - altair processHistoricalRootsUpdate 663.00 ns/op 688.00 ns/op 0.96
mainnet_e81889 - altair processParticipationFlagUpdates 1.8780 us/op 1.2500 us/op 1.50
mainnet_e81889 - altair processSyncCommitteeUpdates 734.00 ns/op 609.00 ns/op 1.21
mainnet_e81889 - altair afterProcessEpoch 121.41 ms/op 80.041 ms/op 1.52
capella processEpoch - mainnet_e217614 2.2839 s/op 1.8286 s/op 1.25
mainnet_e217614 - capella beforeProcessEpoch 527.23 ms/op 447.56 ms/op 1.18
mainnet_e217614 - capella processJustificationAndFinalization 19.696 us/op 10.369 us/op 1.90
mainnet_e217614 - capella processInactivityUpdates 20.297 ms/op 15.954 ms/op 1.27
mainnet_e217614 - capella processRewardsAndPenalties 437.09 ms/op 387.58 ms/op 1.13
mainnet_e217614 - capella processRegistryUpdates 39.826 us/op 18.172 us/op 2.19
mainnet_e217614 - capella processSlashings 654.00 ns/op 558.00 ns/op 1.17
mainnet_e217614 - capella processEth1DataReset 872.00 ns/op 543.00 ns/op 1.61
mainnet_e217614 - capella processEffectiveBalanceUpdates 12.993 ms/op 5.0723 ms/op 2.56
mainnet_e217614 - capella processSlashingsReset 3.3610 us/op 1.5690 us/op 2.14
mainnet_e217614 - capella processRandaoMixesReset 6.5850 us/op 2.7470 us/op 2.40
mainnet_e217614 - capella processHistoricalRootsUpdate 777.00 ns/op 653.00 ns/op 1.19
mainnet_e217614 - capella processParticipationFlagUpdates 1.9640 us/op 1.4640 us/op 1.34
mainnet_e217614 - capella afterProcessEpoch 345.25 ms/op 237.46 ms/op 1.45
phase0 processEpoch - mainnet_e58758 481.65 ms/op 390.78 ms/op 1.23
mainnet_e58758 - phase0 beforeProcessEpoch 154.24 ms/op 97.940 ms/op 1.57
mainnet_e58758 - phase0 processJustificationAndFinalization 19.370 us/op 10.740 us/op 1.80
mainnet_e58758 - phase0 processRewardsAndPenalties 57.300 ms/op 50.526 ms/op 1.13
mainnet_e58758 - phase0 processRegistryUpdates 15.920 us/op 7.0920 us/op 2.24
mainnet_e58758 - phase0 processSlashings 758.00 ns/op 554.00 ns/op 1.37
mainnet_e58758 - phase0 processEth1DataReset 628.00 ns/op 551.00 ns/op 1.14
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.1944 ms/op 1.3900 ms/op 0.86
mainnet_e58758 - phase0 processSlashingsReset 4.9980 us/op 2.8910 us/op 1.73
mainnet_e58758 - phase0 processRandaoMixesReset 8.4690 us/op 3.0920 us/op 2.74
mainnet_e58758 - phase0 processHistoricalRootsUpdate 1.0360 us/op 484.00 ns/op 2.14
mainnet_e58758 - phase0 processParticipationRecordUpdates 7.2580 us/op 2.8260 us/op 2.57
mainnet_e58758 - phase0 afterProcessEpoch 102.37 ms/op 63.653 ms/op 1.61
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.4408 ms/op 990.34 us/op 1.45
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.5699 ms/op 1.1561 ms/op 1.36
altair processInactivityUpdates - 250000 normalcase 36.852 ms/op 20.741 ms/op 1.78
altair processInactivityUpdates - 250000 worstcase 30.226 ms/op 21.378 ms/op 1.41
phase0 processRegistryUpdates - 250000 normalcase 14.908 us/op 9.6110 us/op 1.55
phase0 processRegistryUpdates - 250000 badcase_full_deposits 606.05 us/op 393.86 us/op 1.54
phase0 processRegistryUpdates - 250000 worstcase 0.5 181.05 ms/op 116.59 ms/op 1.55
altair processRewardsAndPenalties - 250000 normalcase 75.478 ms/op 58.817 ms/op 1.28
altair processRewardsAndPenalties - 250000 worstcase 80.667 ms/op 56.796 ms/op 1.42
phase0 getAttestationDeltas - 250000 normalcase 14.499 ms/op 5.6794 ms/op 2.55
phase0 getAttestationDeltas - 250000 worstcase 14.541 ms/op 5.2664 ms/op 2.76
phase0 processSlashings - 250000 worstcase 143.46 us/op 87.839 us/op 1.63
altair processSyncCommitteeUpdates - 250000 189.55 ms/op 122.68 ms/op 1.55
BeaconState.hashTreeRoot - No change 1.0270 us/op 610.00 ns/op 1.68
BeaconState.hashTreeRoot - 1 full validator 188.23 us/op 102.31 us/op 1.84
BeaconState.hashTreeRoot - 32 full validator 2.0151 ms/op 1.5302 ms/op 1.32
BeaconState.hashTreeRoot - 512 full validator 21.005 ms/op 12.889 ms/op 1.63
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 247.99 us/op 139.77 us/op 1.77
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 3.2679 ms/op 1.5345 ms/op 2.13
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 46.787 ms/op 20.360 ms/op 2.30
BeaconState.hashTreeRoot - 1 balances 185.72 us/op 82.813 us/op 2.24
BeaconState.hashTreeRoot - 32 balances 1.8069 ms/op 748.16 us/op 2.42
BeaconState.hashTreeRoot - 512 balances 17.781 ms/op 7.4957 ms/op 2.37
BeaconState.hashTreeRoot - 250000 balances 260.81 ms/op 136.30 ms/op 1.91
aggregationBits - 2048 els - zipIndexesInBitList 36.029 us/op 10.637 us/op 3.39
byteArrayEquals 32 94.695 ns/op 64.710 ns/op 1.46
Buffer.compare 32 62.399 ns/op 37.350 ns/op 1.67
byteArrayEquals 1024 2.4212 us/op 1.7620 us/op 1.37
Buffer.compare 1024 76.877 ns/op 44.286 ns/op 1.74
byteArrayEquals 16384 47.122 us/op 28.056 us/op 1.68
Buffer.compare 16384 289.77 ns/op 218.26 ns/op 1.33
byteArrayEquals 123687377 297.21 ms/op 211.18 ms/op 1.41
Buffer.compare 123687377 10.816 ms/op 6.9481 ms/op 1.56
byteArrayEquals 32 - diff last byte 101.47 ns/op 62.636 ns/op 1.62
Buffer.compare 32 - diff last byte 65.064 ns/op 38.672 ns/op 1.68
byteArrayEquals 1024 - diff last byte 2.2607 us/op 1.8365 us/op 1.23
Buffer.compare 1024 - diff last byte 80.286 ns/op 47.334 ns/op 1.70
byteArrayEquals 16384 - diff last byte 36.304 us/op 28.479 us/op 1.27
Buffer.compare 16384 - diff last byte 261.38 ns/op 224.58 ns/op 1.16
byteArrayEquals 123687377 - diff last byte 256.50 ms/op 212.08 ms/op 1.21
Buffer.compare 123687377 - diff last byte 7.4248 ms/op 6.9068 ms/op 1.08
byteArrayEquals 32 - random bytes 6.0350 ns/op 5.0000 ns/op 1.21
Buffer.compare 32 - random bytes 64.091 ns/op 40.823 ns/op 1.57
byteArrayEquals 1024 - random bytes 5.8430 ns/op 5.3890 ns/op 1.08
Buffer.compare 1024 - random bytes 62.328 ns/op 46.172 ns/op 1.35
byteArrayEquals 16384 - random bytes 5.3590 ns/op 5.1410 ns/op 1.04
Buffer.compare 16384 - random bytes 60.741 ns/op 39.107 ns/op 1.55
byteArrayEquals 123687377 - random bytes 8.6200 ns/op 8.2700 ns/op 1.04
Buffer.compare 123687377 - random bytes 65.320 ns/op 43.300 ns/op 1.51
regular array get 100000 times 47.805 us/op 42.889 us/op 1.11
wrappedArray get 100000 times 45.527 us/op 43.103 us/op 1.06
arrayWithProxy get 100000 times 14.089 ms/op 10.482 ms/op 1.34
ssz.Root.equals 54.690 ns/op 56.707 ns/op 0.96
byteArrayEquals 54.245 ns/op 55.991 ns/op 0.97
Buffer.compare 11.772 ns/op 10.607 ns/op 1.11
shuffle list - 16384 els 7.0790 ms/op 4.7700 ms/op 1.48
shuffle list - 250000 els 102.56 ms/op 71.349 ms/op 1.44
processSlot - 1 slots 16.798 us/op 13.847 us/op 1.21
processSlot - 32 slots 3.6536 ms/op 2.6486 ms/op 1.38
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 59.694 ms/op 52.061 ms/op 1.15
getCommitteeAssignments - req 1 vs - 250000 vc 2.5027 ms/op 2.2770 ms/op 1.10
getCommitteeAssignments - req 100 vs - 250000 vc 3.6726 ms/op 3.4490 ms/op 1.06
getCommitteeAssignments - req 1000 vs - 250000 vc 4.0101 ms/op 3.8072 ms/op 1.05
findModifiedValidators - 10000 modified validators 523.52 ms/op 447.60 ms/op 1.17
findModifiedValidators - 1000 modified validators 422.38 ms/op 346.90 ms/op 1.22
findModifiedValidators - 100 modified validators 413.10 ms/op 351.60 ms/op 1.17
findModifiedValidators - 10 modified validators 407.86 ms/op 331.78 ms/op 1.23
findModifiedValidators - 1 modified validators 407.73 ms/op 345.25 ms/op 1.18
findModifiedValidators - no difference 413.08 ms/op 350.18 ms/op 1.18
compare ViewDUs 4.3020 s/op 4.4888 s/op 0.96
compare each validator Uint8Array 1.5458 s/op 1.3689 s/op 1.13
compare ViewDU to Uint8Array 1.3069 s/op 1.1868 s/op 1.10
migrate state 1000000 validators, 24 modified, 0 new 747.59 ms/op 809.45 ms/op 0.92
migrate state 1000000 validators, 1700 modified, 1000 new 1.0488 s/op 991.41 ms/op 1.06
migrate state 1000000 validators, 3400 modified, 2000 new 1.2888 s/op 1.1119 s/op 1.16
migrate state 1500000 validators, 24 modified, 0 new 769.82 ms/op 591.10 ms/op 1.30
migrate state 1500000 validators, 1700 modified, 1000 new 1.0167 s/op 870.61 ms/op 1.17
migrate state 1500000 validators, 3400 modified, 2000 new 1.2651 s/op 1.1451 s/op 1.10
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.1300 ns/op 4.2100 ns/op 0.98
state getBlockRootAtSlot - 250000 vs - 7PWei 548.24 ns/op 558.00 ns/op 0.98
computeProposers - vc 250000 9.2086 ms/op 5.8573 ms/op 1.57
computeEpochShuffling - vc 250000 103.24 ms/op 66.787 ms/op 1.55
getNextSyncCommittee - vc 250000 163.56 ms/op 102.89 ms/op 1.59
computeSigningRoot for AttestationData 26.263 us/op 21.387 us/op 1.23
hash AttestationData serialized data then Buffer.toString(base64) 2.3467 us/op 1.2136 us/op 1.93
toHexString serialized data 1.1114 us/op 774.44 ns/op 1.44
Buffer.toString(base64) 217.16 ns/op 148.12 ns/op 1.47

by benchmarkbot/action

@jeluard jeluard marked this pull request as ready for review January 29, 2024 07:53
@jeluard jeluard requested a review from a team as a code owner January 29, 2024 07:53
packages/types/src/primitive/sszTypes.ts Outdated Show resolved Hide resolved
packages/types/src/primitive/sszTypes.ts Outdated Show resolved Hide resolved
packages/types/package.json Outdated Show resolved Hide resolved
packages/types/src/primitive/sszTypes.ts Outdated Show resolved Hide resolved
packages/utils/src/format.ts Outdated Show resolved Hide resolved
packages/types/src/primitive/sszTypes.ts Outdated Show resolved Hide resolved
packages/utils/src/format.ts Outdated Show resolved Hide resolved
packages/utils/src/format.ts Outdated Show resolved Hide resolved
packages/utils/test/unit/format.test.ts Outdated Show resolved Hide resolved
@jeluard jeluard marked this pull request as draft January 30, 2024 12:45
@jeluard jeluard force-pushed the jeluard/erc55-execution-address branch from 3ea1a0f to 651723a Compare February 2, 2024 11:29
@jeluard jeluard marked this pull request as ready for review February 2, 2024 12:10
packages/types/src/utils/ExecutionAddress.ts Outdated Show resolved Hide resolved
packages/types/package.json Outdated Show resolved Hide resolved
packages/types/package.json Outdated Show resolved Hide resolved
packages/types/src/utils/ExecutionAddress.ts Outdated Show resolved Hide resolved
packages/types/src/utils/ExecutionAddress.ts Outdated Show resolved Hide resolved
packages/types/test/unit/ExecutionAddress.test.ts Outdated Show resolved Hide resolved
packages/types/test/unit/ExecutionAddress.test.ts Outdated Show resolved Hide resolved
packages/types/test/unit/ExecutionAddress.test.ts Outdated Show resolved Hide resolved
packages/types/test/unit/ExecutionAddress.test.ts Outdated Show resolved Hide resolved
packages/types/test/unit/ExecutionAddress.test.ts Outdated Show resolved Hide resolved
@jeluard jeluard force-pushed the jeluard/erc55-execution-address branch from b8de48e to f1719af Compare February 3, 2024 10:50
@jeluard jeluard requested a review from nflaig February 6, 2024 08:55
@nflaig nflaig added this to the v1.16.0 milestone Feb 6, 2024
/**
* Formats an address according to [ERC55](https://eips.ethereum.org/EIPS/eip-55)
*/
export function toChecksumAddress(address: string): string {
Copy link
Member

Choose a reason for hiding this comment

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

is this used anywhere yet? or is this PR just adding the functionality for later?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Do you mean specifically because of the export keyword?

Copy link
Member

Choose a reason for hiding this comment

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

I guess I missed L64 of primitive/sszTypes.ts where this is being used.

This is fine to add here for now.

Copy link
Member

Choose a reason for hiding this comment

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

It also needs to be exported for unit testing

Copy link
Member

@nflaig nflaig Feb 6, 2024

Choose a reason for hiding this comment

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

This is fine to add here for now.

yeah, thought so as well, we might need furher custom ssz types (for ssz api refactoring), will likely have to revisit and maybe restructure this at some point

@nflaig nflaig merged commit b6890ad into unstable Feb 6, 2024
13 of 15 checks passed
@nflaig nflaig deleted the jeluard/erc55-execution-address branch February 6, 2024 21:56
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.16.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.

ERC-55 mixed-case checksum address encoding for execution address
3 participants