Update to pallas=0.31.0

This commit is contained in:
KtorZ
2024-11-19 14:53:36 +01:00
parent c740e4639f
commit b5047d623a
23 changed files with 13033 additions and 11689 deletions

View File

@@ -1007,6 +1007,7 @@ impl UntypedExpr {
PlutusData::Array(elems) => UntypedExpr::List {
location: Span::empty(),
elements: elems
.to_vec()
.into_iter()
.map(UntypedExpr::reify_blind)
.collect::<Vec<_>>(),
@@ -1041,6 +1042,7 @@ impl UntypedExpr {
let ix = convert_tag_to_constr(tag).or(any_constructor).unwrap() as usize;
let fields = fields
.to_vec()
.into_iter()
.map(|field| CallArg {
location: Span::empty(),
@@ -1127,6 +1129,7 @@ impl UntypedExpr {
Ok(UntypedExpr::List {
location: Span::empty(),
elements: args
.to_vec()
.into_iter()
.map(|arg| {
UntypedExpr::do_reify_data(generics, data_types, arg, inner)
@@ -1144,6 +1147,7 @@ impl UntypedExpr {
Type::Tuple { elems, .. } => Ok(UntypedExpr::Tuple {
location: Span::empty(),
elems: args
.to_vec()
.into_iter()
.zip(elems)
.map(|(arg, arg_type)| {
@@ -1153,6 +1157,7 @@ impl UntypedExpr {
}),
Type::Pair { fst, snd, .. } => {
let mut elems = args
.to_vec()
.into_iter()
.zip([fst, snd])
.map(|(arg, arg_type)| {
@@ -1213,6 +1218,7 @@ impl UntypedExpr {
} else {
let arguments =
fields
.to_vec()
.into_iter()
.zip(constructor.arguments.iter())
.map(
@@ -1264,9 +1270,9 @@ impl UntypedExpr {
UntypedExpr::do_reify_data(
generics,
data_types,
PlutusData::Array(
Data::list(
kvs.into_iter()
.map(|(k, v)| PlutusData::Array(vec![k, v]))
.map(|(k, v)| Data::list(vec![k, v]))
.collect(),
),
tipo,

View File

@@ -18,14 +18,11 @@ use indexmap::IndexMap;
use itertools::{Itertools, Position};
use std::{ops::Deref, rc::Rc};
use uplc::{
ast::{Constant as UplcConstant, Name, Term, Type as UplcType},
ast::{Constant as UplcConstant, Data, Name, Term, Type as UplcType},
builder::{CONSTR_FIELDS_EXPOSER, CONSTR_INDEX_EXPOSER},
builtins::DefaultFunction,
machine::{
runtime::{convert_constr_to_tag, Compressable, ANY_TAG},
value::to_pallas_bigint,
},
Constr, KeyValuePairs, PlutusData,
machine::{runtime::Compressable, value::to_pallas_bigint},
KeyValuePairs, PlutusData,
};
pub type Variant = String;
@@ -637,12 +634,7 @@ pub fn convert_constants_to_data(constants: Vec<Rc<UplcConstant>>) -> Vec<UplcCo
UplcConstant::Data(PlutusData::BoundedBytes(s.as_bytes().to_vec().into()))
}
UplcConstant::Bool(b) => UplcConstant::Data(PlutusData::Constr(Constr {
tag: convert_constr_to_tag((*b).into()).unwrap_or(ANY_TAG),
any_constructor: convert_constr_to_tag((*b).into())
.map_or(Some((*b).into()), |_| None),
fields: vec![],
})),
UplcConstant::Bool(b) => UplcConstant::Data(Data::constr((*b).into(), vec![])),
UplcConstant::ProtoList(list_type, constants) => {
if matches!(list_type, UplcType::Pair(_, _)) {
let inner_constants = constants
@@ -675,7 +667,7 @@ pub fn convert_constants_to_data(constants: Vec<Rc<UplcConstant>>) -> Vec<UplcCo
})
.collect_vec();
UplcConstant::Data(PlutusData::Array(inner_constants))
UplcConstant::Data(Data::list(inner_constants))
}
}
UplcConstant::ProtoPair(_, _, left, right) => {
@@ -688,17 +680,13 @@ pub fn convert_constants_to_data(constants: Vec<Rc<UplcConstant>>) -> Vec<UplcCo
})
.collect_vec();
UplcConstant::Data(PlutusData::Array(vec![
UplcConstant::Data(Data::list(vec![
inner_constants[0].clone(),
inner_constants[1].clone(),
]))
}
d @ UplcConstant::Data(_) => d.clone(),
UplcConstant::Unit => UplcConstant::Data(PlutusData::Constr(Constr {
tag: convert_constr_to_tag(0).unwrap(),
any_constructor: None,
fields: vec![],
})),
UplcConstant::Unit => UplcConstant::Data(Data::constr(0, vec![])),
UplcConstant::Bls12_381G1Element(b) => UplcConstant::Data(PlutusData::BoundedBytes(
b.deref().clone().compress().into(),
)),
@@ -741,33 +729,12 @@ pub fn convert_type_to_data(term: Term<Name>, field_type: &Rc<Type>) -> Term<Nam
)
.lambda("__pair")
.apply(term),
Some(UplcType::Unit) => Term::Constant(
UplcConstant::Data(PlutusData::Constr(Constr {
tag: convert_constr_to_tag(0).unwrap(),
any_constructor: None,
fields: vec![],
}))
.into(),
)
.lambda("_")
.apply(term),
Some(UplcType::Unit) => Term::Constant(UplcConstant::Data(Data::constr(0, vec![])).into())
.lambda("_")
.apply(term),
Some(UplcType::Bool) => term.if_then_else(
Term::Constant(
UplcConstant::Data(PlutusData::Constr(Constr {
tag: convert_constr_to_tag(1).unwrap(),
any_constructor: None,
fields: vec![],
}))
.into(),
),
Term::Constant(
UplcConstant::Data(PlutusData::Constr(Constr {
tag: convert_constr_to_tag(0).unwrap(),
any_constructor: None,
fields: vec![],
}))
.into(),
),
Term::Constant(UplcConstant::Data(Data::constr(1, vec![])).into()),
Term::Constant(UplcConstant::Data(Data::constr(0, vec![])).into()),
),
Some(UplcType::Data) | None => term,

View File

@@ -559,16 +559,15 @@ impl Prng {
{
return Prng::Seeded {
choices: choices.to_vec(),
uplc: PlutusData::Constr(Constr {
tag: 121 + Prng::SEEDED,
fields: vec![
uplc: Data::constr(
Prng::SEEDED,
vec![
PlutusData::BoundedBytes(bytes.to_owned()),
// Clear choices between seeded runs, to not
// accumulate ALL choices ever made.
PlutusData::BoundedBytes(vec![].into()),
],
any_constructor: None,
}),
),
};
}
}