refactor: support roundtrip encoding for script data hash components (#526)
This commit is contained in:
parent
969d5612b7
commit
537cd45c23
9 changed files with 84 additions and 119 deletions
|
|
@ -566,24 +566,22 @@ fn mk_plutus_script_redeemer_pointers(
|
|||
}
|
||||
}
|
||||
}
|
||||
match mint {
|
||||
Some(minted_value) => {
|
||||
let sorted_policies: Vec<PolicyId> = sort_policies(minted_value);
|
||||
for (index, policy) in sorted_policies.iter().enumerate() {
|
||||
for plutus_script in plutus_scripts.iter() {
|
||||
let hashed_script: PolicyId =
|
||||
compute_plutus_v1_script_hash(plutus_script);
|
||||
if *policy == hashed_script {
|
||||
res.push(RedeemerPointer {
|
||||
tag: RedeemerTag::Mint,
|
||||
index: index as u32,
|
||||
})
|
||||
}
|
||||
|
||||
if let Some(minted_value) = mint {
|
||||
let sorted_policies: Vec<PolicyId> = sort_policies(minted_value);
|
||||
for (index, policy) in sorted_policies.iter().enumerate() {
|
||||
for plutus_script in plutus_scripts.iter() {
|
||||
let hashed_script: PolicyId = compute_plutus_v1_script_hash(plutus_script);
|
||||
if *policy == hashed_script {
|
||||
res.push(RedeemerPointer {
|
||||
tag: RedeemerTag::Mint,
|
||||
index: index as u32,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
None => (),
|
||||
}
|
||||
|
||||
res
|
||||
}
|
||||
None => Vec::new(),
|
||||
|
|
@ -727,10 +725,11 @@ fn check_vkey_input_wits(
|
|||
let tx_hash: &Vec<u8> = &Vec::from(mtx.transaction_body.original_hash().as_ref());
|
||||
let mut inputs_and_collaterals: Vec<TransactionInput> = Vec::new();
|
||||
inputs_and_collaterals.extend(tx_body.inputs.clone());
|
||||
match &tx_body.collateral {
|
||||
Some(collaterals) => inputs_and_collaterals.extend(collaterals.clone()),
|
||||
None => (),
|
||||
|
||||
if let Some(collaterals) = &tx_body.collateral {
|
||||
inputs_and_collaterals.extend(collaterals.clone());
|
||||
}
|
||||
|
||||
for input in inputs_and_collaterals.iter() {
|
||||
match utxos.get(&MultiEraInput::from_alonzo_compatible(input)) {
|
||||
Some(multi_era_output) => {
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ use std::borrow::Cow;
|
|||
|
||||
#[cfg(test)]
|
||||
mod alonzo_tests {
|
||||
use pallas_primitives::MaybeIndefArray;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
|
|
@ -2046,7 +2048,7 @@ mod alonzo_tests {
|
|||
);
|
||||
let mut tx_wits: MintedWitnessSet = mtx.transaction_witness_set.unwrap().clone();
|
||||
let old_datum: KeepRaw<PlutusData> = tx_wits.plutus_data.unwrap().pop().unwrap();
|
||||
let new_datum: PlutusData = PlutusData::Array(Vec::new());
|
||||
let new_datum: PlutusData = PlutusData::Array(MaybeIndefArray::Def(Vec::new()));
|
||||
let mut new_datum_buf: Vec<u8> = Vec::new();
|
||||
let _ = encode(new_datum, &mut new_datum_buf);
|
||||
let keep_raw_new_datum: KeepRaw<PlutusData> =
|
||||
|
|
@ -2171,7 +2173,7 @@ mod alonzo_tests {
|
|||
let new_redeemer: Redeemer = Redeemer {
|
||||
tag: RedeemerTag::Spend,
|
||||
index: 15,
|
||||
data: PlutusData::Array(Vec::new()),
|
||||
data: PlutusData::Array(MaybeIndefArray::Def(Vec::new())),
|
||||
ex_units: ExUnits { mem: 0, steps: 0 },
|
||||
};
|
||||
tx_wits.redeemer = Some(vec![old_redeemer, new_redeemer]);
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@ use std::borrow::Cow;
|
|||
|
||||
#[cfg(test)]
|
||||
mod babbage_tests {
|
||||
use pallas_primitives::MaybeIndefArray;
|
||||
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
|
|
@ -2150,7 +2152,7 @@ mod babbage_tests {
|
|||
add_collateral_babbage(&mtx.transaction_body, &mut utxos, collateral_info);
|
||||
let mut tx_wits: MintedWitnessSet = mtx.transaction_witness_set.unwrap().clone();
|
||||
let old_datum: KeepRaw<PlutusData> = tx_wits.plutus_data.unwrap().pop().unwrap();
|
||||
let new_datum: PlutusData = PlutusData::Array(Vec::new());
|
||||
let new_datum: PlutusData = PlutusData::Array(MaybeIndefArray::Def(Vec::new()));
|
||||
let mut new_datum_buf: Vec<u8> = Vec::new();
|
||||
let _ = encode(new_datum, &mut new_datum_buf);
|
||||
let keep_raw_new_datum: KeepRaw<PlutusData> =
|
||||
|
|
@ -2245,7 +2247,7 @@ mod babbage_tests {
|
|||
let new_redeemer: Redeemer = Redeemer {
|
||||
tag: RedeemerTag::Spend,
|
||||
index: 15,
|
||||
data: PlutusData::Array(Vec::new()),
|
||||
data: PlutusData::Array(MaybeIndefArray::Def(Vec::new())),
|
||||
ex_units: ExUnits { mem: 0, steps: 0 },
|
||||
};
|
||||
tx_wits.redeemer = Some(vec![old_redeemer, new_redeemer]);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue