expose tx simulation with simulate cli command

This commit is contained in:
Kasey White
2022-09-16 04:35:20 -04:00
parent 3f27bd9f13
commit 02a8a34fe8
7 changed files with 44 additions and 41 deletions

View File

@@ -2,9 +2,9 @@ use pallas_primitives::babbage::{MintedTx, Redeemer};
use self::script_context::{ResolvedInput, SlotConfig};
mod script_context;
mod eval;
pub mod script_context;
mod to_plutus_data;
mod utils;
pub fn eval_tx(
tx: &MintedTx,
@@ -14,13 +14,13 @@ pub fn eval_tx(
) -> anyhow::Result<Vec<Redeemer>> {
let redeemers = tx.transaction_witness_set.redeemer.as_ref();
let lookup_table = utils::get_script_and_datum_lookup_table(tx, utxos);
let lookup_table = eval::get_script_and_datum_lookup_table(tx, utxos);
match redeemers {
Some(rs) => {
let mut collected_redeemers = vec![];
for redeemer in rs.iter() {
collected_redeemers.push(utils::eval_redeemer(
collected_redeemers.push(eval::eval_redeemer(
tx,
utxos,
slot_config,

View File

@@ -7,9 +7,9 @@ use pallas_addresses::{Address, ScriptHash, StakePayload};
use pallas_codec::utils::{KeyValuePairs, MaybeIndefArray};
use pallas_crypto::hash::Hash;
use pallas_primitives::babbage::{
Certificate, DatumHash, DatumOption, ExUnits, Mint, MintedTx,
PlutusV1Script, PlutusV2Script, PolicyId, Redeemer, RedeemerTag, RewardAccount, Script,
StakeCredential, TransactionInput, TransactionOutput, Value, Withdrawals,
Certificate, DatumHash, DatumOption, ExUnits, Mint, MintedTx, PlutusV1Script, PlutusV2Script,
PolicyId, Redeemer, RedeemerTag, RewardAccount, Script, StakeCredential, TransactionInput,
TransactionOutput, Value, Withdrawals,
};
use pallas_traverse::{ComputeHash, OriginalHash};
use std::{collections::HashMap, convert::TryInto, ops::Deref, vec};
@@ -712,4 +712,3 @@ pub fn eval_redeemer(
},
}
}

View File

@@ -4,8 +4,9 @@ use pallas_primitives::babbage::{
AddrKeyhash, Certificate, Coin, DatumHash, Mint, PlutusData, PolicyId, Redeemer, RewardAccount,
StakeCredential, TransactionInput, TransactionOutput, Value, Withdrawals,
};
use serde::Deserialize;
#[derive(Debug, PartialEq, Clone)]
#[derive(Debug, PartialEq, Clone, Deserialize)]
pub struct ResolvedInput {
pub input: TransactionInput,
pub output: TransactionOutput,
@@ -83,3 +84,12 @@ pub struct SlotConfig {
pub slot_length: u64,
pub zero_time: u64,
}
impl Default for SlotConfig {
fn default() -> Self {
Self {
slot_length: 1000,
zero_time: 1596491091,
}
}
}