@@ -2721,6 +2721,31 @@ impl ApiTester {
27212721 self
27222722 }
27232723
2724+ /// Check that the metadata from the headers & JSON response body are consistent, and that the
2725+ /// consensus block value is non-zero.
2726+ fn check_block_v3_metadata (
2727+ metadata : & ProduceBlockV3Metadata ,
2728+ response : & JsonProduceBlockV3Response < E > ,
2729+ ) {
2730+ // Compare fork name to ForkVersionedResponse rather than metadata consensus_version, which
2731+ // is deserialized to a dummy value.
2732+ assert_eq ! ( Some ( metadata. consensus_version) , response. version) ;
2733+ assert_eq ! ( ForkName :: Base , response. metadata. consensus_version) ;
2734+ assert_eq ! (
2735+ metadata. execution_payload_blinded,
2736+ response. metadata. execution_payload_blinded
2737+ ) ;
2738+ assert_eq ! (
2739+ metadata. execution_payload_value,
2740+ response. metadata. execution_payload_value
2741+ ) ;
2742+ assert_eq ! (
2743+ metadata. consensus_block_value,
2744+ response. metadata. consensus_block_value
2745+ ) ;
2746+ assert ! ( !metadata. consensus_block_value. is_zero( ) ) ;
2747+ }
2748+
27242749 pub async fn test_block_production_v3_ssz ( self ) -> Self {
27252750 let fork = self . chain . canonical_head . cached_head ( ) . head_fork ( ) ;
27262751 let genesis_validators_root = self . chain . genesis_validators_root ;
@@ -3582,11 +3607,12 @@ impl ApiTester {
35823607
35833608 let ( proposer_index, randao_reveal) = self . get_test_randao ( slot, epoch) . await ;
35843609
3585- let ( payload_type, _ ) = self
3610+ let ( payload_type, metadata ) = self
35863611 . client
35873612 . get_validator_blocks_v3 :: < E > ( slot, & randao_reveal, None , None )
35883613 . await
35893614 . unwrap ( ) ;
3615+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
35903616
35913617 let payload: BlindedPayload < E > = match payload_type. data {
35923618 ProduceBlockV3Response :: Blinded ( payload) => {
@@ -3608,11 +3634,12 @@ impl ApiTester {
36083634
36093635 let ( proposer_index, randao_reveal) = self . get_test_randao ( slot, epoch) . await ;
36103636
3611- let ( payload_type, _ ) = self
3637+ let ( payload_type, metadata ) = self
36123638 . client
36133639 . get_validator_blocks_v3 :: < E > ( slot, & randao_reveal, None , Some ( 0 ) )
36143640 . await
36153641 . unwrap ( ) ;
3642+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
36163643
36173644 let payload: FullPayload < E > = match payload_type. data {
36183645 ProduceBlockV3Response :: Full ( payload) => {
@@ -3634,11 +3661,12 @@ impl ApiTester {
36343661
36353662 let ( proposer_index, randao_reveal) = self . get_test_randao ( slot, epoch) . await ;
36363663
3637- let ( payload_type, _ ) = self
3664+ let ( payload_type, metadata ) = self
36383665 . client
36393666 . get_validator_blocks_v3 :: < E > ( slot, & randao_reveal, None , Some ( u64:: MAX ) )
36403667 . await
36413668 . unwrap ( ) ;
3669+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
36423670
36433671 let payload: BlindedPayload < E > = match payload_type. data {
36443672 ProduceBlockV3Response :: Blinded ( payload) => {
@@ -3738,11 +3766,12 @@ impl ApiTester {
37383766
37393767 let ( proposer_index, randao_reveal) = self . get_test_randao ( slot, epoch) . await ;
37403768
3741- let ( payload_type, _ ) = self
3769+ let ( payload_type, metadata ) = self
37423770 . client
37433771 . get_validator_blocks_v3 :: < E > ( slot, & randao_reveal, None , None )
37443772 . await
37453773 . unwrap ( ) ;
3774+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
37463775
37473776 let payload: BlindedPayload < E > = match payload_type. data {
37483777 ProduceBlockV3Response :: Blinded ( payload) => {
@@ -3814,11 +3843,12 @@ impl ApiTester {
38143843
38153844 let ( _, randao_reveal) = self . get_test_randao ( slot, epoch) . await ;
38163845
3817- let ( payload_type, _ ) = self
3846+ let ( payload_type, metadata ) = self
38183847 . client
38193848 . get_validator_blocks_v3 :: < E > ( slot, & randao_reveal, None , None )
38203849 . await
38213850 . unwrap ( ) ;
3851+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
38223852
38233853 let payload: BlindedPayload < E > = match payload_type. data {
38243854 ProduceBlockV3Response :: Blinded ( payload) => {
@@ -3904,11 +3934,12 @@ impl ApiTester {
39043934
39053935 let ( _, randao_reveal) = self . get_test_randao ( slot, epoch) . await ;
39063936
3907- let ( payload_type, _ ) = self
3937+ let ( payload_type, metadata ) = self
39083938 . client
39093939 . get_validator_blocks_v3 :: < E > ( slot, & randao_reveal, None , None )
39103940 . await
39113941 . unwrap ( ) ;
3942+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
39123943
39133944 let payload: FullPayload < E > = match payload_type. data {
39143945 ProduceBlockV3Response :: Full ( payload) => {
@@ -3990,11 +4021,12 @@ impl ApiTester {
39904021 . unwrap ( ) ;
39914022 let ( _, randao_reveal) = self . get_test_randao ( slot, epoch) . await ;
39924023
3993- let ( payload_type, _ ) = self
4024+ let ( payload_type, metadata ) = self
39944025 . client
39954026 . get_validator_blocks_v3 :: < E > ( slot, & randao_reveal, None , None )
39964027 . await
39974028 . unwrap ( ) ;
4029+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
39984030
39994031 let payload: FullPayload < E > = match payload_type. data {
40004032 ProduceBlockV3Response :: Full ( payload) => {
@@ -4076,11 +4108,12 @@ impl ApiTester {
40764108
40774109 let ( _, randao_reveal) = self . get_test_randao ( slot, epoch) . await ;
40784110
4079- let ( payload_type, _ ) = self
4111+ let ( payload_type, metadata ) = self
40804112 . client
40814113 . get_validator_blocks_v3 :: < E > ( slot, & randao_reveal, None , None )
40824114 . await
40834115 . unwrap ( ) ;
4116+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
40844117
40854118 let payload: FullPayload < E > = match payload_type. data {
40864119 ProduceBlockV3Response :: Full ( payload) => {
@@ -4160,11 +4193,12 @@ impl ApiTester {
41604193
41614194 let ( _, randao_reveal) = self . get_test_randao ( slot, epoch) . await ;
41624195
4163- let ( payload_type, _ ) = self
4196+ let ( payload_type, metadata ) = self
41644197 . client
41654198 . get_validator_blocks_v3 :: < E > ( slot, & randao_reveal, None , None )
41664199 . await
41674200 . unwrap ( ) ;
4201+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
41684202
41694203 let payload: FullPayload < E > = match payload_type. data {
41704204 ProduceBlockV3Response :: Full ( payload) => {
@@ -4216,11 +4250,12 @@ impl ApiTester {
42164250
42174251 let ( _, randao_reveal) = self . get_test_randao ( slot, epoch) . await ;
42184252
4219- let ( payload_type, _ ) = self
4253+ let ( payload_type, metadata ) = self
42204254 . client
42214255 . get_validator_blocks_v3 :: < E > ( slot, & randao_reveal, None , None )
42224256 . await
42234257 . unwrap ( ) ;
4258+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
42244259
42254260 match payload_type. data {
42264261 ProduceBlockV3Response :: Full ( _) => ( ) ,
@@ -4282,11 +4317,12 @@ impl ApiTester {
42824317
42834318 let ( _, randao_reveal) = self . get_test_randao ( slot, epoch) . await ;
42844319
4285- let ( payload_type, _ ) = self
4320+ let ( payload_type, metadata ) = self
42864321 . client
42874322 . get_validator_blocks_v3 :: < E > ( slot, & randao_reveal, None , None )
42884323 . await
42894324 . unwrap ( ) ;
4325+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
42904326
42914327 match payload_type. data {
42924328 ProduceBlockV3Response :: Full ( _) => ( ) ,
@@ -4390,11 +4426,12 @@ impl ApiTester {
43904426 . get_test_randao ( next_slot, next_slot. epoch ( E :: slots_per_epoch ( ) ) )
43914427 . await ;
43924428
4393- let ( payload_type, _ ) = self
4429+ let ( payload_type, metadata ) = self
43944430 . client
43954431 . get_validator_blocks_v3 :: < E > ( next_slot, & randao_reveal, None , None )
43964432 . await
43974433 . unwrap ( ) ;
4434+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
43984435
43994436 match payload_type. data {
44004437 ProduceBlockV3Response :: Blinded ( _) => ( ) ,
@@ -4410,11 +4447,12 @@ impl ApiTester {
44104447 . get_test_randao ( next_slot, next_slot. epoch ( E :: slots_per_epoch ( ) ) )
44114448 . await ;
44124449
4413- let ( payload_type, _ ) = self
4450+ let ( payload_type, metadata ) = self
44144451 . client
44154452 . get_validator_blocks_v3 :: < E > ( next_slot, & randao_reveal, None , None )
44164453 . await
44174454 . unwrap ( ) ;
4455+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
44184456
44194457 match payload_type. data {
44204458 ProduceBlockV3Response :: Full ( _) => ( ) ,
@@ -4538,11 +4576,12 @@ impl ApiTester {
45384576 . get_test_randao ( next_slot, next_slot. epoch ( E :: slots_per_epoch ( ) ) )
45394577 . await ;
45404578
4541- let ( payload_type, _ ) = self
4579+ let ( payload_type, metadata ) = self
45424580 . client
45434581 . get_validator_blocks_v3 :: < E > ( next_slot, & randao_reveal, None , None )
45444582 . await
45454583 . unwrap ( ) ;
4584+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
45464585
45474586 match payload_type. data {
45484587 ProduceBlockV3Response :: Full ( _) => ( ) ,
@@ -4568,11 +4607,12 @@ impl ApiTester {
45684607 . get_test_randao ( next_slot, next_slot. epoch ( E :: slots_per_epoch ( ) ) )
45694608 . await ;
45704609
4571- let ( payload_type, _ ) = self
4610+ let ( payload_type, metadata ) = self
45724611 . client
45734612 . get_validator_blocks_v3 :: < E > ( next_slot, & randao_reveal, None , None )
45744613 . await
45754614 . unwrap ( ) ;
4615+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
45764616
45774617 match payload_type. data {
45784618 ProduceBlockV3Response :: Blinded ( _) => ( ) ,
@@ -4648,11 +4688,12 @@ impl ApiTester {
46484688
46494689 let ( proposer_index, randao_reveal) = self . get_test_randao ( slot, epoch) . await ;
46504690
4651- let ( payload_type, _ ) = self
4691+ let ( payload_type, metadata ) = self
46524692 . client
46534693 . get_validator_blocks_v3 :: < E > ( slot, & randao_reveal, None , None )
46544694 . await
46554695 . unwrap ( ) ;
4696+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
46564697
46574698 let payload: FullPayload < E > = match payload_type. data {
46584699 ProduceBlockV3Response :: Full ( payload) => {
@@ -4717,11 +4758,12 @@ impl ApiTester {
47174758
47184759 let ( _, randao_reveal) = self . get_test_randao ( slot, epoch) . await ;
47194760
4720- let ( payload_type, _ ) = self
4761+ let ( payload_type, metadata ) = self
47214762 . client
47224763 . get_validator_blocks_v3 :: < E > ( slot, & randao_reveal, None , None )
47234764 . await
47244765 . unwrap ( ) ;
4766+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
47254767
47264768 match payload_type. data {
47274769 ProduceBlockV3Response :: Blinded ( _) => ( ) ,
@@ -4781,11 +4823,12 @@ impl ApiTester {
47814823
47824824 let ( _, randao_reveal) = self . get_test_randao ( slot, epoch) . await ;
47834825
4784- let ( payload_type, _ ) = self
4826+ let ( payload_type, metadata ) = self
47854827 . client
47864828 . get_validator_blocks_v3 :: < E > ( slot, & randao_reveal, None , None )
47874829 . await
47884830 . unwrap ( ) ;
4831+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
47894832
47904833 match payload_type. data {
47914834 ProduceBlockV3Response :: Full ( _) => ( ) ,
@@ -4845,11 +4888,12 @@ impl ApiTester {
48454888
48464889 let ( _, randao_reveal) = self . get_test_randao ( slot, epoch) . await ;
48474890
4848- let ( payload_type, _ ) = self
4891+ let ( payload_type, metadata ) = self
48494892 . client
48504893 . get_validator_blocks_v3 :: < E > ( slot, & randao_reveal, None , None )
48514894 . await
48524895 . unwrap ( ) ;
4896+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
48534897
48544898 match payload_type. data {
48554899 ProduceBlockV3Response :: Full ( _) => ( ) ,
@@ -4907,11 +4951,12 @@ impl ApiTester {
49074951 let epoch = self . chain . epoch ( ) . unwrap ( ) ;
49084952 let ( _, randao_reveal) = self . get_test_randao ( slot, epoch) . await ;
49094953
4910- let ( payload_type, _ ) = self
4954+ let ( payload_type, metadata ) = self
49114955 . client
49124956 . get_validator_blocks_v3 :: < E > ( slot, & randao_reveal, None , None )
49134957 . await
49144958 . unwrap ( ) ;
4959+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
49154960
49164961 let _block_contents = match payload_type. data {
49174962 ProduceBlockV3Response :: Blinded ( payload) => payload,
@@ -4979,11 +5024,12 @@ impl ApiTester {
49795024 let epoch = self . chain . epoch ( ) . unwrap ( ) ;
49805025 let ( _, randao_reveal) = self . get_test_randao ( slot, epoch) . await ;
49815026
4982- let ( payload_type, _ ) = self
5027+ let ( payload_type, metadata ) = self
49835028 . client
49845029 . get_validator_blocks_v3 :: < E > ( slot, & randao_reveal, None , None )
49855030 . await
49865031 . unwrap ( ) ;
5032+ Self :: check_block_v3_metadata ( & metadata, & payload_type) ;
49875033
49885034 match payload_type. data {
49895035 ProduceBlockV3Response :: Full ( _) => ( ) ,
0 commit comments