P.Mempool
type conflict_handler =
existing_operation:(Operation_hash.t * operation) ->
new_operation:(Operation_hash.t * operation) ->
[ `Keep | `Replace ]
type operation_conflict =
| Operation_conflict of {
existing : Operation_hash.t;
new_operation : Operation_hash.t;
}
type add_error =
| Validation_error of Error_monad.error Error_monad.trace
| Add_conflict of operation_conflict
val init :
Context.t ->
Chain_id.t ->
head_hash:Block_hash.t ->
head:Block_header.shell_header ->
(validation_info * t) Error_monad.tzresult Lwt.t
val encoding : t Data_encoding.t
val add_operation :
?check_signature:bool ->
?conflict_handler:conflict_handler ->
validation_info ->
t ->
(Operation_hash.t * operation) ->
(t * add_result, add_error) Pervasives.result Lwt.t
val remove_operation : t -> Operation_hash.t -> t
val merge :
?conflict_handler:conflict_handler ->
t ->
t ->
(t, merge_error) Pervasives.result
val operations : t -> operation Operation_hash.Map.t