Source file sc_rollup_staker_index_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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
open Sc_rollup_errors
let init ctxt rollup =
Storage.Sc_rollup.Staker_index_counter.init
(ctxt, rollup)
Sc_rollup_staker_index_repr.zero
let fresh_staker_index ctxt rollup staker =
let open Lwt_result_syntax in
let* staker_index =
Storage.Sc_rollup.Staker_index_counter.get (ctxt, rollup)
in
let* ctxt =
Storage.Sc_rollup.Staker_index_counter.update
(ctxt, rollup)
(Sc_rollup_staker_index_repr.succ staker_index)
in
let* ctxt, _size =
Storage.Sc_rollup.Staker_index.init (ctxt, rollup) staker staker_index
in
let* ctxt, _size_diff =
Storage.Sc_rollup.Stakers.init
(ctxt, rollup)
staker_index
Raw_level_repr.root
in
return (ctxt, staker_index)
let find_staker_index_unsafe ctxt rollup staker =
Storage.Sc_rollup.Staker_index.find (ctxt, rollup) staker
let get_staker_index_unsafe ctxt rollup staker =
let open Lwt_result_syntax in
let* ctxt, staker_index_opt = find_staker_index_unsafe ctxt rollup staker in
match staker_index_opt with
| None -> tzfail Sc_rollup_not_staked
| Some staker_index -> return (ctxt, staker_index)
let remove_staker ctxt rollup staker =
let open Lwt_result_syntax in
let* ctxt, staker_index = get_staker_index_unsafe ctxt rollup staker in
let* ctxt, _size_diff =
Storage.Sc_rollup.Staker_index.remove_existing (ctxt, rollup) staker
in
let* ctxt, _size_diff =
Storage.Sc_rollup.Stakers.remove_existing (ctxt, rollup) staker_index
in
return ctxt
let list_stakers_uncarbonated ctxt rollup =
Storage.Sc_rollup.Staker_index.keys_unaccounted (ctxt, rollup)
let is_active ctxt rollup staker_index =
Storage.Sc_rollup.Stakers.mem (ctxt, rollup) staker_index
let is_staker ctxt rollup staker =
Storage.Sc_rollup.Staker_index.mem (ctxt, rollup) staker