Mavryk_raw_protocol_001_PtAtLas.Ticket_accounting
val ticket_diffs :
Alpha_context.context ->
self_contract:Alpha_context.Contract.t ->
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 ->
(Mavryk_protocol_environment_001_PtAtLas.Z.t Ticket_token_map.t
* Ticket_receipt.t
* Alpha_context.context)
Mavryk_protocol_environment_001_PtAtLas.Error_monad.tzresult
Mavryk_protocol_environment_001_PtAtLas.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 ticket_balances_of_value :
Alpha_context.context ->
include_lazy:bool ->
'a Ticket_scanner.has_tickets ->
'a ->
(Mavryk_protocol_environment_001_PtAtLas.Z.t Ticket_token_map.t
* Alpha_context.context)
Mavryk_protocol_environment_001_PtAtLas.Error_monad.tzresult
Mavryk_protocol_environment_001_PtAtLas.Lwt.t
ticket_balances_of_value ctxt ~include_lazy has_tickets value
scans all tickets in the given value
using the type-witness has_tickets
and returns a map from ticket-tokens to the amount.
val update_ticket_balances :
Alpha_context.context ->
self_contract:Alpha_context.Contract.t ->
ticket_diffs:Mavryk_protocol_environment_001_PtAtLas.Z.t Ticket_token_map.t ->
Script_typed_ir.packed_internal_operation list ->
(Mavryk_protocol_environment_001_PtAtLas.Z.t * Alpha_context.context)
Mavryk_protocol_environment_001_PtAtLas.Error_monad.tzresult
Mavryk_protocol_environment_001_PtAtLas.Lwt.t
update_ticket_balances ctxt ~self_contract ~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.