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

fix: simplify snappy frame encoding #5617

Merged
merged 3 commits into from
Jun 20, 2023
Merged

fix: simplify snappy frame encoding #5617

merged 3 commits into from
Jun 20, 2023

Conversation

wemeetagain
Copy link
Member

Motivation

During upgrade to node 20, I noticed that our snappy dependency was out of date.
But worse, this dependency was hidden in our snappy frame compression library, which is a poorly maintained, untyped fork at https://github.com/chainsafe/node-snappy-stream

Description
This is a minimal implementation of snappy frame compression that doesn't rely on node streams, stream-to-it, and half-a-dozen other libraries in node-snappy-stream. Instead it uses an async generator to add the framing.

The snappy dependency has also been updated to v7.x.x

@wemeetagain wemeetagain requested a review from a team as a code owner June 6, 2023 19:51
@github-actions
Copy link
Contributor

github-actions bot commented Jun 6, 2023

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 1e671fd Previous: 4bbe595 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 818.31 us/op 775.11 us/op 1.06
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 65.208 us/op 47.102 us/op 1.38
BLS verify - blst-native 1.2921 ms/op 1.2291 ms/op 1.05
BLS verifyMultipleSignatures 3 - blst-native 2.6151 ms/op 2.4724 ms/op 1.06
BLS verifyMultipleSignatures 8 - blst-native 5.7747 ms/op 5.3352 ms/op 1.08
BLS verifyMultipleSignatures 32 - blst-native 23.070 ms/op 19.390 ms/op 1.19
BLS aggregatePubkeys 32 - blst-native 27.935 us/op 25.683 us/op 1.09
BLS aggregatePubkeys 128 - blst-native 104.56 us/op 101.02 us/op 1.04
getAttestationsForBlock 64.766 ms/op 63.153 ms/op 1.03
isKnown best case - 1 super set check 348.00 ns/op 275.00 ns/op 1.27
isKnown normal case - 2 super set checks 276.00 ns/op 269.00 ns/op 1.03
isKnown worse case - 16 super set checks 267.00 ns/op 269.00 ns/op 0.99
CheckpointStateCache - add get delete 5.3890 us/op 5.1300 us/op 1.05
validate gossip signedAggregateAndProof - struct 2.8188 ms/op 2.8007 ms/op 1.01
validate gossip attestation - struct 1.3421 ms/op 1.3137 ms/op 1.02
pickEth1Vote - no votes 1.4409 ms/op 1.2622 ms/op 1.14
pickEth1Vote - max votes 12.028 ms/op 10.621 ms/op 1.13
pickEth1Vote - Eth1Data hashTreeRoot value x2048 9.6158 ms/op 8.8614 ms/op 1.09
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 16.372 ms/op 17.569 ms/op 0.93
pickEth1Vote - Eth1Data fastSerialize value x2048 765.40 us/op 602.25 us/op 1.27
pickEth1Vote - Eth1Data fastSerialize tree x2048 5.6195 ms/op 9.1370 ms/op 0.62
bytes32 toHexString 721.00 ns/op 480.00 ns/op 1.50
bytes32 Buffer.toString(hex) 449.00 ns/op 346.00 ns/op 1.30
bytes32 Buffer.toString(hex) from Uint8Array 635.00 ns/op 563.00 ns/op 1.13
bytes32 Buffer.toString(hex) + 0x 446.00 ns/op 347.00 ns/op 1.29
Object access 1 prop 0.20400 ns/op 0.17400 ns/op 1.17
Map access 1 prop 0.16800 ns/op 0.16000 ns/op 1.05
Object get x1000 7.1120 ns/op 6.7700 ns/op 1.05
Map get x1000 0.62400 ns/op 0.59700 ns/op 1.05
Object set x1000 63.972 ns/op 51.289 ns/op 1.25
Map set x1000 51.230 ns/op 44.469 ns/op 1.15
Return object 10000 times 0.24270 ns/op 0.24360 ns/op 1.00
Throw Error 10000 times 4.2901 us/op 4.3268 us/op 0.99
fastMsgIdFn sha256 / 200 bytes 3.5530 us/op 3.5370 us/op 1.00
fastMsgIdFn h32 xxhash / 200 bytes 293.00 ns/op 288.00 ns/op 1.02
fastMsgIdFn h64 xxhash / 200 bytes 435.00 ns/op 416.00 ns/op 1.05
fastMsgIdFn sha256 / 1000 bytes 11.787 us/op 12.442 us/op 0.95
fastMsgIdFn h32 xxhash / 1000 bytes 436.00 ns/op 437.00 ns/op 1.00
fastMsgIdFn h64 xxhash / 1000 bytes 536.00 ns/op 479.00 ns/op 1.12
fastMsgIdFn sha256 / 10000 bytes 105.61 us/op 105.47 us/op 1.00
fastMsgIdFn h32 xxhash / 10000 bytes 2.0180 us/op 2.0090 us/op 1.00
fastMsgIdFn h64 xxhash / 10000 bytes 1.5050 us/op 1.4410 us/op 1.04
enrSubnets - fastDeserialize 64 bits 1.5350 us/op 1.2890 us/op 1.19
enrSubnets - ssz BitVector 64 bits 553.00 ns/op 498.00 ns/op 1.11
enrSubnets - fastDeserialize 4 bits 180.00 ns/op 170.00 ns/op 1.06
enrSubnets - ssz BitVector 4 bits 568.00 ns/op 516.00 ns/op 1.10
prioritizePeers score -10:0 att 32-0.1 sync 2-0 129.95 us/op 116.35 us/op 1.12
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 146.67 us/op 137.53 us/op 1.07
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 176.84 us/op 174.12 us/op 1.02
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 326.48 us/op 315.56 us/op 1.03
prioritizePeers score 0:0 att 64-1 sync 4-1 400.58 us/op 379.78 us/op 1.05
array of 16000 items push then shift 1.7124 us/op 1.6754 us/op 1.02
LinkedList of 16000 items push then shift 8.8340 ns/op 9.1310 ns/op 0.97
array of 16000 items push then pop 98.465 ns/op 97.403 ns/op 1.01
LinkedList of 16000 items push then pop 8.7430 ns/op 9.0140 ns/op 0.97
array of 24000 items push then shift 2.4121 us/op 2.4663 us/op 0.98
LinkedList of 24000 items push then shift 8.8110 ns/op 11.758 ns/op 0.75
array of 24000 items push then pop 76.227 ns/op 79.156 ns/op 0.96
LinkedList of 24000 items push then pop 8.6000 ns/op 8.9340 ns/op 0.96
intersect bitArray bitLen 8 13.212 ns/op 14.112 ns/op 0.94
intersect array and set length 8 79.173 ns/op 82.724 ns/op 0.96
intersect bitArray bitLen 128 44.610 ns/op 47.445 ns/op 0.94
intersect array and set length 128 1.0990 us/op 1.1009 us/op 1.00
Buffer.concat 32 items 2.8710 us/op 2.8530 us/op 1.01
Uint8Array.set 32 items 2.9930 us/op 2.8370 us/op 1.05
transfer serialized Status (84 B) 2.2230 us/op 2.3320 us/op 0.95
copy serialized Status (84 B) 1.7760 us/op 1.9960 us/op 0.89
transfer serialized SignedVoluntaryExit (112 B) 2.2270 us/op 2.4510 us/op 0.91
copy serialized SignedVoluntaryExit (112 B) 1.9510 us/op 2.0560 us/op 0.95
transfer serialized ProposerSlashing (416 B) 2.6790 us/op 3.3280 us/op 0.80
copy serialized ProposerSlashing (416 B) 2.7260 us/op 3.2780 us/op 0.83
transfer serialized Attestation (485 B) 2.6530 us/op 3.5240 us/op 0.75
copy serialized Attestation (485 B) 2.2650 us/op 3.5420 us/op 0.64
transfer serialized AttesterSlashing (33232 B) 2.3580 us/op 3.7180 us/op 0.63
copy serialized AttesterSlashing (33232 B) 5.5150 us/op 7.2910 us/op 0.76
transfer serialized Small SignedBeaconBlock (128000 B) 2.6000 us/op 3.4870 us/op 0.75
copy serialized Small SignedBeaconBlock (128000 B) 16.403 us/op 14.788 us/op 1.11
transfer serialized Avg SignedBeaconBlock (200000 B) 2.8950 us/op 3.5850 us/op 0.81
copy serialized Avg SignedBeaconBlock (200000 B) 63.780 us/op 24.353 us/op 2.62
transfer serialized BlobsSidecar (524380 B) 3.0230 us/op 3.5360 us/op 0.85
copy serialized BlobsSidecar (524380 B) 185.73 us/op 192.28 us/op 0.97
transfer serialized Big SignedBeaconBlock (1000000 B) 3.4920 us/op 3.6400 us/op 0.96
copy serialized Big SignedBeaconBlock (1000000 B) 283.88 us/op 259.25 us/op 1.09
pass gossip attestations to forkchoice per slot 2.6542 ms/op 2.7079 ms/op 0.98
forkChoice updateHead vc 100000 bc 64 eq 0 2.1769 ms/op 2.1161 ms/op 1.03
forkChoice updateHead vc 600000 bc 64 eq 0 13.025 ms/op 11.521 ms/op 1.13
forkChoice updateHead vc 1000000 bc 64 eq 0 18.475 ms/op 18.837 ms/op 0.98
forkChoice updateHead vc 600000 bc 320 eq 0 16.854 ms/op 17.209 ms/op 0.98
forkChoice updateHead vc 600000 bc 1200 eq 0 86.092 ms/op 86.483 ms/op 1.00
forkChoice updateHead vc 600000 bc 64 eq 1000 20.650 ms/op 22.012 ms/op 0.94
forkChoice updateHead vc 600000 bc 64 eq 10000 22.658 ms/op 24.009 ms/op 0.94
forkChoice updateHead vc 600000 bc 64 eq 300000 31.967 ms/op 32.095 ms/op 1.00
computeDeltas 3.0564 ms/op 3.8855 ms/op 0.79
computeProposerBoostScoreFromBalances 1.8038 ms/op 1.8099 ms/op 1.00
altair processAttestation - 250000 vs - 7PWei normalcase 2.2548 ms/op 3.4779 ms/op 0.65
altair processAttestation - 250000 vs - 7PWei worstcase 3.5706 ms/op 4.0392 ms/op 0.88
altair processAttestation - setStatus - 1/6 committees join 141.31 us/op 151.72 us/op 0.93
altair processAttestation - setStatus - 1/3 committees join 291.75 us/op 306.26 us/op 0.95
altair processAttestation - setStatus - 1/2 committees join 380.63 us/op 402.82 us/op 0.94
altair processAttestation - setStatus - 2/3 committees join 491.48 us/op 499.40 us/op 0.98
altair processAttestation - setStatus - 4/5 committees join 649.56 us/op 708.89 us/op 0.92
altair processAttestation - setStatus - 100% committees join 769.04 us/op 835.33 us/op 0.92
altair processBlock - 250000 vs - 7PWei normalcase 19.200 ms/op 19.879 ms/op 0.97
altair processBlock - 250000 vs - 7PWei normalcase hashState 27.756 ms/op 27.593 ms/op 1.01
altair processBlock - 250000 vs - 7PWei worstcase 62.238 ms/op 55.711 ms/op 1.12
altair processBlock - 250000 vs - 7PWei worstcase hashState 77.355 ms/op 84.267 ms/op 0.92
phase0 processBlock - 250000 vs - 7PWei normalcase 2.0048 ms/op 2.0757 ms/op 0.97
phase0 processBlock - 250000 vs - 7PWei worstcase 28.859 ms/op 29.291 ms/op 0.99
altair processEth1Data - 250000 vs - 7PWei normalcase 473.98 us/op 489.33 us/op 0.97
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 10.002 us/op 8.6220 us/op 1.16
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 27.426 us/op 26.165 us/op 1.05
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 12.509 us/op 8.1330 us/op 1.54
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 10.283 us/op 10.625 us/op 0.97
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 112.21 us/op 74.723 us/op 1.50
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.3057 ms/op 1.1600 ms/op 1.13
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.6457 ms/op 1.6724 ms/op 0.98
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.6525 ms/op 1.6291 ms/op 1.01
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 2.2384 ms/op 2.2076 ms/op 1.01
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.8853 ms/op 2.4621 ms/op 1.17
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.8949 ms/op 3.8771 ms/op 1.00
Tree 40 250000 create 328.53 ms/op 315.50 ms/op 1.04
Tree 40 250000 get(125000) 181.89 ns/op 195.82 ns/op 0.93
Tree 40 250000 set(125000) 840.99 ns/op 974.66 ns/op 0.86
Tree 40 250000 toArray() 16.617 ms/op 21.801 ms/op 0.76
Tree 40 250000 iterate all - toArray() + loop 16.649 ms/op 19.373 ms/op 0.86
Tree 40 250000 iterate all - get(i) 67.431 ms/op 72.268 ms/op 0.93
MutableVector 250000 create 14.008 ms/op 15.229 ms/op 0.92
MutableVector 250000 get(125000) 6.2100 ns/op 6.5550 ns/op 0.95
MutableVector 250000 set(125000) 239.56 ns/op 250.02 ns/op 0.96
MutableVector 250000 toArray() 2.6553 ms/op 2.8389 ms/op 0.94
MutableVector 250000 iterate all - toArray() + loop 2.7460 ms/op 2.8790 ms/op 0.95
MutableVector 250000 iterate all - get(i) 1.4946 ms/op 1.5654 ms/op 0.95
Array 250000 create 2.5346 ms/op 2.5322 ms/op 1.00
Array 250000 clone - spread 1.1092 ms/op 1.1306 ms/op 0.98
Array 250000 get(125000) 0.55700 ns/op 0.58000 ns/op 0.96
Array 250000 set(125000) 0.63400 ns/op 0.66000 ns/op 0.96
Array 250000 iterate all - loop 94.035 us/op 84.784 us/op 1.11
effectiveBalanceIncrements clone Uint8Array 300000 33.596 us/op 26.581 us/op 1.26
effectiveBalanceIncrements clone MutableVector 300000 348.00 ns/op 374.00 ns/op 0.93
effectiveBalanceIncrements rw all Uint8Array 300000 166.60 us/op 175.51 us/op 0.95
effectiveBalanceIncrements rw all MutableVector 300000 79.658 ms/op 82.451 ms/op 0.97
phase0 afterProcessEpoch - 250000 vs - 7PWei 112.27 ms/op 118.09 ms/op 0.95
phase0 beforeProcessEpoch - 250000 vs - 7PWei 41.935 ms/op 47.821 ms/op 0.88
altair processEpoch - mainnet_e81889 349.40 ms/op 359.43 ms/op 0.97
mainnet_e81889 - altair beforeProcessEpoch 67.173 ms/op 73.650 ms/op 0.91
mainnet_e81889 - altair processJustificationAndFinalization 17.912 us/op 24.960 us/op 0.72
mainnet_e81889 - altair processInactivityUpdates 6.0503 ms/op 6.1032 ms/op 0.99
mainnet_e81889 - altair processRewardsAndPenalties 69.301 ms/op 83.712 ms/op 0.83
mainnet_e81889 - altair processRegistryUpdates 2.6960 us/op 6.6730 us/op 0.40
mainnet_e81889 - altair processSlashings 486.00 ns/op 922.00 ns/op 0.53
mainnet_e81889 - altair processEth1DataReset 502.00 ns/op 863.00 ns/op 0.58
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.4671 ms/op 1.7648 ms/op 0.83
mainnet_e81889 - altair processSlashingsReset 4.2720 us/op 5.1260 us/op 0.83
mainnet_e81889 - altair processRandaoMixesReset 9.7200 us/op 5.6860 us/op 1.71
mainnet_e81889 - altair processHistoricalRootsUpdate 760.00 ns/op 1.8480 us/op 0.41
mainnet_e81889 - altair processParticipationFlagUpdates 2.1560 us/op 3.8020 us/op 0.57
mainnet_e81889 - altair processSyncCommitteeUpdates 556.00 ns/op 778.00 ns/op 0.71
mainnet_e81889 - altair afterProcessEpoch 130.77 ms/op 136.88 ms/op 0.96
phase0 processEpoch - mainnet_e58758 391.26 ms/op 411.64 ms/op 0.95
mainnet_e58758 - phase0 beforeProcessEpoch 159.20 ms/op 159.13 ms/op 1.00
mainnet_e58758 - phase0 processJustificationAndFinalization 18.187 us/op 23.853 us/op 0.76
mainnet_e58758 - phase0 processRewardsAndPenalties 71.869 ms/op 76.126 ms/op 0.94
mainnet_e58758 - phase0 processRegistryUpdates 7.7630 us/op 10.008 us/op 0.78
mainnet_e58758 - phase0 processSlashings 592.00 ns/op 700.00 ns/op 0.85
mainnet_e58758 - phase0 processEth1DataReset 519.00 ns/op 663.00 ns/op 0.78
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.7941 ms/op 1.2842 ms/op 1.40
mainnet_e58758 - phase0 processSlashingsReset 3.8950 us/op 6.9920 us/op 0.56
mainnet_e58758 - phase0 processRandaoMixesReset 4.5330 us/op 7.4020 us/op 0.61
mainnet_e58758 - phase0 processHistoricalRootsUpdate 1.1270 us/op 891.00 ns/op 1.26
mainnet_e58758 - phase0 processParticipationRecordUpdates 4.0230 us/op 5.5030 us/op 0.73
mainnet_e58758 - phase0 afterProcessEpoch 99.374 ms/op 104.32 ms/op 0.95
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.1813 ms/op 1.5174 ms/op 0.78
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.2105 ms/op 1.9865 ms/op 1.11
altair processInactivityUpdates - 250000 normalcase 23.078 ms/op 27.596 ms/op 0.84
altair processInactivityUpdates - 250000 worstcase 28.069 ms/op 27.827 ms/op 1.01
phase0 processRegistryUpdates - 250000 normalcase 8.3380 us/op 8.0320 us/op 1.04
phase0 processRegistryUpdates - 250000 badcase_full_deposits 489.09 us/op 304.87 us/op 1.60
phase0 processRegistryUpdates - 250000 worstcase 0.5 144.62 ms/op 130.43 ms/op 1.11
altair processRewardsAndPenalties - 250000 normalcase 66.494 ms/op 75.140 ms/op 0.88
altair processRewardsAndPenalties - 250000 worstcase 76.126 ms/op 74.931 ms/op 1.02
phase0 getAttestationDeltas - 250000 normalcase 6.5353 ms/op 7.0340 ms/op 0.93
phase0 getAttestationDeltas - 250000 worstcase 6.4965 ms/op 10.325 ms/op 0.63
phase0 processSlashings - 250000 worstcase 3.2778 ms/op 3.7813 ms/op 0.87
altair processSyncCommitteeUpdates - 250000 176.58 ms/op 189.80 ms/op 0.93
BeaconState.hashTreeRoot - No change 251.00 ns/op 312.00 ns/op 0.80
BeaconState.hashTreeRoot - 1 full validator 46.910 us/op 57.587 us/op 0.81
BeaconState.hashTreeRoot - 32 full validator 607.62 us/op 632.32 us/op 0.96
BeaconState.hashTreeRoot - 512 full validator 5.8143 ms/op 6.8258 ms/op 0.85
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 72.429 us/op 75.821 us/op 0.96
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 879.14 us/op 935.86 us/op 0.94
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 12.435 ms/op 13.372 ms/op 0.93
BeaconState.hashTreeRoot - 1 balances 56.524 us/op 52.435 us/op 1.08
BeaconState.hashTreeRoot - 32 balances 531.42 us/op 488.18 us/op 1.09
BeaconState.hashTreeRoot - 512 balances 4.8522 ms/op 5.0601 ms/op 0.96
BeaconState.hashTreeRoot - 250000 balances 83.992 ms/op 82.249 ms/op 1.02
aggregationBits - 2048 els - zipIndexesInBitList 15.105 us/op 17.826 us/op 0.85
regular array get 100000 times 32.499 us/op 43.685 us/op 0.74
wrappedArray get 100000 times 32.368 us/op 33.954 us/op 0.95
arrayWithProxy get 100000 times 15.236 ms/op 16.376 ms/op 0.93
ssz.Root.equals 544.00 ns/op 592.00 ns/op 0.92
byteArrayEquals 527.00 ns/op 565.00 ns/op 0.93
shuffle list - 16384 els 6.7781 ms/op 7.3296 ms/op 0.92
shuffle list - 250000 els 99.330 ms/op 107.40 ms/op 0.92
processSlot - 1 slots 9.4010 us/op 9.7190 us/op 0.97
processSlot - 32 slots 1.3655 ms/op 1.4006 ms/op 0.97
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 41.268 ms/op 40.476 ms/op 1.02
getCommitteeAssignments - req 1 vs - 250000 vc 2.9181 ms/op 3.0602 ms/op 0.95
getCommitteeAssignments - req 100 vs - 250000 vc 4.1885 ms/op 4.3344 ms/op 0.97
getCommitteeAssignments - req 1000 vs - 250000 vc 4.4439 ms/op 4.8655 ms/op 0.91
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.6800 ns/op 5.4000 ns/op 0.87
state getBlockRootAtSlot - 250000 vs - 7PWei 915.51 ns/op 770.04 ns/op 1.19
computeProposers - vc 250000 10.417 ms/op 11.955 ms/op 0.87
computeEpochShuffling - vc 250000 104.38 ms/op 111.76 ms/op 0.93
getNextSyncCommittee - vc 250000 171.17 ms/op 183.34 ms/op 0.93
computeSigningRoot for AttestationData 12.660 us/op 14.616 us/op 0.87
hash AttestationData serialized data then Buffer.toString(base64) 2.4354 us/op 2.6362 us/op 0.92
toHexString serialized data 1.0489 us/op 1.1581 us/op 0.91
Buffer.toString(base64) 320.04 ns/op 353.97 ns/op 0.90

by benchmarkbot/action

Copy link
Contributor

@dapplion dapplion left a comment

Choose a reason for hiding this comment

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

Can you add a test with pre-generated compress data? Current tests check the loop data -> compress -> uncompress -> check eq. Would be good to have data -> compress --> check eq, uncompress -> check eq, where the compressed data is generated with the previous version proven to work

@wemeetagain
Copy link
Member Author

We already have those tests :) reqresp/test/unit/encoders/encodingStrategies/sszSnappy/{encode,decode}.ts

@wemeetagain
Copy link
Member Author

@ChainSafe/lodestar ready for rereview

dapplion
dapplion previously approved these changes Jun 14, 2023
Copy link
Contributor

@dapplion dapplion left a comment

Choose a reason for hiding this comment

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

LGTM!

@wemeetagain wemeetagain merged commit 61c838b into unstable Jun 20, 2023
@wemeetagain wemeetagain deleted the cayman/snappy branch June 20, 2023 15:48
@wemeetagain wemeetagain mentioned this pull request Jun 23, 2023
4 tasks
@wemeetagain
Copy link
Member Author

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