@@ -60,13 +60,13 @@ pub fn proposer_duties<T: BeaconChainTypes>(
6060 . safe_add ( 1 )
6161 . map_err ( warp_utils:: reject:: arith_error) ?
6262 {
63- let ( proposers, dependent_root , execution_status, _fork) =
63+ let ( proposers, _dependent_root , legacy_dependent_root , execution_status, _fork) =
6464 compute_proposer_duties_from_head ( request_epoch, chain)
6565 . map_err ( warp_utils:: reject:: unhandled_error) ?;
6666 convert_to_api_response (
6767 chain,
6868 request_epoch,
69- dependent_root ,
69+ legacy_dependent_root ,
7070 execution_status. is_optimistic_or_invalid ( ) ,
7171 proposers,
7272 )
@@ -116,6 +116,11 @@ fn try_proposer_duties_from_cache<T: BeaconChainTypes>(
116116 . beacon_state
117117 . proposer_shuffling_decision_root_at_epoch ( request_epoch, head_block_root, & chain. spec )
118118 . map_err ( warp_utils:: reject:: beacon_state_error) ?;
119+ let legacy_dependent_root = head
120+ . snapshot
121+ . beacon_state
122+ . legacy_proposer_shuffling_decision_root_at_epoch ( request_epoch, head_block_root)
123+ . map_err ( warp_utils:: reject:: beacon_state_error) ?;
119124 let execution_optimistic = chain
120125 . is_optimistic_or_invalid_head_block ( head_block)
121126 . map_err ( warp_utils:: reject:: unhandled_error) ?;
@@ -129,7 +134,7 @@ fn try_proposer_duties_from_cache<T: BeaconChainTypes>(
129134 convert_to_api_response (
130135 chain,
131136 request_epoch,
132- head_decision_root ,
137+ legacy_dependent_root ,
133138 execution_optimistic,
134139 indices. to_vec ( ) ,
135140 )
@@ -151,7 +156,7 @@ fn compute_and_cache_proposer_duties<T: BeaconChainTypes>(
151156 current_epoch : Epoch ,
152157 chain : & BeaconChain < T > ,
153158) -> Result < ApiDuties , warp:: reject:: Rejection > {
154- let ( indices, dependent_root, execution_status, fork) =
159+ let ( indices, dependent_root, legacy_dependent_root , execution_status, fork) =
155160 compute_proposer_duties_from_head ( current_epoch, chain)
156161 . map_err ( warp_utils:: reject:: unhandled_error) ?;
157162
@@ -166,7 +171,7 @@ fn compute_and_cache_proposer_duties<T: BeaconChainTypes>(
166171 convert_to_api_response (
167172 chain,
168173 current_epoch,
169- dependent_root ,
174+ legacy_dependent_root ,
170175 execution_status. is_optimistic_or_invalid ( ) ,
171176 indices,
172177 )
@@ -229,12 +234,18 @@ fn compute_historic_proposer_duties<T: BeaconChainTypes>(
229234
230235 // We can supply the genesis block root as the block root since we know that the only block that
231236 // decides its own root is the genesis block.
232- let dependent_root = state
233- . proposer_shuffling_decision_root ( chain . genesis_block_root , & chain. spec )
237+ let legacy_dependent_root = state
238+ . legacy_proposer_shuffling_decision_root_at_epoch ( epoch , chain. genesis_block_root )
234239 . map_err ( BeaconChainError :: from)
235240 . map_err ( warp_utils:: reject:: unhandled_error) ?;
236241
237- convert_to_api_response ( chain, epoch, dependent_root, execution_optimistic, indices)
242+ convert_to_api_response (
243+ chain,
244+ epoch,
245+ legacy_dependent_root,
246+ execution_optimistic,
247+ indices,
248+ )
238249}
239250
240251/// Converts the internal representation of proposer duties into one that is compatible with the
0 commit comments