@@ -67,6 +67,7 @@ pub fn cli_app() -> Command {
67
67
. value_name ( "EPOCH" )
68
68
. help ( "Provide the minimum epoch for processing voluntary exit." )
69
69
. action ( ArgAction :: Set )
70
+ . requires ( SIGNATURE_FLAG )
70
71
. display_order ( 0 ) ,
71
72
)
72
73
. arg (
@@ -250,14 +251,28 @@ async fn run<E: EthSpec>(config: ExitConfig) -> Result<(), String> {
250
251
) ;
251
252
}
252
253
253
- // Sleep a constant 12s as in testnet 3s would be too short for validator status to update
254
- sleep ( Duration :: from_secs ( 12 ) ) . await ;
254
+ sleep ( Duration :: from_secs ( spec. seconds_per_slot ) ) . await ;
255
255
256
256
// Check validator status after publishing voluntary exit
257
- match validator_data. status {
257
+ let updated_validator_data = beacon_node
258
+ . get_beacon_states_validator_id (
259
+ StateId :: Head ,
260
+ & ValidatorId :: PublicKey ( validator_to_exit) ,
261
+ )
262
+ . await
263
+ . map_err ( |e| format ! ( "Failed to get updated validator details: {:?}" , e) ) ?
264
+ . ok_or_else ( || {
265
+ format ! (
266
+ "Validator {} is not present in the beacon state" ,
267
+ validator_to_exit
268
+ )
269
+ } ) ?
270
+ . data ;
271
+
272
+ match updated_validator_data. status {
258
273
ValidatorStatus :: ActiveExiting => {
259
- let exit_epoch = validator_data . validator . exit_epoch ;
260
- let withdrawal_epoch = validator_data . validator . withdrawable_epoch ;
274
+ let exit_epoch = updated_validator_data . validator . exit_epoch ;
275
+ let withdrawal_epoch = updated_validator_data . validator . withdrawable_epoch ;
261
276
262
277
eprintln ! ( "Voluntary exit has been accepted into the beacon chain, but not yet finalized. \
263
278
Finalization may take several minutes or longer. Before finalization there is a low \
0 commit comments