rebase modifications
This commit is contained in:
parent
f63b96dbd8
commit
cbcc808abc
@ -187,7 +187,7 @@ let endorse_for cctxt = function
|
|||||||
name
|
name
|
||||||
Operation_hash.pp_short oph >>= return
|
Operation_hash.pp_short oph >>= return
|
||||||
|
|
||||||
let prepare_endorsement (cctxt : #Proto_alpha.full) ~(max_past:Time.t) state bis =
|
let prepare_endorsement (cctxt : #Proto_alpha.full) ~(max_past:Time.t) state bi =
|
||||||
let may_endorse (block: Client_baking_blocks.block_info) delegate time =
|
let may_endorse (block: Client_baking_blocks.block_info) delegate time =
|
||||||
Client_keys.Public_key_hash.name cctxt delegate >>=? fun name ->
|
Client_keys.Public_key_hash.name cctxt delegate >>=? fun name ->
|
||||||
lwt_log_info "May endorse block %a for %s"
|
lwt_log_info "May endorse block %a for %s"
|
||||||
@ -213,18 +213,16 @@ let prepare_endorsement (cctxt : #Proto_alpha.full) ~(max_past:Time.t) state bis
|
|||||||
get_delegates cctxt state >>=? fun delegates ->
|
get_delegates cctxt state >>=? fun delegates ->
|
||||||
iter_p
|
iter_p
|
||||||
(fun delegate ->
|
(fun delegate ->
|
||||||
iter_p
|
let open Client_baking_blocks in
|
||||||
(fun (bi : Client_baking_blocks.block_info) ->
|
if Time.compare bi.timestamp (Time.now ()) > 0 then
|
||||||
if Time.compare bi.timestamp (Time.now ()) > 0 then
|
lwt_log_info "Ignore block %a: forged in the future"
|
||||||
lwt_log_info "Ignore block %a: forged in the future"
|
Block_hash.pp_short bi.hash >>= return
|
||||||
Block_hash.pp_short bi.hash >>= return
|
else if Time.(min (now ()) bi.timestamp > max_past) then
|
||||||
else if Time.(min (now ()) bi.timestamp > max_past) then
|
lwt_log_info "Ignore block %a: forged too far the past"
|
||||||
lwt_log_info "Ignore block %a: forged too far the past"
|
Block_hash.pp_short bi.hash >>= return
|
||||||
Block_hash.pp_short bi.hash >>= return
|
else
|
||||||
else
|
let time = Time.(add (now ()) state.delay) in
|
||||||
let time = Time.(add (now ()) state.delay) in
|
may_endorse bi delegate time
|
||||||
may_endorse bi delegate time
|
|
||||||
) bis
|
|
||||||
)
|
)
|
||||||
delegates
|
delegates
|
||||||
|
|
||||||
@ -266,13 +264,12 @@ let check_error f =
|
|||||||
errs >>= fun () ->
|
errs >>= fun () ->
|
||||||
Lwt.return_unit
|
Lwt.return_unit
|
||||||
|
|
||||||
|
let create (cctxt : #Proto_alpha.full) ?(max_past=(Time.of_seconds 110L)) ~delay contracts (block_stream : Client_baking_blocks.block_info tzresult Lwt_stream.t) =
|
||||||
let create (cctxt : #Proto_alpha.full) ?(max_past=(Time.of_seconds 110L)) ~delay contracts block_stream =
|
|
||||||
lwt_log_info "Starting endorsement daemon" >>= fun () ->
|
lwt_log_info "Starting endorsement daemon" >>= fun () ->
|
||||||
Lwt_stream.get block_stream >>= function
|
Lwt_stream.get block_stream >>= function
|
||||||
| None | Some (Ok []) | Some (Error _) ->
|
| None | Some (Error _) ->
|
||||||
cctxt#error "Can't fetch the current block head."
|
cctxt#error "Can't fetch the current block head."
|
||||||
| Some (Ok initial_heads) ->
|
| Some (Ok head) ->
|
||||||
let last_get_block = ref None in
|
let last_get_block = ref None in
|
||||||
let get_block () =
|
let get_block () =
|
||||||
match !last_get_block with
|
match !last_get_block with
|
||||||
@ -288,13 +285,13 @@ let create (cctxt : #Proto_alpha.full) ?(max_past=(Time.of_seconds 110L)) ~delay
|
|||||||
(get_block () >|= fun b -> `Hash b) ] >>= function
|
(get_block () >|= fun b -> `Hash b) ] >>= function
|
||||||
| `Hash (None | Some (Error _)) ->
|
| `Hash (None | Some (Error _)) ->
|
||||||
Lwt.return_unit
|
Lwt.return_unit
|
||||||
| `Hash (Some (Ok bis)) ->
|
| `Hash (Some (Ok bi)) ->
|
||||||
Lwt.cancel timeout;
|
Lwt.cancel timeout;
|
||||||
last_get_block := None ;
|
last_get_block := None ;
|
||||||
check_error (prepare_endorsement cctxt ~max_past state bis) >>= fun () ->
|
check_error (prepare_endorsement cctxt ~max_past state bi) >>= fun () ->
|
||||||
worker_loop ()
|
worker_loop ()
|
||||||
| `Timeout ->
|
| `Timeout ->
|
||||||
check_error (endorse_for cctxt state.to_endorse) >>= fun () ->
|
check_error (endorse_for cctxt state.to_endorse) >>= fun () ->
|
||||||
worker_loop () in
|
worker_loop () in
|
||||||
check_error (prepare_endorsement cctxt ~max_past state initial_heads) >>= fun () ->
|
check_error (prepare_endorsement cctxt ~max_past state head) >>= fun () ->
|
||||||
worker_loop ()
|
worker_loop ()
|
||||||
|
@ -25,4 +25,4 @@ val create :
|
|||||||
?max_past:Time.t ->
|
?max_past:Time.t ->
|
||||||
delay:int ->
|
delay:int ->
|
||||||
public_key_hash list ->
|
public_key_hash list ->
|
||||||
Client_baking_blocks.block_info list tzresult Lwt_stream.t -> unit Lwt.t
|
Client_baking_blocks.block_info tzresult Lwt_stream.t -> unit Lwt.t
|
||||||
|
@ -10,9 +10,23 @@
|
|||||||
module Endorser = struct
|
module Endorser = struct
|
||||||
|
|
||||||
let run (cctxt : #Proto_alpha.full) ~delay ?min_date delegates =
|
let run (cctxt : #Proto_alpha.full) ~delay ?min_date delegates =
|
||||||
Client_baking_blocks.monitor
|
Client_baking_blocks.monitor_heads
|
||||||
cctxt ?min_date ~min_heads:1 () >>=? fun block_stream ->
|
cctxt `Main >>=? fun block_stream ->
|
||||||
Client_baking_endorsement.create cctxt ~delay delegates block_stream >>= fun () ->
|
Client_baking_endorsement.create cctxt ~delay delegates block_stream >>= fun () ->
|
||||||
|
ignore min_date;
|
||||||
|
return ()
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
module Baker = struct
|
||||||
|
|
||||||
|
let run (cctxt : #Proto_alpha.full) ?max_priority ?min_date delegates =
|
||||||
|
Client_baking_blocks.monitor_heads
|
||||||
|
cctxt `Main >>=? fun block_stream ->
|
||||||
|
Client_baking_forge.create cctxt
|
||||||
|
?max_priority delegates block_stream >>=? fun () ->
|
||||||
|
ignore min_date;
|
||||||
return ()
|
return ()
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -26,16 +40,3 @@ module Accuser = struct
|
|||||||
return ()
|
return ()
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
module Baker = struct
|
|
||||||
|
|
||||||
let run (cctxt : #Proto_alpha.full) ?max_priority ?min_date delegates =
|
|
||||||
Client_baking_blocks.monitor
|
|
||||||
cctxt ?min_date ~min_heads:1 () >>=? fun block_stream ->
|
|
||||||
Client_baking_operations.monitor_endorsement
|
|
||||||
cctxt >>=? fun endorsement_stream ->
|
|
||||||
Client_baking_forge.create cctxt
|
|
||||||
?max_priority delegates block_stream endorsement_stream >>=? fun () ->
|
|
||||||
return ()
|
|
||||||
|
|
||||||
end
|
|
||||||
|
Loading…
Reference in New Issue
Block a user