whisky_provider/blockfrost/utils/
epoch_utils.rs

1use 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}