whisky_provider/blockfrost/utils/
epoch_utils.rs1use whisky_common::{Protocol, WError};
2
3use crate::blockfrost::models::EpochParam;
4
5pub fn epoch_param_to_protocol(epoch_param: EpochParam) -> Result<Protocol, WError> {
6 let protocol =
7 Protocol {
8 epoch: epoch_param.epoch,
9 min_fee_a: epoch_param.min_fee_a as u64,
10 min_fee_b: epoch_param.min_fee_b as u64,
11 max_block_size: epoch_param.max_block_size,
12 max_tx_size: epoch_param.max_tx_size as u32,
13 max_block_header_size: epoch_param.max_block_header_size,
14 key_deposit: epoch_param
15 .key_deposit
16 .parse::<u64>()
17 .map_err(WError::from_err("epoch_param_to_protocol - key_deposit"))?,
18 pool_deposit: epoch_param
19 .pool_deposit
20 .parse::<u64>()
21 .map_err(WError::from_err("epoch_param_to_protocol - pool_deposit"))?,
22 decentralisation: epoch_param.decentralisation_param,
23 min_pool_cost: epoch_param.min_pool_cost,
24 price_mem: epoch_param
25 .price_mem
26 .ok_or_else(WError::from_opt("epoch_param_to_protocol", "price_mem"))?,
27 price_step: epoch_param
28 .price_step
29 .ok_or_else(WError::from_opt("epoch_param_to_protocol", "price_step"))?,
30 max_tx_ex_mem: epoch_param.max_tx_ex_mem.unwrap_or("".to_string()),
31 max_tx_ex_steps: epoch_param.max_tx_ex_steps.unwrap_or("".to_string()),
32 max_block_ex_mem: epoch_param.max_block_ex_mem.unwrap_or("".to_string()),
33 max_block_ex_steps: epoch_param.max_block_ex_steps.unwrap_or("".to_string()),
34 max_val_size: epoch_param
35 .max_val_size
36 .ok_or_else(WError::from_opt("epoch_param_to_protocol", "max_val_size"))?
37 .parse::<u32>()
38 .map_err(WError::from_err(
39 "epoch_param_to_protocol - max_val_size - parse",
40 ))?,
41 collateral_percent: epoch_param.collateral_percent.ok_or_else(WError::from_opt(
42 "epoch_param_to_protocol",
43 "collateral_percent",
44 ))? as f64,
45 max_collateral_inputs: epoch_param.max_collateral_inputs.ok_or_else(
46 WError::from_opt("epoch_param_to_protocol", "max_collateral_inputs"),
47 )?,
48 coins_per_utxo_size: epoch_param
49 .coins_per_utxo_size
50 .ok_or_else(WError::from_opt(
51 "epoch_param_to_protocol",
52 "coins_per_utxo_size",
53 ))?
54 .parse::<u64>()
55 .map_err(WError::from_err(
56 "epoch_param_to_protocol - coins_per_utxo_size - parse",
57 ))?,
58 min_fee_ref_script_cost_per_byte: epoch_param
59 .min_fee_ref_script_cost_per_byte
60 .ok_or_else(WError::from_opt(
61 "epoch_param_to_protocol",
62 "min_fee_ref_script_cost_per_byte",
63 ))? as u64,
64 };
65 Ok(protocol)
66}