Source file contract_delegate_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 find = Storage.Contract.Delegate.find
let registered c delegate =
Storage.Contract.Delegate.find c (Contract_repr.Implicit delegate)
>|=? function
| Some current_delegate ->
Signature.Public_key_hash.equal delegate current_delegate
| None -> false
let init ctxt contract delegate =
Storage.Contract.Delegate.init ctxt contract delegate >>=? fun ctxt ->
let delegate_contract = Contract_repr.Implicit delegate in
Storage.Contract.Delegated.add (ctxt, delegate_contract) contract >|= ok
let unlink ctxt contract =
Storage.Contract.Delegate.find ctxt contract >>=? function
| None -> return ctxt
| Some delegate ->
let delegate_contract = Contract_repr.Implicit delegate in
Storage.Contract.Delegated.remove (ctxt, delegate_contract) contract
>|= ok
let delete ctxt contract =
unlink ctxt contract >>=? fun ctxt ->
Storage.Contract.Delegate.remove ctxt contract >|= ok
let set ctxt contract delegate =
unlink ctxt contract >>=? fun ctxt ->
Storage.Contract.Delegate.add ctxt contract delegate >>= fun ctxt ->
let delegate_contract = Contract_repr.Implicit delegate in
Storage.Contract.Delegated.add (ctxt, delegate_contract) contract >|= ok
let delegated_contracts ctxt delegate =
let contract = Contract_repr.Implicit delegate in
Storage.Contract.Delegated.elements (ctxt, contract)