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
use std::mem; use casper_types::{ProtocolVersion, PublicKey, SecretKey}; use super::{deploy_item::DeployItem, execution_result::ExecutionResult}; use crate::shared::newtypes::Blake2bHash; #[derive(Debug)] pub struct ExecuteRequest { pub parent_state_hash: Blake2bHash, pub block_time: u64, pub deploys: Vec<Result<DeployItem, ExecutionResult>>, pub protocol_version: ProtocolVersion, pub proposer: PublicKey, } impl ExecuteRequest { pub fn new( parent_state_hash: Blake2bHash, block_time: u64, deploys: Vec<Result<DeployItem, ExecutionResult>>, protocol_version: ProtocolVersion, proposer: PublicKey, ) -> Self { Self { parent_state_hash, block_time, deploys, protocol_version, proposer, } } pub fn take_deploys(&mut self) -> Vec<Result<DeployItem, ExecutionResult>> { mem::replace(&mut self.deploys, vec![]) } pub fn deploys(&self) -> &Vec<Result<DeployItem, ExecutionResult>> { &self.deploys } } impl Default for ExecuteRequest { fn default() -> Self { let proposer = SecretKey::ed25519([0; SecretKey::ED25519_LENGTH]).into(); Self { parent_state_hash: Blake2bHash::new(&[]), block_time: 0, deploys: vec![], protocol_version: Default::default(), proposer, } } }