diff --git a/pallas-applying/src/alonzo.rs b/pallas-applying/src/alonzo.rs index b417784..aac55ff 100644 --- a/pallas-applying/src/alonzo.rs +++ b/pallas-applying/src/alonzo.rs @@ -6,7 +6,7 @@ use crate::utils::{ get_network_id_value, get_payment_part, get_shelley_address, get_val_size_in_words, mk_alonzo_vk_wits_check_list, values_are_equal, verify_signature, AlonzoError::*, - AlonzoProtParams, FeePolicy, UTxOs, + AlonzoProtParams, UTxOs, ValidationError::{self, *}, ValidationResult, }; @@ -36,7 +36,7 @@ pub fn validate_alonzo_tx( network_id: &u8, ) -> ValidationResult { let tx_body: &TransactionBody = &mtx.transaction_body; - let size: &u64 = &get_alonzo_comp_tx_size(tx_body).ok_or(Alonzo(UnknownTxSize))?; + let size: &u32 = &get_alonzo_comp_tx_size(tx_body).ok_or(Alonzo(UnknownTxSize))?; check_ins_not_empty(tx_body)?; check_ins_and_collateral_in_utxos(tx_body, utxos)?; check_tx_validity_interval(tx_body, mtx, block_slot)?; @@ -131,7 +131,7 @@ fn check_upper_bound( fn check_fee( tx_body: &TransactionBody, - size: &u64, + size: &u32, mtx: &MintedTx, utxos: &UTxOs, prot_pps: &AlonzoProtParams, @@ -147,11 +147,10 @@ fn check_fee( // minimum fee. fn check_min_fee( tx_body: &TransactionBody, - size: &u64, + size: &u32, prot_pps: &AlonzoProtParams, ) -> ValidationResult { - let fee_policy: &FeePolicy = &prot_pps.fee_policy; - if tx_body.fee < fee_policy.summand + fee_policy.multiplier * size { + if tx_body.fee < (prot_pps.minfee_b + prot_pps.minfee_a * size) as u64 { return Err(Alonzo(FeeBelowMin)); } Ok(()) @@ -185,7 +184,7 @@ fn check_collaterals_number( collaterals: &[TransactionInput], prot_pps: &AlonzoProtParams, ) -> ValidationResult { - let number_collateral: u64 = collaterals.len() as u64; + let number_collateral: u32 = collaterals.len() as u32; if number_collateral == 0 { Err(Alonzo(CollateralMissing)) } else if number_collateral > prot_pps.max_collateral_inputs { @@ -222,7 +221,7 @@ fn check_collaterals_assets( utxos: &UTxOs, prot_pps: &AlonzoProtParams, ) -> ValidationResult { - let fee_percentage: u64 = tx_body.fee * prot_pps.collateral_percent; + let fee_percentage: u64 = tx_body.fee * prot_pps.collateral_percentage as u64; match &tx_body.collateral { Some(collaterals) => { for collateral in collaterals { @@ -317,7 +316,7 @@ fn compute_min_lovelace(output: &TransactionOutput, prot_pps: &AlonzoProtParams) Some(_) => 37, // utxoEntrySizeWithoutVal (27) + dataHashSize (10) None => 27, // utxoEntrySizeWithoutVal }; - prot_pps.coins_per_utxo_word * output_entry_size + prot_pps.ada_per_utxo_byte * output_entry_size } // The size of the value in each of the outputs should not be greater than the @@ -327,7 +326,7 @@ fn check_output_val_size( prot_pps: &AlonzoProtParams, ) -> ValidationResult { for output in tx_body.outputs.iter() { - if get_val_size_in_words(&output.amount) > prot_pps.max_val_size { + if get_val_size_in_words(&output.amount) > prot_pps.max_value_size as u64 { return Err(Alonzo(MaxValSizeExceeded)); } } @@ -364,8 +363,8 @@ fn check_tx_network_id(tx_body: &TransactionBody, network_id: &u8) -> Validation } // The transaction size does not exceed the protocol limit. -fn check_tx_size(size: &u64, prot_pps: &AlonzoProtParams) -> ValidationResult { - if *size > prot_pps.max_tx_size { +fn check_tx_size(size: &u32, prot_pps: &AlonzoProtParams) -> ValidationResult { + if *size > prot_pps.max_transaction_size { return Err(Alonzo(MaxTxSizeExceeded)); } Ok(()) @@ -384,7 +383,7 @@ fn check_tx_ex_units(mtx: &MintedTx, prot_pps: &AlonzoProtParams) -> ValidationR mem += ex_units.mem; steps += ex_units.steps; } - if mem > prot_pps.max_tx_ex_mem || steps > prot_pps.max_tx_ex_steps { + if mem > prot_pps.max_tx_ex_units.mem || steps > prot_pps.max_tx_ex_units.steps { return Err(Alonzo(TxExUnitsExceeded)); } } diff --git a/pallas-applying/src/babbage.rs b/pallas-applying/src/babbage.rs index 759fb85..2dfa17f 100644 --- a/pallas-applying/src/babbage.rs +++ b/pallas-applying/src/babbage.rs @@ -7,7 +7,7 @@ use crate::utils::{ get_val_size_in_words, is_byron_address, lovelace_diff_or_fail, mk_alonzo_vk_wits_check_list, values_are_equal, verify_signature, BabbageError::*, - BabbageProtParams, FeePolicy, UTxOs, + BabbageProtParams, UTxOs, ValidationError::{self, *}, ValidationResult, }; @@ -38,7 +38,7 @@ pub fn validate_babbage_tx( network_id: &u8, ) -> ValidationResult { let tx_body: &MintedTransactionBody = &mtx.transaction_body.clone(); - let size: &u64 = &get_babbage_tx_size(tx_body).ok_or(Babbage(UnknownTxSize))?; + let size: &u32 = &get_babbage_tx_size(tx_body).ok_or(Babbage(UnknownTxSize))?; check_ins_not_empty(tx_body)?; check_all_ins_in_utxos(tx_body, utxos)?; check_tx_validity_interval(tx_body, block_slot)?; @@ -139,7 +139,7 @@ fn check_upper_bound(tx_body: &MintedTransactionBody, block_slot: u64) -> Valida fn check_fee( tx_body: &MintedTransactionBody, - size: &u64, + size: &u32, mtx: &MintedTx, utxos: &UTxOs, prot_pps: &BabbageProtParams, @@ -155,11 +155,10 @@ fn check_fee( // minimum fee. fn check_min_fee( tx_body: &MintedTransactionBody, - size: &u64, + size: &u32, prot_pps: &BabbageProtParams, ) -> ValidationResult { - let fee_policy: &FeePolicy = &prot_pps.fee_policy; - if tx_body.fee < fee_policy.summand + fee_policy.multiplier * size { + if tx_body.fee < (prot_pps.minfee_b + prot_pps.minfee_a * size) as u64 { return Err(Babbage(FeeBelowMin)); } Ok(()) @@ -200,7 +199,7 @@ fn check_collaterals_number( ) -> ValidationResult { if collaterals.is_empty() { Err(Babbage(CollateralMissing)) - } else if collaterals.len() > prot_pps.max_collateral_inputs as usize { + } else if collaterals.len() as u32 > prot_pps.max_collateral_inputs { Err(Babbage(TooManyCollaterals)) } else { Ok(()) @@ -265,7 +264,7 @@ fn check_collaterals_assets( // The balance between collateral inputs and output contains only lovelace. let paid_collateral: u64 = lovelace_diff_or_fail(&coll_input, &coll_return, &Babbage(NonLovelaceCollateral))?; - let fee_percentage: u64 = tx_body.fee * prot_pps.collateral_percent; + let fee_percentage: u64 = tx_body.fee * prot_pps.collateral_percentage as u64; // The balance is not lower than the minimum allowed. if paid_collateral * 100 < fee_percentage { return Err(Babbage(CollateralMinLovelace)); @@ -357,7 +356,7 @@ fn check_min_lovelace( } fn compute_min_lovelace(val: &Value, prot_pps: &BabbageProtParams) -> u64 { - prot_pps.coins_per_utxo_word * (get_val_size_in_words(val) + 160) + prot_pps.ada_per_utxo_byte * (get_val_size_in_words(val) + 160) } // The size of the value in each of the outputs should not be greater than the @@ -371,7 +370,7 @@ fn check_output_val_size( PseudoTransactionOutput::Legacy(output) => &output.amount, PseudoTransactionOutput::PostAlonzo(output) => &output.value, }; - if get_val_size_in_words(val) > prot_pps.max_val_size { + if get_val_size_in_words(val) > prot_pps.max_value_size as u64 { return Err(Babbage(MaxValSizeExceeded)); } } @@ -409,8 +408,8 @@ fn check_tx_network_id(tx_body: &MintedTransactionBody, network_id: &u8) -> Vali Ok(()) } -fn check_tx_size(size: &u64, prot_pps: &BabbageProtParams) -> ValidationResult { - if *size > prot_pps.max_tx_size { +fn check_tx_size(size: &u32, prot_pps: &BabbageProtParams) -> ValidationResult { + if *size > prot_pps.max_transaction_size { return Err(Babbage(MaxTxSizeExceeded)); } Ok(()) @@ -427,7 +426,7 @@ fn check_tx_ex_units(mtx: &MintedTx, prot_pps: &BabbageProtParams) -> Validation mem += ex_units.mem; steps += ex_units.steps; } - if mem > prot_pps.max_tx_ex_mem || steps > prot_pps.max_tx_ex_steps { + if mem > prot_pps.max_tx_ex_units.mem || steps > prot_pps.max_tx_ex_units.steps { return Err(Babbage(TxExUnitsExceeded)); } } diff --git a/pallas-applying/src/byron.rs b/pallas-applying/src/byron.rs index e9ba73a..c95c165 100644 --- a/pallas-applying/src/byron.rs +++ b/pallas-applying/src/byron.rs @@ -97,7 +97,7 @@ fn check_fees(tx: &Tx, size: &u64, utxos: &UTxOs, prot_pps: &ByronProtParams) -> outputs_balance += output.amount } let total_balance: u64 = inputs_balance - outputs_balance; - let min_fees: u64 = prot_pps.fee_policy.summand + prot_pps.fee_policy.multiplier * size; + let min_fees: u64 = prot_pps.summand + prot_pps.multiplier * size; if total_balance < min_fees { Err(Byron(FeesBelowMin)) } else { diff --git a/pallas-applying/src/lib.rs b/pallas-applying/src/lib.rs index 27460e6..50941cb 100644 --- a/pallas-applying/src/lib.rs +++ b/pallas-applying/src/lib.rs @@ -13,17 +13,18 @@ use pallas_traverse::{Era, MultiEraTx}; use shelley_ma::validate_shelley_ma_tx; pub use utils::{ - Environment, MultiEraProtParams, UTxOs, ValidationError::TxAndProtParamsDiffer, + Environment, MultiEraProtocolParameters, UTxOs, + ValidationError::{TxAndProtParamsDiffer, UnknownProtParams}, ValidationResult, }; pub fn validate(metx: &MultiEraTx, utxos: &UTxOs, env: &Environment) -> ValidationResult { match env.prot_params() { - MultiEraProtParams::Byron(bpp) => match metx { + MultiEraProtocolParameters::Byron(bpp) => match metx { MultiEraTx::Byron(mtxp) => validate_byron_tx(mtxp, utxos, bpp, env.prot_magic()), _ => Err(TxAndProtParamsDiffer), }, - MultiEraProtParams::Shelley(spp) => match metx { + MultiEraProtocolParameters::Shelley(spp) => match metx { MultiEraTx::AlonzoCompatible(mtx, Era::Shelley) | MultiEraTx::AlonzoCompatible(mtx, Era::Allegra) | MultiEraTx::AlonzoCompatible(mtx, Era::Mary) => validate_shelley_ma_tx( @@ -36,13 +37,13 @@ pub fn validate(metx: &MultiEraTx, utxos: &UTxOs, env: &Environment) -> Validati ), _ => Err(TxAndProtParamsDiffer), }, - MultiEraProtParams::Alonzo(app) => match metx { + MultiEraProtocolParameters::Alonzo(app) => match metx { MultiEraTx::AlonzoCompatible(mtx, Era::Alonzo) => { validate_alonzo_tx(mtx, utxos, app, env.block_slot(), env.network_id()) } _ => Err(TxAndProtParamsDiffer), }, - MultiEraProtParams::Babbage(bpp) => match metx { + MultiEraProtocolParameters::Babbage(bpp) => match metx { MultiEraTx::Babbage(mtx) => validate_babbage_tx( mtx, utxos, diff --git a/pallas-applying/src/shelley_ma.rs b/pallas-applying/src/shelley_ma.rs index 5e3b625..5c28064 100644 --- a/pallas-applying/src/shelley_ma.rs +++ b/pallas-applying/src/shelley_ma.rs @@ -4,7 +4,6 @@ use crate::utils::{ add_minted_value, add_values, aux_data_from_alonzo_minted_tx, empty_value, get_alonzo_comp_tx_size, get_lovelace_from_alonzo_val, get_payment_part, get_shelley_address, get_val_size_in_words, mk_alonzo_vk_wits_check_list, values_are_equal, verify_signature, - FeePolicy, ShelleyMAError::*, ShelleyProtParams, UTxOs, ValidationError::{self, *}, @@ -32,7 +31,7 @@ pub fn validate_shelley_ma_tx( ) -> ValidationResult { let tx_body: &TransactionBody = &mtx.transaction_body; let tx_wits: &MintedWitnessSet = &mtx.transaction_witness_set; - let size: &u64 = &get_alonzo_comp_tx_size(tx_body).ok_or(ShelleyMA(UnknownTxSize))?; + let size: &u32 = &get_alonzo_comp_tx_size(tx_body).ok_or(ShelleyMA(UnknownTxSize))?; check_ins_not_empty(tx_body)?; check_ins_in_utxos(tx_body, utxos)?; check_ttl(tx_body, block_slot)?; @@ -75,8 +74,8 @@ fn check_ttl(tx_body: &TransactionBody, block_slot: &u64) -> ValidationResult { } } -fn check_tx_size(size: &u64, prot_pps: &ShelleyProtParams) -> ValidationResult { - if *size > prot_pps.max_tx_size { +fn check_tx_size(size: &u32, prot_pps: &ShelleyProtParams) -> ValidationResult { + if *size > prot_pps.max_transaction_size { return Err(ShelleyMA(MaxTxSizeExceeded)); } Ok(()) @@ -104,10 +103,10 @@ fn check_min_lovelace( fn compute_min_lovelace(output: &TransactionOutput, prot_pps: &ShelleyProtParams) -> u64 { match &output.amount { - Value::Coin(_) => prot_pps.min_lovelace, + Value::Coin(_) => prot_pps.min_utxo_value, Value::Multiasset(lovelace, _) => { let utxo_entry_size: u64 = 27 + get_val_size_in_words(&output.amount); - let coins_per_utxo_word: u64 = prot_pps.min_lovelace / 27; + let coins_per_utxo_word: u64 = prot_pps.min_utxo_value / 27; max(*lovelace, utxo_entry_size * coins_per_utxo_word) } } @@ -174,11 +173,10 @@ fn get_produced(tx_body: &TransactionBody, era: &Era) -> Result ValidationResult { - let fee_policy: &FeePolicy = &prot_pps.fee_policy; - if tx_body.fee < fee_policy.summand + fee_policy.multiplier * size { + if tx_body.fee < (prot_pps.minfee_b + prot_pps.minfee_a * size) as u64 { return Err(ShelleyMA(FeesBelowMin)); } Ok(()) diff --git a/pallas-applying/src/utils.rs b/pallas-applying/src/utils.rs index b924d7b..5c375af 100644 --- a/pallas-applying/src/utils.rs +++ b/pallas-applying/src/utils.rs @@ -24,18 +24,18 @@ pub use validation::*; pub type UTxOs<'b> = HashMap, MultiEraOutput<'b>>; -pub fn get_alonzo_comp_tx_size(tx_body: &TransactionBody) -> Option { +pub fn get_alonzo_comp_tx_size(tx_body: &TransactionBody) -> Option { let mut buff: Vec = Vec::new(); match encode(tx_body, &mut buff) { - Ok(()) => Some(buff.len() as u64), + Ok(()) => Some(buff.len() as u32), Err(_) => None, } } -pub fn get_babbage_tx_size(tx_body: &MintedTransactionBody) -> Option { +pub fn get_babbage_tx_size(tx_body: &MintedTransactionBody) -> Option { let mut buff: Vec = Vec::new(); match encode(tx_body, &mut buff) { - Ok(()) => Some(buff.len() as u64), + Ok(()) => Some(buff.len() as u32), Err(_) => None, } } diff --git a/pallas-applying/src/utils/environment.rs b/pallas-applying/src/utils/environment.rs index bd16e15..246bb1b 100644 --- a/pallas-applying/src/utils/environment.rs +++ b/pallas-applying/src/utils/environment.rs @@ -1,73 +1,289 @@ //! Types used for representing the environment required for validation in each //! era. +use pallas_codec::minicbor::{self, Decode, Encode}; +use pallas_primitives::{ + alonzo::{ + Coin, CostMdls, Epoch, ExUnitPrices, ExUnits, Nonce, ProtocolVersion, RationalNumber, + UnitInterval, + }, + babbage::CostMdls as BabbageCostMdls, +}; + +#[derive(Debug, Clone, Encode, Decode)] +#[non_exhaustive] +pub enum MultiEraProtocolParameters { + #[n(0)] + Byron(#[n(1)] ByronProtParams), + + #[n(2)] + Shelley(#[n(3)] ShelleyProtParams), + + #[n(4)] + Alonzo(#[n(5)] AlonzoProtParams), + + #[n(6)] + Babbage(#[n(7)] BabbageProtParams), +} + +#[derive(Debug, Clone, Encode, Decode)] +pub struct ByronProtParams { + #[n(0)] + pub script_version: u16, + + #[n(1)] + pub slot_duration: u64, + + #[n(2)] + pub max_block_size: u64, + + #[n(3)] + pub max_header_size: u64, + + #[n(4)] + pub max_tx_size: u64, + + #[n(5)] + pub max_proposal_size: u64, + + #[n(6)] + pub mpc_thd: u64, + + #[n(7)] + pub heavy_del_thd: u64, + + #[n(8)] + pub update_vote_thd: u64, + + #[n(9)] + pub update_proposal_thd: u64, + + #[n(10)] + pub update_implicit: u64, + + #[n(11)] + pub soft_fork_rule: (u64, u64, u64), + + #[n(12)] + pub summand: u64, + + #[n(13)] + pub multiplier: u64, + + #[n(14)] + pub unlock_stake_epoch: u64, +} + +#[derive(Debug, Clone, Encode, Decode)] +pub struct ShelleyProtParams { + #[n(0)] + pub minfee_a: u32, + + #[n(1)] + pub minfee_b: u32, + + #[n(2)] + pub max_block_body_size: u32, + + #[n(3)] + pub max_transaction_size: u32, + + #[n(4)] + pub max_block_header_size: u32, + + #[n(5)] + pub key_deposit: Coin, + + #[n(6)] + pub pool_deposit: Coin, + + #[n(7)] + pub maximum_epoch: Epoch, + + #[n(8)] + pub desired_number_of_stake_pools: u32, + + #[n(9)] + pub pool_pledge_influence: RationalNumber, + + #[n(10)] + pub expansion_rate: UnitInterval, + + #[n(11)] + pub treasury_growth_rate: UnitInterval, + + #[n(12)] + pub decentralization_constant: UnitInterval, + + #[n(13)] + pub extra_entropy: Nonce, + + #[n(14)] + pub protocol_version: ProtocolVersion, + + #[n(15)] + pub min_utxo_value: Coin, +} + +#[derive(Debug, Clone, Encode, Decode)] +pub struct AlonzoProtParams { + #[n(0)] + pub minfee_a: u32, + + #[n(1)] + pub minfee_b: u32, + + #[n(2)] + pub max_block_body_size: u32, + + #[n(3)] + pub max_transaction_size: u32, + + #[n(4)] + pub max_block_header_size: u32, + + #[n(5)] + pub key_deposit: Coin, + + #[n(6)] + pub pool_deposit: Coin, + + #[n(7)] + pub maximum_epoch: Epoch, + + #[n(8)] + pub desired_number_of_stake_pools: u32, + + #[n(9)] + pub pool_pledge_influence: RationalNumber, + + #[n(10)] + pub expansion_rate: UnitInterval, + + #[n(11)] + pub treasury_growth_rate: UnitInterval, + + #[n(12)] + pub decentralization_constant: UnitInterval, + + #[n(13)] + pub extra_entropy: Nonce, + + #[n(14)] + pub protocol_version: ProtocolVersion, + + #[n(15)] + pub min_pool_cost: Coin, + + #[n(16)] + pub ada_per_utxo_byte: Coin, + + #[n(17)] + pub cost_models_for_script_languages: CostMdls, + + #[n(18)] + pub execution_costs: ExUnitPrices, + + #[n(19)] + pub max_tx_ex_units: ExUnits, + + #[n(20)] + pub max_block_ex_units: ExUnits, + + #[n(21)] + pub max_value_size: u32, + + #[n(22)] + pub collateral_percentage: u32, + + #[n(24)] + pub max_collateral_inputs: u32, +} + +#[derive(Debug, Clone, Encode, Decode)] +pub struct BabbageProtParams { + #[n(0)] + pub minfee_a: u32, + + #[n(1)] + pub minfee_b: u32, + + #[n(2)] + pub max_block_body_size: u32, + + #[n(3)] + pub max_transaction_size: u32, + + #[n(4)] + pub max_block_header_size: u32, + + #[n(5)] + pub key_deposit: Coin, + + #[n(6)] + pub pool_deposit: Coin, + + #[n(7)] + pub maximum_epoch: Epoch, + + #[n(8)] + pub desired_number_of_stake_pools: u32, + + #[n(9)] + pub pool_pledge_influence: RationalNumber, + + #[n(10)] + pub expansion_rate: UnitInterval, + + #[n(11)] + pub treasury_growth_rate: UnitInterval, + + #[n(12)] + pub decentralization_constant: UnitInterval, + + #[n(13)] + pub extra_entropy: Nonce, + + #[n(14)] + pub protocol_version: ProtocolVersion, + + #[n(15)] + pub min_pool_cost: Coin, + + #[n(16)] + pub ada_per_utxo_byte: Coin, + + #[n(17)] + pub cost_models_for_script_languages: BabbageCostMdls, + + #[n(18)] + pub execution_costs: ExUnitPrices, + + #[n(19)] + pub max_tx_ex_units: ExUnits, + + #[n(20)] + pub max_block_ex_units: ExUnits, + + #[n(21)] + pub max_value_size: u32, + + #[n(22)] + pub collateral_percentage: u32, + + #[n(24)] + pub max_collateral_inputs: u32, +} #[derive(Debug)] pub struct Environment { - pub prot_params: MultiEraProtParams, + pub prot_params: MultiEraProtocolParameters, pub prot_magic: u32, pub block_slot: u64, pub network_id: u8, } -// TODO: add variants for the other eras. -#[derive(Debug)] -#[non_exhaustive] -pub enum MultiEraProtParams { - Byron(ByronProtParams), - Shelley(ShelleyProtParams), - Alonzo(AlonzoProtParams), - Babbage(BabbageProtParams), -} - -#[derive(Debug, Clone)] -pub struct ByronProtParams { - pub fee_policy: FeePolicy, - pub max_tx_size: u64, -} - -#[derive(Debug, Clone)] -pub struct ShelleyProtParams { - pub fee_policy: FeePolicy, - pub max_tx_size: u64, - pub min_lovelace: u64, -} - -#[derive(Debug, Clone)] -pub struct FeePolicy { - pub summand: u64, - pub multiplier: u64, -} - -#[derive(Debug, Clone)] -pub struct AlonzoProtParams { - pub fee_policy: FeePolicy, - pub max_tx_size: u64, - pub max_block_ex_mem: u64, - pub max_block_ex_steps: u64, - pub max_tx_ex_mem: u32, - pub max_tx_ex_steps: u64, - pub max_val_size: u64, - pub collateral_percent: u64, - pub max_collateral_inputs: u64, - pub coins_per_utxo_word: u64, -} - -#[derive(Debug, Clone)] -pub struct BabbageProtParams { - pub fee_policy: FeePolicy, - pub max_tx_size: u64, - pub max_block_ex_mem: u64, - pub max_block_ex_steps: u64, - pub max_tx_ex_mem: u32, - pub max_tx_ex_steps: u64, - pub max_val_size: u64, - pub collateral_percent: u64, - pub max_collateral_inputs: u64, - pub coins_per_utxo_word: u64, -} - impl Environment { - pub fn prot_params(&self) -> &MultiEraProtParams { + pub fn prot_params(&self) -> &MultiEraProtocolParameters { &self.prot_params } diff --git a/pallas-applying/src/utils/validation.rs b/pallas-applying/src/utils/validation.rs index a7f4bbb..5b560b4 100644 --- a/pallas-applying/src/utils/validation.rs +++ b/pallas-applying/src/utils/validation.rs @@ -4,6 +4,7 @@ #[non_exhaustive] pub enum ValidationError { TxAndProtParamsDiffer, + UnknownProtParams, Byron(ByronError), ShelleyMA(ShelleyMAError), Alonzo(AlonzoError), diff --git a/pallas-applying/tests/alonzo.rs b/pallas-applying/tests/alonzo.rs index bcc16dd..3cb8c97 100644 --- a/pallas-applying/tests/alonzo.rs +++ b/pallas-applying/tests/alonzo.rs @@ -5,8 +5,7 @@ use common::*; use pallas_addresses::{Address, Network, ShelleyAddress, ShelleyPaymentPart}; use pallas_applying::{ utils::{ - AlonzoError, AlonzoProtParams, Environment, FeePolicy, MultiEraProtParams, - ValidationError::*, + AlonzoError, AlonzoProtParams, Environment, MultiEraProtocolParameters, ValidationError::*, }, validate, UTxOs, }; @@ -18,8 +17,9 @@ use pallas_codec::{ utils::{Bytes, KeepRaw, KeyValuePairs, Nullable}, }; use pallas_primitives::alonzo::{ - AddrKeyhash, ExUnits, MintedTx, MintedWitnessSet, NativeScript, NetworkId, PlutusData, - Redeemer, RedeemerTag, TransactionBody, TransactionOutput, VKeyWitness, Value, + AddrKeyhash, CostModel, ExUnitPrices, ExUnits, Language, MintedTx, MintedWitnessSet, + NativeScript, NetworkId, Nonce, NonceVariant, PlutusData, RationalNumber, Redeemer, + RedeemerTag, TransactionBody, TransactionOutput, VKeyWitness, Value, }; use pallas_traverse::{Era, MultiEraInput, MultiEraOutput, MultiEraTx}; use std::borrow::Cow; @@ -38,27 +38,13 @@ mod alonzo_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/alonzo1.address")), + String::from("018c9ae79bca586ac36dcfdbbf4d2826c685a6969411c338c14973cc7f7bdb37706cd03711fe64747f8cfcfd574c7445cc0378781e77a8cc00"), Value::Coin(1549646822), None, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_334()), prot_magic: 764824073, block_slot: 44237276, network_id: 1, @@ -82,7 +68,7 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (117325a52d60be3a1e4072af39d9e630bf61ce59d315d6c1bf4c4d140f8066ea, 0) - String::from(include_str!("../../test_data/alonzo2.0.address")), + String::from("714a59ebd93ea53d1bbf7f82232c7b012700a0cf4bb78d879dabb1a20a"), Value::Multiasset( 1724100, KeyValuePairs::from(Vec::from([( @@ -107,42 +93,42 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (d2f9764fa93ae5bcabbb65c7a2f97d1e31188064ae3d2ba1462114453928dd99, 0) - String::from(include_str!("../../test_data/alonzo2.1.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (9fab354c2825376a943e505d13a3861e4d9ad3e177028d7bb2bbabce5453fa11, 0) - String::from(include_str!("../../test_data/alonzo2.2.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (3077a999b1d22cb1a4e5ee485adbde6a4596704a96384fbc9727028b8b28ba47, 0) - String::from(include_str!("../../test_data/alonzo2.3.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (b231aca45a38add7378d2ed7a0822626fee3396821e8791a5af5926807db962d, 0) - String::from(include_str!("../../test_data/alonzo2.4.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (11579a841b3c7a64aa057c9adf993ef42520570450499b0a724c7ef706b2a435, 0) - String::from(include_str!("../../test_data/alonzo2.5.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(61233231), None, ), ( // (tx hash, tx output index): // (b857f98162b753d117464c499d53bbbfec5aa38b94bd624e295a7e3fddc77130, 0) - String::from(include_str!("../../test_data/alonzo2.6.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), @@ -152,27 +138,13 @@ mod alonzo_tests { &mtx.transaction_body, &mut utxos, &[( - String::from(include_str!("../../test_data/alonzo2.collateral.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(5000000), None, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_300()), prot_magic: 764824073, block_slot: 58924928, network_id: 1, @@ -193,27 +165,13 @@ mod alonzo_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/alonzo3.address")), + String::from("612e137a27a74aca6caff726fb9da65c371ad2d7f1cc8645648fcc11d1"), Value::Coin(100107582), None, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_300()), prot_magic: 764824073, block_slot: 6447035, network_id: 1, @@ -234,27 +192,13 @@ mod alonzo_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/alonzo4.address")), + String::from("01f64b141bfa7761c00a48a137b15d433af02c9275dbf52ea95566b59cb4f05ecc9fd8c9066ef7fd907db854c76caf6462b132ce133dc7cc44"), Value::Coin(3224834468), None, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_300()), prot_magic: 764824073, block_slot: 6447038, network_id: 1, @@ -273,7 +217,7 @@ mod alonzo_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/alonzo1.address")), + String::from("018c9ae79bca586ac36dcfdbbf4d2826c685a6969411c338c14973cc7f7bdb37706cd03711fe64747f8cfcfd574c7445cc0378781e77a8cc00"), Value::Coin(1549646822), None, )], @@ -286,21 +230,7 @@ mod alonzo_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_334()), prot_magic: 764824073, block_slot: 44237276, network_id: 1, @@ -323,21 +253,7 @@ mod alonzo_tests { let utxos: UTxOs = UTxOs::new(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_334()), prot_magic: 764824073, block_slot: 44237276, network_id: 1, @@ -360,7 +276,7 @@ mod alonzo_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/alonzo1.address")), + String::from("018c9ae79bca586ac36dcfdbbf4d2826c685a6969411c338c14973cc7f7bdb37706cd03711fe64747f8cfcfd574c7445cc0378781e77a8cc00"), Value::Coin(1549646822), None, )], @@ -373,27 +289,13 @@ mod alonzo_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_334()), prot_magic: 764824073, block_slot: 44237276, network_id: 1, }; match validate(&metx, &utxos, &env) { - Ok(()) => panic!("Validity interval lower bound should have been reached",), + Ok(()) => panic!("Validity interval lower bound should have been reached"), Err(err) => match err { Alonzo(AlonzoError::BlockPrecedesValInt) => (), _ => panic!("Unexpected error ({:?})", err), @@ -410,7 +312,7 @@ mod alonzo_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/alonzo1.address")), + String::from("018c9ae79bca586ac36dcfdbbf4d2826c685a6969411c338c14973cc7f7bdb37706cd03711fe64747f8cfcfd574c7445cc0378781e77a8cc00"), Value::Coin(1549646822), None, )], @@ -423,27 +325,13 @@ mod alonzo_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_334()), prot_magic: 764824073, block_slot: 44237276, network_id: 1, }; match validate(&metx, &utxos, &env) { - Ok(()) => panic!("Validity interval upper bound should not have been surpassed",), + Ok(()) => panic!("Validity interval upper bound should not have been surpassed"), Err(err) => match err { Alonzo(AlonzoError::BlockExceedsValInt) => (), _ => panic!("Unexpected error ({:?})", err), @@ -461,27 +349,15 @@ mod alonzo_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/alonzo1.address")), + String::from("018c9ae79bca586ac36dcfdbbf4d2826c685a6969411c338c14973cc7f7bdb37706cd03711fe64747f8cfcfd574c7445cc0378781e77a8cc00"), Value::Coin(1549646822), None, )], ); + let mut alonzo_prot_params: AlonzoProtParams = mk_params_epoch_334(); + alonzo_prot_params.minfee_a = 79; // This value was 44 during Alonzo on mainnet let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 79, // This value was 44 during Alonzo on mainnet. - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(alonzo_prot_params), prot_magic: 764824073, block_slot: 44237276, network_id: 1, @@ -507,7 +383,7 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (117325a52d60be3a1e4072af39d9e630bf61ce59d315d6c1bf4c4d140f8066ea, 0) - String::from(include_str!("../../test_data/alonzo2.0.address")), + String::from("714a59ebd93ea53d1bbf7f82232c7b012700a0cf4bb78d879dabb1a20a"), Value::Multiasset( 1724100, KeyValuePairs::from(Vec::from([( @@ -531,43 +407,43 @@ mod alonzo_tests { ), ( // (tx hash, tx output index): - // (d2f9764fa93ae5bcabbb65c7a2f97d1e31188064ae3d2ba1462114453928dd99, 0) - String::from(include_str!("../../test_data/alonzo2.1.address")), + // (d2f9764fa93ae5bcabbb65c7a2f97d1e31188064ae3d2ba1462114453928dd99, 0) + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (9fab354c2825376a943e505d13a3861e4d9ad3e177028d7bb2bbabce5453fa11, 0) - String::from(include_str!("../../test_data/alonzo2.2.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (3077a999b1d22cb1a4e5ee485adbde6a4596704a96384fbc9727028b8b28ba47, 0) - String::from(include_str!("../../test_data/alonzo2.3.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (b231aca45a38add7378d2ed7a0822626fee3396821e8791a5af5926807db962d, 0) - String::from(include_str!("../../test_data/alonzo2.4.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (11579a841b3c7a64aa057c9adf993ef42520570450499b0a724c7ef706b2a435, 0) - String::from(include_str!("../../test_data/alonzo2.5.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(61233231), None, ), ( // (tx hash, tx output index): // (b857f98162b753d117464c499d53bbbfec5aa38b94bd624e295a7e3fddc77130, 0) - String::from(include_str!("../../test_data/alonzo2.6.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), @@ -577,7 +453,7 @@ mod alonzo_tests { &mtx.transaction_body, &mut utxos, &[( - String::from(include_str!("../../test_data/alonzo2.collateral.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(5000000), None, )], @@ -590,21 +466,7 @@ mod alonzo_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_300()), prot_magic: 764824073, block_slot: 58924928, network_id: 1, @@ -632,7 +494,7 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (117325a52d60be3a1e4072af39d9e630bf61ce59d315d6c1bf4c4d140f8066ea, 0) - String::from(include_str!("../../test_data/alonzo2.0.address")), + String::from("714a59ebd93ea53d1bbf7f82232c7b012700a0cf4bb78d879dabb1a20a"), Value::Multiasset( 1724100, KeyValuePairs::from(Vec::from([( @@ -657,42 +519,42 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (d2f9764fa93ae5bcabbb65c7a2f97d1e31188064ae3d2ba1462114453928dd99, 0) - String::from(include_str!("../../test_data/alonzo2.1.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (9fab354c2825376a943e505d13a3861e4d9ad3e177028d7bb2bbabce5453fa11, 0) - String::from(include_str!("../../test_data/alonzo2.2.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (3077a999b1d22cb1a4e5ee485adbde6a4596704a96384fbc9727028b8b28ba47, 0) - String::from(include_str!("../../test_data/alonzo2.3.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (b231aca45a38add7378d2ed7a0822626fee3396821e8791a5af5926807db962d, 0) - String::from(include_str!("../../test_data/alonzo2.4.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (11579a841b3c7a64aa057c9adf993ef42520570450499b0a724c7ef706b2a435, 0) - String::from(include_str!("../../test_data/alonzo2.5.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(61233231), None, ), ( // (tx hash, tx output index): // (b857f98162b753d117464c499d53bbbfec5aa38b94bd624e295a7e3fddc77130, 0) - String::from(include_str!("../../test_data/alonzo2.6.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), @@ -702,27 +564,15 @@ mod alonzo_tests { &mtx.transaction_body, &mut utxos, &[( - String::from(include_str!("../../test_data/alonzo2.collateral.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(5000000), None, )], ); + let mut alonzo_prot_params: AlonzoProtParams = mk_params_epoch_300(); + alonzo_prot_params.max_collateral_inputs = 0; // This value was 3 during Alonzo on mainnet let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 0, // no collateral inputs are allowed - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(alonzo_prot_params), prot_magic: 764824073, block_slot: 58924928, network_id: 1, @@ -748,7 +598,7 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (117325a52d60be3a1e4072af39d9e630bf61ce59d315d6c1bf4c4d140f8066ea, 0) - String::from(include_str!("../../test_data/alonzo2.0.address")), + String::from("714a59ebd93ea53d1bbf7f82232c7b012700a0cf4bb78d879dabb1a20a"), Value::Multiasset( 1724100, KeyValuePairs::from(Vec::from([( @@ -773,50 +623,48 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (d2f9764fa93ae5bcabbb65c7a2f97d1e31188064ae3d2ba1462114453928dd99, 0) - String::from(include_str!("../../test_data/alonzo2.1.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (9fab354c2825376a943e505d13a3861e4d9ad3e177028d7bb2bbabce5453fa11, 0) - String::from(include_str!("../../test_data/alonzo2.2.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (3077a999b1d22cb1a4e5ee485adbde6a4596704a96384fbc9727028b8b28ba47, 0) - String::from(include_str!("../../test_data/alonzo2.3.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (b231aca45a38add7378d2ed7a0822626fee3396821e8791a5af5926807db962d, 0) - String::from(include_str!("../../test_data/alonzo2.4.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (11579a841b3c7a64aa057c9adf993ef42520570450499b0a724c7ef706b2a435, 0) - String::from(include_str!("../../test_data/alonzo2.5.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(61233231), None, ), ( // (tx hash, tx output index): // (b857f98162b753d117464c499d53bbbfec5aa38b94bd624e295a7e3fddc77130, 0) - String::from(include_str!("../../test_data/alonzo2.6.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ], ); - let old_address: Address = match hex::decode(String::from(include_str!( - "../../test_data/alonzo2.collateral.address" - ))) { + let old_address: Address = match hex::decode(String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da")) { Ok(bytes_vec) => Address::from_bytes(bytes_vec.as_slice()).unwrap(), _ => panic!("Unable to parse collateral input address"), }; @@ -847,21 +695,7 @@ mod alonzo_tests { utxos.insert(multi_era_in, multi_era_out); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_300()), prot_magic: 764824073, block_slot: 58924928, network_id: 1, @@ -876,7 +710,7 @@ mod alonzo_tests { } #[test] - // Same as sucessful_mainnet_tx_with_plutus_script, except that the output + // Same as successful_mainnet_tx_with_plutus_script, except that the output // associated to the collateral input contains assets other than lovelace. fn collateral_with_other_assets() { let cbor_bytes: Vec = cbor_to_bytes(include_str!("../../test_data/alonzo2.tx")); @@ -888,7 +722,7 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (117325a52d60be3a1e4072af39d9e630bf61ce59d315d6c1bf4c4d140f8066ea, 0) - String::from(include_str!("../../test_data/alonzo2.0.address")), + String::from("714a59ebd93ea53d1bbf7f82232c7b012700a0cf4bb78d879dabb1a20a"), Value::Multiasset( 1724100, KeyValuePairs::from(Vec::from([( @@ -913,42 +747,42 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (d2f9764fa93ae5bcabbb65c7a2f97d1e31188064ae3d2ba1462114453928dd99, 0) - String::from(include_str!("../../test_data/alonzo2.1.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (9fab354c2825376a943e505d13a3861e4d9ad3e177028d7bb2bbabce5453fa11, 0) - String::from(include_str!("../../test_data/alonzo2.2.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (3077a999b1d22cb1a4e5ee485adbde6a4596704a96384fbc9727028b8b28ba47, 0) - String::from(include_str!("../../test_data/alonzo2.3.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (b231aca45a38add7378d2ed7a0822626fee3396821e8791a5af5926807db962d, 0) - String::from(include_str!("../../test_data/alonzo2.4.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (11579a841b3c7a64aa057c9adf993ef42520570450499b0a724c7ef706b2a435, 0) - String::from(include_str!("../../test_data/alonzo2.5.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(61233231), None, ), ( // (tx hash, tx output index): // (b857f98162b753d117464c499d53bbbfec5aa38b94bd624e295a7e3fddc77130, 0) - String::from(include_str!("../../test_data/alonzo2.6.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), @@ -958,7 +792,7 @@ mod alonzo_tests { &mtx.transaction_body, &mut utxos, &[( - String::from(include_str!("../../test_data/alonzo2.collateral.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Multiasset( 5000000, KeyValuePairs::from(Vec::from([( @@ -975,21 +809,7 @@ mod alonzo_tests { )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_300()), prot_magic: 764824073, block_slot: 58924928, network_id: 1, @@ -1016,7 +836,7 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (117325a52d60be3a1e4072af39d9e630bf61ce59d315d6c1bf4c4d140f8066ea, 0) - String::from(include_str!("../../test_data/alonzo2.0.address")), + String::from("714a59ebd93ea53d1bbf7f82232c7b012700a0cf4bb78d879dabb1a20a"), Value::Multiasset( 1724100, KeyValuePairs::from(Vec::from([( @@ -1041,42 +861,42 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (d2f9764fa93ae5bcabbb65c7a2f97d1e31188064ae3d2ba1462114453928dd99, 0) - String::from(include_str!("../../test_data/alonzo2.1.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (9fab354c2825376a943e505d13a3861e4d9ad3e177028d7bb2bbabce5453fa11, 0) - String::from(include_str!("../../test_data/alonzo2.2.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (3077a999b1d22cb1a4e5ee485adbde6a4596704a96384fbc9727028b8b28ba47, 0) - String::from(include_str!("../../test_data/alonzo2.3.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (b231aca45a38add7378d2ed7a0822626fee3396821e8791a5af5926807db962d, 0) - String::from(include_str!("../../test_data/alonzo2.4.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (11579a841b3c7a64aa057c9adf993ef42520570450499b0a724c7ef706b2a435, 0) - String::from(include_str!("../../test_data/alonzo2.5.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(61233231), None, ), ( // (tx hash, tx output index): // (b857f98162b753d117464c499d53bbbfec5aa38b94bd624e295a7e3fddc77130, 0) - String::from(include_str!("../../test_data/alonzo2.6.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), @@ -1086,27 +906,15 @@ mod alonzo_tests { &mtx.transaction_body, &mut utxos, &[( - String::from(include_str!("../../test_data/alonzo2.collateral.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(5000000), None, )], ); + let mut alonzo_prot_params: AlonzoProtParams = mk_params_epoch_300(); + alonzo_prot_params.collateral_percentage = 700; // This was 150 during Alonzo on mainnet. let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 700, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(alonzo_prot_params), prot_magic: 764824073, block_slot: 58924928, network_id: 1, @@ -1129,7 +937,7 @@ mod alonzo_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/alonzo1.address")), + String::from("018c9ae79bca586ac36dcfdbbf4d2826c685a6969411c338c14973cc7f7bdb37706cd03711fe64747f8cfcfd574c7445cc0378781e77a8cc00"), Value::Coin(1549646822), None, )], @@ -1142,21 +950,7 @@ mod alonzo_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_334()), prot_magic: 764824073, block_slot: 44237276, network_id: 1, @@ -1183,7 +977,7 @@ mod alonzo_tests { match Address::from_bytes(&Vec::::from(first_output.address.clone())) { Ok(Address::Shelley(sa)) => sa, Ok(_) => panic!("Decoded output address and found the wrong era"), - Err(e) => panic!("Unable to parse output address ({:?})", e), + Err(e) => panic!("Unable to parse output address({:?})", e), }; let altered_address: ShelleyAddress = ShelleyAddress::new( Network::Testnet, @@ -1206,27 +1000,13 @@ mod alonzo_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/alonzo1.address")), + String::from("018c9ae79bca586ac36dcfdbbf4d2826c685a6969411c338c14973cc7f7bdb37706cd03711fe64747f8cfcfd574c7445cc0378781e77a8cc00"), Value::Coin(1549646822), None, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_334()), prot_magic: 764824073, block_slot: 44237276, network_id: 1, @@ -1258,27 +1038,13 @@ mod alonzo_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/alonzo1.address")), + String::from("018c9ae79bca586ac36dcfdbbf4d2826c685a6969411c338c14973cc7f7bdb37706cd03711fe64747f8cfcfd574c7445cc0378781e77a8cc00"), Value::Coin(1549646822), None, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_334()), prot_magic: 764824073, block_slot: 44237276, network_id: 1, @@ -1305,7 +1071,7 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (117325a52d60be3a1e4072af39d9e630bf61ce59d315d6c1bf4c4d140f8066ea, 0) - String::from(include_str!("../../test_data/alonzo2.0.address")), + String::from("714a59ebd93ea53d1bbf7f82232c7b012700a0cf4bb78d879dabb1a20a"), Value::Multiasset( 1724100, KeyValuePairs::from(Vec::from([( @@ -1330,42 +1096,42 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (d2f9764fa93ae5bcabbb65c7a2f97d1e31188064ae3d2ba1462114453928dd99, 0) - String::from(include_str!("../../test_data/alonzo2.1.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (9fab354c2825376a943e505d13a3861e4d9ad3e177028d7bb2bbabce5453fa11, 0) - String::from(include_str!("../../test_data/alonzo2.2.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (3077a999b1d22cb1a4e5ee485adbde6a4596704a96384fbc9727028b8b28ba47, 0) - String::from(include_str!("../../test_data/alonzo2.3.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (b231aca45a38add7378d2ed7a0822626fee3396821e8791a5af5926807db962d, 0) - String::from(include_str!("../../test_data/alonzo2.4.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (11579a841b3c7a64aa057c9adf993ef42520570450499b0a724c7ef706b2a435, 0) - String::from(include_str!("../../test_data/alonzo2.5.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(61233231), None, ), ( // (tx hash, tx output index): // (b857f98162b753d117464c499d53bbbfec5aa38b94bd624e295a7e3fddc77130, 0) - String::from(include_str!("../../test_data/alonzo2.6.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), @@ -1375,27 +1141,16 @@ mod alonzo_tests { &mtx.transaction_body, &mut utxos, &[( - String::from(include_str!("../../test_data/alonzo2.collateral.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(5000000), None, )], ); + let mut alonzo_prot_params: AlonzoProtParams = mk_params_epoch_300(); + alonzo_prot_params.max_tx_ex_units.mem = 4649575; // This is 1 lower than that of the transaction + alonzo_prot_params.max_tx_ex_units.steps = 1765246503; // This is 1 lower than that of the transaction let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 4649575, // 1 lower than that of the transaction - max_tx_ex_steps: 1765246503, // 1 lower than that of the transaction - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(alonzo_prot_params), prot_magic: 764824073, block_slot: 58924928, network_id: 1, @@ -1420,27 +1175,15 @@ mod alonzo_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/alonzo1.address")), + String::from("018c9ae79bca586ac36dcfdbbf4d2826c685a6969411c338c14973cc7f7bdb37706cd03711fe64747f8cfcfd574c7445cc0378781e77a8cc00"), Value::Coin(1549646822), None, )], ); + let mut alonzo_prot_params: AlonzoProtParams = mk_params_epoch_334(); + alonzo_prot_params.max_transaction_size = 158; // 1 byte less than the size of the tx let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 158, // 1 byte less than the size of the transaction. - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(alonzo_prot_params), prot_magic: 764824073, block_slot: 44237276, network_id: 1, @@ -1469,7 +1212,7 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (117325a52d60be3a1e4072af39d9e630bf61ce59d315d6c1bf4c4d140f8066ea, 0) - String::from(include_str!("../../test_data/alonzo2.0.address")), + String::from("714a59ebd93ea53d1bbf7f82232c7b012700a0cf4bb78d879dabb1a20a"), Value::Multiasset( 1724100, KeyValuePairs::from(Vec::from([( @@ -1494,42 +1237,42 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (d2f9764fa93ae5bcabbb65c7a2f97d1e31188064ae3d2ba1462114453928dd99, 0) - String::from(include_str!("../../test_data/alonzo2.1.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (9fab354c2825376a943e505d13a3861e4d9ad3e177028d7bb2bbabce5453fa11, 0) - String::from(include_str!("../../test_data/alonzo2.2.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (3077a999b1d22cb1a4e5ee485adbde6a4596704a96384fbc9727028b8b28ba47, 0) - String::from(include_str!("../../test_data/alonzo2.3.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (b231aca45a38add7378d2ed7a0822626fee3396821e8791a5af5926807db962d, 0) - String::from(include_str!("../../test_data/alonzo2.4.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (11579a841b3c7a64aa057c9adf993ef42520570450499b0a724c7ef706b2a435, 0) - String::from(include_str!("../../test_data/alonzo2.5.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(61233231), None, ), ( // (tx hash, tx output index): // (b857f98162b753d117464c499d53bbbfec5aa38b94bd624e295a7e3fddc77130, 0) - String::from(include_str!("../../test_data/alonzo2.6.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), @@ -1539,7 +1282,7 @@ mod alonzo_tests { &mtx.transaction_body, &mut utxos, &[( - String::from(include_str!("../../test_data/alonzo2.collateral.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(5000000), None, )], @@ -1557,21 +1300,7 @@ mod alonzo_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_300()), prot_magic: 764824073, block_slot: 58924928, network_id: 1, @@ -1594,7 +1323,7 @@ mod alonzo_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/alonzo1.address")), + String::from("018c9ae79bca586ac36dcfdbbf4d2826c685a6969411c338c14973cc7f7bdb37706cd03711fe64747f8cfcfd574c7445cc0378781e77a8cc00"), Value::Coin(1549646822), None, )], @@ -1607,21 +1336,7 @@ mod alonzo_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_334()), prot_magic: 764824073, block_slot: 44237276, network_id: 1, @@ -1644,7 +1359,7 @@ mod alonzo_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/alonzo1.address")), + String::from("018c9ae79bca586ac36dcfdbbf4d2826c685a6969411c338c14973cc7f7bdb37706cd03711fe64747f8cfcfd574c7445cc0378781e77a8cc00"), Value::Coin(1549646822), None, )], @@ -1656,7 +1371,7 @@ mod alonzo_tests { // "c50047bafa1adfbfd588d7c8be89f7ab17aecd47c4cc0ed5c1318caca57c8215d77d6878f0eb2bd2620b4ea552415a3028f98102275c9a564278d0f400000000" wit.signature = hex::decode( "c50047bafa1adfbfd588d7c8be89f7ab17aecd47c4cc0ed5c1318caca57c8215d77d6878f0eb2bd2620b4ea552415a3028f98102275c9a564278d0f400000000" - ).unwrap().into(); + ).unwrap().into(); tx_wits.vkeywitness = Some(vec![wit]); let mut tx_buf: Vec = Vec::new(); let _ = encode(tx_wits, &mut tx_buf); @@ -1664,21 +1379,7 @@ mod alonzo_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_334()), prot_magic: 764824073, block_slot: 44237276, network_id: 1, @@ -1704,7 +1405,7 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (117325a52d60be3a1e4072af39d9e630bf61ce59d315d6c1bf4c4d140f8066ea, 0) - String::from(include_str!("../../test_data/alonzo2.0.address")), + String::from("714a59ebd93ea53d1bbf7f82232c7b012700a0cf4bb78d879dabb1a20a"), Value::Multiasset( 1724100, KeyValuePairs::from(Vec::from([( @@ -1729,42 +1430,42 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (d2f9764fa93ae5bcabbb65c7a2f97d1e31188064ae3d2ba1462114453928dd99, 0) - String::from(include_str!("../../test_data/alonzo2.1.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (9fab354c2825376a943e505d13a3861e4d9ad3e177028d7bb2bbabce5453fa11, 0) - String::from(include_str!("../../test_data/alonzo2.2.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (3077a999b1d22cb1a4e5ee485adbde6a4596704a96384fbc9727028b8b28ba47, 0) - String::from(include_str!("../../test_data/alonzo2.3.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (b231aca45a38add7378d2ed7a0822626fee3396821e8791a5af5926807db962d, 0) - String::from(include_str!("../../test_data/alonzo2.4.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (11579a841b3c7a64aa057c9adf993ef42520570450499b0a724c7ef706b2a435, 0) - String::from(include_str!("../../test_data/alonzo2.5.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(61233231), None, ), ( // (tx hash, tx output index): // (b857f98162b753d117464c499d53bbbfec5aa38b94bd624e295a7e3fddc77130, 0) - String::from(include_str!("../../test_data/alonzo2.6.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), @@ -1774,7 +1475,7 @@ mod alonzo_tests { &mtx.transaction_body, &mut utxos, &[( - String::from(include_str!("../../test_data/alonzo2.collateral.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(5000000), None, )], @@ -1787,21 +1488,7 @@ mod alonzo_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_300()), prot_magic: 764824073, block_slot: 58924928, network_id: 1, @@ -1827,7 +1514,7 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (117325a52d60be3a1e4072af39d9e630bf61ce59d315d6c1bf4c4d140f8066ea, 0) - String::from(include_str!("../../test_data/alonzo2.0.address")), + String::from("714a59ebd93ea53d1bbf7f82232c7b012700a0cf4bb78d879dabb1a20a"), Value::Multiasset( 1724100, KeyValuePairs::from(Vec::from([( @@ -1852,42 +1539,42 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (d2f9764fa93ae5bcabbb65c7a2f97d1e31188064ae3d2ba1462114453928dd99, 0) - String::from(include_str!("../../test_data/alonzo2.1.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (9fab354c2825376a943e505d13a3861e4d9ad3e177028d7bb2bbabce5453fa11, 0) - String::from(include_str!("../../test_data/alonzo2.2.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (3077a999b1d22cb1a4e5ee485adbde6a4596704a96384fbc9727028b8b28ba47, 0) - String::from(include_str!("../../test_data/alonzo2.3.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (b231aca45a38add7378d2ed7a0822626fee3396821e8791a5af5926807db962d, 0) - String::from(include_str!("../../test_data/alonzo2.4.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (11579a841b3c7a64aa057c9adf993ef42520570450499b0a724c7ef706b2a435, 0) - String::from(include_str!("../../test_data/alonzo2.5.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(61233231), None, ), ( // (tx hash, tx output index): // (b857f98162b753d117464c499d53bbbfec5aa38b94bd624e295a7e3fddc77130, 0) - String::from(include_str!("../../test_data/alonzo2.6.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), @@ -1897,7 +1584,7 @@ mod alonzo_tests { &mtx.transaction_body, &mut utxos, &[( - String::from(include_str!("../../test_data/alonzo2.collateral.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(5000000), None, )], @@ -1918,21 +1605,7 @@ mod alonzo_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_300()), prot_magic: 764824073, block_slot: 58924928, network_id: 1, @@ -1955,7 +1628,7 @@ mod alonzo_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/alonzo3.address")), + String::from("612e137a27a74aca6caff726fb9da65c371ad2d7f1cc8645648fcc11d1"), Value::Coin(100107582), None, )], @@ -1968,27 +1641,13 @@ mod alonzo_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_300()), prot_magic: 764824073, block_slot: 6447035, network_id: 1, }; match validate(&metx, &utxos, &env) { - Ok(()) => panic!("Minting policy is not supported by the correponding native script"), + Ok(()) => panic!("Minting policy is not supported by a matching native script"), Err(err) => match err { Alonzo(AlonzoError::MintingLacksPolicy) => (), _ => panic!("Unexpected error ({:?})", err), @@ -2008,7 +1667,7 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (117325a52d60be3a1e4072af39d9e630bf61ce59d315d6c1bf4c4d140f8066ea, 0) - String::from(include_str!("../../test_data/alonzo2.0.address")), + String::from("714a59ebd93ea53d1bbf7f82232c7b012700a0cf4bb78d879dabb1a20a"), Value::Multiasset( 1724100, KeyValuePairs::from(Vec::from([( @@ -2033,42 +1692,42 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (d2f9764fa93ae5bcabbb65c7a2f97d1e31188064ae3d2ba1462114453928dd99, 0) - String::from(include_str!("../../test_data/alonzo2.1.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (9fab354c2825376a943e505d13a3861e4d9ad3e177028d7bb2bbabce5453fa11, 0) - String::from(include_str!("../../test_data/alonzo2.2.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (3077a999b1d22cb1a4e5ee485adbde6a4596704a96384fbc9727028b8b28ba47, 0) - String::from(include_str!("../../test_data/alonzo2.3.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (b231aca45a38add7378d2ed7a0822626fee3396821e8791a5af5926807db962d, 0) - String::from(include_str!("../../test_data/alonzo2.4.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (11579a841b3c7a64aa057c9adf993ef42520570450499b0a724c7ef706b2a435, 0) - String::from(include_str!("../../test_data/alonzo2.5.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(61233231), None, ), ( // (tx hash, tx output index): // (b857f98162b753d117464c499d53bbbfec5aa38b94bd624e295a7e3fddc77130, 0) - String::from(include_str!("../../test_data/alonzo2.6.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), @@ -2078,7 +1737,7 @@ mod alonzo_tests { &mtx.transaction_body, &mut utxos, &[( - String::from(include_str!("../../test_data/alonzo2.collateral.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(5000000), None, )], @@ -2091,21 +1750,7 @@ mod alonzo_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_300()), prot_magic: 764824073, block_slot: 58924928, network_id: 1, @@ -2131,7 +1776,7 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (117325a52d60be3a1e4072af39d9e630bf61ce59d315d6c1bf4c4d140f8066ea, 0) - String::from(include_str!("../../test_data/alonzo2.0.address")), + String::from("714a59ebd93ea53d1bbf7f82232c7b012700a0cf4bb78d879dabb1a20a"), Value::Multiasset( 1724100, KeyValuePairs::from(Vec::from([( @@ -2156,42 +1801,42 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (d2f9764fa93ae5bcabbb65c7a2f97d1e31188064ae3d2ba1462114453928dd99, 0) - String::from(include_str!("../../test_data/alonzo2.1.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (9fab354c2825376a943e505d13a3861e4d9ad3e177028d7bb2bbabce5453fa11, 0) - String::from(include_str!("../../test_data/alonzo2.2.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (3077a999b1d22cb1a4e5ee485adbde6a4596704a96384fbc9727028b8b28ba47, 0) - String::from(include_str!("../../test_data/alonzo2.3.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (b231aca45a38add7378d2ed7a0822626fee3396821e8791a5af5926807db962d, 0) - String::from(include_str!("../../test_data/alonzo2.4.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (11579a841b3c7a64aa057c9adf993ef42520570450499b0a724c7ef706b2a435, 0) - String::from(include_str!("../../test_data/alonzo2.5.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(61233231), None, ), ( // (tx hash, tx output index): // (b857f98162b753d117464c499d53bbbfec5aa38b94bd624e295a7e3fddc77130, 0) - String::from(include_str!("../../test_data/alonzo2.6.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), @@ -2201,7 +1846,7 @@ mod alonzo_tests { &mtx.transaction_body, &mut utxos, &[( - String::from(include_str!("../../test_data/alonzo2.collateral.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(5000000), None, )], @@ -2220,21 +1865,7 @@ mod alonzo_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_300()), prot_magic: 764824073, block_slot: 58924928, network_id: 1, @@ -2260,7 +1891,7 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (117325a52d60be3a1e4072af39d9e630bf61ce59d315d6c1bf4c4d140f8066ea, 0) - String::from(include_str!("../../test_data/alonzo2.0.address")), + String::from("714a59ebd93ea53d1bbf7f82232c7b012700a0cf4bb78d879dabb1a20a"), Value::Multiasset( 1724100, KeyValuePairs::from(Vec::from([( @@ -2285,42 +1916,42 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (d2f9764fa93ae5bcabbb65c7a2f97d1e31188064ae3d2ba1462114453928dd99, 0) - String::from(include_str!("../../test_data/alonzo2.1.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (9fab354c2825376a943e505d13a3861e4d9ad3e177028d7bb2bbabce5453fa11, 0) - String::from(include_str!("../../test_data/alonzo2.2.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (3077a999b1d22cb1a4e5ee485adbde6a4596704a96384fbc9727028b8b28ba47, 0) - String::from(include_str!("../../test_data/alonzo2.3.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (b231aca45a38add7378d2ed7a0822626fee3396821e8791a5af5926807db962d, 0) - String::from(include_str!("../../test_data/alonzo2.4.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (11579a841b3c7a64aa057c9adf993ef42520570450499b0a724c7ef706b2a435, 0) - String::from(include_str!("../../test_data/alonzo2.5.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(61233231), None, ), ( // (tx hash, tx output index): // (b857f98162b753d117464c499d53bbbfec5aa38b94bd624e295a7e3fddc77130, 0) - String::from(include_str!("../../test_data/alonzo2.6.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), @@ -2330,7 +1961,7 @@ mod alonzo_tests { &mtx.transaction_body, &mut utxos, &[( - String::from(include_str!("../../test_data/alonzo2.collateral.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(5000000), None, )], @@ -2350,21 +1981,7 @@ mod alonzo_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_300()), prot_magic: 764824073, block_slot: 58924928, network_id: 1, @@ -2390,7 +2007,7 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (117325a52d60be3a1e4072af39d9e630bf61ce59d315d6c1bf4c4d140f8066ea, 0) - String::from(include_str!("../../test_data/alonzo2.0.address")), + String::from("714a59ebd93ea53d1bbf7f82232c7b012700a0cf4bb78d879dabb1a20a"), Value::Multiasset( 1724100, KeyValuePairs::from(Vec::from([( @@ -2415,42 +2032,42 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (d2f9764fa93ae5bcabbb65c7a2f97d1e31188064ae3d2ba1462114453928dd99, 0) - String::from(include_str!("../../test_data/alonzo2.1.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (9fab354c2825376a943e505d13a3861e4d9ad3e177028d7bb2bbabce5453fa11, 0) - String::from(include_str!("../../test_data/alonzo2.2.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (3077a999b1d22cb1a4e5ee485adbde6a4596704a96384fbc9727028b8b28ba47, 0) - String::from(include_str!("../../test_data/alonzo2.3.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (b231aca45a38add7378d2ed7a0822626fee3396821e8791a5af5926807db962d, 0) - String::from(include_str!("../../test_data/alonzo2.4.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (11579a841b3c7a64aa057c9adf993ef42520570450499b0a724c7ef706b2a435, 0) - String::from(include_str!("../../test_data/alonzo2.5.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(61233231), None, ), ( // (tx hash, tx output index): // (b857f98162b753d117464c499d53bbbfec5aa38b94bd624e295a7e3fddc77130, 0) - String::from(include_str!("../../test_data/alonzo2.6.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), @@ -2460,7 +2077,7 @@ mod alonzo_tests { &mtx.transaction_body, &mut utxos, &[( - String::from(include_str!("../../test_data/alonzo2.collateral.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(5000000), None, )], @@ -2473,27 +2090,13 @@ mod alonzo_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_300()), prot_magic: 764824073, block_slot: 58924928, network_id: 1, }; match validate(&metx, &utxos, &env) { - Ok(()) => panic!("Unneeded redeemer"), + Ok(()) => panic!("Redeemer missing"), Err(err) => match err { Alonzo(AlonzoError::RedeemerMissing) => (), _ => panic!("Unexpected error ({:?})", err), @@ -2512,27 +2115,13 @@ mod alonzo_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/alonzo4.address")), + String::from("01f64b141bfa7761c00a48a137b15d433af02c9275dbf52ea95566b59cb4f05ecc9fd8c9066ef7fd907db854c76caf6462b132ce133dc7cc44"), Value::Coin(3224834468), None, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_300()), prot_magic: 764824073, block_slot: 6447038, network_id: 1, @@ -2556,27 +2145,15 @@ mod alonzo_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/alonzo1.address")), + String::from("018c9ae79bca586ac36dcfdbbf4d2826c685a6969411c338c14973cc7f7bdb37706cd03711fe64747f8cfcfd574c7445cc0378781e77a8cc00"), Value::Coin(1549646822), None, )], ); + let mut alonzo_prot_params: AlonzoProtParams = mk_params_epoch_334(); + alonzo_prot_params.ada_per_utxo_byte = 10000000; // This was 34482 during Alonzo on mainnet. let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 10000000, // This was 34482 during Alonzo on mainnet. - }), + prot_params: MultiEraProtocolParameters::Alonzo(alonzo_prot_params), prot_magic: 764824073, block_slot: 44237276, network_id: 1, @@ -2600,27 +2177,15 @@ mod alonzo_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/alonzo1.address")), + String::from("018c9ae79bca586ac36dcfdbbf4d2826c685a6969411c338c14973cc7f7bdb37706cd03711fe64747f8cfcfd574c7445cc0378781e77a8cc00"), Value::Coin(1549646822), None, )], ); + let mut alonzo_prot_params: AlonzoProtParams = mk_params_epoch_334(); + alonzo_prot_params.max_value_size = 0; // This was 5000 during Alonzo on mainnet let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 0, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(alonzo_prot_params), prot_magic: 764824073, block_slot: 44237276, network_id: 1, @@ -2648,7 +2213,7 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (117325a52d60be3a1e4072af39d9e630bf61ce59d315d6c1bf4c4d140f8066ea, 0) - String::from(include_str!("../../test_data/alonzo2.0.address")), + String::from("714a59ebd93ea53d1bbf7f82232c7b012700a0cf4bb78d879dabb1a20a"), Value::Multiasset( 1724100, KeyValuePairs::from(Vec::from([( @@ -2673,42 +2238,42 @@ mod alonzo_tests { ( // (tx hash, tx output index): // (d2f9764fa93ae5bcabbb65c7a2f97d1e31188064ae3d2ba1462114453928dd99, 0) - String::from(include_str!("../../test_data/alonzo2.1.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (9fab354c2825376a943e505d13a3861e4d9ad3e177028d7bb2bbabce5453fa11, 0) - String::from(include_str!("../../test_data/alonzo2.2.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), ( // (tx hash, tx output index): // (3077a999b1d22cb1a4e5ee485adbde6a4596704a96384fbc9727028b8b28ba47, 0) - String::from(include_str!("../../test_data/alonzo2.3.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (b231aca45a38add7378d2ed7a0822626fee3396821e8791a5af5926807db962d, 0) - String::from(include_str!("../../test_data/alonzo2.4.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(29792207), None, ), ( // (tx hash, tx output index): // (11579a841b3c7a64aa057c9adf993ef42520570450499b0a724c7ef706b2a435, 0) - String::from(include_str!("../../test_data/alonzo2.5.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(61233231), None, ), ( // (tx hash, tx output index): // (b857f98162b753d117464c499d53bbbfec5aa38b94bd624e295a7e3fddc77130, 0) - String::from(include_str!("../../test_data/alonzo2.6.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(20292207), None, ), @@ -2718,7 +2283,7 @@ mod alonzo_tests { &mtx.transaction_body, &mut utxos, &[( - String::from(include_str!("../../test_data/alonzo2.collateral.address")), + String::from("01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da"), Value::Coin(5000000), None, )], @@ -2733,21 +2298,7 @@ mod alonzo_tests { Decode::decode(&mut Decoder::new(tx_witness_set_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Alonzo); let env: Environment = Environment { - prot_params: MultiEraProtParams::Alonzo(AlonzoProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 50000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 10000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 34482, - }), + prot_params: MultiEraProtocolParameters::Alonzo(mk_params_epoch_300()), prot_magic: 764824073, block_slot: 58924928, network_id: 1, @@ -2760,4 +2311,154 @@ mod alonzo_tests { }, } } + + fn mk_params_epoch_334() -> AlonzoProtParams { + AlonzoProtParams { + minfee_a: 44, + minfee_b: 155381, + max_block_body_size: 65536, + max_transaction_size: 16384, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 500, + pool_pledge_influence: RationalNumber { + numerator: 3, + denominator: 10, + }, + expansion_rate: RationalNumber { + numerator: 3, + denominator: 1000, + }, + treasury_growth_rate: RationalNumber { + numerator: 2, + denominator: 10, + }, + decentralization_constant: RationalNumber { + numerator: 0, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (6, 0), + min_pool_cost: 340000000, + ada_per_utxo_byte: 34482, + cost_models_for_script_languages: KeyValuePairs::::from(vec![( + Language::PlutusV1, + vec![ + 197209, 0, 1, 1, 396231, 621, 0, 1, 150000, 1000, 0, 1, 150000, 32, 2477736, + 29175, 4, 29773, 100, 29773, 100, 29773, 100, 29773, 100, 29773, 100, 29773, + 100, 100, 100, 29773, 100, 150000, 32, 150000, 32, 150000, 32, 150000, 1000, 0, + 1, 150000, 32, 150000, 1000, 0, 8, 148000, 425507, 118, 0, 1, 1, 150000, 1000, + 0, 8, 150000, 112536, 247, 1, 150000, 10000, 1, 136542, 1326, 1, 1000, 150000, + 1000, 1, 150000, 32, 150000, 32, 150000, 32, 1, 1, 150000, 1, 150000, 4, + 103599, 248, 1, 103599, 248, 1, 145276, 1366, 1, 179690, 497, 1, 150000, 32, + 150000, 32, 150000, 32, 150000, 32, 150000, 32, 150000, 32, 148000, 425507, + 118, 0, 1, 1, 61516, 11218, 0, 1, 150000, 32, 148000, 425507, 118, 0, 1, 1, + 148000, 425507, 118, 0, 1, 1, 2477736, 29175, 4, 0, 82363, 4, 150000, 5000, 0, + 1, 150000, 32, 197209, 0, 1, 1, 150000, 32, 150000, 32, 150000, 32, 150000, 32, + 150000, 32, 150000, 32, 150000, 32, 3345831, 1, 1, + ], + )]), + execution_costs: ExUnitPrices { + mem_price: RationalNumber { + numerator: 577, + denominator: 10000, + }, + step_price: RationalNumber { + numerator: 721, + denominator: 10000000, + }, + }, + max_tx_ex_units: ExUnits { + mem: 10000000, + steps: 10000000000, + }, + max_block_ex_units: ExUnits { + mem: 50000000, + steps: 40000000000, + }, + max_value_size: 5000, + collateral_percentage: 150, + max_collateral_inputs: 3, + } + } + + fn mk_params_epoch_300() -> AlonzoProtParams { + AlonzoProtParams { + minfee_a: 44, + minfee_b: 155381, + max_block_body_size: 81920, + max_transaction_size: 16384, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 500, + pool_pledge_influence: RationalNumber { + numerator: 3, + denominator: 10, + }, + expansion_rate: RationalNumber { + numerator: 3, + denominator: 1000, + }, + treasury_growth_rate: RationalNumber { + numerator: 2, + denominator: 10, + }, + decentralization_constant: RationalNumber { + numerator: 0, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (6, 0), + min_pool_cost: 340000000, + ada_per_utxo_byte: 34482, + cost_models_for_script_languages: KeyValuePairs::::from(vec![( + Language::PlutusV1, + vec![ + 197209, 0, 1, 1, 396231, 621, 0, 1, 150000, 1000, 0, 1, 150000, 32, 2477736, + 29175, 4, 29773, 100, 29773, 100, 29773, 100, 29773, 100, 29773, 100, 29773, + 100, 100, 100, 29773, 100, 150000, 32, 150000, 32, 150000, 32, 150000, 1000, 0, + 1, 150000, 32, 150000, 1000, 0, 8, 148000, 425507, 118, 0, 1, 1, 150000, 1000, + 0, 8, 150000, 112536, 247, 1, 150000, 10000, 1, 136542, 1326, 1, 1000, 150000, + 1000, 1, 150000, 32, 150000, 32, 150000, 32, 1, 1, 150000, 1, 150000, 4, + 103599, 248, 1, 103599, 248, 1, 145276, 1366, 1, 179690, 497, 1, 150000, 32, + 150000, 32, 150000, 32, 150000, 32, 150000, 32, 150000, 32, 148000, 425507, + 118, 0, 1, 1, 61516, 11218, 0, 1, 150000, 32, 148000, 425507, 118, 0, 1, 1, + 148000, 425507, 118, 0, 1, 1, 2477736, 29175, 4, 0, 82363, 4, 150000, 5000, 0, + 1, 150000, 32, 197209, 0, 1, 1, 150000, 32, 150000, 32, 150000, 32, 150000, 32, + 150000, 32, 150000, 32, 150000, 32, 3345831, 1, 1, + ], + )]), + execution_costs: ExUnitPrices { + mem_price: RationalNumber { + numerator: 577, + denominator: 10000, + }, + step_price: RationalNumber { + numerator: 721, + denominator: 10000000, + }, + }, + max_tx_ex_units: ExUnits { + mem: 14000000, + steps: 10000000000, + }, + max_block_ex_units: ExUnits { + mem: 62000000, + steps: 40000000000, + }, + max_value_size: 5000, + collateral_percentage: 150, + max_collateral_inputs: 3, + } + } } diff --git a/pallas-applying/tests/babbage.rs b/pallas-applying/tests/babbage.rs index 3c7da96..6acc31a 100644 --- a/pallas-applying/tests/babbage.rs +++ b/pallas-applying/tests/babbage.rs @@ -5,7 +5,7 @@ use hex; use pallas_addresses::{Address, Network, ShelleyAddress, ShelleyPaymentPart}; use pallas_applying::{ utils::{ - BabbageError, BabbageProtParams, Environment, FeePolicy, MultiEraProtParams, + BabbageError, BabbageProtParams, Environment, MultiEraProtocolParameters, ValidationError::*, }, validate, UTxOs, @@ -19,10 +19,10 @@ use pallas_codec::{ utils::Nullable, }; use pallas_primitives::babbage::{ - ExUnits, MintedDatumOption, MintedPostAlonzoTransactionOutput, MintedScriptRef, - MintedTransactionBody, MintedTransactionOutput, MintedTx, MintedWitnessSet, NetworkId, - PlutusData, PlutusV2Script, PseudoDatumOption, PseudoScript, PseudoTransactionOutput, Redeemer, - RedeemerTag, Value, + CostMdls, ExUnitPrices, ExUnits, MintedDatumOption, MintedPostAlonzoTransactionOutput, + MintedScriptRef, MintedTransactionBody, MintedTransactionOutput, MintedTx, MintedWitnessSet, + NetworkId, Nonce, NonceVariant, PlutusData, PlutusV2Script, PseudoDatumOption, PseudoScript, + PseudoTransactionOutput, RationalNumber, Redeemer, RedeemerTag, Value, }; use pallas_traverse::{MultiEraInput, MultiEraOutput, MultiEraTx}; use std::borrow::Cow; @@ -44,28 +44,14 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage3.address")), + String::from("011be1f490912af2fc39f8e3637a2bade2ecbebefe63e8bfef10989cd6f593309a155b0ebb45ff830747e61f98e5b77feaf7529ce9df351382"), Value::Coin(103324335), None, None, )]; let utxos: UTxOs = mk_utxo_for_babbage_tx(&mtx.transaction_body, tx_outs_info); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -90,7 +76,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage4.0.address")), + String::from("11a55f409501bf65805bb0dc76f6f9ae90b61e19ed870bc0025681360881728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d"), Value::Coin(25000000), Some(PseudoDatumOption::Hash( hex::decode("3e8c4b1d396bb8132e5097f5a2f012d97900cbc496a3745db4226cea4cb66465") @@ -101,7 +87,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage4.1.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Multiasset( 1795660, KeyValuePairs::from(Vec::from([( @@ -128,28 +114,14 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage4.collateral.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Coin(5000000), None, None, )]; add_collateral_babbage(&mtx.transaction_body, &mut utxos, collateral_info); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72317003, network_id: 1, @@ -174,7 +146,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage7.0.address")), + String::from("119068A7A3F008803EDAC87AF1619860F2CDCDE40C26987325ACE138AD81728E7ED4CF324E1323135E7E6D931F01E30792D9CDF17129CB806D"), Value::Multiasset( 1318860, KeyValuePairs::from(Vec::from([( @@ -196,7 +168,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage7.1.address")), + String::from("01A7D37F1D43D1197A994D95B3CE15D9AF3B4697CC7CDF9BCD1F81688D3499AC08066B36BC6C2D86A21243B940E84DBE5CAC3FAB5F76AB9229"), Value::Coin(231630402), None, None, @@ -209,7 +181,7 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage7.collateral.address")), + String::from("01a7d37f1d43d1197a994d95b3ce15d9af3b4697cc7cdf9bcd1f81688d3499ac08066b36bc6c2d86a21243b940e84dbe5cac3fab5f76ab9229"), Value::Coin(5000000), None, None, @@ -221,28 +193,14 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage7.reference.address")), + String::from("119068a7a3f008803edac87af1619860f2cdcde40c26987325ace138ad81728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d"), Value::Coin(40000000), None, Some(CborWrap(PseudoScript::PlutusV2Script(PlutusV2Script(Bytes::from(hex::decode("5909fe010000323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232222323232533535533357346064606a0062646464642466002008004a666ae68c0d8c0e00044c848c004008c078d5d0981b8008191baa357426ae88c0d80154ccd5cd1819981b0008991919191919191919191919191919191919191919190919999999999980080b80a8098088078068058048038028018011aba135744004666068eb88004d5d08009aba2002357420026ae88008cc0c9d71aba1001357440046ae84004d5d10011aba1001357440046ae84004d5d10011aba1001357440046ae84004d5d10011981300f1aba1001357440046ae84004d5d1181b001198111192999ab9a30353038001132321233001003002301d357426ae88c0e0008c078d5d0981b8008191baa00135742606a0020606ea8d5d0981a001817911a8011111111111111a80691919299aa99a998149aa99a80109815a481035054380022100203d00303903a03a1533501213302549101350033302330340362350012232333027303803a235001223500122533533302b0440040062153353333026303e040223500222533500321533533303104a0030062153353302b0010031303f3305722533500104c221350022253353305100200a100313304d33047002001300600300215335330370010031303f333302d04b0043370200200600409209008e60720020044266060920102313000333573466e20ccd54c0fc104c0a8cc0f1c024000400266aa608008246a00209600200809208e266ae712410231310004813357389201023132000470023335530360393501b0403501b04233355303603922533535002222253353302200800413038003042213303d001002100103f010333301c303403622350022253353303c00b002100313333020303803a235001222533533302a0210030012133330260220043355303e03f235001223303d002333500120012235002223500322330433370000800466aa608e09046a002446608c004666a0024002e008004ccc0c013400c0048004ccc09c11000c0040084cccc09408400c00800400c0040f140044cc0952410134003330233034036235001223303b00a0025001153353355303403523500122350012222302c533350021303104821001213304e2253350011303404a221350022253353304800200710011300600300c0011302a49010136002213355303603723500122350012222302e533350021303304a2100121330502253350011303604c221350022253353304a00200710011300600300e0033335530310342253353353530283500203f03d203f253353303c001330482253350011302e044221350022253353303000200a135302f001223350022303504b20011300600301003b1302c4901013300133037002001100103a00d1120011533573892010350543500165333573460640020502a666ae68c0c400409c0b8c0ccdd50019baa00133019223355301f020235001223301e002335530220232350012233021002333500137009000380233700002900000099aa980f81011a800911980f001199a800919aa981181211a8009119811001180880080091199806815001000919aa981181211a80091198110011809000800999804012801000812111919807198021a8018139a801013a99a9a80181490a99a8011099a801119a80111980400100091101711119a80210171112999ab9a3370e00c0062a666ae68cdc38028010998068020008158158120a99a80090120121a8008141119a801119a8011198128010009014119a801101411981280100091199ab9a3370e00400204604a44446666aa00866032444600660040024002006002004444466aa603803a46a0024466036004666a0024002052400266600a0080026603c66030006004046444666aa603003603866aa603403646a00244660320046010002666aa6030036446a00444a66a666aa603a03e60106603444a66a00404a200204e46a002446601400400a00c200626604000800604200266aa603403646a00244660320046605e44a66a002260160064426a00444a66a6601800401022444660040140082600c00600800446602644666a0060420040026a00204242444600600842444600200844604e44a66a0020364426a00444a66a6601000400e2602a0022600c0064466aa0046602000603600244a66a004200202e44a66a00202e266ae7000806c8c94ccd5cd180f9811000899190919800801801198079192999ab9a3022302500113232123300100300233301075c464a666ae68c094c0a00044c8cc0514cd4cc028005200110011300e4901022d330033301375c464a66a660180029000080089808249022d3200375a0026ae84d5d118140011bad35742604e0020446ea8004d5d09aba23025002300c35742604800203e6ea8004d5d09aba23022002375c6ae84c084004070dd500091199ab9a3371200400203202e46a002444400844a666ae68cdc79a80100b1a80080b0999ab9a3370e6a0040306a00203002a02e024464a666ae68c06cc0780044c8c8c8c8c8c8c8c848cccc00402401c00c008d5d09aba20045333573466e1d2004001132122230020043574260460042a666ae68c0880044c84888c004010dd71aba1302300215333573460420022244400603c60460026ea8d5d08009aba200233300a75c66014eb9d69aba100135744603c004600a6ae84c074004060dd50009299ab9c001162325333573460326038002264646424660020060046eb4d5d09aba2301d003533357346034603a00226eb8d5d0980e00080b9baa35742603600202c6ea80048c94ccd5cd180c180d80089919191909198008028012999ab9a301b00113232300953335734603c00226464646424466600200c0080066eb4d5d09aba2002375a6ae84004d5d118100019bad35742603e0042a666ae68c0740044c8488c00800cc020d5d0980f80100d180f8009baa35742603a0042a666ae68c070004044060c074004dd51aba135744603600460066ae84c068004054dd5000919192999ab9a30190011321223001003375c6ae84c06800854ccd5cd180c00089909118010019bae35742603400402a60340026ea80048488c00800c888cc06888cccd55cf800900911919807198041803980e8009803180e00098021aba2003357420040166eac0048848cc00400c00888cc05c88cccd55cf800900791980518029aba10023003357440040106eb0004c05088448894cd40044008884cc014008ccd54c01c028014010004c04c88448894cd40044d400c040884ccd4014040c010008ccd54c01c024014010004c0488844894cd4004024884cc020c010008cd54c01801c0100044800488488cc00401000cc03c8894cd40080108854cd4cc02000800c01c4cc01400400c4014400888ccd5cd19b8f0020010030051001220021001220011533573892010350543100164901022d31004901013700370e90001b874800955cf2ab9d2323001001223300330020020011").unwrap()))))), )]; add_ref_input_babbage(&mtx.transaction_body, &mut utxos, ref_input_info); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_380()), prot_magic: 764824073, block_slot: 78797255, network_id: 1, @@ -314,21 +272,7 @@ mod babbage_tests { )]; add_collateral_babbage(&mtx.transaction_body, &mut utxos, collateral_info); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_preview_params_epoch_30()), prot_magic: 2, block_slot: 2592005, network_id: 0, @@ -405,21 +349,7 @@ mod babbage_tests { )]; add_collateral_babbage(&mtx.transaction_body, &mut utxos, collateral_info); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_preprod_params_epoch_100()), prot_magic: 1, block_slot: 41558438, network_id: 0, @@ -444,7 +374,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage5.0.address")), + String::from("719b85d5e8611945505f078aeededcbed1d6ca11053f61e3f9d999fe44"), Value::Multiasset( 2034438, KeyValuePairs::from(Vec::from([ @@ -483,7 +413,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage5.1.address")), + String::from("0121316dbc84420a5ee7461438483564c41fae876029319b3ee641fe4422339411d2df4c9c7c50b3d8f88db98d475e9d1bccd4244b412fbe5e"), Value::Multiasset( 197714998, KeyValuePairs::from(Vec::from([( @@ -510,28 +440,14 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage5.collateral.address")), + String::from("0121316dbc84420a5ee7461438483564c41fae876029319b3ee641fe4422339411d2df4c9c7c50b3d8f88db98d475e9d1bccd4244b412fbe5e"), Value::Coin(5000000), None, None, )]; add_collateral_babbage(&mtx.transaction_body, &mut utxos, collateral_info); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -556,7 +472,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage6.0.address")), + String::from("11A55F409501BF65805BB0DC76F6F9AE90B61E19ED870BC0025681360881728E7ED4CF324E1323135E7E6D931F01E30792D9CDF17129CB806D"), Value::Multiasset( 1689618, KeyValuePairs::from(Vec::from([( @@ -578,7 +494,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage6.1.address")), + String::from("01EDA33318624ADE03D53B7E954713D9E69440891F0D02E823267B610D6018DC6C7989A46EC26822425A3D2BAC60EEC2682A022740361ED957"), Value::Coin(5000000), None, None, @@ -591,28 +507,14 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage6.collateral.address")), + String::from("01eda33318624ade03d53b7e954713d9e69440891f0d02e823267b610d6018dc6c7989a46ec26822425a3d2bac60eec2682a022740361ed957"), Value::Coin(5000000), None, None, )]; add_collateral_babbage(&mtx.transaction_body, &mut utxos, collateral_info); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -634,7 +536,7 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage3.address")), + String::from("011be1f490912af2fc39f8e3637a2bade2ecbebefe63e8bfef10989cd6f593309a155b0ebb45ff830747e61f98e5b77feaf7529ce9df351382"), Value::Coin(103324335), None, None, @@ -648,21 +550,7 @@ mod babbage_tests { Decode::decode(&mut Decoder::new(&tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_babbage(&mtx); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -685,21 +573,7 @@ mod babbage_tests { let metx: MultiEraTx = MultiEraTx::from_babbage(&mtx); let utxos: UTxOs = UTxOs::new(); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -725,7 +599,7 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage3.address")), + String::from("011be1f490912af2fc39f8e3637a2bade2ecbebefe63e8bfef10989cd6f593309a155b0ebb45ff830747e61f98e5b77feaf7529ce9df351382"), Value::Coin(103324335), None, None, @@ -739,21 +613,7 @@ mod babbage_tests { Decode::decode(&mut Decoder::new(&tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_babbage(&mtx); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -782,7 +642,7 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage3.address")), + String::from("011be1f490912af2fc39f8e3637a2bade2ecbebefe63e8bfef10989cd6f593309a155b0ebb45ff830747e61f98e5b77feaf7529ce9df351382"), Value::Coin(103324335), None, None, @@ -796,21 +656,7 @@ mod babbage_tests { Decode::decode(&mut Decoder::new(&tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_babbage(&mtx); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -840,28 +686,16 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage3.address")), + String::from("011be1f490912af2fc39f8e3637a2bade2ecbebefe63e8bfef10989cd6f593309a155b0ebb45ff830747e61f98e5b77feaf7529ce9df351382"), Value::Coin(103324335), None, None, )]; let utxos: UTxOs = mk_utxo_for_babbage_tx(&mtx.transaction_body, tx_outs_info); + let mut babbage_prot_params: BabbageProtParams = mk_mainnet_params_epoch_365(); + babbage_prot_params.minfee_a = 76; // This value was 44 during Babbage on mainnet. let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 76, // This value was 44 during Babbage on mainnet. - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(babbage_prot_params), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -888,7 +722,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage4.0.address")), + String::from("11a55f409501bf65805bb0dc76f6f9ae90b61e19ed870bc0025681360881728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d"), Value::Coin(25000000), Some(PseudoDatumOption::Hash( hex::decode("3E8C4B1D396BB8132E5097F5A2F012D97900CBC496A3745DB4226CEA4CB66465") @@ -899,7 +733,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage4.1.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Multiasset( 1795660, KeyValuePairs::from(Vec::from([( @@ -926,7 +760,7 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage4.collateral.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Coin(5000000), None, None, @@ -940,21 +774,7 @@ mod babbage_tests { Decode::decode(&mut Decoder::new(&tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_babbage(&mtx); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -983,7 +803,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage4.0.address")), + String::from("11a55f409501bf65805bb0dc76f6f9ae90b61e19ed870bc0025681360881728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d"), Value::Coin(25000000), Some(PseudoDatumOption::Hash( hex::decode("3E8C4B1D396BB8132E5097F5A2F012D97900CBC496A3745DB4226CEA4CB66465") @@ -994,7 +814,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage4.1.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Multiasset( 1795660, KeyValuePairs::from(Vec::from([( @@ -1021,28 +841,16 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage4.collateral.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Coin(5000000), None, None, )]; add_collateral_babbage(&mtx.transaction_body, &mut utxos, collateral_info); + let mut babbage_prot_params: BabbageProtParams = mk_mainnet_params_epoch_365(); + babbage_prot_params.max_collateral_inputs = 0; // This value was 3 during Babbage on mainnet let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 0, // no collateral inputs are allowed - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(babbage_prot_params), prot_magic: 764824073, block_slot: 72317003, network_id: 1, @@ -1069,7 +877,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage4.0.address")), + String::from("11a55f409501bf65805bb0dc76f6f9ae90b61e19ed870bc0025681360881728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d"), Value::Coin(25000000), Some(PseudoDatumOption::Hash( hex::decode("3E8C4B1D396BB8132E5097F5A2F012D97900CBC496A3745DB4226CEA4CB66465") @@ -1080,7 +888,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage4.1.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Multiasset( 1795660, KeyValuePairs::from(Vec::from([( @@ -1101,9 +909,7 @@ mod babbage_tests { ), ]; let mut utxos: UTxOs = mk_utxo_for_babbage_tx(&mtx.transaction_body, tx_outs_info); - let old_address: Address = match hex::decode(String::from(include_str!( - "../../test_data/babbage4.collateral.address" - ))) { + let old_address: Address = match hex::decode(String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd")) { Ok(bytes_vec) => Address::from_bytes(bytes_vec.as_slice()).unwrap(), _ => panic!("Unable to parse collateral input address"), }; @@ -1136,21 +942,7 @@ mod babbage_tests { utxos.insert(multi_era_in, multi_era_out); let metx: MultiEraTx = MultiEraTx::from_babbage(&mtx); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -1179,7 +971,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage4.0.address")), + String::from("11a55f409501bf65805bb0dc76f6f9ae90b61e19ed870bc0025681360881728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d"), Value::Coin(25000000), Some(PseudoDatumOption::Hash( hex::decode("3E8C4B1D396BB8132E5097F5A2F012D97900CBC496A3745DB4226CEA4CB66465") @@ -1190,7 +982,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage4.1.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Multiasset( 1795660, KeyValuePairs::from(Vec::from([( @@ -1217,7 +1009,7 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage4.collateral.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Multiasset( 5000000, KeyValuePairs::from(Vec::from([( @@ -1235,21 +1027,7 @@ mod babbage_tests { )]; add_collateral_babbage(&mtx.transaction_body, &mut utxos, collateral_info); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72317003, network_id: 1, @@ -1277,7 +1055,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage4.0.address")), + String::from("11a55f409501bf65805bb0dc76f6f9ae90b61e19ed870bc0025681360881728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d"), Value::Coin(25000000), Some(PseudoDatumOption::Hash( hex::decode("3E8C4B1D396BB8132E5097F5A2F012D97900CBC496A3745DB4226CEA4CB66465") @@ -1288,7 +1066,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage4.1.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Multiasset( 1795660, KeyValuePairs::from(Vec::from([( @@ -1315,28 +1093,17 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage4.collateral.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Coin(5000000), None, None, )]; add_collateral_babbage(&mtx.transaction_body, &mut utxos, collateral_info); + let mut babbage_prot_params: BabbageProtParams = mk_mainnet_params_epoch_365(); + babbage_prot_params.collateral_percentage = 728; // This value was 150 during Babbage on + // mainnet. let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 728, // This value was 150 during Babbage on mainnet. - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(babbage_prot_params), prot_magic: 764824073, block_slot: 72317003, network_id: 1, @@ -1366,7 +1133,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage4.0.address")), + String::from("11a55f409501bf65805bb0dc76f6f9ae90b61e19ed870bc0025681360881728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d"), Value::Coin(25000000), Some(PseudoDatumOption::Hash( hex::decode("3E8C4B1D396BB8132E5097F5A2F012D97900CBC496A3745DB4226CEA4CB66465") @@ -1377,7 +1144,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage4.1.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Multiasset( 1795660, KeyValuePairs::from(Vec::from([( @@ -1404,7 +1171,7 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage4.collateral.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Coin(5000000), None, None, @@ -1418,21 +1185,7 @@ mod babbage_tests { Decode::decode(&mut Decoder::new(&tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_babbage(&mtx); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72317003, network_id: 1, @@ -1458,7 +1211,7 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage3.address")), + String::from("011be1f490912af2fc39f8e3637a2bade2ecbebefe63e8bfef10989cd6f593309a155b0ebb45ff830747e61f98e5b77feaf7529ce9df351382"), Value::Coin(103324335), None, None, @@ -1472,21 +1225,7 @@ mod babbage_tests { Decode::decode(&mut Decoder::new(&tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_babbage(&mtx); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -1513,28 +1252,16 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage3.address")), + String::from("011be1f490912af2fc39f8e3637a2bade2ecbebefe63e8bfef10989cd6f593309a155b0ebb45ff830747e61f98e5b77feaf7529ce9df351382"), Value::Coin(103324335), None, None, )]; let utxos: UTxOs = mk_utxo_for_babbage_tx(&mtx.transaction_body, tx_outs_info); + let mut babbage_prot_params: BabbageProtParams = mk_mainnet_params_epoch_365(); + babbage_prot_params.ada_per_utxo_byte = 10000000; // This was 4310 during Alonzo on mainnet. let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 10000000, // This was 4310 during Alonzo on mainnet. - }), + prot_params: MultiEraProtocolParameters::Babbage(babbage_prot_params), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -1561,28 +1288,16 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage3.address")), + String::from("011be1f490912af2fc39f8e3637a2bade2ecbebefe63e8bfef10989cd6f593309a155b0ebb45ff830747e61f98e5b77feaf7529ce9df351382"), Value::Coin(103324335), None, None, )]; let utxos: UTxOs = mk_utxo_for_babbage_tx(&mtx.transaction_body, tx_outs_info); + let mut babbage_prot_params: BabbageProtParams = mk_mainnet_params_epoch_365(); + babbage_prot_params.max_value_size = 0; // This value was 5000 during Babbage on mainnet. let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 0, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(babbage_prot_params), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -1608,7 +1323,7 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage3.address")), + String::from("011be1f490912af2fc39f8e3637a2bade2ecbebefe63e8bfef10989cd6f593309a155b0ebb45ff830747e61f98e5b77feaf7529ce9df351382"), Value::Coin(103324335), None, None, @@ -1650,21 +1365,7 @@ mod babbage_tests { Decode::decode(&mut Decoder::new(&tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_babbage(&mtx); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -1693,7 +1394,7 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage3.address")), + String::from("011be1f490912af2fc39f8e3637a2bade2ecbebefe63e8bfef10989cd6f593309a155b0ebb45ff830747e61f98e5b77feaf7529ce9df351382"), Value::Coin(103324335), None, None, @@ -1709,21 +1410,7 @@ mod babbage_tests { Decode::decode(&mut Decoder::new(&tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_babbage(&mtx); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -1755,7 +1442,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage4.0.address")), + String::from("11a55f409501bf65805bb0dc76f6f9ae90b61e19ed870bc0025681360881728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d"), Value::Coin(25000000), Some(PseudoDatumOption::Hash( hex::decode("3E8C4B1D396BB8132E5097F5A2F012D97900CBC496A3745DB4226CEA4CB66465") @@ -1766,7 +1453,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage4.1.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Multiasset( 1795660, KeyValuePairs::from(Vec::from([( @@ -1793,28 +1480,17 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage4.collateral.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Coin(5000000), None, None, )]; add_collateral_babbage(&mtx.transaction_body, &mut utxos, collateral_info); + let mut babbage_prot_params: BabbageProtParams = mk_mainnet_params_epoch_365(); + babbage_prot_params.max_tx_ex_units.mem = 3678343; // 1 lower than that of the transaction + babbage_prot_params.max_tx_ex_units.steps = 1304942838; // 1 lower than that of the transaction let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 3678343, // 1 lower than that of the transaction - max_tx_ex_steps: 1304942838, // 1 lower than that of the transaction - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(babbage_prot_params), prot_magic: 764824073, block_slot: 72317003, network_id: 1, @@ -1842,28 +1518,16 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage3.address")), + String::from("011be1f490912af2fc39f8e3637a2bade2ecbebefe63e8bfef10989cd6f593309a155b0ebb45ff830747e61f98e5b77feaf7529ce9df351382"), Value::Coin(103324335), None, None, )]; let utxos: UTxOs = mk_utxo_for_babbage_tx(&mtx.transaction_body, tx_outs_info); + let mut babbage_prot_params: BabbageProtParams = mk_mainnet_params_epoch_365(); + babbage_prot_params.max_transaction_size = 154; // 1 less than the size of the transaction. let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 154, // 1 less than the size of the transaction. - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(babbage_prot_params), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -1893,7 +1557,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage5.0.address")), + String::from("719b85d5e8611945505f078aeededcbed1d6ca11053f61e3f9d999fe44"), Value::Multiasset( 2034438, KeyValuePairs::from(Vec::from([ @@ -1932,7 +1596,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage5.1.address")), + String::from("0121316dbc84420a5ee7461438483564c41fae876029319b3ee641fe4422339411d2df4c9c7c50b3d8f88db98d475e9d1bccd4244b412fbe5e"), Value::Multiasset( 197714998, KeyValuePairs::from(Vec::from([( @@ -1959,7 +1623,7 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage5.collateral.address")), + String::from("0121316dbc84420a5ee7461438483564c41fae876029319b3ee641fe4422339411d2df4c9c7c50b3d8f88db98d475e9d1bccd4244b412fbe5e"), Value::Coin(5000000), None, None, @@ -1973,21 +1637,7 @@ mod babbage_tests { Decode::decode(&mut Decoder::new(&tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_babbage(&mtx); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -2019,7 +1669,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage6.0.address")), + String::from("11A55F409501BF65805BB0DC76F6F9AE90B61E19ED870BC0025681360881728E7ED4CF324E1323135E7E6D931F01E30792D9CDF17129CB806D"), Value::Multiasset( 1689618, KeyValuePairs::from(Vec::from([( @@ -2041,7 +1691,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage6.1.address")), + String::from("01EDA33318624ADE03D53B7E954713D9E69440891F0D02E823267B610D6018DC6C7989A46EC26822425A3D2BAC60EEC2682A022740361ED957"), Value::Coin(5000000), None, None, @@ -2054,28 +1704,14 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage6.collateral.address")), + String::from("01eda33318624ade03d53b7e954713d9e69440891f0d02e823267b610d6018dc6c7989a46ec26822425a3d2bac60eec2682a022740361ed957"), Value::Coin(5000000), None, None, )]; add_collateral_babbage(&mtx.transaction_body, &mut utxos, collateral_info); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72316896, network_id: 1, @@ -2090,8 +1726,9 @@ mod babbage_tests { } #[test] - // Same as sucessful_mainnet_tx_with_plutus_v1_script, except that the script - // hash in the script UTxO cannot be matched to a script in the witness set. + // Same as successful_mainnet_tx_with_plutus_v1_script, except that the script + // hash in the script UTxO input cannot be matched to a script in the witness + // set. fn script_input_lacks_script() { let cbor_bytes: Vec = cbor_to_bytes(include_str!("../../test_data/babbage4.tx")); let mut mtx: MintedTx = babbage_minted_tx_from_cbor(&cbor_bytes); @@ -2102,7 +1739,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage4.0.address")), + String::from("11a55f409501bf65805bb0dc76f6f9ae90b61e19ed870bc0025681360881728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d"), Value::Coin(25000000), Some(PseudoDatumOption::Hash( hex::decode("3e8c4b1d396bb8132e5097f5a2f012d97900cbc496a3745db4226cea4cb66465") @@ -2113,7 +1750,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage4.1.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Multiasset( 1795660, KeyValuePairs::from(Vec::from([( @@ -2140,7 +1777,7 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage4.collateral.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Coin(5000000), None, None, @@ -2154,21 +1791,7 @@ mod babbage_tests { Decode::decode(&mut Decoder::new(&tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_babbage(&mtx); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72317003, network_id: 1, @@ -2198,7 +1821,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage4.0.address")), + String::from("11a55f409501bf65805bb0dc76f6f9ae90b61e19ed870bc0025681360881728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d"), Value::Coin(25000000), Some(PseudoDatumOption::Hash( hex::decode("3e8c4b1d396bb8132e5097f5a2f012d97900cbc496a3745db4226cea4cb66465") @@ -2209,7 +1832,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage4.1.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Multiasset( 1795660, KeyValuePairs::from(Vec::from([( @@ -2236,7 +1859,7 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage4.collateral.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Coin(5000000), None, None, @@ -2250,21 +1873,7 @@ mod babbage_tests { Decode::decode(&mut Decoder::new(&tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_babbage(&mtx); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72317003, network_id: 1, @@ -2294,7 +1903,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage4.0.address")), + String::from("11a55f409501bf65805bb0dc76f6f9ae90b61e19ed870bc0025681360881728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d"), Value::Coin(25000000), Some(PseudoDatumOption::Hash( hex::decode("3e8c4b1d396bb8132e5097f5a2f012d97900cbc496a3745db4226cea4cb66465") @@ -2305,7 +1914,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage4.1.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Multiasset( 1795660, KeyValuePairs::from(Vec::from([( @@ -2332,7 +1941,7 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage4.collateral.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Coin(5000000), None, None, @@ -2352,21 +1961,7 @@ mod babbage_tests { Decode::decode(&mut Decoder::new(&tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_babbage(&mtx); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72317003, network_id: 1, @@ -2393,7 +1988,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage4.0.address")), + String::from("11a55f409501bf65805bb0dc76f6f9ae90b61e19ed870bc0025681360881728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d"), Value::Coin(25000000), Some(PseudoDatumOption::Hash( hex::decode("3e8c4b1d396bb8132e5097f5a2f012d97900cbc496a3745db4226cea4cb66465") @@ -2404,7 +1999,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage4.1.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Multiasset( 1795660, KeyValuePairs::from(Vec::from([( @@ -2431,7 +2026,7 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage4.collateral.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Coin(5000000), None, None, @@ -2452,21 +2047,7 @@ mod babbage_tests { Decode::decode(&mut Decoder::new(&tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_babbage(&mtx); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72317003, network_id: 1, @@ -2495,7 +2076,7 @@ mod babbage_tests { Option>, )] = &[ ( - String::from(include_str!("../../test_data/babbage4.0.address")), + String::from("11a55f409501bf65805bb0dc76f6f9ae90b61e19ed870bc0025681360881728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d"), Value::Coin(25000000), Some(PseudoDatumOption::Hash( hex::decode("3e8c4b1d396bb8132e5097f5a2f012d97900cbc496a3745db4226cea4cb66465") @@ -2506,7 +2087,7 @@ mod babbage_tests { None, ), ( - String::from(include_str!("../../test_data/babbage4.1.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Multiasset( 1795660, KeyValuePairs::from(Vec::from([( @@ -2533,7 +2114,7 @@ mod babbage_tests { Option, Option>, )] = &[( - String::from(include_str!("../../test_data/babbage4.collateral.address")), + String::from("01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd"), Value::Coin(5000000), None, None, @@ -2549,21 +2130,7 @@ mod babbage_tests { Decode::decode(&mut Decoder::new(&tx_witness_set_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_babbage(&mtx); let env: Environment = Environment { - prot_params: MultiEraProtParams::Babbage(BabbageProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, - max_tx_size: 16384, - max_block_ex_mem: 62000000, - max_block_ex_steps: 40000000000, - max_tx_ex_mem: 14000000, - max_tx_ex_steps: 10000000000, - max_val_size: 5000, - collateral_percent: 150, - max_collateral_inputs: 3, - coins_per_utxo_word: 4310, - }), + prot_params: MultiEraProtocolParameters::Babbage(mk_mainnet_params_epoch_365()), prot_magic: 764824073, block_slot: 72317003, network_id: 1, @@ -2576,4 +2143,512 @@ mod babbage_tests { }, } } + + fn mk_mainnet_params_epoch_365() -> BabbageProtParams { + BabbageProtParams { + minfee_a: 44, + minfee_b: 155381, + max_block_body_size: 90112, + max_transaction_size: 16384, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 500, + pool_pledge_influence: RationalNumber { + numerator: 3, + denominator: 10, + }, + expansion_rate: RationalNumber { + numerator: 3, + denominator: 1000, + }, + treasury_growth_rate: RationalNumber { + numerator: 2, + denominator: 10, + }, + decentralization_constant: RationalNumber { + numerator: 0, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (7, 0), + min_pool_cost: 340000000, + ada_per_utxo_byte: 4310, + cost_models_for_script_languages: CostMdls { + plutus_v1: Some(vec![ + 197209, 0, 1, 1, 396231, 621, 0, 1, 150000, 1000, 0, 1, 150000, 32, 2477736, + 29175, 4, 29773, 100, 29773, 100, 29773, 100, 29773, 100, 29773, 100, 29773, + 100, 100, 100, 29773, 100, 150000, 32, 150000, 32, 150000, 32, 150000, 1000, 0, + 1, 150000, 32, 150000, 1000, 0, 8, 148000, 425507, 118, 0, 1, 1, 150000, 1000, + 0, 8, 150000, 112536, 247, 1, 150000, 10000, 1, 136542, 1326, 1, 1000, 150000, + 1000, 1, 150000, 32, 150000, 32, 150000, 32, 1, 1, 150000, 1, 150000, 4, + 103599, 248, 1, 103599, 248, 1, 145276, 1366, 1, 179690, 497, 1, 150000, 32, + 150000, 32, 150000, 32, 150000, 32, 150000, 32, 150000, 32, 148000, 425507, + 118, 0, 1, 1, 61516, 11218, 0, 1, 150000, 32, 148000, 425507, 118, 0, 1, 1, + 148000, 425507, 118, 0, 1, 1, 2477736, 29175, 4, 0, 82363, 4, 150000, 5000, 0, + 1, 150000, 32, 197209, 0, 1, 1, 150000, 32, 150000, 32, 150000, 32, 150000, 32, + 150000, 32, 150000, 32, 150000, 32, 3345831, 1, 1, + ]), + + plutus_v2: None, + }, + execution_costs: ExUnitPrices { + mem_price: RationalNumber { + numerator: 577, + denominator: 10000, + }, + step_price: RationalNumber { + numerator: 721, + denominator: 10000000, + }, + }, + max_tx_ex_units: ExUnits { + mem: 14000000, + steps: 10000000000, + }, + max_block_ex_units: ExUnits { + mem: 62000000, + steps: 40000000000, + }, + max_value_size: 5000, + collateral_percentage: 150, + max_collateral_inputs: 3, + } + } + + fn mk_mainnet_params_epoch_380() -> BabbageProtParams { + BabbageProtParams { + minfee_a: 44, + minfee_b: 155381, + max_block_body_size: 90112, + max_transaction_size: 16384, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 500, + pool_pledge_influence: RationalNumber { + numerator: 3, + denominator: 10, + }, + expansion_rate: RationalNumber { + numerator: 3, + denominator: 1000, + }, + treasury_growth_rate: RationalNumber { + numerator: 2, + denominator: 10, + }, + decentralization_constant: RationalNumber { + numerator: 0, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (7, 0), + min_pool_cost: 340000000, + ada_per_utxo_byte: 4310, + cost_models_for_script_languages: CostMdls { + plutus_v1: Some(vec![ + 205665, 812, 1, 1, 1000, 571, 0, 1, 1000, 24177, 4, 1, 1000, 32, 117366, 10475, + 4, 23000, 100, 23000, 100, 23000, 100, 23000, 100, 23000, 100, 23000, 100, 100, + 100, 23000, 100, 19537, 32, 175354, 32, 46417, 4, 221973, 511, 0, 1, 89141, 32, + 497525, 14068, 4, 2, 196500, 453240, 220, 0, 1, 1, 1000, 28662, 4, 2, 245000, + 216773, 62, 1, 1060367, 12586, 1, 208512, 421, 1, 187000, 1000, 52998, 1, + 80436, 32, 43249, 32, 1000, 32, 80556, 1, 57667, 4, 1000, 10, 197145, 156, 1, + 197145, 156, 1, 204924, 473, 1, 208896, 511, 1, 52467, 32, 64832, 32, 65493, + 32, 22558, 32, 16563, 32, 76511, 32, 196500, 453240, 220, 0, 1, 1, 69522, + 11687, 0, 1, 60091, 32, 196500, 453240, 220, 0, 1, 1, 196500, 453240, 220, 0, + 1, 1, 806990, 30482, 4, 1927926, 82523, 4, 265318, 0, 4, 0, 85931, 32, 205665, + 812, 1, 1, 41182, 32, 212342, 32, 31220, 32, 32696, 32, 43357, 32, 32247, 32, + 38314, 32, 9462713, 1021, 10, + ]), + + plutus_v2: Some(vec![ + 205665, + 812, + 1, + 1, + 1000, + 571, + 0, + 1, + 1000, + 24177, + 4, + 1, + 1000, + 32, + 117366, + 10475, + 4, + 23000, + 100, + 23000, + 100, + 23000, + 100, + 23000, + 100, + 23000, + 100, + 23000, + 100, + 100, + 100, + 23000, + 100, + 19537, + 32, + 175354, + 32, + 46417, + 4, + 221973, + 511, + 0, + 1, + 89141, + 32, + 497525, + 14068, + 4, + 2, + 196500, + 453240, + 220, + 0, + 1, + 1, + 1000, + 28662, + 4, + 2, + 245000, + 216773, + 62, + 1, + 1060367, + 12586, + 1, + 208512, + 421, + 1, + 187000, + 1000, + 52998, + 1, + 80436, + 32, + 43249, + 32, + 1000, + 32, + 80556, + 1, + 57667, + 4, + 1000, + 10, + 197145, + 156, + 1, + 197145, + 156, + 1, + 204924, + 473, + 1, + 208896, + 511, + 1, + 52467, + 32, + 64832, + 32, + 65493, + 32, + 22558, + 32, + 16563, + 32, + 76511, + 32, + 196500, + 453240, + 220, + 0, + 1, + 1, + 69522, + 11687, + 0, + 1, + 60091, + 32, + 196500, + 453240, + 220, + 0, + 1, + 1, + 196500, + 453240, + 220, + 0, + 1, + 1, + 1159724, + 392670, + 0, + 2, + 806990, + 30482, + 4, + 1927926, + 82523, + 4, + 265318, + 0, + 4, + 0, + 85931, + 32, + 205665, + 812, + 1, + 1, + 41182, + 32, + 212342, + 32, + 31220, + 32, + 32696, + 32, + 43357, + 32, + 32247, + 32, + 38314, + 32, + 20000000000, + 20000000000, + 9462713, + 1021, + 10, + 20000000000, + 0, + 20000000000, + ]), + }, + execution_costs: ExUnitPrices { + mem_price: RationalNumber { + numerator: 577, + denominator: 10000, + }, + step_price: RationalNumber { + numerator: 721, + denominator: 10000000, + }, + }, + max_tx_ex_units: ExUnits { + mem: 14000000, + steps: 10000000000, + }, + max_block_ex_units: ExUnits { + mem: 62000000, + steps: 40000000000, + }, + max_value_size: 5000, + collateral_percentage: 150, + max_collateral_inputs: 3, + } + } + + fn mk_preview_params_epoch_30() -> BabbageProtParams { + BabbageProtParams { + minfee_a: 44, + minfee_b: 155381, + max_block_body_size: 90112, + max_transaction_size: 16384, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 500, + pool_pledge_influence: RationalNumber { + numerator: 3, + denominator: 10, + }, + expansion_rate: RationalNumber { + numerator: 3, + denominator: 1000, + }, + treasury_growth_rate: RationalNumber { + numerator: 2, + denominator: 10, + }, + decentralization_constant: RationalNumber { + numerator: 0, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (8, 0), + min_pool_cost: 340000000, + ada_per_utxo_byte: 4310, + cost_models_for_script_languages: CostMdls { + plutus_v1: Some(vec![ + 205665, 812, 1, 1, 1000, 571, 0, 1, 1000, 24177, 4, 1, 1000, 32, 117366, 10475, + 4, 23000, 100, 23000, 100, 23000, 100, 23000, 100, 23000, 100, 23000, 100, 100, + 100, 23000, 100, 19537, 32, 175354, 32, 46417, 4, 221973, 511, 0, 1, 89141, 32, + 497525, 14068, 4, 2, 196500, 453240, 220, 0, 1, 1, 1000, 28662, 4, 2, 245000, + 216773, 62, 1060367, 12586, 1, 208512, 421, 1, 187000, 1000, 52998, 1, 80436, + 32, 43249, 32, 1000, 32, 80556, 1, 57667, 4, 1000, 10, 197145, 156, 1, 197145, + 156, 1, 204924, 473, 1, 208896, 511, 1, 52467, 32, 64832, 32, 65493, 32, 22558, + 32, 16563, 32, 76511, 32, 196500, 453240, 220, 0, 1, 1, 69522, 11687, 0, 1, + 60091, 32, 196500, 453240, 220, 0, 1, 1, 196500, 453240, 220, 0, 1, 1, 806990, + 30482, 4, 1927926, 82523, 4, 265318, 0, 4, 0, 85931, 32, 205665, 812, 1, 1, + 41182, 32, 212342, 32, 31220, 32, 32696, 32, 43357, 32, 32247, 32, 38314, 32, + 9462713, 1021, 10, + ]), + + plutus_v2: Some(vec![ + 205665, 812, 1, 1, 1000, 571, 0, 1, 1000, 24177, 4, 1, 1000, 32, 117366, 10475, + 4, 23000, 100, 23000, 100, 23000, 100, 23000, 100, 23000, 100, 23000, 100, 100, + 100, 23000, 100, 19537, 32, 175354, 32, 46417, 4, 221973, 511, 0, 1, 89141, 32, + 497525, 14068, 4, 2, 196500, 453240, 220, 0, 1, 1, 1000, 28662, 4, 2, 245000, + 216773, 62, 1, 1060367, 12586, 1, 208512, 421, 1, 187000, 1000, 52998, 1, + 80436, 32, 43249, 32, 1000, 32, 80556, 1, 57667, 4, 1000, 10, 197145, 156, 1, + 197145, 156, 1, 204924, 473, 1, 208896, 511, 1, 52467, 32, 64832, 32, 65493, + 32, 22558, 32, 16563, 32, 76511, 32, 196500, 453240, 220, 0, 1, 1, 69522, + 11687, 0, 1, 60091, 32, 196500, 453240, 220, 0, 1, 1, 196500, 453240, 220, 0, + 1, 1, 1159724, 392670, 0, 2, 806990, 30482, 4, 1927926, 82523, 4, 265318, 0, 4, + 0, 85931, 32, 205665, 812, 1, 1, 41182, 32, 212342, 32, 31220, 32, 32696, 32, + 43357, 32, 32247, 32, 38314, 32, 35892428, 10, 9462713, 1021, 10, 38887044, + 32947, 10, + ]), + }, + execution_costs: ExUnitPrices { + mem_price: RationalNumber { + numerator: 577, + denominator: 10000, + }, + step_price: RationalNumber { + numerator: 721, + denominator: 10000000, + }, + }, + max_tx_ex_units: ExUnits { + mem: 14000000, + steps: 10000000000, + }, + max_block_ex_units: ExUnits { + mem: 62000000, + steps: 40000000000, + }, + max_value_size: 5000, + collateral_percentage: 150, + max_collateral_inputs: 3, + } + } + + fn mk_preprod_params_epoch_100() -> BabbageProtParams { + BabbageProtParams { + minfee_a: 44, + minfee_b: 155381, + max_block_body_size: 90112, + max_transaction_size: 16384, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 500, + pool_pledge_influence: RationalNumber { + numerator: 3, + denominator: 10, + }, + expansion_rate: RationalNumber { + numerator: 3, + denominator: 1000, + }, + treasury_growth_rate: RationalNumber { + numerator: 2, + denominator: 10, + }, + decentralization_constant: RationalNumber { + numerator: 0, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (8, 0), + min_pool_cost: 340000000, + ada_per_utxo_byte: 4310, + cost_models_for_script_languages: CostMdls { + plutus_v1: Some(vec![ + 205665, 812, 1, 1, 1000, 571, 0, 1, 1000, 24177, 4, 1, 1000, 32, 117366, 10475, + 4, 23000, 100, 23000, 100, 23000, 100, 23000, 100, 23000, 100, 23000, 100, 100, + 100, 23000, 100, 19537, 32, 175354, 32, 46417, 4, 221973, 511, 0, 1, 89141, 32, + 497525, 14068, 4, 2, 196500, 453240, 220, 0, 1, 1, 1000, 28662, 4, 2, 245000, + 216773, 62, 1, 1060367, 12586, 1, 208512, 421, 1, 187000, 1000, 52998, 1, + 80436, 32, 43249, 32, 1000, 32, 80556, 1, 57667, 4, 1000, 10, 197145, 156, 1, + 197145, 156, 1, 204924, 473, 1, 208896, 511, 1, 52467, 32, 64832, 32, 65493, + 32, 22558, 32, 16563, 32, 76511, 32, 196500, 453240, 220, 0, 1, 1, 69522, + 11687, 0, 1, 60091, 32, 196500, 453240, 220, 0, 1, 1, 196500, 453240, 220, 0, + 1, 1, 806990, 30482, 4, 1927926, 82523, 4, 265318, 0, 4, 0, 85931, 32, 205665, + 812, 1, 1, 41182, 32, 212342, 32, 31220, 32, 32696, 32, 43357, 32, 32247, 32, + 38314, 32, 57996947, 18975, 10, + ]), + + plutus_v2: Some(vec![ + 205665, 812, 1, 1, 1000, 571, 0, 1, 1000, 24177, 4, 1, 1000, 32, 117366, 10475, + 4, 23000, 100, 23000, 100, 23000, 100, 23000, 100, 23000, 100, 23000, 100, 100, + 100, 23000, 100, 19537, 32, 175354, 32, 46417, 4, 221973, 511, 0, 1, 89141, 32, + 497525, 14068, 4, 2, 196500, 453240, 220, 0, 1, 1, 1000, 28662, 4, 2, 245000, + 216773, 62, 1, 1060367, 12586, 1, 208512, 421, 1, 187000, 1000, 52998, 1, + 80436, 32, 43249, 32, 1000, 32, 80556, 1, 57667, 4, 1000, 10, 197145, 156, 1, + 197145, 156, 1, 204924, 473, 1, 208896, 511, 1, 52467, 32, 64832, 32, 65493, + 32, 22558, 32, 16563, 32, 76511, 32, 196500, 453240, 220, 0, 1, 1, 69522, + 11687, 0, 1, 60091, 32, 196500, 453240, 220, 0, 1, 1, 196500, 453240, 220, 0, + 1, 1, 1159724, 392670, 0, 2, 806990, 30482, 4, 1927926, 82523, 4, 265318, 0, 4, + 0, 85931, 32, 205665, 812, 1, 1, 41182, 32, 212342, 32, 31220, 32, 32696, 32, + 43357, 32, 32247, 32, 38314, 32, 35892428, 10, 57996947, 18975, 10, 38887044, + 32947, 10, + ]), + }, + execution_costs: ExUnitPrices { + mem_price: RationalNumber { + numerator: 577, + denominator: 10000, + }, + step_price: RationalNumber { + numerator: 721, + denominator: 10000000, + }, + }, + max_tx_ex_units: ExUnits { + mem: 14000000, + steps: 10000000000, + }, + max_block_ex_units: ExUnits { + mem: 62000000, + steps: 20000000000, + }, + max_value_size: 5000, + collateral_percentage: 150, + max_collateral_inputs: 3, + } + } } diff --git a/pallas-applying/tests/byron.rs b/pallas-applying/tests/byron.rs index 020cbbb..fdcc205 100644 --- a/pallas-applying/tests/byron.rs +++ b/pallas-applying/tests/byron.rs @@ -3,7 +3,7 @@ pub mod common; use common::{cbor_to_bytes, minted_tx_payload_from_cbor, mk_utxo_for_byron_tx}; use pallas_applying::{ utils::{ - ByronError, ByronProtParams, Environment, FeePolicy, MultiEraProtParams, ValidationError::*, + ByronError, ByronProtParams, Environment, MultiEraProtocolParameters, ValidationError::*, }, validate, UTxOs, }; @@ -33,17 +33,27 @@ mod byron_tests { let utxos: UTxOs = mk_utxo_for_byron_tx( &mtxp.transaction, &[( - String::from(include_str!("../../test_data/byron2.address")), + String::from("83581CDC7E4DD6A44886816DEC9A4B2021056A8FCAF500C09E316028F2985FA002"), 19999000000, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Byron(ByronProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, + prot_params: MultiEraProtocolParameters::Byron(ByronProtParams { + script_version: 0, + slot_duration: 20000, + max_block_size: 2000000, + max_header_size: 2000000, max_tx_size: 4096, + max_proposal_size: 700, + mpc_thd: 20000000000000, + heavy_del_thd: 300000000000, + update_vote_thd: 1000000000000, + update_proposal_thd: 100000000000000, + update_implicit: 10000, + soft_fork_rule: (900000000000000, 600000000000000, 50000000000000), + summand: 155381, + multiplier: 44, + unlock_stake_epoch: 18446744073709551615, }), prot_magic: 764824073, block_slot: 6341, @@ -65,17 +75,27 @@ mod byron_tests { let utxos: UTxOs = mk_utxo_for_byron_tx( &mtxp.transaction, &[( - String::from(include_str!("../../test_data/byron1.address")), + String::from("83581cff66e7549ee0706abe5ce63ba325f792f2c1145d918baf563db2b457a101581e581cca3e553c9c63c5927480e7434620200eb3a162ef0b6cf6f671ba925100"), 19999000000, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Byron(ByronProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, + prot_params: MultiEraProtocolParameters::Byron(ByronProtParams { + script_version: 0, + slot_duration: 20000, + max_block_size: 2000000, + max_header_size: 2000000, max_tx_size: 4096, + max_proposal_size: 700, + mpc_thd: 20000000000000, + heavy_del_thd: 300000000000, + update_vote_thd: 1000000000000, + update_proposal_thd: 100000000000000, + update_implicit: 10000, + soft_fork_rule: (900000000000000, 600000000000000, 50000000000000), + summand: 155381, + multiplier: 44, + unlock_stake_epoch: 18446744073709551615, }), prot_magic: 764824073, block_slot: 3241381, @@ -95,7 +115,7 @@ mod byron_tests { let utxos: UTxOs = mk_utxo_for_byron_tx( &mtxp.transaction, &[( - String::from(include_str!("../../test_data/byron1.address")), + String::from("83581cff66e7549ee0706abe5ce63ba325f792f2c1145d918baf563db2b457a101581e581cca3e553c9c63c5927480e7434620200eb3a162ef0b6cf6f671ba925100"), 19999000000, )], ); @@ -110,12 +130,22 @@ mod byron_tests { mtxp.transaction = Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_byron(&mtxp); let env: Environment = Environment { - prot_params: MultiEraProtParams::Byron(ByronProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, + prot_params: MultiEraProtocolParameters::Byron(ByronProtParams { + script_version: 0, + slot_duration: 20000, + max_block_size: 2000000, + max_header_size: 2000000, max_tx_size: 4096, + max_proposal_size: 700, + mpc_thd: 20000000000000, + heavy_del_thd: 300000000000, + update_vote_thd: 1000000000000, + update_proposal_thd: 100000000000000, + update_implicit: 10000, + soft_fork_rule: (900000000000000, 600000000000000, 50000000000000), + summand: 155381, + multiplier: 44, + unlock_stake_epoch: 18446744073709551615, }), prot_magic: 764824073, block_slot: 3241381, @@ -148,17 +178,27 @@ mod byron_tests { let utxos: UTxOs = mk_utxo_for_byron_tx( &mtxp.transaction, &[( - String::from(include_str!("../../test_data/byron1.address")), + String::from("83581cff66e7549ee0706abe5ce63ba325f792f2c1145d918baf563db2b457a101581e581cca3e553c9c63c5927480e7434620200eb3a162ef0b6cf6f671ba925100"), 19999000000, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Byron(ByronProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, + prot_params: MultiEraProtocolParameters::Byron(ByronProtParams { + script_version: 0, + slot_duration: 20000, + max_block_size: 2000000, + max_header_size: 2000000, max_tx_size: 4096, + max_proposal_size: 700, + mpc_thd: 20000000000000, + heavy_del_thd: 300000000000, + update_vote_thd: 1000000000000, + update_proposal_thd: 100000000000000, + update_implicit: 10000, + soft_fork_rule: (900000000000000, 600000000000000, 50000000000000), + summand: 155381, + multiplier: 44, + unlock_stake_epoch: 18446744073709551615, }), prot_magic: 764824073, block_slot: 3241381, @@ -181,12 +221,22 @@ mod byron_tests { let metx: MultiEraTx = MultiEraTx::from_byron(&mtxp); let utxos: UTxOs = UTxOs::new(); let env: Environment = Environment { - prot_params: MultiEraProtParams::Byron(ByronProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, + prot_params: MultiEraProtocolParameters::Byron(ByronProtParams { + script_version: 0, + slot_duration: 20000, + max_block_size: 2000000, + max_header_size: 2000000, max_tx_size: 4096, + max_proposal_size: 700, + mpc_thd: 20000000000000, + heavy_del_thd: 300000000000, + update_vote_thd: 1000000000000, + update_proposal_thd: 100000000000000, + update_implicit: 10000, + soft_fork_rule: (900000000000000, 600000000000000, 50000000000000), + summand: 155381, + multiplier: 44, + unlock_stake_epoch: 18446744073709551615, }), prot_magic: 764824073, block_slot: 3241381, @@ -225,17 +275,27 @@ mod byron_tests { let utxos: UTxOs = mk_utxo_for_byron_tx( &mtxp.transaction, &[( - String::from(include_str!("../../test_data/byron1.address")), + String::from("83581cff66e7549ee0706abe5ce63ba325f792f2c1145d918baf563db2b457a101581e581cca3e553c9c63c5927480e7434620200eb3a162ef0b6cf6f671ba925100"), 19999000000, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Byron(ByronProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, + prot_params: MultiEraProtocolParameters::Byron(ByronProtParams { + script_version: 0, + slot_duration: 20000, + max_block_size: 2000000, + max_header_size: 2000000, max_tx_size: 4096, + max_proposal_size: 700, + mpc_thd: 20000000000000, + heavy_del_thd: 300000000000, + update_vote_thd: 1000000000000, + update_proposal_thd: 100000000000000, + update_implicit: 10000, + soft_fork_rule: (900000000000000, 600000000000000, 50000000000000), + summand: 155381, + multiplier: 44, + unlock_stake_epoch: 18446744073709551615, }), prot_magic: 764824073, block_slot: 3241381, @@ -259,17 +319,27 @@ mod byron_tests { let utxos: UTxOs = mk_utxo_for_byron_tx( &mtxp.transaction, &[( - String::from(include_str!("../../test_data/byron1.address")), + String::from("83581cff66e7549ee0706abe5ce63ba325f792f2c1145d918baf563db2b457a101581e581cca3e553c9c63c5927480e7434620200eb3a162ef0b6cf6f671ba925100"), 19999000000, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Byron(ByronProtParams { - fee_policy: FeePolicy { - summand: 1000, - multiplier: 1000, - }, + prot_params: MultiEraProtocolParameters::Byron(ByronProtParams { + script_version: 0, + slot_duration: 20000, + max_block_size: 2000000, + max_header_size: 2000000, max_tx_size: 4096, + max_proposal_size: 700, + mpc_thd: 20000000000000, + heavy_del_thd: 300000000000, + update_vote_thd: 1000000000000, + update_proposal_thd: 100000000000000, + update_implicit: 10000, + soft_fork_rule: (900000000000000, 600000000000000, 50000000000000), + summand: 1000, + multiplier: 1000, + unlock_stake_epoch: 18446744073709551615, }), prot_magic: 764824073, block_slot: 3241381, @@ -293,17 +363,27 @@ mod byron_tests { let utxos: UTxOs = mk_utxo_for_byron_tx( &mtxp.transaction, &[( - String::from(include_str!("../../test_data/byron1.address")), + String::from("83581cff66e7549ee0706abe5ce63ba325f792f2c1145d918baf563db2b457a101581e581cca3e553c9c63c5927480e7434620200eb3a162ef0b6cf6f671ba925100"), 19999000000, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Byron(ByronProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, + prot_params: MultiEraProtocolParameters::Byron(ByronProtParams { + script_version: 0, + slot_duration: 20000, + max_block_size: 2000000, + max_header_size: 2000000, max_tx_size: 0, + max_proposal_size: 700, + mpc_thd: 20000000000000, + heavy_del_thd: 300000000000, + update_vote_thd: 1000000000000, + update_proposal_thd: 100000000000000, + update_implicit: 10000, + soft_fork_rule: (900000000000000, 600000000000000, 50000000000000), + summand: 155381, + multiplier: 44, + unlock_stake_epoch: 18446744073709551615, }), prot_magic: 764824073, block_slot: 3241381, @@ -319,7 +399,7 @@ mod byron_tests { } #[test] - // The input to the transaction does not have a corresponding witness. + // The input to the transaction does not have a matching witness. fn missing_witness() { let cbor_bytes: Vec = cbor_to_bytes(include_str!("../../test_data/byron1.tx")); let mut mtxp: MintedTxPayload = minted_tx_payload_from_cbor(&cbor_bytes); @@ -335,17 +415,27 @@ mod byron_tests { let utxos: UTxOs = mk_utxo_for_byron_tx( &mtxp.transaction, &[( - String::from(include_str!("../../test_data/byron1.address")), + String::from("83581cff66e7549ee0706abe5ce63ba325f792f2c1145d918baf563db2b457a101581e581cca3e553c9c63c5927480e7434620200eb3a162ef0b6cf6f671ba925100"), 19999000000, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Byron(ByronProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, + prot_params: MultiEraProtocolParameters::Byron(ByronProtParams { + script_version: 0, + slot_duration: 20000, + max_block_size: 2000000, + max_header_size: 2000000, max_tx_size: 4096, + max_proposal_size: 700, + mpc_thd: 20000000000000, + heavy_del_thd: 300000000000, + update_vote_thd: 1000000000000, + update_proposal_thd: 100000000000000, + update_implicit: 10000, + soft_fork_rule: (900000000000000, 600000000000000, 50000000000000), + summand: 155381, + multiplier: 44, + unlock_stake_epoch: 18446744073709551615, }), prot_magic: 764824073, block_slot: 3241381, @@ -386,17 +476,27 @@ mod byron_tests { let utxos: UTxOs = mk_utxo_for_byron_tx( &mtxp.transaction, &[( - String::from(include_str!("../../test_data/byron1.address")), + String::from("83581cff66e7549ee0706abe5ce63ba325f792f2c1145d918baf563db2b457a101581e581cca3e553c9c63c5927480e7434620200eb3a162ef0b6cf6f671ba925100"), 19999000000, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Byron(ByronProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, - }, + prot_params: MultiEraProtocolParameters::Byron(ByronProtParams { + script_version: 0, + slot_duration: 20000, + max_block_size: 2000000, + max_header_size: 2000000, max_tx_size: 4096, + max_proposal_size: 700, + mpc_thd: 20000000000000, + heavy_del_thd: 300000000000, + update_vote_thd: 1000000000000, + update_proposal_thd: 100000000000000, + update_implicit: 10000, + soft_fork_rule: (900000000000000, 600000000000000, 50000000000000), + summand: 155381, + multiplier: 44, + unlock_stake_epoch: 18446744073709551615, }), prot_magic: 764824073, block_slot: 3241381, diff --git a/pallas-applying/tests/shelley_ma.rs b/pallas-applying/tests/shelley_ma.rs index d4be1f1..a4ea1b9 100644 --- a/pallas-applying/tests/shelley_ma.rs +++ b/pallas-applying/tests/shelley_ma.rs @@ -4,7 +4,7 @@ use common::*; use pallas_addresses::{Address, Network, ShelleyAddress}; use pallas_applying::{ utils::{ - Environment, FeePolicy, MultiEraProtParams, ShelleyMAError, ShelleyProtParams, + Environment, MultiEraProtocolParameters, ShelleyMAError, ShelleyProtParams, ValidationError::*, }, validate, UTxOs, @@ -17,7 +17,8 @@ use pallas_codec::{ utils::{Bytes, Nullable}, }; use pallas_primitives::alonzo::{ - MintedTx, MintedWitnessSet, TransactionBody, TransactionOutput, VKeyWitness, Value, + MintedTx, MintedWitnessSet, Nonce, NonceVariant, RationalNumber, TransactionBody, + TransactionOutput, VKeyWitness, Value, }; use pallas_traverse::{Era, MultiEraTx}; @@ -35,19 +36,47 @@ mod shelley_ma_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/shelley1.address")), + String::from("0129bb156d52d014bb444a14138cbee36044c6faed37d0c2d49d2358315c465cbf8c5536970e8a29bb7adcda0d663b20007d481813694c64ef"), Value::Coin(2332267427205), None, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Shelley(ShelleyProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, + prot_params: MultiEraProtocolParameters::Shelley(ShelleyProtParams { + minfee_b: 155381, + minfee_a: 44, + max_block_body_size: 65536, + max_transaction_size: 4096, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 150, + pool_pledge_influence: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, }, - max_tx_size: 4096, - min_lovelace: 1000000, + expansion_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + treasury_growth_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + decentralization_constant: RationalNumber { + numerator: 1, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (0, 2), + min_utxo_value: 1000000, }), prot_magic: 764824073, block_slot: 5281340, @@ -69,19 +98,47 @@ mod shelley_ma_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/shelley2.address")), + String::from("7165c197d565e88a20885e535f93755682444d3c02fd44dd70883fe89e"), Value::Coin(2000000), None, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Shelley(ShelleyProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, + prot_params: MultiEraProtocolParameters::Shelley(ShelleyProtParams { + minfee_b: 155381, + minfee_a: 44, + max_block_body_size: 65536, + max_transaction_size: 4096, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 150, + pool_pledge_influence: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, }, - max_tx_size: 4096, - min_lovelace: 1000000, + expansion_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + treasury_growth_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + decentralization_constant: RationalNumber { + numerator: 1, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (0, 2), + min_utxo_value: 1000000, }), prot_magic: 764824073, block_slot: 17584925, @@ -103,19 +160,47 @@ mod shelley_ma_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/shelley3.address")), + String::from("61c96001f4a4e10567ac18be3c47663a00a858f51c56779e94993d30ef"), Value::Coin(10000000), None, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Shelley(ShelleyProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, + prot_params: MultiEraProtocolParameters::Shelley(ShelleyProtParams { + minfee_b: 155381, + minfee_a: 44, + max_block_body_size: 65536, + max_transaction_size: 4096, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 150, + pool_pledge_influence: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, }, - max_tx_size: 4096, - min_lovelace: 1000000, + expansion_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + treasury_growth_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + decentralization_constant: RationalNumber { + numerator: 1, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (0, 2), + min_utxo_value: 1000000, }), prot_magic: 764824073, block_slot: 5860488, @@ -137,19 +222,47 @@ mod shelley_ma_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/mary1.address")), + String::from("611489ac0c22c04abc9c6de7f95d71e1ba2c95c9b4e2f6f2900f682285"), Value::Coin(3500000), None, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Shelley(ShelleyProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, + prot_params: MultiEraProtocolParameters::Shelley(ShelleyProtParams { + minfee_b: 155381, + minfee_a: 44, + max_block_body_size: 65536, + max_transaction_size: 4096, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 150, + pool_pledge_influence: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, }, - max_tx_size: 4096, - min_lovelace: 1000000, + expansion_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + treasury_growth_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + decentralization_constant: RationalNumber { + numerator: 1, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (0, 2), + min_utxo_value: 1000000, }), prot_magic: 764824073, block_slot: 24381863, @@ -169,7 +282,7 @@ mod shelley_ma_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/shelley1.address")), + String::from("0129bb156d52d014bb444a14138cbee36044c6faed37d0c2d49d2358315c465cbf8c5536970e8a29bb7adcda0d663b20007d481813694c64ef"), Value::Coin(2332267427205), None, )], @@ -186,13 +299,41 @@ mod shelley_ma_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Shelley); let env: Environment = Environment { - prot_params: MultiEraProtParams::Shelley(ShelleyProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, + prot_params: MultiEraProtocolParameters::Shelley(ShelleyProtParams { + minfee_b: 155381, + minfee_a: 44, + max_block_body_size: 65536, + max_transaction_size: 4096, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 150, + pool_pledge_influence: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, }, - max_tx_size: 4096, - min_lovelace: 1000000, + expansion_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + treasury_growth_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + decentralization_constant: RationalNumber { + numerator: 1, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (0, 2), + min_utxo_value: 1000000, }), prot_magic: 764824073, block_slot: 5281340, @@ -215,13 +356,41 @@ mod shelley_ma_tests { let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Shelley); let utxos: UTxOs = UTxOs::new(); let env: Environment = Environment { - prot_params: MultiEraProtParams::Shelley(ShelleyProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, + prot_params: MultiEraProtocolParameters::Shelley(ShelleyProtParams { + minfee_b: 155381, + minfee_a: 44, + max_block_body_size: 65536, + max_transaction_size: 4096, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 150, + pool_pledge_influence: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, }, - max_tx_size: 4096, - min_lovelace: 1000000, + expansion_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + treasury_growth_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + decentralization_constant: RationalNumber { + numerator: 1, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (0, 2), + min_utxo_value: 1000000, }), prot_magic: 764824073, block_slot: 5281340, @@ -244,7 +413,7 @@ mod shelley_ma_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/shelley1.address")), + String::from("0129bb156d52d014bb444a14138cbee36044c6faed37d0c2d49d2358315c465cbf8c5536970e8a29bb7adcda0d663b20007d481813694c64ef"), Value::Coin(2332267427205), None, )], @@ -260,13 +429,41 @@ mod shelley_ma_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Shelley); let env: Environment = Environment { - prot_params: MultiEraProtParams::Shelley(ShelleyProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, + prot_params: MultiEraProtocolParameters::Shelley(ShelleyProtParams { + minfee_b: 155381, + minfee_a: 44, + max_block_body_size: 65536, + max_transaction_size: 4096, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 150, + pool_pledge_influence: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, }, - max_tx_size: 4096, - min_lovelace: 1000000, + expansion_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + treasury_growth_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + decentralization_constant: RationalNumber { + numerator: 1, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (0, 2), + min_utxo_value: 1000000, }), prot_magic: 764824073, block_slot: 5281340, @@ -290,19 +487,47 @@ mod shelley_ma_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/shelley1.address")), + String::from("0129bb156d52d014bb444a14138cbee36044c6faed37d0c2d49d2358315c465cbf8c5536970e8a29bb7adcda0d663b20007d481813694c64ef"), Value::Coin(2332267427205), None, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Shelley(ShelleyProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, + prot_params: MultiEraProtocolParameters::Shelley(ShelleyProtParams { + minfee_b: 155381, + minfee_a: 44, + max_block_body_size: 65536, + max_transaction_size: 4096, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 150, + pool_pledge_influence: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, }, - max_tx_size: 4096, - min_lovelace: 1000000, + expansion_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + treasury_growth_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + decentralization_constant: RationalNumber { + numerator: 1, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (0, 2), + min_utxo_value: 1000000, }), prot_magic: 764824073, block_slot: 9999999, @@ -326,19 +551,47 @@ mod shelley_ma_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/shelley1.address")), + String::from("0129bb156d52d014bb444a14138cbee36044c6faed37d0c2d49d2358315c465cbf8c5536970e8a29bb7adcda0d663b20007d481813694c64ef"), Value::Coin(2332267427205), None, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Shelley(ShelleyProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, + prot_params: MultiEraProtocolParameters::Shelley(ShelleyProtParams { + minfee_b: 155381, + minfee_a: 44, + max_block_body_size: 65536, + max_transaction_size: 0, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 150, + pool_pledge_influence: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, }, - max_tx_size: 0, - min_lovelace: 1000000, + expansion_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + treasury_growth_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + decentralization_constant: RationalNumber { + numerator: 1, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (0, 2), + min_utxo_value: 1000000, }), prot_magic: 764824073, block_slot: 5281340, @@ -363,19 +616,47 @@ mod shelley_ma_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/shelley1.address")), + String::from("0129bb156d52d014bb444a14138cbee36044c6faed37d0c2d49d2358315c465cbf8c5536970e8a29bb7adcda0d663b20007d481813694c64ef"), Value::Coin(2332267427205), None, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Shelley(ShelleyProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, + prot_params: MultiEraProtocolParameters::Shelley(ShelleyProtParams { + minfee_b: 155381, + minfee_a: 44, + max_block_body_size: 65536, + max_transaction_size: 4096, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 150, + pool_pledge_influence: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, }, - max_tx_size: 4096, - min_lovelace: 10000000000000, + expansion_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + treasury_growth_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + decentralization_constant: RationalNumber { + numerator: 1, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (0, 2), + min_utxo_value: 10000000000000, }), prot_magic: 764824073, block_slot: 5281340, @@ -409,19 +690,47 @@ mod shelley_ma_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/shelley1.address")), + String::from("0129bb156d52d014bb444a14138cbee36044c6faed37d0c2d49d2358315c465cbf8c5536970e8a29bb7adcda0d663b20007d481813694c64ef"), Value::Coin(2332267427205), None, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Shelley(ShelleyProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, + prot_params: MultiEraProtocolParameters::Shelley(ShelleyProtParams { + minfee_b: 155381, + minfee_a: 44, + max_block_body_size: 65536, + max_transaction_size: 4096, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 150, + pool_pledge_influence: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, }, - max_tx_size: 4096, - min_lovelace: 1000000, + expansion_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + treasury_growth_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + decentralization_constant: RationalNumber { + numerator: 1, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (0, 2), + min_utxo_value: 1000000, }), prot_magic: 764824073, block_slot: 5281340, @@ -445,19 +754,47 @@ mod shelley_ma_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/shelley1.address")), + String::from("0129bb156d52d014bb444a14138cbee36044c6faed37d0c2d49d2358315c465cbf8c5536970e8a29bb7adcda0d663b20007d481813694c64ef"), Value::Coin(2332267427205), None, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Shelley(ShelleyProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 70, // This value was 44 during Shelley on mainnet. + prot_params: MultiEraProtocolParameters::Shelley(ShelleyProtParams { + minfee_b: 155381, + minfee_a: 70, + max_block_body_size: 65536, + max_transaction_size: 4096, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 150, + pool_pledge_influence: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, }, - max_tx_size: 4096, - min_lovelace: 1000000, + expansion_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + treasury_growth_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + decentralization_constant: RationalNumber { + numerator: 1, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (0, 2), + min_utxo_value: 1000000, }), prot_magic: 764824073, block_slot: 5281340, @@ -510,13 +847,41 @@ mod shelley_ma_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Shelley); let env: Environment = Environment { - prot_params: MultiEraProtParams::Shelley(ShelleyProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, + prot_params: MultiEraProtocolParameters::Shelley(ShelleyProtParams { + minfee_b: 155381, + minfee_a: 44, + max_block_body_size: 65536, + max_transaction_size: 4096, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 150, + pool_pledge_influence: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, }, - max_tx_size: 4096, - min_lovelace: 1000000, + expansion_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + treasury_growth_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + decentralization_constant: RationalNumber { + numerator: 1, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (0, 2), + min_utxo_value: 1000000, }), prot_magic: 764824073, block_slot: 5281340, @@ -525,7 +890,7 @@ mod shelley_ma_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/shelley1.address")), + String::from("0129bb156d52d014bb444a14138cbee36044c6faed37d0c2d49d2358315c465cbf8c5536970e8a29bb7adcda0d663b20007d481813694c64ef"), Value::Coin(2332267427205), None, )], @@ -551,19 +916,47 @@ mod shelley_ma_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/shelley3.address")), + String::from("61c96001f4a4e10567ac18be3c47663a00a858f51c56779e94993d30ef"), Value::Coin(10000000), None, )], ); let env: Environment = Environment { - prot_params: MultiEraProtParams::Shelley(ShelleyProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, + prot_params: MultiEraProtocolParameters::Shelley(ShelleyProtParams { + minfee_b: 155381, + minfee_a: 44, + max_block_body_size: 65536, + max_transaction_size: 4096, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 150, + pool_pledge_influence: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, }, - max_tx_size: 4096, - min_lovelace: 1000000, + expansion_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + treasury_growth_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + decentralization_constant: RationalNumber { + numerator: 1, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (0, 2), + min_utxo_value: 1000000, }), prot_magic: 764824073, block_slot: 5860488, @@ -597,13 +990,41 @@ mod shelley_ma_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Shelley); let env: Environment = Environment { - prot_params: MultiEraProtParams::Shelley(ShelleyProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, + prot_params: MultiEraProtocolParameters::Shelley(ShelleyProtParams { + minfee_b: 155381, + minfee_a: 44, + max_block_body_size: 65536, + max_transaction_size: 4096, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 150, + pool_pledge_influence: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, }, - max_tx_size: 4096, - min_lovelace: 1000000, + expansion_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + treasury_growth_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + decentralization_constant: RationalNumber { + numerator: 1, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (0, 2), + min_utxo_value: 1000000, }), prot_magic: 764824073, block_slot: 5281340, @@ -612,7 +1033,7 @@ mod shelley_ma_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/shelley1.address")), + String::from("0129bb156d52d014bb444a14138cbee36044c6faed37d0c2d49d2358315c465cbf8c5536970e8a29bb7adcda0d663b20007d481813694c64ef"), Value::Coin(2332267427205), None, )], @@ -650,13 +1071,41 @@ mod shelley_ma_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Shelley); let env: Environment = Environment { - prot_params: MultiEraProtParams::Shelley(ShelleyProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, + prot_params: MultiEraProtocolParameters::Shelley(ShelleyProtParams { + minfee_b: 155381, + minfee_a: 44, + max_block_body_size: 65536, + max_transaction_size: 4096, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 150, + pool_pledge_influence: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, }, - max_tx_size: 4096, - min_lovelace: 1000000, + expansion_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + treasury_growth_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + decentralization_constant: RationalNumber { + numerator: 1, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (0, 2), + min_utxo_value: 1000000, }), prot_magic: 764824073, block_slot: 5281340, @@ -665,7 +1114,7 @@ mod shelley_ma_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/shelley1.address")), + String::from("0129bb156d52d014bb444a14138cbee36044c6faed37d0c2d49d2358315c465cbf8c5536970e8a29bb7adcda0d663b20007d481813694c64ef"), Value::Coin(2332267427205), None, )], @@ -698,13 +1147,41 @@ mod shelley_ma_tests { Decode::decode(&mut Decoder::new(tx_buf.as_slice()), &mut ()).unwrap(); let metx: MultiEraTx = MultiEraTx::from_alonzo_compatible(&mtx, Era::Shelley); let env: Environment = Environment { - prot_params: MultiEraProtParams::Shelley(ShelleyProtParams { - fee_policy: FeePolicy { - summand: 155381, - multiplier: 44, + prot_params: MultiEraProtocolParameters::Shelley(ShelleyProtParams { + minfee_b: 155381, + minfee_a: 44, + max_block_body_size: 65536, + max_transaction_size: 4096, + max_block_header_size: 1100, + key_deposit: 2000000, + pool_deposit: 500000000, + maximum_epoch: 18, + desired_number_of_stake_pools: 150, + pool_pledge_influence: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, }, - max_tx_size: 4096, - min_lovelace: 1000000, + expansion_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + treasury_growth_rate: RationalNumber { + // FIX: this is a made-up value. + numerator: 1, + denominator: 1, + }, + decentralization_constant: RationalNumber { + numerator: 1, + denominator: 1, + }, + extra_entropy: Nonce { + variant: NonceVariant::NeutralNonce, + hash: None, + }, + protocol_version: (0, 2), + min_utxo_value: 1000000, }), prot_magic: 764824073, block_slot: 5281340, @@ -713,7 +1190,7 @@ mod shelley_ma_tests { let utxos: UTxOs = mk_utxo_for_alonzo_compatible_tx( &mtx.transaction_body, &[( - String::from(include_str!("../../test_data/shelley2.address")), + String::from("7165c197d565e88a20885e535f93755682444d3c02fd44dd70883fe89e"), Value::Coin(2000000), None, )], diff --git a/pallas-primitives/src/alonzo/model.rs b/pallas-primitives/src/alonzo/model.rs index e84daaf..1af99f5 100644 --- a/pallas-primitives/src/alonzo/model.rs +++ b/pallas-primitives/src/alonzo/model.rs @@ -1208,10 +1208,10 @@ pub struct ExUnits { #[derive(Serialize, Deserialize, Encode, Decode, Debug, PartialEq, Eq, Clone)] pub struct ExUnitPrices { #[n(0)] - mem_price: PositiveInterval, + pub mem_price: PositiveInterval, #[n(1)] - step_price: PositiveInterval, + pub step_price: PositiveInterval, } #[derive(Serialize, Deserialize, Encode, Decode, Debug, PartialEq, Eq, Clone, Copy)] diff --git a/pallas-primitives/src/babbage/model.rs b/pallas-primitives/src/babbage/model.rs index 72d673d..759dce8 100644 --- a/pallas-primitives/src/babbage/model.rs +++ b/pallas-primitives/src/babbage/model.rs @@ -12,7 +12,7 @@ use pallas_codec::utils::{Bytes, CborWrap, KeepRaw, KeyValuePairs, MaybeIndefArr // required for derive attrs to work use pallas_codec::minicbor; -pub use crate::alonzo::VrfCert; +use crate::alonzo::VrfCert; #[derive(Serialize, Deserialize, Encode, Decode, Debug, PartialEq, Eq, Clone)] pub struct HeaderBody { diff --git a/test_data/alonzo1.address b/test_data/alonzo1.address deleted file mode 100644 index bc66015..0000000 --- a/test_data/alonzo1.address +++ /dev/null @@ -1 +0,0 @@ -018c9ae79bca586ac36dcfdbbf4d2826c685a6969411c338c14973cc7f7bdb37706cd03711fe64747f8cfcfd574c7445cc0378781e77a8cc00 \ No newline at end of file diff --git a/test_data/alonzo2.0.address b/test_data/alonzo2.0.address deleted file mode 100644 index 1317b45..0000000 --- a/test_data/alonzo2.0.address +++ /dev/null @@ -1 +0,0 @@ -714a59ebd93ea53d1bbf7f82232c7b012700a0cf4bb78d879dabb1a20a \ No newline at end of file diff --git a/test_data/alonzo2.1.address b/test_data/alonzo2.1.address deleted file mode 100644 index ba342cb..0000000 --- a/test_data/alonzo2.1.address +++ /dev/null @@ -1 +0,0 @@ -01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da \ No newline at end of file diff --git a/test_data/alonzo2.2.address b/test_data/alonzo2.2.address deleted file mode 100644 index ba342cb..0000000 --- a/test_data/alonzo2.2.address +++ /dev/null @@ -1 +0,0 @@ -01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da \ No newline at end of file diff --git a/test_data/alonzo2.3.address b/test_data/alonzo2.3.address deleted file mode 100644 index ba342cb..0000000 --- a/test_data/alonzo2.3.address +++ /dev/null @@ -1 +0,0 @@ -01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da \ No newline at end of file diff --git a/test_data/alonzo2.4.address b/test_data/alonzo2.4.address deleted file mode 100644 index ba342cb..0000000 --- a/test_data/alonzo2.4.address +++ /dev/null @@ -1 +0,0 @@ -01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da \ No newline at end of file diff --git a/test_data/alonzo2.5.address b/test_data/alonzo2.5.address deleted file mode 100644 index ba342cb..0000000 --- a/test_data/alonzo2.5.address +++ /dev/null @@ -1 +0,0 @@ -01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da \ No newline at end of file diff --git a/test_data/alonzo2.6.address b/test_data/alonzo2.6.address deleted file mode 100644 index ba342cb..0000000 --- a/test_data/alonzo2.6.address +++ /dev/null @@ -1 +0,0 @@ -01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da \ No newline at end of file diff --git a/test_data/alonzo2.collateral.address b/test_data/alonzo2.collateral.address deleted file mode 100644 index ba342cb..0000000 --- a/test_data/alonzo2.collateral.address +++ /dev/null @@ -1 +0,0 @@ -01c81ffcbc08ff49965d74f90c391541ff1cc2b043ffe41c81d840be8729f2ae5ed49a1734823ba37fd09923f5f7d494ae0efa23dd98ce02da \ No newline at end of file diff --git a/test_data/alonzo3.address b/test_data/alonzo3.address deleted file mode 100644 index 83fc780..0000000 --- a/test_data/alonzo3.address +++ /dev/null @@ -1 +0,0 @@ -612e137a27a74aca6caff726fb9da65c371ad2d7f1cc8645648fcc11d1 \ No newline at end of file diff --git a/test_data/alonzo4.address b/test_data/alonzo4.address deleted file mode 100644 index 44765b1..0000000 --- a/test_data/alonzo4.address +++ /dev/null @@ -1 +0,0 @@ -01f64b141bfa7761c00a48a137b15d433af02c9275dbf52ea95566b59cb4f05ecc9fd8c9066ef7fd907db854c76caf6462b132ce133dc7cc44 \ No newline at end of file diff --git a/test_data/babbage3.address b/test_data/babbage3.address deleted file mode 100644 index d982f9e..0000000 --- a/test_data/babbage3.address +++ /dev/null @@ -1 +0,0 @@ -011be1f490912af2fc39f8e3637a2bade2ecbebefe63e8bfef10989cd6f593309a155b0ebb45ff830747e61f98e5b77feaf7529ce9df351382 \ No newline at end of file diff --git a/test_data/babbage4.0.address b/test_data/babbage4.0.address deleted file mode 100644 index 7564901..0000000 --- a/test_data/babbage4.0.address +++ /dev/null @@ -1 +0,0 @@ -11a55f409501bf65805bb0dc76f6f9ae90b61e19ed870bc0025681360881728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d \ No newline at end of file diff --git a/test_data/babbage4.1.address b/test_data/babbage4.1.address deleted file mode 100644 index 06e82cd..0000000 --- a/test_data/babbage4.1.address +++ /dev/null @@ -1 +0,0 @@ -01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd \ No newline at end of file diff --git a/test_data/babbage4.collateral.address b/test_data/babbage4.collateral.address deleted file mode 100644 index 06e82cd..0000000 --- a/test_data/babbage4.collateral.address +++ /dev/null @@ -1 +0,0 @@ -01f1e126304308006938d2e8571842ff87302fff95a037b3fd838451b8b3c9396d0680d912487139cb7fc85aa279ea70e8cdacee4c6cae40fd \ No newline at end of file diff --git a/test_data/babbage5.0.address b/test_data/babbage5.0.address deleted file mode 100644 index f3ca2b9..0000000 --- a/test_data/babbage5.0.address +++ /dev/null @@ -1 +0,0 @@ -719b85d5e8611945505f078aeededcbed1d6ca11053f61e3f9d999fe44 \ No newline at end of file diff --git a/test_data/babbage5.1.address b/test_data/babbage5.1.address deleted file mode 100644 index 61fee13..0000000 --- a/test_data/babbage5.1.address +++ /dev/null @@ -1 +0,0 @@ -0121316dbc84420a5ee7461438483564c41fae876029319b3ee641fe4422339411d2df4c9c7c50b3d8f88db98d475e9d1bccd4244b412fbe5e \ No newline at end of file diff --git a/test_data/babbage5.collateral.address b/test_data/babbage5.collateral.address deleted file mode 100644 index 61fee13..0000000 --- a/test_data/babbage5.collateral.address +++ /dev/null @@ -1 +0,0 @@ -0121316dbc84420a5ee7461438483564c41fae876029319b3ee641fe4422339411d2df4c9c7c50b3d8f88db98d475e9d1bccd4244b412fbe5e \ No newline at end of file diff --git a/test_data/babbage6.0.address b/test_data/babbage6.0.address deleted file mode 100644 index a426572..0000000 --- a/test_data/babbage6.0.address +++ /dev/null @@ -1 +0,0 @@ -11A55F409501BF65805BB0DC76F6F9AE90B61E19ED870BC0025681360881728E7ED4CF324E1323135E7E6D931F01E30792D9CDF17129CB806D \ No newline at end of file diff --git a/test_data/babbage6.1.address b/test_data/babbage6.1.address deleted file mode 100644 index b18940a..0000000 --- a/test_data/babbage6.1.address +++ /dev/null @@ -1 +0,0 @@ -01EDA33318624ADE03D53B7E954713D9E69440891F0D02E823267B610D6018DC6C7989A46EC26822425A3D2BAC60EEC2682A022740361ED957 \ No newline at end of file diff --git a/test_data/babbage6.collateral.address b/test_data/babbage6.collateral.address deleted file mode 100644 index 6ed361e..0000000 --- a/test_data/babbage6.collateral.address +++ /dev/null @@ -1 +0,0 @@ -01eda33318624ade03d53b7e954713d9e69440891f0d02e823267b610d6018dc6c7989a46ec26822425a3d2bac60eec2682a022740361ed957 \ No newline at end of file diff --git a/test_data/babbage7.0.address b/test_data/babbage7.0.address deleted file mode 100644 index 6f157e6..0000000 --- a/test_data/babbage7.0.address +++ /dev/null @@ -1 +0,0 @@ -119068A7A3F008803EDAC87AF1619860F2CDCDE40C26987325ACE138AD81728E7ED4CF324E1323135E7E6D931F01E30792D9CDF17129CB806D \ No newline at end of file diff --git a/test_data/babbage7.1.address b/test_data/babbage7.1.address deleted file mode 100644 index f1c415a..0000000 --- a/test_data/babbage7.1.address +++ /dev/null @@ -1 +0,0 @@ -01A7D37F1D43D1197A994D95B3CE15D9AF3B4697CC7CDF9BCD1F81688D3499AC08066B36BC6C2D86A21243B940E84DBE5CAC3FAB5F76AB9229 \ No newline at end of file diff --git a/test_data/babbage7.collateral.address b/test_data/babbage7.collateral.address deleted file mode 100644 index 4a2ce90..0000000 --- a/test_data/babbage7.collateral.address +++ /dev/null @@ -1 +0,0 @@ -01a7d37f1d43d1197a994d95b3ce15d9af3b4697cc7cdf9bcd1f81688d3499ac08066b36bc6c2d86a21243b940e84dbe5cac3fab5f76ab9229 \ No newline at end of file diff --git a/test_data/babbage7.reference.address b/test_data/babbage7.reference.address deleted file mode 100644 index c949983..0000000 --- a/test_data/babbage7.reference.address +++ /dev/null @@ -1 +0,0 @@ -119068a7a3f008803edac87af1619860f2cdcde40c26987325ace138ad81728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d \ No newline at end of file diff --git a/test_data/byron1.address b/test_data/byron1.address deleted file mode 100644 index 7a6730a..0000000 --- a/test_data/byron1.address +++ /dev/null @@ -1 +0,0 @@ -83581cff66e7549ee0706abe5ce63ba325f792f2c1145d918baf563db2b457a101581e581cca3e553c9c63c5927480e7434620200eb3a162ef0b6cf6f671ba925100 \ No newline at end of file diff --git a/test_data/byron2.address b/test_data/byron2.address deleted file mode 100644 index 20297e8..0000000 --- a/test_data/byron2.address +++ /dev/null @@ -1 +0,0 @@ -83581CDC7E4DD6A44886816DEC9A4B2021056A8FCAF500C09E316028F2985FA002 \ No newline at end of file diff --git a/test_data/mary1.address b/test_data/mary1.address deleted file mode 100644 index b888036..0000000 --- a/test_data/mary1.address +++ /dev/null @@ -1 +0,0 @@ -611489ac0c22c04abc9c6de7f95d71e1ba2c95c9b4e2f6f2900f682285 \ No newline at end of file diff --git a/test_data/shelley1.address b/test_data/shelley1.address deleted file mode 100644 index 125a934..0000000 --- a/test_data/shelley1.address +++ /dev/null @@ -1 +0,0 @@ -0129bb156d52d014bb444a14138cbee36044c6faed37d0c2d49d2358315c465cbf8c5536970e8a29bb7adcda0d663b20007d481813694c64ef \ No newline at end of file diff --git a/test_data/shelley2.address b/test_data/shelley2.address deleted file mode 100644 index a3912a1..0000000 --- a/test_data/shelley2.address +++ /dev/null @@ -1 +0,0 @@ -7165c197d565e88a20885e535f93755682444d3c02fd44dd70883fe89e \ No newline at end of file diff --git a/test_data/shelley3.address b/test_data/shelley3.address deleted file mode 100644 index 78d07e6..0000000 --- a/test_data/shelley3.address +++ /dev/null @@ -1 +0,0 @@ -61c96001f4a4e10567ac18be3c47663a00a858f51c56779e94993d30ef \ No newline at end of file