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
//! Units of account-triggered execution.
use std::collections::BTreeSet;
use casper_types::{account::AccountHash, DeployHash};
use crate::core::engine_state::executable_deploy_item::ExecutableDeployItem;
type GasPrice = u64;
/// Definition of a deploy with all the details that make it possible to execute it.
/// Corresponds to the similarly-named IPC protobuf message.
#[derive(Clone, PartialEq, Eq, Debug)]
pub struct DeployItem {
/// Address that created and signed this deploy. This address will be used as a context for
/// executing session code.
pub address: AccountHash,
/// Session code.
pub session: ExecutableDeployItem,
/// Payment code.
pub payment: ExecutableDeployItem,
/// Gas price specified for this deploy by the user.
pub gas_price: GasPrice,
/// List of accounts that signed this deploy.
pub authorization_keys: BTreeSet<AccountHash>,
/// A unique identifier of the deploy.
/// Currently it is the hash of the deploy header (see `DeployHeader` in the `types` crate).
pub deploy_hash: DeployHash,
}
impl DeployItem {
/// Creates a [`DeployItem`].
pub fn new(
address: AccountHash,
session: ExecutableDeployItem,
payment: ExecutableDeployItem,
gas_price: GasPrice,
authorization_keys: BTreeSet<AccountHash>,
deploy_hash: DeployHash,
) -> Self {
DeployItem {
address,
session,
payment,
gas_price,
authorization_keys,
deploy_hash,
}
}
}