package tezos-protocol-014-PtKathma
val ticket_diffs :
Alpha_context.context ->
arg_type_has_tickets:'arg Ticket_scanner.has_tickets ->
storage_type_has_tickets:'storage Ticket_scanner.has_tickets ->
arg:'arg ->
old_storage:'storage ->
new_storage:'storage ->
lazy_storage_diff:Alpha_context.Lazy_storage.diffs_item list ->
(Tezos_protocol_environment_014_PtKathma.Z.t Ticket_token_map.t
* Alpha_context.t)
Tezos_protocol_environment_014_PtKathma.Error_monad.tzresult
Tezos_protocol_environment_014_PtKathma.Lwt.t
ticket_diffs ctxt ~arg_type_has_tickets ~storage_type_has_tickets arg
old_storage new_storage lazy_storage_diff
returns a map from ticket-tokens to balance-differences that represents the change in balance for a contract due to changes of tickets in the storage. The assumption is that before calling ticket_diffs
, all tickets that are owned by a contract exist either in the old_storage
or the arg
. After execution, only tickets in new_storage
are owned by the contract. Note that this function avoids traversing the lazy part of the storage.
val update_ticket_balances :
Alpha_context.context ->
self:Alpha_context.Contract.t ->
ticket_diffs:Tezos_protocol_environment_014_PtKathma.Z.t Ticket_token_map.t ->
Script_typed_ir.packed_internal_operation list ->
(Tezos_protocol_environment_014_PtKathma.Z.t * Alpha_context.t)
Tezos_protocol_environment_014_PtKathma.Error_monad.tzresult
Tezos_protocol_environment_014_PtKathma.Lwt.t
update_ticket_balances ctxt self ~ticket_diffs operations
updates the ticket balances according to the ticket_diffs
map and the set of operations. The function also returns the storage size diff resulting from updating the ticket-balance table in the context.
Invariant: this function must be called after applying the lazy-storage diffs affecting any contracts in the given operations.
The function fails in case an invalid ticket-token-balance update is detected. The ticket_diffs
argument represents the change of ticket-tokens for the self
contract. It also specifies a "budget" for outgoing ticket-tokens.