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

ergoplatform / sigma-rust / 13994202105

21 Mar 2025 02:37PM UTC coverage: 78.402% (+0.07%) from 78.333%
13994202105

Pull #801

github

web-flow
Merge aaf043c2f into b5bdb7089
Pull Request #801: Add Header.checkPow

37 of 43 new or added lines in 7 files covered. (86.05%)

10 existing lines in 1 file now uncovered.

11257 of 14358 relevant lines covered (78.4%)

6.15 hits per line

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

73.02
/ergotree-ir/src/types/sheader.rs
1
#![allow(missing_docs)]
2

3
use alloc::boxed::Box;
4
use alloc::vec;
5
use alloc::vec::Vec;
6
use lazy_static::lazy_static;
7

8
use crate::ergo_tree::ErgoTreeVersion;
9
use crate::serialization::types::TypeCode;
10
use crate::types::sfunc::SFunc;
11
use crate::types::stype_companion::STypeCompanion;
12

13
use super::smethod::{MethodId, SMethod, SMethodDesc};
14
use super::stype::SType::{self, SByte, SColl};
15
use super::stype_companion::STypeCompanion::Header;
16

17
/// SHeader type code
18
pub const TYPE_CODE: TypeCode = TypeCode::SHEADER;
19
/// SHeader type name
20
pub static TYPE_NAME: &str = "Header";
21
/// `Header.id`
22
pub const ID_METHOD_ID: MethodId = MethodId(1);
23
/// `Header.version`
24
pub const VERSION_METHOD_ID: MethodId = MethodId(2);
25
/// `Header.parentId`
26
pub const PARENT_ID_METHOD_ID: MethodId = MethodId(3);
27
/// `Header.AdProofsRoot`
28
pub const AD_PROOFS_ROOT_METHOD_ID: MethodId = MethodId(4);
29
/// `Header.stateRoot`
30
pub const STATE_ROOT_METHOD_ID: MethodId = MethodId(5);
31
/// `Header.transactionsRoot`
32
pub const TRANSACTIONS_ROOT_METHOD_ID: MethodId = MethodId(6);
33
/// `Header.timestamp`
34
pub const TIMESTAMP_METHOD_ID: MethodId = MethodId(7);
35
/// `Header.nBits`
36
pub const N_BITS_METHOD_ID: MethodId = MethodId(8);
37
/// `Header.height`
38
pub const HEIGHT_METHOD_ID: MethodId = MethodId(9);
39
/// `Header.extensionRoot`
40
pub const EXTENSION_ROOT_METHOD_ID: MethodId = MethodId(10);
41
/// `Header.minerPk`
42
pub const MINER_PK_METHOD_ID: MethodId = MethodId(11);
43
/// `Header.powOnetimePk`
44
pub const POW_ONETIME_PK_METHOD_ID: MethodId = MethodId(12);
45
/// `Header.powNonce`
46
pub const POW_NONCE_METHOD_ID: MethodId = MethodId(13);
47
/// `Header.powDistance`
48
pub const POW_DISTANCE_METHOD_ID: MethodId = MethodId(14);
49
/// `Header.votes`
50
pub const VOTES_METHOD_ID: MethodId = MethodId(15);
51
/// `Header.checkPow`
52
pub const CHECK_POW_METHOD_ID: MethodId = MethodId(16);
53

54
lazy_static! {
55
    /// Header method descriptors
56
    pub(crate) static ref METHOD_DESC: Vec<&'static SMethodDesc> =
57
        vec![
×
58
            &ID_PROPERTY_METHOD_DESC,
×
59
            &VERSION_PROPERTY_METHOD_DESC,
×
60
            &PARENT_ID_PROPERTY_METHOD_DESC,
×
61
            &AD_PROOFS_ROOT_PROPERTY_METHOD_DESC,
×
62
            &STATE_ROOT_PROPERTY_METHOD_DESC,
×
63
            &TRANSACTIONS_ROOT_PROPERTY_METHOD_DESC,
×
64
            &TIMESTAMP_PROPERTY_METHOD_DESC,
×
65
            &N_BITS_PROPERTY_METHOD_DESC,
×
66
            &HEIGHT_PROPERTY_METHOD_DESC,
×
67
            &EXTENSION_ROOT_PROPERTY_METHOD_DESC,
×
68
            &MINER_PK_PROPERTY_METHOD_DESC,
×
69
            &POW_ONETIME_PK_PROPERTY_METHOD_DESC,
×
70
            &POW_NONCE_PROPERTY_METHOD_DESC,
×
71
            &POW_DISTANCE_PROPERTY_METHOD_DESC,
×
72
            &VOTES_PROPERTY_METHOD_DESC,
×
NEW
73
            &CHECK_POW_METHOD_DESC
×
74
        ]
75
    ;
76
}
77

78
lazy_static! {
79
    // Declaring public `SHeader` properties method signatures type
80

81
    pub static ref ID_PROPERTY: SMethod = SMethod::new(Header, ID_PROPERTY_METHOD_DESC.clone(),);
2✔
82
    pub static ref VERSION_PROPERTY: SMethod =
83
        SMethod::new(Header, VERSION_PROPERTY_METHOD_DESC.clone(),);
2✔
84
    pub static ref PARENT_ID_PROPERTY: SMethod =
85
        SMethod::new(Header, PARENT_ID_PROPERTY_METHOD_DESC.clone(),);
2✔
86
    pub static ref AD_PROOFS_ROOT_PROPERTY: SMethod =
87
        SMethod::new(Header, AD_PROOFS_ROOT_PROPERTY_METHOD_DESC.clone(),);
2✔
88
    pub static ref STATE_ROOT_PROPERTY: SMethod =
89
        SMethod::new(Header, STATE_ROOT_PROPERTY_METHOD_DESC.clone(),);
2✔
90
    pub static ref TRANSACTIONS_ROOT_PROPERTY: SMethod =
91
        SMethod::new(Header, TRANSACTIONS_ROOT_PROPERTY_METHOD_DESC.clone(),);
2✔
92
    pub static ref TIMESTAMP_PROPERTY: SMethod =
93
        SMethod::new(Header, TIMESTAMP_PROPERTY_METHOD_DESC.clone(),);
2✔
94
    pub static ref N_BITS_PROPERTY: SMethod =
95
        SMethod::new(Header, N_BITS_PROPERTY_METHOD_DESC.clone(),);
2✔
96
    pub static ref HEIGHT_PROPERTY: SMethod =
97
        SMethod::new(Header, HEIGHT_PROPERTY_METHOD_DESC.clone(),);
2✔
98
    pub static ref EXTENSION_ROOT_PROPERTY: SMethod =
99
        SMethod::new(Header, EXTENSION_ROOT_PROPERTY_METHOD_DESC.clone(),);
2✔
100
    pub static ref MINER_PK_PROPERTY: SMethod =
101
        SMethod::new(Header, MINER_PK_PROPERTY_METHOD_DESC.clone(),);
2✔
102
    pub static ref POW_ONETIME_PK_PROPERTY: SMethod =
103
        SMethod::new(Header, POW_ONETIME_PK_PROPERTY_METHOD_DESC.clone(),);
2✔
104
    pub static ref POW_NONCE_PROPERTY: SMethod =
105
        SMethod::new(Header, POW_NONCE_PROPERTY_METHOD_DESC.clone(),);
2✔
106
    pub static ref POW_DISTANCE_PROPERTY: SMethod =
107
        SMethod::new(Header, POW_DISTANCE_PROPERTY_METHOD_DESC.clone(),);
2✔
108
    pub static ref VOTES_PROPERTY: SMethod =
109
        SMethod::new(Header, VOTES_PROPERTY_METHOD_DESC.clone(),);
2✔
110

111
    // Declaring private `SHeader` properties methods descriptors
112

113
    static ref ID_PROPERTY_METHOD_DESC: SMethodDesc =
114
        property("id", SColl(SByte.into()), ID_METHOD_ID);
2✔
115
    static ref VERSION_PROPERTY_METHOD_DESC: SMethodDesc =
116
        property("version", SByte, VERSION_METHOD_ID);
2✔
117
    static ref PARENT_ID_PROPERTY_METHOD_DESC: SMethodDesc = property(
2✔
118
        "parentId",
119
        SColl(SByte.into()),
2✔
120
        PARENT_ID_METHOD_ID
121
    );
122
    static ref AD_PROOFS_ROOT_PROPERTY_METHOD_DESC: SMethodDesc = property(
2✔
123
        "ADProofsRoot",
124
        SColl(SByte.into()),
2✔
125
        AD_PROOFS_ROOT_METHOD_ID
126
    );
127
    static ref STATE_ROOT_PROPERTY_METHOD_DESC: SMethodDesc =
128
        property("stateRoot", SType::SAvlTree, STATE_ROOT_METHOD_ID);
2✔
129
    static ref TRANSACTIONS_ROOT_PROPERTY_METHOD_DESC: SMethodDesc = property(
2✔
130
        "transactionsRoot",
131
        SColl(SByte.into()),
2✔
132
        TRANSACTIONS_ROOT_METHOD_ID
133
    );
134
    static ref TIMESTAMP_PROPERTY_METHOD_DESC: SMethodDesc =
135
        property("timestamp", SType::SLong, TIMESTAMP_METHOD_ID);
2✔
136
    static ref N_BITS_PROPERTY_METHOD_DESC: SMethodDesc =
137
        property("nBits", SType::SLong, N_BITS_METHOD_ID);
2✔
138
    static ref HEIGHT_PROPERTY_METHOD_DESC: SMethodDesc =
139
        property("height", SType::SInt, HEIGHT_METHOD_ID);
2✔
140
    static ref EXTENSION_ROOT_PROPERTY_METHOD_DESC: SMethodDesc = property(
2✔
141
        "extensionRoot",
142
        SColl(SByte.into()),
2✔
143
        EXTENSION_ROOT_METHOD_ID
144
    );
145
    static ref MINER_PK_PROPERTY_METHOD_DESC: SMethodDesc =
146
        property("minerPk", SType::SGroupElement, MINER_PK_METHOD_ID);
2✔
147
    static ref POW_ONETIME_PK_PROPERTY_METHOD_DESC: SMethodDesc = property(
2✔
148
        "powOnetimePk",
149
        SType::SGroupElement,
2✔
150
        POW_ONETIME_PK_METHOD_ID
151
    );
152
    static ref POW_NONCE_PROPERTY_METHOD_DESC: SMethodDesc = property(
2✔
153
        "powNonce",
154
        SColl(SByte.into()),
2✔
155
        POW_NONCE_METHOD_ID
156
    );
157
    static ref POW_DISTANCE_PROPERTY_METHOD_DESC: SMethodDesc = property(
2✔
158
        "powDistance",
159
        SType::SBigInt,
2✔
160
        POW_DISTANCE_METHOD_ID
161
    );
162
    static ref VOTES_PROPERTY_METHOD_DESC: SMethodDesc =
163
        property("votes", SColl(SByte.into()), VOTES_METHOD_ID);
2✔
164
    static ref CHECK_POW_METHOD_DESC: SMethodDesc = SMethodDesc {
2✔
165
        method_id: CHECK_POW_METHOD_ID,
166
        name: "checkPow",
167
        tpe: SFunc {
2✔
168
            t_dom: vec![SType::SHeader],
2✔
169
            t_range: Box::new(SType::SBoolean),
4✔
170
            tpe_params: vec![]
2✔
171
        },
172
        explicit_type_args: vec![],
2✔
173
        min_version: ErgoTreeVersion::V3
174
    };
175
    /// Header.checkPow
176
    pub static ref CHECK_POW_METHOD: SMethod = SMethod::new(STypeCompanion::Header, CHECK_POW_METHOD_DESC.clone());
2✔
177
}
178

179
fn property(name: &'static str, res_tpe: SType, id: MethodId) -> SMethodDesc {
2✔
180
    SMethodDesc::property(SType::SHeader, name, res_tpe, id)
2✔
181
}
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