diff --git a/toolkit/offchain/src/reserve/handover.rs b/toolkit/offchain/src/reserve/handover.rs index 0d5de39a2..e2eebc0fc 100644 --- a/toolkit/offchain/src/reserve/handover.rs +++ b/toolkit/offchain/src/reserve/handover.rs @@ -22,8 +22,8 @@ use super::{reserve_utxo_input_with_validator_script_reference, ReserveUtxo, Tok use crate::{ await_tx::AwaitTx, csl::{ - get_builder_config, AssetIdExt, CostStore, Costs, OgmiosUtxoExt, TransactionBuilderExt, - TransactionContext, TransactionOutputAmountBuilderExt, + get_builder_config, unit_plutus_data, AssetIdExt, CostStore, Costs, OgmiosUtxoExt, + TransactionBuilderExt, TransactionContext, TransactionOutputAmountBuilderExt, }, init_governance::{get_governance_data, GovernanceData}, reserve::ReserveData, @@ -148,5 +148,5 @@ fn illiquid_supply_validator_output( } fn illiquid_supply_validator_redeemer() -> PlutusData { - PlutusData::new_empty_constr_plutus_data(&BigNum::zero()) + unit_plutus_data() } diff --git a/toolkit/primitives/plutus-data/src/d_param.rs b/toolkit/primitives/plutus-data/src/d_param.rs index 7a0ce1cfd..85c0e2319 100644 --- a/toolkit/primitives/plutus-data/src/d_param.rs +++ b/toolkit/primitives/plutus-data/src/d_param.rs @@ -31,10 +31,10 @@ pub fn d_parameter_to_plutus_data(d_param: &sidechain_domain::DParameter) -> Plu let mut list = PlutusList::new(); list.add(&PlutusData::new_integer(&d_param.num_permissioned_candidates.into())); list.add(&PlutusData::new_integer(&d_param.num_registered_candidates.into())); - let generic_data = PlutusData::new_list(&list); + let appendix = PlutusData::new_list(&list); VersionedGenericDatum { datum: PlutusData::new_empty_constr_plutus_data(&0u64.into()), - generic_data, + appendix, version: 0, } .into() @@ -60,12 +60,12 @@ impl VersionedDatumWithLegacy for DParamDatum { fn decode_versioned( version: u64, - _const_data: &PlutusData, - mut_data: &PlutusData, + _datum: &PlutusData, + appendix: &PlutusData, ) -> Result { match version { - 0 => DParamDatum::decode_legacy(mut_data) - .map_err(|msg| format!("Can not parse mutable part of data: {msg}")), + 0 => DParamDatum::decode_legacy(appendix) + .map_err(|msg| format!("Cannot parse appendix: {msg}")), _ => Err(format!("Unknown version: {version}")), } } diff --git a/toolkit/primitives/plutus-data/src/lib.rs b/toolkit/primitives/plutus-data/src/lib.rs index 29407942a..deed706ff 100644 --- a/toolkit/primitives/plutus-data/src/lib.rs +++ b/toolkit/primitives/plutus-data/src/lib.rs @@ -37,8 +37,8 @@ impl PlutusDataExtensions for cardano_serialization_lib::PlutusData { /// Trait that provides decoding of versioned generic plutus data. /// /// Versioned generic plutus data contain a version number and two data sections: -/// - immutable section - the data with stable schema, read and validated by smart contracts -/// - mutable section - generic data with evolving schema indicated by the version number, not used by smart contracts +/// - datum - the data with stable schema, read and validated by smart contracts +/// - appendix - generic data with evolving schema indicated by the version number, not used by smart contracts /// /// The corresponding definition in the smart contracts repo is: /// ```haskell @@ -68,12 +68,12 @@ pub(crate) trait VersionedDatumWithLegacy: Sized { /// /// Parameters: /// * `version` - version number - /// * `const_data` - immutable part of the schema - /// * `mut_data` - mutable part of the schema + /// * `datum` - datum with schema specified by smart-contract + /// * `appendix` - generic data ignored by smart-contract logic, schema is version dependent fn decode_versioned( version: u64, - const_data: &PlutusData, - mut_data: &PlutusData, + datum: &PlutusData, + appendix: &PlutusData, ) -> Result; } @@ -83,8 +83,8 @@ impl VersionedDatum for T { fn decode(data: &PlutusData) -> DecodingResult { (match plutus_data_version_and_payload(data) { None => Self::decode_legacy(data), - Some(VersionedGenericDatum { datum, generic_data, version }) => { - Self::decode_versioned(version, &datum, &generic_data) + Some(VersionedGenericDatum { datum, appendix, version }) => { + Self::decode_versioned(version, &datum, &appendix) }, }) .map_err(|msg| decoding_error_and_log(data, Self::NAME, &msg)) @@ -96,7 +96,7 @@ fn plutus_data_version_and_payload(data: &PlutusData) -> Option DataDecodin /// datum types. pub(crate) struct VersionedGenericDatum { pub datum: PlutusData, - pub generic_data: PlutusData, + pub appendix: PlutusData, pub version: u64, } @@ -119,7 +119,7 @@ impl From for PlutusData { fn from(value: VersionedGenericDatum) -> Self { let mut list = PlutusList::new(); list.add(&value.datum); - list.add(&value.generic_data); + list.add(&value.appendix); list.add(&PlutusData::new_integer(&value.version.into())); PlutusData::new_list(&list) } diff --git a/toolkit/primitives/plutus-data/src/permissioned_candidates.rs b/toolkit/primitives/plutus-data/src/permissioned_candidates.rs index b0f294fc9..4a35f49c2 100644 --- a/toolkit/primitives/plutus-data/src/permissioned_candidates.rs +++ b/toolkit/primitives/plutus-data/src/permissioned_candidates.rs @@ -55,10 +55,10 @@ pub fn permissioned_candidates_to_plutus_data( candidate_datum.add(&PlutusData::new_bytes(candidate.grandpa_public_key.0.clone())); list.add(&PlutusData::new_list(&candidate_datum)); } - let generic_data = PlutusData::new_list(&list); + let appendix = PlutusData::new_list(&list); VersionedGenericDatum { datum: PlutusData::new_empty_constr_plutus_data(&BigNum::zero()), - generic_data, + appendix, version: 0, } .into() @@ -84,12 +84,12 @@ impl VersionedDatumWithLegacy for PermissionedCandidateDatums { fn decode_versioned( version: u64, - _const_data: &PlutusData, - mut_data: &PlutusData, + _datum: &PlutusData, + appendix: &PlutusData, ) -> Result { match version { - 0 => PermissionedCandidateDatums::decode_legacy(mut_data) - .map_err(|msg| format!("Can not parse mutable part of data: {msg}")), + 0 => PermissionedCandidateDatums::decode_legacy(appendix) + .map_err(|msg| format!("Cannot parse appendix: {msg}")), _ => Err(format!("Unknown version: {version}")), } } diff --git a/toolkit/primitives/plutus-data/src/registered_candidates.rs b/toolkit/primitives/plutus-data/src/registered_candidates.rs index aa5750975..452e1e3b8 100644 --- a/toolkit/primitives/plutus-data/src/registered_candidates.rs +++ b/toolkit/primitives/plutus-data/src/registered_candidates.rs @@ -66,12 +66,12 @@ impl VersionedDatumWithLegacy for RegisterValidatorDatum { fn decode_versioned( version: u64, - const_data: &PlutusData, - mut_data: &PlutusData, + datum: &PlutusData, + appendix: &PlutusData, ) -> Result { match version { - 0 => decode_v0_register_validator_datum(const_data, mut_data) - .ok_or("Can not parse mutable part of data".to_string()), + 0 => decode_v0_register_validator_datum(datum, appendix) + .ok_or("Can not parse appendix".to_string()), _ => Err(format!("Unknown version: {version}")), } } @@ -117,10 +117,10 @@ impl From for CandidateRegistration { } fn decode_v0_register_validator_datum( - const_data: &PlutusData, - mut_data: &PlutusData, + datum: &PlutusData, + appendix: &PlutusData, ) -> Option { - let fields = mut_data + let fields = appendix .as_constr_plutus_data() .filter(|datum| datum.alternative().is_zero()) .filter(|datum| datum.data().len() >= 6)? @@ -132,7 +132,7 @@ fn decode_v0_register_validator_datum( let aura_pub_key = fields.get(4).as_bytes().map(AuraPublicKey)?; let grandpa_pub_key = fields.get(5).as_bytes().map(GrandpaPublicKey)?; - let own_pkh = MainchainAddressHash(const_data.as_bytes()?.try_into().ok()?); + let own_pkh = MainchainAddressHash(datum.as_bytes()?.try_into().ok()?); Some(RegisterValidatorDatum::V0 { stake_ownership, sidechain_pub_key, @@ -212,17 +212,17 @@ impl From for PlutusData { aura_pub_key, grandpa_pub_key, } => { - let mut generic_data_fields = PlutusList::new(); - generic_data_fields.add(&stake_ownership_to_plutus_data(stake_ownership)); - generic_data_fields.add(&PlutusData::new_bytes(sidechain_pub_key.0)); - generic_data_fields.add(&PlutusData::new_bytes(sidechain_signature.0)); - generic_data_fields.add(&utxo_id_to_plutus_data(registration_utxo)); - generic_data_fields.add(&PlutusData::new_bytes(aura_pub_key.0)); - generic_data_fields.add(&PlutusData::new_bytes(grandpa_pub_key.0)); - let generic_data = ConstrPlutusData::new(&BigNum::zero(), &generic_data_fields); + let mut appendix_fields = PlutusList::new(); + appendix_fields.add(&stake_ownership_to_plutus_data(stake_ownership)); + appendix_fields.add(&PlutusData::new_bytes(sidechain_pub_key.0)); + appendix_fields.add(&PlutusData::new_bytes(sidechain_signature.0)); + appendix_fields.add(&utxo_id_to_plutus_data(registration_utxo)); + appendix_fields.add(&PlutusData::new_bytes(aura_pub_key.0)); + appendix_fields.add(&PlutusData::new_bytes(grandpa_pub_key.0)); + let appendix = ConstrPlutusData::new(&BigNum::zero(), &appendix_fields); VersionedGenericDatum { datum: PlutusData::new_bytes(own_pkh.0.to_vec()), - generic_data: PlutusData::new_constr_plutus_data(&generic_data), + appendix: PlutusData::new_constr_plutus_data(&appendix), version: 0, } .into() diff --git a/toolkit/primitives/plutus-data/src/reserve.rs b/toolkit/primitives/plutus-data/src/reserve.rs index 1265fbf76..b200de5c2 100644 --- a/toolkit/primitives/plutus-data/src/reserve.rs +++ b/toolkit/primitives/plutus-data/src/reserve.rs @@ -82,7 +82,7 @@ impl From for PlutusData { PlutusData::new_list(&datum) }, // this empty constructor below is Plutus encoding of `()` - generic_data: PlutusData::new_empty_constr_plutus_data(&BigNum::zero()), + appendix: PlutusData::new_empty_constr_plutus_data(&BigNum::zero()), version: 0, } .into()