whisky_csl/tx_parser/
change_datum.rs

1use whisky_common::{Datum, WError};
2
3use super::CSLParser;
4
5impl CSLParser {
6    pub fn get_change_datum(&self) -> &Option<Datum> {
7        &self.tx_body.change_datum
8    }
9
10    pub(super) fn extract_change_datum(&mut self) -> Result<(), WError> {
11        let outputs = self.csl_tx_body.outputs();
12        let outputs_len = outputs.len();
13        if outputs_len > 0 {
14            let change_output = outputs.get(outputs_len - 1);
15            let change_datum = change_output.plutus_data();
16            if let Some(change_datum) = change_datum {
17                self.tx_body.change_datum = Some(Datum::Inline(change_datum.to_hex()));
18            } else if let Some(data_hash) = change_output.data_hash() {
19                self.tx_body.change_datum = Some(Datum::Hash(data_hash.to_hex()));
20            }
21        }
22        Ok(())
23    }
24}