@@ -15,7 +15,7 @@ use pallas::ledger::{
|
||||
addresses::{Network, ShelleyAddress, ShelleyDelegationPart, ShelleyPaymentPart},
|
||||
primitives::{
|
||||
alonzo::{self, Constr, PlutusData},
|
||||
babbage::{self, Language},
|
||||
conway::{self, Language},
|
||||
},
|
||||
traverse::ComputeHash,
|
||||
};
|
||||
@@ -118,7 +118,7 @@ impl Serialize for Program<DeBruijn> {
|
||||
let cbor = self.to_cbor().unwrap();
|
||||
let mut s = serializer.serialize_struct("Program<DeBruijn>", 2)?;
|
||||
s.serialize_field("compiledCode", &hex::encode(&cbor))?;
|
||||
s.serialize_field("hash", &babbage::PlutusV2Script(cbor.into()).compute_hash())?;
|
||||
s.serialize_field("hash", &conway::PlutusV2Script(cbor.into()).compute_hash())?;
|
||||
s.end()
|
||||
}
|
||||
}
|
||||
@@ -749,14 +749,9 @@ impl Program<NamedDeBruijn> {
|
||||
EvalResult::new(term, machine.ex_budget, initial_budget, machine.logs)
|
||||
}
|
||||
|
||||
/// Evaluate a Program as PlutusV1
|
||||
pub fn eval_version(self, version: &Language) -> EvalResult {
|
||||
let mut machine = Machine::new(
|
||||
version.clone(),
|
||||
CostModel::default(),
|
||||
ExBudget::default(),
|
||||
200,
|
||||
);
|
||||
/// Evaluate a Program as a specific PlutusVersion
|
||||
pub fn eval_version(self, initial_budget: ExBudget, version: &Language) -> EvalResult {
|
||||
let mut machine = Machine::new(version.clone(), CostModel::default(), initial_budget, 200);
|
||||
|
||||
let term = machine.run(self.term);
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ pub mod value;
|
||||
|
||||
use cost_model::{ExBudget, StepKind};
|
||||
pub use error::Error;
|
||||
use pallas::ledger::primitives::babbage::Language;
|
||||
use pallas::ledger::primitives::conway::Language;
|
||||
|
||||
use self::{
|
||||
cost_model::CostModel,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use pallas::ledger::primitives::babbage::Language;
|
||||
use pallas::ledger::primitives::conway::Language;
|
||||
|
||||
use crate::builtins::DefaultFunction;
|
||||
|
||||
@@ -2188,7 +2188,187 @@ pub fn initialize_cost_model(version: &Language, costs: &[i64]) -> CostModel {
|
||||
"verify_schnorr_secp256k1_signature-mem-arguments"=> costs[174]
|
||||
}
|
||||
}
|
||||
Language::PlutusV3 => {
|
||||
hashmap! {
|
||||
"add_integer-cpu-arguments-intercept"=> costs[0],
|
||||
"add_integer-cpu-arguments-slope"=> costs[1],
|
||||
"add_integer-mem-arguments-intercept"=> costs[2],
|
||||
"add_integer-mem-arguments-slope"=> costs[3],
|
||||
"append_byte_string-cpu-arguments-intercept"=> costs[4],
|
||||
"append_byte_string-cpu-arguments-slope"=> costs[5],
|
||||
"append_byte_string-mem-arguments-intercept"=> costs[6],
|
||||
"append_byte_string-mem-arguments-slope"=> costs[7],
|
||||
"append_string-cpu-arguments-intercept"=> costs[8],
|
||||
"append_string-cpu-arguments-slope"=> costs[9],
|
||||
"append_string-mem-arguments-intercept"=> costs[10],
|
||||
"append_string-mem-arguments-slope"=> costs[11],
|
||||
"b_data-cpu-arguments"=> costs[12],
|
||||
"b_data-mem-arguments"=> costs[13],
|
||||
"blake2b_256-cpu-arguments-intercept"=> costs[14],
|
||||
"blake2b_256-cpu-arguments-slope"=> costs[15],
|
||||
"blake2b_256-mem-arguments"=> costs[16],
|
||||
"cek_apply_cost-exBudgetCPU"=> costs[17],
|
||||
"cek_apply_cost-exBudgetmem"=> costs[18],
|
||||
"cek_builtin_cost-exBudgetCPU"=> costs[19],
|
||||
"cek_builtin_cost-exBudgetmem"=> costs[20],
|
||||
"cek_const_cost-exBudgetCPU"=> costs[21],
|
||||
"cek_const_cost-exBudgetmem"=> costs[22],
|
||||
"cek_delay_cost-exBudgetCPU"=> costs[23],
|
||||
"cek_delay_cost-exBudgetmem"=> costs[24],
|
||||
"cek_force_cost-exBudgetCPU"=> costs[25],
|
||||
"cek_force_cost-exBudgetmem"=> costs[26],
|
||||
"cek_lam_cost-exBudgetCPU"=> costs[27],
|
||||
"cek_lam_cost-exBudgetmem"=> costs[28],
|
||||
"cek_startup_cost-exBudgetCPU"=> costs[29],
|
||||
"cek_startup_cost-exBudgetmem"=> costs[30],
|
||||
"cek_var_cost-exBudgetCPU"=> costs[31],
|
||||
"cek_var_cost-exBudgetmem"=> costs[32],
|
||||
"choose_data-cpu-arguments"=> costs[33],
|
||||
"choose_data-mem-arguments"=> costs[34],
|
||||
"choose_list-cpu-arguments"=> costs[35],
|
||||
"choose_list-mem-arguments"=> costs[36],
|
||||
"choose_unit-cpu-arguments"=> costs[37],
|
||||
"choose_unit-mem-arguments"=> costs[38],
|
||||
"cons_byte_string-cpu-arguments-intercept"=> costs[39],
|
||||
"cons_byte_string-cpu-arguments-slope"=> costs[40],
|
||||
"cons_byte_string-mem-arguments-intercept"=> costs[41],
|
||||
"cons_byte_string-mem-arguments-slope"=> costs[42],
|
||||
"constr_data-cpu-arguments"=> costs[43],
|
||||
"constr_data-mem-arguments"=> costs[44],
|
||||
"decode_utf8-cpu-arguments-intercept"=> costs[45],
|
||||
"decode_utf8-cpu-arguments-slope"=> costs[46],
|
||||
"decode_utf8-mem-arguments-intercept"=> costs[47],
|
||||
"decode_utf8-mem-arguments-slope"=> costs[48],
|
||||
"divide_integer-cpu-arguments-constant"=> costs[49],
|
||||
"divide_integer-cpu-arguments-model-arguments-intercept"=> costs[50],
|
||||
"divide_integer-cpu-arguments-model-arguments-slope"=> costs[51],
|
||||
"divide_integer-mem-arguments-intercept"=> costs[52],
|
||||
"divide_integer-mem-arguments-minimum"=> costs[53],
|
||||
"divide_integer-mem-arguments-slope"=> costs[54],
|
||||
"encode_utf8-cpu-arguments-intercept"=> costs[55],
|
||||
"encode_utf8-cpu-arguments-slope"=> costs[56],
|
||||
"encode_utf8-mem-arguments-intercept"=> costs[57],
|
||||
"encode_utf8-mem-arguments-slope"=> costs[58],
|
||||
"equals_byte_string-cpu-arguments-constant"=> costs[59],
|
||||
"equals_byte_string-cpu-arguments-intercept"=> costs[60],
|
||||
"equals_byte_string-cpu-arguments-slope"=> costs[61],
|
||||
"equals_byte_string-mem-arguments"=> costs[62],
|
||||
"equals_data-cpu-arguments-intercept"=> costs[63],
|
||||
"equals_data-cpu-arguments-slope"=> costs[64],
|
||||
"equals_data-mem-arguments"=> costs[65],
|
||||
"equals_integer-cpu-arguments-intercept"=> costs[66],
|
||||
"equals_integer-cpu-arguments-slope"=> costs[67],
|
||||
"equals_integer-mem-arguments"=> costs[68],
|
||||
"equals_string-cpu-arguments-constant"=> costs[69],
|
||||
"equals_string-cpu-arguments-intercept"=> costs[70],
|
||||
"equals_string-cpu-arguments-slope"=> costs[71],
|
||||
"equals_string-mem-arguments"=> costs[72],
|
||||
"fst_pair-cpu-arguments"=> costs[73],
|
||||
"fst_pair-mem-arguments"=> costs[74],
|
||||
"head_list-cpu-arguments"=> costs[75],
|
||||
"head_list-mem-arguments"=> costs[76],
|
||||
"i_data-cpu-arguments"=> costs[77],
|
||||
"i_data-mem-arguments"=> costs[78],
|
||||
"if_then_else-cpu-arguments"=> costs[79],
|
||||
"if_then_else-mem-arguments"=> costs[80],
|
||||
"index_byte_string-cpu-arguments"=> costs[81],
|
||||
"index_byte_string-mem-arguments"=> costs[82],
|
||||
"length_of_byte_string-cpu-arguments"=> costs[83],
|
||||
"length_of_byte_string-mem-arguments"=> costs[84],
|
||||
"less_than_byte_string-cpu-arguments-intercept"=> costs[85],
|
||||
"less_than_byte_string-cpu-arguments-slope"=> costs[86],
|
||||
"less_than_byte_string-mem-arguments"=> costs[87],
|
||||
"less_than_equals_byte_string-cpu-arguments-intercept"=> costs[88],
|
||||
"less_than_equals_byte_string-cpu-arguments-slope"=> costs[89],
|
||||
"less_than_equals_byte_string-mem-arguments"=> costs[90],
|
||||
"less_than_equals_integer-cpu-arguments-intercept"=> costs[91],
|
||||
"less_than_equals_integer-cpu-arguments-slope"=> costs[92],
|
||||
"less_than_equals_integer-mem-arguments"=> costs[93],
|
||||
"less_than_integer-cpu-arguments-intercept"=> costs[94],
|
||||
"less_than_integer-cpu-arguments-slope"=> costs[95],
|
||||
"less_than_integer-mem-arguments"=> costs[96],
|
||||
"list_data-cpu-arguments"=> costs[97],
|
||||
"list_data-mem-arguments"=> costs[98],
|
||||
"map_data-cpu-arguments"=> costs[99],
|
||||
"map_data-mem-arguments"=> costs[100],
|
||||
"mk_cons-cpu-arguments"=> costs[101],
|
||||
"mk_cons-mem-arguments"=> costs[102],
|
||||
"mk_nil_data-cpu-arguments"=> costs[103],
|
||||
"mk_nil_data-mem-arguments"=> costs[104],
|
||||
"mk_nil_pair_data-cpu-arguments"=> costs[105],
|
||||
"mk_nil_pair_data-mem-arguments"=> costs[106],
|
||||
"mk_pair_data-cpu-arguments"=> costs[107],
|
||||
"mk_pair_data-mem-arguments"=> costs[108],
|
||||
"mod_integer-cpu-arguments-constant"=> costs[109],
|
||||
"mod_integer-cpu-arguments-model-arguments-intercept"=> costs[110],
|
||||
"mod_integer-cpu-arguments-model-arguments-slope"=> costs[111],
|
||||
"mod_integer-mem-arguments-intercept"=> costs[112],
|
||||
"mod_integer-mem-arguments-minimum"=> costs[113],
|
||||
"mod_integer-mem-arguments-slope"=> costs[114],
|
||||
"multiply_integer-cpu-arguments-intercept"=> costs[115],
|
||||
"multiply_integer-cpu-arguments-slope"=> costs[116],
|
||||
"multiply_integer-mem-arguments-intercept"=> costs[117],
|
||||
"multiply_integer-mem-arguments-slope"=> costs[118],
|
||||
"null_list-cpu-arguments"=> costs[119],
|
||||
"null_list-mem-arguments"=> costs[120],
|
||||
"quotient_integer-cpu-arguments-constant"=> costs[121],
|
||||
"quotient_integer-cpu-arguments-model-arguments-intercept"=> costs[122],
|
||||
"quotient_integer-cpu-arguments-model-arguments-slope"=> costs[123],
|
||||
"quotient_integer-mem-arguments-intercept"=> costs[124],
|
||||
"quotient_integer-mem-arguments-minimum"=> costs[125],
|
||||
"quotient_integer-mem-arguments-slope"=> costs[126],
|
||||
"remainder_integer-cpu-arguments-constant"=> costs[127],
|
||||
"remainder_integer-cpu-arguments-model-arguments-intercept"=> costs[128],
|
||||
"remainder_integer-cpu-arguments-model-arguments-slope"=> costs[129],
|
||||
"remainder_integer-mem-arguments-intercept"=> costs[130],
|
||||
"remainder_integer-mem-arguments-minimum"=> costs[131],
|
||||
"remainder_integer-mem-arguments-slope"=> costs[132],
|
||||
"serialise_data-cpu-arguments-intercept"=> costs[133],
|
||||
"serialise_data-cpu-arguments-slope"=> costs[134],
|
||||
"serialise_data-mem-arguments-intercept"=> costs[135],
|
||||
"serialise_data-mem-arguments-slope"=> costs[136],
|
||||
"sha2_256-cpu-arguments-intercept"=> costs[137],
|
||||
"sha2_256-cpu-arguments-slope"=> costs[138],
|
||||
"sha2_256-mem-arguments"=> costs[139],
|
||||
"sha3_256-cpu-arguments-intercept"=> costs[140],
|
||||
"sha3_256-cpu-arguments-slope"=> costs[141],
|
||||
"sha3_256-mem-arguments"=> costs[142],
|
||||
"slice_byte_string-cpu-arguments-intercept"=> costs[143],
|
||||
"slice_byte_string-cpu-arguments-slope"=> costs[144],
|
||||
"slice_byte_string-mem-arguments-intercept"=> costs[145],
|
||||
"slice_byte_string-mem-arguments-slope"=> costs[146],
|
||||
"snd_pair-cpu-arguments"=> costs[147],
|
||||
"snd_pair-mem-arguments"=> costs[148],
|
||||
"subtract_integer-cpu-arguments-intercept"=> costs[149],
|
||||
"subtract_integer-cpu-arguments-slope"=> costs[150],
|
||||
"subtract_integer-mem-arguments-intercept"=> costs[151],
|
||||
"subtract_integer-mem-arguments-slope"=> costs[152],
|
||||
"tail_list-cpu-arguments"=> costs[153],
|
||||
"tail_list-mem-arguments"=> costs[154],
|
||||
"trace-cpu-arguments"=> costs[155],
|
||||
"trace-mem-arguments"=> costs[156],
|
||||
"un_b_data-cpu-arguments"=> costs[157],
|
||||
"un_b_data-mem-arguments"=> costs[158],
|
||||
"un_constr_data-cpu-arguments"=> costs[159],
|
||||
"un_constr_data-mem-arguments"=> costs[160],
|
||||
"un_i_data-cpu-arguments"=> costs[161],
|
||||
"un_i_data-mem-arguments"=> costs[162],
|
||||
"un_list_data-cpu-arguments"=> costs[163],
|
||||
"un_list_data-mem-arguments"=> costs[164],
|
||||
"un_map_data-cpu-arguments"=> costs[165],
|
||||
"un_map_data-mem-arguments"=> costs[166],
|
||||
"verify_ecdsa_secp256k1_signature-cpu-arguments"=> costs[167],
|
||||
"verify_ecdsa_secp256k1_signature-mem-arguments"=> costs[168],
|
||||
"verify_ed25519_signature-cpu-arguments-intercept"=> costs[169],
|
||||
"verify_ed25519_signature-cpu-arguments-slope"=> costs[170],
|
||||
"verify_ed25519_signature-mem-arguments"=> costs[171],
|
||||
"verify_schnorr_secp256k1_signature-cpu-arguments-intercept"=> costs[172],
|
||||
"verify_schnorr_secp256k1_signature-cpu-arguments-slope"=> costs[173],
|
||||
"verify_schnorr_secp256k1_signature-mem-arguments"=> costs[174]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
CostModel {
|
||||
machine_costs: MachineCosts {
|
||||
startup: ExBudget {
|
||||
|
||||
@@ -4,7 +4,7 @@ use num_bigint::BigInt;
|
||||
use num_integer::Integer;
|
||||
use num_traits::{Signed, Zero};
|
||||
use once_cell::sync::Lazy;
|
||||
use pallas::ledger::primitives::babbage::{Language, PlutusData};
|
||||
use pallas::ledger::primitives::conway::{Language, PlutusData};
|
||||
|
||||
use crate::{
|
||||
ast::{Constant, Data, Type},
|
||||
|
||||
@@ -9,15 +9,17 @@ use pallas::{
|
||||
ledger::{
|
||||
addresses::{Address, ScriptHash, StakePayload},
|
||||
primitives::babbage::{
|
||||
Certificate, CostMdls, DatumHash, DatumOption, ExUnits, Language, Mint, MintedTx,
|
||||
NativeScript, PlutusV1Script, PlutusV2Script, PolicyId, PseudoScript, Redeemer,
|
||||
RedeemerTag, RewardAccount, StakeCredential, TransactionInput, TransactionOutput,
|
||||
Value, Withdrawals,
|
||||
Certificate, CostMdls, DatumHash, DatumOption, ExUnits, Mint, MintedTx, NativeScript,
|
||||
PlutusV1Script, PlutusV2Script, PolicyId, PseudoScript, Redeemer, RedeemerTag,
|
||||
RewardAccount, StakeCredential, TransactionInput, TransactionOutput, Value,
|
||||
Withdrawals,
|
||||
},
|
||||
traverse::{ComputeHash, OriginalHash},
|
||||
},
|
||||
};
|
||||
|
||||
use pallas::ledger::primitives::conway::Language;
|
||||
|
||||
use std::{cmp::Ordering, collections::HashMap, convert::TryInto, ops::Deref, vec};
|
||||
|
||||
use super::{
|
||||
@@ -761,7 +763,7 @@ pub fn eval_redeemer(
|
||||
|
||||
program.eval_as(&Language::PlutusV1, costs, Some(initial_budget))
|
||||
} else {
|
||||
program.eval_version(&Language::PlutusV1)
|
||||
program.eval_version(ExBudget::default(), &Language::PlutusV1)
|
||||
};
|
||||
|
||||
let cost = eval_result.cost();
|
||||
@@ -861,7 +863,7 @@ pub fn eval_redeemer(
|
||||
|
||||
program.eval_as(&Language::PlutusV1, costs, Some(initial_budget))
|
||||
} else {
|
||||
program.eval_version(&Language::PlutusV1)
|
||||
program.eval_version(ExBudget::default(), &Language::PlutusV1)
|
||||
};
|
||||
|
||||
let cost = eval_result.cost();
|
||||
|
||||
Reference in New Issue
Block a user