drive/state_transition_action/shielded/shield/v0/
transformer.rs

1use crate::state_transition_action::shielded::shield::v0::ShieldTransitionActionV0;
2use crate::state_transition_action::shielded::ShieldedActionNote;
3use dpp::address_funds::PlatformAddress;
4use dpp::fee::Credits;
5use dpp::prelude::{AddressNonce, ConsensusValidationResult};
6use dpp::state_transition::state_transitions::shielded::shield_transition::v0::ShieldTransitionV0;
7use std::collections::BTreeMap;
8
9impl ShieldTransitionActionV0 {
10    /// Transforms the shield transition into an action
11    pub fn try_from_transition(
12        value: &ShieldTransitionV0,
13        inputs_with_remaining_balance: BTreeMap<PlatformAddress, (AddressNonce, Credits)>,
14        shield_amount: Credits,
15        current_total_balance: Credits,
16    ) -> ConsensusValidationResult<Self> {
17        let notes: Vec<ShieldedActionNote> =
18            value.actions.iter().map(ShieldedActionNote::from).collect();
19
20        ConsensusValidationResult::new_with_data(ShieldTransitionActionV0 {
21            inputs_with_remaining_balance,
22            shield_amount,
23            notes,
24            fee_strategy: value.fee_strategy.clone(),
25            user_fee_increase: value.user_fee_increase,
26            current_total_balance,
27        })
28    }
29}