diff --git a/crates/uplc/src/flat.rs b/crates/uplc/src/flat.rs index 534e6051..f5dc8da5 100644 --- a/crates/uplc/src/flat.rs +++ b/crates/uplc/src/flat.rs @@ -5,7 +5,7 @@ use flat_rs::{ en::{self, Encode, Encoder}, Flat, }; -use pallas_primitives::Fragment; +use pallas_primitives::{babbage::PlutusData, Fragment}; use crate::{ ast::{ @@ -302,6 +302,14 @@ impl<'b> Decode<'b> for Constant { 2 => Ok(Constant::String(String::decode(d)?)), 3 => Ok(Constant::Unit), 4 => Ok(Constant::Bool(bool::decode(d)?)), + 8 => { + let cbor = Vec::::decode(d)?; + + let data = PlutusData::decode_fragment(&cbor) + .map_err(|err| de::Error::Message(err.to_string()))?; + + Ok(Constant::Data(data)) + } x => Err(de::Error::Message(format!( "Unknown constant constructor tag: {}", x