Source file frozen_deposits_storage.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
let init ctxt delegate =
Storage.Contract.Frozen_deposits.init
ctxt
(Contract_repr.implicit_contract delegate)
{initial_amount = Tez_repr.zero; current_amount = Tez_repr.zero}
let allocated = Storage.Contract.Frozen_deposits.mem
let get = Storage.Contract.Frozen_deposits.get
let find = Storage.Contract.Frozen_deposits.find
let update_balance ctxt delegate f amount =
let delegate_contract = Contract_repr.implicit_contract delegate in
Storage.Contract.Frozen_deposits.get ctxt delegate_contract
>>=? fun frozen_deposits ->
f frozen_deposits.current_amount amount >>?= fun new_amount ->
Storage.Contract.Frozen_deposits.update
ctxt
delegate_contract
{frozen_deposits with current_amount = new_amount}
let credit_only_call_from_token ctxt delegate amount =
update_balance ctxt delegate Tez_repr.( +? ) amount
let spend_only_call_from_token ctxt delegate amount =
update_balance ctxt delegate Tez_repr.( -? ) amount
let update_deposits_cap ctxt delegate_contract deposits_cap =
Storage.Contract.Frozen_deposits.get ctxt delegate_contract
>>=? fun frozen_deposits ->
Storage.Contract.Frozen_deposits.update
ctxt
delegate_contract
{frozen_deposits with initial_amount = deposits_cap}
>|=? fun ctxt -> (ctxt, frozen_deposits.current_amount)