• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ergoplatform / sigma-rust / 8953175335

04 May 2024 08:51PM UTC coverage: 80.473% (+0.1%) from 80.331%
8953175335

Pull #736

github

web-flow
Merge 0fdf2d258 into 57a105462
Pull Request #736: Transaction Validation

165 of 228 new or added lines in 15 files covered. (72.37%)

8 existing lines in 2 files now uncovered.

10723 of 13325 relevant lines covered (80.47%)

3.29 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

42.86
/ergo-lib/src/chain/parameters.rs
1
//! Blockchain parameters. This module defines adjustable blockchain parameters that can be voted on by miners
2
use std::collections::HashMap;
3

4
#[repr(i8)]
5
#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
6
// TODO: soft-fork parameter
7
/// A parameter that can be adjusted by voting
8
pub enum Parameter {
9
    /// Storage fee factor (per byte per storage period)
10
    StorageFeeFactor = 1,
11
    ///Minimum monetary value of a box
12
    MinValuePerByte = 2,
13
    ///Maximum block size
14
    MaxBlockSize = 3,
15
    ///Maximum cumulative computational cost of a block
16
    MaxBlockCost = 4,
17
    ///Token access cost
18
    TokenAccessCost = 5,
19
    /// Cost per one transaction input
20
    InputCost = 6,
21
    /// Cost per one data input
22
    DataInputCost = 7,
23
    /// Cost per one transaction output
24
    OutputCost = 8,
25
    /// Current block version
26
    BlockVersion = 123,
27
}
28

29
/// System parameters which can be adjusted via soft-fork
30
#[derive(Clone, Debug, Eq, PartialEq)]
31
pub struct Parameters {
32
    parameters_table: HashMap<Parameter, i32>,
33
}
34

35
impl Parameters {
36
    /// Get current block version
NEW
37
    pub fn block_version(&self) -> i32 {
×
NEW
38
        self.parameters_table[&Parameter::BlockVersion]
×
39
    }
40
    /// Cost of storing 1 byte per Storage Period of block chain
NEW
41
    pub fn storage_fee_factor(&self) -> i32 {
×
NEW
42
        self.parameters_table[&Parameter::StorageFeeFactor]
×
43
    }
44
    /// Minimum value per byte an output must have to not be considered dust
45
    pub fn min_value_per_byte(&self) -> i32 {
1✔
46
        self.parameters_table[&Parameter::MinValuePerByte]
1✔
47
    }
48
    /// Maximum size of transactions size in a block
NEW
49
    pub fn max_block_size(&self) -> i32 {
×
NEW
50
        self.parameters_table[&Parameter::MaxBlockSize]
×
51
    }
52
    /// Maximum total computation cost in a block
NEW
53
    pub fn max_block_cost(&self) -> i32 {
×
NEW
54
        self.parameters_table[&Parameter::MaxBlockCost]
×
55
    }
56
    /// Cost of accessing a single token
NEW
57
    pub fn token_access_cost(&self) -> i32 {
×
NEW
58
        self.parameters_table[&Parameter::TokenAccessCost]
×
59
    }
60
    /// Validation cost per one transaction input
NEW
61
    pub fn input_cost(&self) -> i32 {
×
NEW
62
        self.parameters_table[&Parameter::InputCost]
×
63
    }
64
    /// Validation cost per data input
NEW
65
    pub fn data_input_cost(&self) -> i32 {
×
NEW
66
        self.parameters_table[&Parameter::DataInputCost]
×
67
    }
68
    /// Validation cost per one output
NEW
69
    pub fn output_cost(&self) -> i32 {
×
NEW
70
        self.parameters_table[&Parameter::OutputCost]
×
71
    }
72
}
73

74
impl std::default::Default for Parameters {
75
    /// Default blockchain parameters
76
    // Taken from https://github.com/ergoplatform/ergo/blob/master/ergo-core/src/main/scala/org/ergoplatform/settings/Parameters.scala#L291
77
    fn default() -> Self {
2✔
78
        let mut parameters_table = HashMap::new();
2✔
79
        parameters_table.insert(Parameter::StorageFeeFactor, 1250000);
2✔
80
        parameters_table.insert(Parameter::MinValuePerByte, 30 * 12);
2✔
81
        parameters_table.insert(Parameter::TokenAccessCost, 100);
2✔
82
        parameters_table.insert(Parameter::InputCost, 2000);
2✔
83
        parameters_table.insert(Parameter::DataInputCost, 100);
2✔
84
        parameters_table.insert(Parameter::OutputCost, 100);
2✔
85
        parameters_table.insert(Parameter::MaxBlockSize, 512 * 1024);
2✔
86
        parameters_table.insert(Parameter::BlockVersion, 1);
2✔
87
        Self { parameters_table }
88
    }
89
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc