Align output of tx simulate with other Aiken's commands.
And also return a structured output as JSON, so it's more easily used
by other tools.
```
Parsing script context
Simulating 78ec148ea647cf9969446891af31939c5d57b275a2455706782c6183ef0b62f1
Redeemer Spend → 0
{"mem":151993,"cpu":58180696}
```
This commit is contained in:
@@ -18,7 +18,7 @@ macro_rules! hashmap {
|
||||
}
|
||||
|
||||
/// Can be negative
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Copy)]
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Copy, serde::Serialize)]
|
||||
pub struct ExBudget {
|
||||
pub mem: i64,
|
||||
pub cpu: i64,
|
||||
|
||||
@@ -35,6 +35,7 @@ pub fn eval_phase_two(
|
||||
initial_budget: Option<&ExBudget>,
|
||||
slot_config: &SlotConfig,
|
||||
run_phase_one: bool,
|
||||
with_redeemer: fn(&Redeemer) -> (),
|
||||
) -> Result<Vec<Redeemer>, Error> {
|
||||
let redeemers = tx.transaction_witness_set.redeemer.as_ref();
|
||||
|
||||
@@ -52,6 +53,8 @@ pub fn eval_phase_two(
|
||||
let mut remaining_budget = *initial_budget.unwrap_or(&ExBudget::default());
|
||||
|
||||
for redeemer in rs.iter() {
|
||||
with_redeemer(redeemer);
|
||||
|
||||
let redeemer = eval::eval_redeemer(
|
||||
tx,
|
||||
utxos,
|
||||
@@ -87,6 +90,7 @@ pub fn eval_phase_two_raw(
|
||||
initial_budget: (u64, u64),
|
||||
slot_config: (u64, u64, u32),
|
||||
run_phase_one: bool,
|
||||
with_redeemer: fn(&Redeemer) -> (),
|
||||
) -> Result<Vec<Vec<u8>>, Error> {
|
||||
let multi_era_tx = MultiEraTx::decode(Era::Babbage, tx_bytes)
|
||||
.or_else(|_| MultiEraTx::decode(Era::Alonzo, tx_bytes))?;
|
||||
@@ -122,6 +126,7 @@ pub fn eval_phase_two_raw(
|
||||
Some(&budget),
|
||||
&sc,
|
||||
run_phase_one,
|
||||
with_redeemer,
|
||||
) {
|
||||
Ok(redeemers) => Ok(redeemers
|
||||
.iter()
|
||||
|
||||
@@ -246,6 +246,7 @@ fn test_eval() {
|
||||
Some(&initial_budget),
|
||||
&slot_config,
|
||||
false,
|
||||
|_| (),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@@ -516,6 +517,7 @@ fn test_eval_1() {
|
||||
Some(&initial_budget),
|
||||
&slot_config,
|
||||
false,
|
||||
|_| (),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@@ -621,6 +623,7 @@ fn test_eval_2() {
|
||||
Some(&initial_budget),
|
||||
&slot_config,
|
||||
false,
|
||||
|_| (),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@@ -885,6 +888,7 @@ fn test_eval_3() {
|
||||
Some(&initial_budget),
|
||||
&slot_config,
|
||||
false,
|
||||
|_| (),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@@ -987,6 +991,7 @@ fn test_eval_4() {
|
||||
Some(&initial_budget),
|
||||
&slot_config,
|
||||
false,
|
||||
|_| (),
|
||||
)
|
||||
.is_err());
|
||||
}
|
||||
@@ -1069,6 +1074,7 @@ fn test_eval_5() {
|
||||
Some(&initial_budget),
|
||||
&slot_config,
|
||||
false,
|
||||
|_| (),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@@ -1173,6 +1179,7 @@ fn test_eval_6() {
|
||||
Some(&initial_budget),
|
||||
&slot_config,
|
||||
false,
|
||||
|_| (),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@@ -1277,6 +1284,7 @@ fn test_eval_7() {
|
||||
Some(&initial_budget),
|
||||
&slot_config,
|
||||
false,
|
||||
|_| (),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@@ -1532,6 +1540,7 @@ fn test_eval_8() {
|
||||
Some(&initial_budget),
|
||||
&slot_config,
|
||||
false,
|
||||
|_| (),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
@@ -1632,6 +1641,7 @@ fn eval_missing_redeemer() {
|
||||
Some(&initial_budget),
|
||||
&slot_config,
|
||||
false,
|
||||
|_| (),
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
@@ -1711,6 +1721,7 @@ fn eval_extraneous_redeemer() {
|
||||
Some(&initial_budget),
|
||||
&slot_config,
|
||||
false,
|
||||
|_| (),
|
||||
)
|
||||
.is_err());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user