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
use crate::database::columns::METADATA;
use crate::database::Database;
use crate::model::BlockHeight;
use crate::state::Error;
pub(crate) const CHAIN_NAME_KEY: &[u8] = b"chain_name";
pub(crate) const CHAIN_HEIGHT_KEY: &[u8] = b"chain_height";
pub(crate) const FINALIZED_DA_HEIGHT_KEY: &[u8] = b"finalized_da_height";
pub(crate) const VALIDATORS_DA_HEIGHT_KEY: &[u8] = b"current_validator_set";
pub(crate) const LAST_COMMITED_FINALIZED_BLOCK_HEIGHT_KEY: &[u8] =
b"last_commited_finalized_block_height";
impl Database {
pub fn init_chain_name(&self, name: String) -> Result<(), Error> {
self.insert(CHAIN_NAME_KEY, METADATA, name).and_then(|v| {
if v.is_some() {
Err(Error::ChainAlreadyInitialized)
} else {
Ok(())
}
})
}
pub fn get_chain_name(&self) -> Result<Option<String>, Error> {
self.get(CHAIN_NAME_KEY, METADATA)
}
pub fn init_chain_height(&self, height: BlockHeight) -> Result<(), Error> {
self.insert(CHAIN_HEIGHT_KEY, METADATA, height)
.and_then(|v| {
if v.is_some() {
Err(Error::ChainAlreadyInitialized)
} else {
Ok(())
}
})
}
pub fn get_starting_chain_height(&self) -> Result<Option<BlockHeight>, Error> {
self.get(CHAIN_HEIGHT_KEY, METADATA)
}
}