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
use std::time::Duration;
use crate::proto::abci::{
RequestInitChain, ResponseInitChain, ValidatorUpdate as ProtoValidatorUpdate,
};
use crate::types::{ConsensusParams, ValidatorUpdate};
#[derive(Debug, Default)]
pub struct InitChainRequest {
pub time: Option<Duration>,
pub chain_id: String,
pub consensus_params: Option<ConsensusParams>,
pub validators: Vec<ValidatorUpdate>,
pub app_state_bytes: Vec<u8>,
}
impl From<RequestInitChain> for InitChainRequest {
fn from(request_init_chain: RequestInitChain) -> InitChainRequest {
InitChainRequest {
time: request_init_chain
.time
.into_option()
.map(|timestamp| Duration::new(timestamp.seconds as u64, timestamp.nanos as u32)),
chain_id: request_init_chain.chain_id,
consensus_params: request_init_chain
.consensus_params
.into_option()
.map(Into::into),
validators: request_init_chain
.validators
.into_iter()
.map(Into::into)
.collect(),
app_state_bytes: request_init_chain.app_state_bytes,
}
}
}
#[derive(Debug, Default)]
pub struct InitChainResponse {
pub consensus_params: Option<ConsensusParams>,
pub validators: Vec<ValidatorUpdate>,
}
impl From<InitChainResponse> for ResponseInitChain {
fn from(init_chain_response: InitChainResponse) -> ResponseInitChain {
let mut response_init_chain = ResponseInitChain::new();
response_init_chain.consensus_params =
init_chain_response.consensus_params.map(Into::into).into();
response_init_chain.validators = init_chain_response
.validators
.into_iter()
.map(Into::into)
.collect::<Vec<ProtoValidatorUpdate>>()
.into();
response_init_chain
}
}