Alpha/baker: names for validation passes index
This commit is contained in:
parent
3f0da7668d
commit
a220aeb1a7
@ -13,6 +13,15 @@ open Alpha_context
|
|||||||
include Logging.Make(struct let name = "client.baking" end)
|
include Logging.Make(struct let name = "client.baking" end)
|
||||||
|
|
||||||
|
|
||||||
|
(* The index of the different components of the protocol's validation passes *)
|
||||||
|
(* TODO: ideally, we would like this to be more abstract and possibly part of
|
||||||
|
the protocol, while retaining the generality of lists *)
|
||||||
|
let endorsements_index = 0
|
||||||
|
let votes_index = 1
|
||||||
|
let anonymous_index = 2
|
||||||
|
let managers_index = 3
|
||||||
|
|
||||||
|
|
||||||
type state = {
|
type state = {
|
||||||
genesis: Block_hash.t ;
|
genesis: Block_hash.t ;
|
||||||
index : Context.index ;
|
index : Context.index ;
|
||||||
@ -184,14 +193,15 @@ let classify_operations (ops: Proto_alpha.operation list) =
|
|||||||
ops ;
|
ops ;
|
||||||
let t = Array.map List.rev t in
|
let t = Array.map List.rev t in
|
||||||
(* Retrieve the maximum paying manager operations *)
|
(* Retrieve the maximum paying manager operations *)
|
||||||
let manager_operations = t.(3) in
|
let manager_operations = t.(managers_index) in
|
||||||
let { Alpha_environment.Updater.max_size } = List.nth Proto_alpha.Main.validation_passes 3 in
|
let { Alpha_environment.Updater.max_size } =
|
||||||
|
List.nth Proto_alpha.Main.validation_passes managers_index in
|
||||||
sort_operations_by_fee manager_operations >>=? fun ordered_operations ->
|
sort_operations_by_fee manager_operations >>=? fun ordered_operations ->
|
||||||
let max_operations =
|
let max_operations =
|
||||||
retain_operations_up_to_quota ordered_operations max_size
|
retain_operations_up_to_quota ordered_operations max_size
|
||||||
in
|
in
|
||||||
(* TODO ? : should preserve mempool order *)
|
(* TODO ? : should preserve mempool order *)
|
||||||
t.(3) <- max_operations;
|
t.(managers_index) <- max_operations;
|
||||||
return @@ Array.fold_right (fun ops acc -> ops :: acc) t []
|
return @@ Array.fold_right (fun ops acc -> ops :: acc) t []
|
||||||
|
|
||||||
let parse (op : Operation.raw) : Operation.packed =
|
let parse (op : Operation.raw) : Operation.packed =
|
||||||
@ -501,10 +511,10 @@ let filter_invalid_operations (cctxt : #full) state block_info (operations : pac
|
|||||||
lwt_debug "Starting client-side validation %a"
|
lwt_debug "Starting client-side validation %a"
|
||||||
Block_hash.pp block_info.Client_baking_blocks.hash >>= fun () ->
|
Block_hash.pp block_info.Client_baking_blocks.hash >>= fun () ->
|
||||||
begin_construction cctxt state.index block_info >>=? fun initial_inc ->
|
begin_construction cctxt state.index block_info >>=? fun initial_inc ->
|
||||||
let endorsements = List.nth operations 0 in
|
let endorsements = List.nth operations endorsements_index in
|
||||||
let votes = List.nth operations 1 in
|
let votes = List.nth operations votes_index in
|
||||||
let anonymous = List.nth operations 2 in
|
let anonymous = List.nth operations anonymous_index in
|
||||||
let managers = List.nth operations 3 in
|
let managers = List.nth operations managers_index in
|
||||||
let validate_operation inc op =
|
let validate_operation inc op =
|
||||||
add_operation inc op >>= function
|
add_operation inc op >>= function
|
||||||
| Error errs ->
|
| Error errs ->
|
||||||
@ -549,9 +559,13 @@ let filter_invalid_operations (cctxt : #full) state block_info (operations : pac
|
|||||||
List.sub (List.rev endorsements) constants.Constants.parametric.endorsers_per_block
|
List.sub (List.rev endorsements) constants.Constants.parametric.endorsers_per_block
|
||||||
in
|
in
|
||||||
let votes =
|
let votes =
|
||||||
retain_operations_up_to_quota (List.rev votes) (List.nth quota 1).max_size in
|
retain_operations_up_to_quota
|
||||||
|
(List.rev votes)
|
||||||
|
(List.nth quota votes_index).max_size in
|
||||||
let anonymous =
|
let anonymous =
|
||||||
retain_operations_up_to_quota (List.rev anonymous) (List.nth quota 2).max_size in
|
retain_operations_up_to_quota
|
||||||
|
(List.rev anonymous)
|
||||||
|
(List.nth quota anonymous_index).max_size in
|
||||||
(* manager operations size check already occured in classify operations *)
|
(* manager operations size check already occured in classify operations *)
|
||||||
return @@ List.map List.rev [ endorsements ; votes ; anonymous ; managers ]
|
return @@ List.map List.rev [ endorsements ; votes ; anonymous ; managers ]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user