drive/state_transition_action/shielded/shield/v0/
transformer.rs1use 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 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}