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,
}
}
}