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

1use crate::state_transition_action::shielded::unshield::v0::UnshieldTransitionActionV0;
2use crate::state_transition_action::shielded::ShieldedActionNote;
3use dpp::fee::Credits;
4use dpp::prelude::ConsensusValidationResult;
5use dpp::state_transition::state_transitions::shielded::unshield_transition::v0::UnshieldTransitionV0;
6
7impl UnshieldTransitionActionV0 {
8    /// Transforms the unshield transition into an action
9    pub fn try_from_transition(
10        value: &UnshieldTransitionV0,
11        current_total_balance: Credits,
12    ) -> ConsensusValidationResult<Self> {
13        let notes: Vec<ShieldedActionNote> =
14            value.actions.iter().map(ShieldedActionNote::from).collect();
15
16        ConsensusValidationResult::new_with_data(UnshieldTransitionActionV0 {
17            output_address: value.output_address,
18            amount: value.unshielding_amount,
19            notes,
20            anchor: value.anchor,
21            fee_amount: 0, // TODO: fee calculation for unshield
22            current_total_balance,
23        })
24    }
25}