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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
pub use self::create::CheckedMetadata as CreateCheckedMetadata;
pub use self::script::CheckedMetadata as ScriptCheckedMetadata;
pub mod create {
use super::super::{
balances::{initial_free_balances, AvailableBalances},
Checked, IntoChecked,
};
use fuel_tx::{Cacheable, CheckError, ConsensusParameters, Create, FormatValidityChecks, TransactionFee};
use fuel_types::{AssetId, Word};
use std::collections::BTreeMap;
#[derive(Debug, Clone, Eq, PartialEq, Hash)]
pub struct CheckedMetadata {
pub initial_free_balances: BTreeMap<AssetId, Word>,
pub block_height: Word,
pub fee: TransactionFee,
pub gas_used_by_predicates: Word,
}
impl IntoChecked for Create {
type Metadata = CheckedMetadata;
fn into_checked_basic(
mut self,
block_height: Word,
params: &ConsensusParameters,
) -> Result<Checked<Self>, CheckError> {
self.precompute();
self.check_without_signatures(block_height, params)?;
let AvailableBalances {
initial_free_balances,
fee,
} = initial_free_balances(&self, params)?;
let metadata = CheckedMetadata {
initial_free_balances,
block_height,
fee,
gas_used_by_predicates: 0,
};
Ok(Checked::basic(self, metadata))
}
}
}
pub mod mint {
use super::super::{Checked, IntoChecked};
use fuel_tx::{Cacheable, CheckError, ConsensusParameters, FormatValidityChecks, Mint};
use fuel_types::Word;
impl IntoChecked for Mint {
type Metadata = ();
fn into_checked_basic(
mut self,
block_height: Word,
params: &ConsensusParameters,
) -> Result<Checked<Self>, CheckError> {
self.precompute();
self.check_without_signatures(block_height, params)?;
Ok(Checked::basic(self, ()))
}
}
}
pub mod script {
use super::super::{
balances::{initial_free_balances, AvailableBalances},
Checked, IntoChecked,
};
use fuel_tx::{Cacheable, CheckError, ConsensusParameters, FormatValidityChecks, Script, TransactionFee};
use fuel_types::{AssetId, Word};
use std::collections::BTreeMap;
#[derive(Debug, Clone, Eq, PartialEq, Hash)]
pub struct CheckedMetadata {
pub initial_free_balances: BTreeMap<AssetId, Word>,
pub block_height: Word,
pub fee: TransactionFee,
pub gas_used_by_predicates: Word,
}
impl IntoChecked for Script {
type Metadata = CheckedMetadata;
fn into_checked_basic(
mut self,
block_height: Word,
params: &ConsensusParameters,
) -> Result<Checked<Self>, CheckError> {
self.precompute();
self.check_without_signatures(block_height, params)?;
let AvailableBalances {
initial_free_balances,
fee,
} = initial_free_balances(&self, params)?;
let metadata = CheckedMetadata {
initial_free_balances,
block_height,
fee,
gas_used_by_predicates: 0,
};
Ok(Checked::basic(self, metadata))
}
}
}