diff --git a/src/mapper/babbage.rs b/src/mapper/babbage.rs index b1a97d1e..443cf864 100644 --- a/src/mapper/babbage.rs +++ b/src/mapper/babbage.rs @@ -1,8 +1,8 @@ use pallas::codec::utils::KeepRaw; use pallas::ledger::primitives::babbage::{ - AuxiliaryData, MintedBlock, MintedPostAlonzoTransactionOutput, MintedTransactionBody, - MintedTransactionOutput, MintedWitnessSet, NetworkId, + AuxiliaryData, MintedBlock, MintedDatumOption, MintedPostAlonzoTransactionOutput, + MintedTransactionBody, MintedTransactionOutput, MintedWitnessSet, NetworkId, }; use pallas::crypto::hash::Hash; @@ -113,7 +113,7 @@ impl EventWriter { .into(); record.plutus_data = self - .collect_plutus_datum_records(&witnesses.plutus_data)? + .collect_witness_plutus_datum_records(&witnesses.plutus_data)? .into(); } @@ -208,6 +208,11 @@ impl EventWriter { child.crawl_transaction_output_amount(&output.value)?; + if let Some(MintedDatumOption::Data(datum)) = &output.datum_option { + let record = self.to_plutus_datum_record(datum)?; + child.append(record.into())?; + } + Ok(()) } diff --git a/src/mapper/byron.rs b/src/mapper/byron.rs index 42f191d4..65d05504 100644 --- a/src/mapper/byron.rs +++ b/src/mapper/byron.rs @@ -53,6 +53,7 @@ impl EventWriter { amount: source.amount, assets: None, datum_hash: None, + inline_datum: None, }) } diff --git a/src/mapper/collect.rs b/src/mapper/collect.rs index 8dc8f4f7..515e11b5 100644 --- a/src/mapper/collect.rs +++ b/src/mapper/collect.rs @@ -188,7 +188,7 @@ impl EventWriter { } } - pub fn collect_plutus_datum_records( + pub fn collect_witness_plutus_datum_records( &self, witness_set: &Option>>, ) -> Result, Error> { diff --git a/src/mapper/map.rs b/src/mapper/map.rs index 51adad1b..3e2179a4 100644 --- a/src/mapper/map.rs +++ b/src/mapper/map.rs @@ -176,6 +176,7 @@ impl EventWriter { amount: get_tx_output_coin_value(&output.amount), assets: self.collect_asset_records(&output.amount).into(), datum_hash: output.datum_hash.map(|hash| hash.to_string()), + inline_datum: None, }) } @@ -194,6 +195,10 @@ impl EventWriter { Some(MintedDatumOption::Data(x)) => Some(x.original_hash().to_hex()), None => None, }, + inline_datum: match &output.datum_option { + Some(MintedDatumOption::Data(x)) => Some(self.to_plutus_datum_record(x)?), + _ => None, + }, }) } @@ -258,10 +263,10 @@ impl EventWriter { pub fn to_plutus_datum_record( &self, - datum: &alonzo::PlutusData, + datum: &KeepRaw<'_, alonzo::PlutusData>, ) -> Result { Ok(PlutusDatumRecord { - datum_hash: datum.compute_hash().to_hex(), + datum_hash: datum.original_hash().to_hex(), plutus_data: datum.to_json(), }) } @@ -452,7 +457,7 @@ impl EventWriter { .into(); record.plutus_data = self - .collect_plutus_datum_records(&witnesses.plutus_data)? + .collect_witness_plutus_datum_records(&witnesses.plutus_data)? .into(); } diff --git a/src/model.rs b/src/model.rs index f3dae52a..ead944d7 100644 --- a/src/model.rs +++ b/src/model.rs @@ -119,12 +119,13 @@ impl From for EventData { } } -#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] pub struct TxOutputRecord { pub address: String, pub amount: u64, pub assets: Option>, pub datum_hash: Option, + pub inline_datum: Option, } impl From for EventData {