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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
use std::collections::BTreeMap;
use num_rational::Ratio;
use casper_execution_engine::core::engine_state::UpgradeConfig;
use casper_hashing::Digest;
use casper_types::{EraId, Key, ProtocolVersion, StoredValue};
#[derive(Default)]
pub struct UpgradeRequestBuilder {
pre_state_hash: Digest,
current_protocol_version: ProtocolVersion,
new_protocol_version: ProtocolVersion,
activation_point: Option<EraId>,
new_validator_slots: Option<u32>,
new_auction_delay: Option<u64>,
new_locked_funds_period_millis: Option<u64>,
new_round_seigniorage_rate: Option<Ratio<u64>>,
new_unbonding_delay: Option<u64>,
global_state_update: BTreeMap<Key, StoredValue>,
}
impl UpgradeRequestBuilder {
pub fn new() -> Self {
Default::default()
}
pub fn with_pre_state_hash(mut self, pre_state_hash: Digest) -> Self {
self.pre_state_hash = pre_state_hash;
self
}
pub fn with_current_protocol_version(mut self, protocol_version: ProtocolVersion) -> Self {
self.current_protocol_version = protocol_version;
self
}
pub fn with_new_protocol_version(mut self, protocol_version: ProtocolVersion) -> Self {
self.new_protocol_version = protocol_version;
self
}
pub fn with_new_validator_slots(mut self, new_validator_slots: u32) -> Self {
self.new_validator_slots = Some(new_validator_slots);
self
}
pub fn with_new_auction_delay(mut self, new_auction_delay: u64) -> Self {
self.new_auction_delay = Some(new_auction_delay);
self
}
pub fn with_new_locked_funds_period_millis(
mut self,
new_locked_funds_period_millis: u64,
) -> Self {
self.new_locked_funds_period_millis = Some(new_locked_funds_period_millis);
self
}
pub fn with_new_round_seigniorage_rate(mut self, rate: Ratio<u64>) -> Self {
self.new_round_seigniorage_rate = Some(rate);
self
}
pub fn with_new_unbonding_delay(mut self, unbonding_delay: u64) -> Self {
self.new_unbonding_delay = Some(unbonding_delay);
self
}
pub fn with_global_state_update(
mut self,
global_state_update: BTreeMap<Key, StoredValue>,
) -> Self {
self.global_state_update = global_state_update;
self
}
pub fn with_activation_point(mut self, activation_point: EraId) -> Self {
self.activation_point = Some(activation_point);
self
}
pub fn build(self) -> UpgradeConfig {
UpgradeConfig::new(
self.pre_state_hash,
self.current_protocol_version,
self.new_protocol_version,
self.activation_point,
self.new_validator_slots,
self.new_auction_delay,
self.new_locked_funds_period_millis,
self.new_round_seigniorage_rate,
self.new_unbonding_delay,
self.global_state_update,
)
}
}