Source file init_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
let prepare_first_block ctxt ~typecheck ~level ~timestamp ~fitness =
Raw_context.prepare_first_block ~level ~timestamp ~fitness ctxt
>>=? fun (previous_protocol, ctxt, prev_blocks_per_voting_period) ->
match previous_protocol with
| Genesis param ->
Commitment_storage.init ctxt param.commitments
>>=? fun ctxt ->
Roll_storage.init ctxt
>>=? fun ctxt ->
Seed_storage.init ctxt
>>=? fun ctxt ->
Contract_storage.init ctxt
>>=? fun ctxt ->
Bootstrap_storage.init
ctxt
~typecheck
?ramp_up_cycles:param.security_deposit_ramp_up_cycles
?no_reward_cycles:param.no_reward_cycles
param.bootstrap_accounts
param.bootstrap_contracts
>>=? fun ctxt ->
Roll_storage.init_first_cycles ctxt
>>=? fun ctxt ->
Vote_storage.init
ctxt
~start_position:(Level_storage.current ctxt).level_position
>>=? fun ctxt ->
Storage.Block_priority.init ctxt 0
>>=? fun ctxt -> Vote_storage.update_listings ctxt
| Delphi_007 ->
Storage.Vote.Current_period_kind_007.delete ctxt
>>=? fun ctxt ->
let level_position = (Level_storage.current ctxt).level_position in
let voting_period_index =
Int32.(div (succ level_position) prev_blocks_per_voting_period)
in
let start_position = level_position in
Storage.Vote.Current_period.init
ctxt
{index = voting_period_index; kind = Proposal; start_position}
>>=? fun ctxt ->
Storage.Vote.Pred_period_kind.init ctxt Promotion_vote
>>=? fun ctxt -> Storage.Sapling.Next.init ctxt
let prepare ctxt ~level ~predecessor_timestamp ~timestamp ~fitness =
Raw_context.prepare ~level ~predecessor_timestamp ~timestamp ~fitness ctxt