added more tests
This commit is contained in:
parent
f12540d8e2
commit
21d71e94b3
|
@ -583,6 +583,412 @@ fn test_eval_2() {
|
|||
};
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_eval_3() {
|
||||
/*
|
||||
|
||||
Plutus V2
|
||||
|
||||
{-# INLINEABLE mintTestValidator #-}
|
||||
mintTestValidator :: () -> Api.ScriptContext -> Bool
|
||||
mintTestValidator _ ctx = True
|
||||
*/
|
||||
|
||||
let tx_bytes = hex::decode("84a80081825820275b5da338c8b899035081eb34bfa950b634911a5dd3271b3ad6cf4c2bba0c50010182825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a00111958a1581c74184f56338d719f7888d9719ff0c8a9d9550c0f46165e09831cdba9a1400a825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d51a029d7d51021a0004ba2809a1581c74184f56338d719f7888d9719ff0c8a9d9550c0f46165e09831cdba9a1400a0b5820901a846f82e9b756b94686bc56109ca62e7724cbb99091b0b971bcb1c8ce98530d81825820275b5da338c8b899035081eb34bfa950b634911a5dd3271b3ad6cf4c2bba0c500110825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d51a02ac3995111a0007173ca30081825820065dd553fbe4e240a8f819bb9e333a7483de4a22b65c7fb6a95ce9450f84dff7584063f5dd2edfd43a5c0fc066d0230e5a5ba4b201bc75b22f94bfa5344c0ff9cd08c0018b5cc0f0e34cd2ab4e8c59954834330ba63a1b875c0cb3b5fd1ac68db4060581840100d87980821a0008e6681a0ae626b7068159078259077f0100003232323232323232323232323232332232323232322232325335332201a3333573466e1cd55ce9baa00448000805c8c98c805ccd5ce00c00b80a9999ab9a3370e6aae7540092000233221233001003002323232323232323232323232323333573466e1cd55cea8062400046666666666664444444444442466666666666600201a01801601401201000e00c00a00800600466a02802a6ae854030cd4050054d5d0a80599a80a00b1aba1500a3335501875ca02e6ae854024ccd54061d7280b9aba1500833501401f35742a00e666aa030040eb4d5d0a8031919191999ab9a3370e6aae75400920002332212330010030023232323333573466e1cd55cea8012400046644246600200600466a054eb4d5d0a80118159aba135744a004464c6405a66ae700b80b40ac4d55cf280089baa00135742a0046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40a9d69aba15002302b357426ae8940088c98c80b4cd5ce01701681589aab9e5001137540026ae84d5d1280111931901499ab9c02a029027135573ca00226ea8004d5d0a80299a80a3ae35742a008666aa03003840026ae85400cccd54061d710009aba15002301e357426ae8940088c98c8094cd5ce01301281189aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba15002300e357426ae8940088c98c805ccd5ce00c00b80a880b09931900b19ab9c4910350543500016135573ca00226ea800448c88c008dd6000990009aa80a911999aab9f0012500a233500930043574200460066ae880080508c8c8cccd5cd19b8735573aa004900011991091980080180118061aba150023005357426ae8940088c98c8050cd5ce00a80a00909aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180a9aba1500233500f014357426ae8940088c98c8064cd5ce00d00c80b89aab9e5001137540026ae854010ccd54021d728039aba150033232323333573466e1d4005200423212223002004357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403666ae7007006c06406005c4d55cea80089baa00135742a00466a016eb8d5d09aba2500223263201533573802c02a02626ae8940044d5d1280089aab9e500113754002266aa002eb9d6889119118011bab00132001355012223233335573e0044a010466a00e66442466002006004600c6aae754008c014d55cf280118021aba200301213574200222440042442446600200800624464646666ae68cdc3a800a40004642446004006600a6ae84d55cf280191999ab9a3370ea0049001109100091931900819ab9c01101000e00d135573aa00226ea80048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01101000e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00d00c00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00580500409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00a00980880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae700340300280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801401200e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7002c02802001c0184d55cea80089baa0012323333573466e1d40052002200723333573466e1d40092000212200123263200633573800e00c00800626aae74dd5000a4c2400292010350543100122002112323001001223300330020020011f5f6").unwrap();
|
||||
|
||||
let raw_inputs = hex::decode("8682582075a419179618ca358554fc47aeb33b6c93d12ba8f752495a4e5ef6ea0a1a099a03825820b810e77e706ccaebf7284f6c3d41e2a1eb4af5fabae452618f4175ad1b2aaded03825820975c17a4fed0051be622328efa548e206657d2b65a19224bf6ff8132571e6a50038258207453531a00f98db47c8c2b05e5c38f2c40a0be4f91d42d835bc3bc998b612a8e00825820452b2fc0d170323f86ad1e5b761dcae912774c42c1b1af4de2905a094f2f541403825820275b5da338c8b899035081eb34bfa950b634911a5dd3271b3ad6cf4c2bba0c5001").unwrap();
|
||||
let raw_outputs = hex::decode("86825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a00412c6aad581c01dd79d464e2446231d662c9422445c4cf709b691baceb8b040a34d4a14d28323232294d6174726978363701581c11638d4d600d32b2849c93314e7e6bc656fded924f30514749e1eb3ea64c28323232294d617472697830014c28323232294d617472697831014d28323232294d61747269783133014d28323232294d61747269783330014d28323232294d61747269783534014d28323232294d6174726978383601581c1e60ac8228a21f6e3685c73970584aa54504a0476c4b66f3ef5c4dd2a14c28323232294d61747269783001581c25da1064122988292665c14259ea26cb4dd96d7f04535125fea248ffa14c28323232294d61747269783001581c46214283f4b5cc5d66836a4fe743e121190f1e5b91448a1b52f1b7bfa14d28323232294d6174726978313801581c4788a484721270845917e0986ab55b51922a46b514eb7a1f871e917ca14d28323232294d6174726978323101581c6ed9951ddcd79c98bc50142ba033890815330d4de1cb4c96870a234ca24c28323232294d617472697830014c28323232294d61747269783101581c6f7fd77c85b9856bdb1cfac1afa90c65d92c3c5e2fcca4a993e7fb52a14d28323232294d6174726978323401581ca07afd05db7f0ccb144052935be97b48593e5c8435f9eb859191de81a34c28323232294d617472697830014c28323232294d617472697831014d28323232294d6174726978323101581ca5ca38805c14270ec4c3c1c2446b28a95324054fac98066c5e82a016a14d28323232294d6174726978313901581ca65e6e94d1a260dbc6c4d9319b45585fa54b83742a33a2c599df56b9a2494265727279436f616c014c426572727954616e67656c6f01581cb3e2625ebd6bd613ce904db9fedb0565eec0671054d30d08bc5edadda44c28323232294d617472697835014d28323232294d61747269783237014d28323232294d61747269783430014d28323232294d6174726978343701581ce3ef435a5910f74d890b2a7cb0d1f7288efc22c75823d57acdab9f52a14d28323232294d6174726978363101825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a0011f436a1581c11638d4d600d32b2849c93314e7e6bc656fded924f30514749e1eb3ea14d28323232294d6174726978363801825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a0011f436a1581c11638d4d600d32b2849c93314e7e6bc656fded924f30514749e1eb3ea14d28323232294d6174726978343101825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a0012378ea1581c2c04f7a15aec58b2bec5dab3d201f3e3898370b98d2f01d4ac8bc270a14d28323232294d6174726978323801825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a0011f436a1581c11638d4d600d32b2849c93314e7e6bc656fded924f30514749e1eb3ea14d28323232294d6174726978323101825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d51a02b350d1").unwrap();
|
||||
|
||||
let inputs = MaybeIndefArray::<TransactionInput>::decode_fragment(&raw_inputs).unwrap();
|
||||
let outputs = MaybeIndefArray::<TransactionOutput>::decode_fragment(&raw_outputs).unwrap();
|
||||
|
||||
let utxos: MaybeIndefArray<ResolvedInput> = MaybeIndefArray::Indef(
|
||||
inputs
|
||||
.iter()
|
||||
.zip(outputs.iter())
|
||||
.map(|(input, output)| ResolvedInput {
|
||||
input: input.clone(),
|
||||
output: output.clone(),
|
||||
})
|
||||
.collect(),
|
||||
);
|
||||
|
||||
let slot_config = SlotConfig {
|
||||
zero_time: 1660003200000, // Preview network
|
||||
slot_length: 1000,
|
||||
};
|
||||
|
||||
let costs: Vec<i64> = 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,
|
||||
];
|
||||
|
||||
let cost_mdl = CostMdls {
|
||||
plutus_v1: None,
|
||||
plutus_v2: Some(costs),
|
||||
};
|
||||
|
||||
let initial_budget = ExBudget {
|
||||
cpu: 10000000000,
|
||||
mem: 14000000,
|
||||
};
|
||||
|
||||
let multi_era_tx = MultiEraTx::decode(Era::Babbage, &tx_bytes)
|
||||
.or_else(|_| MultiEraTx::decode(Era::Alonzo, &tx_bytes))
|
||||
.unwrap();
|
||||
match multi_era_tx {
|
||||
MultiEraTx::Babbage(tx) => {
|
||||
let redeemers = eval_phase_two(
|
||||
&tx,
|
||||
&utxos,
|
||||
Some(&cost_mdl),
|
||||
Some(&initial_budget),
|
||||
&slot_config,
|
||||
false,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
println!("{:?}", redeemers.len());
|
||||
}
|
||||
_ => unreachable!(),
|
||||
};
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_eval_4() {
|
||||
/*
|
||||
|
||||
Plutus V1
|
||||
|
||||
Helios script:
|
||||
|
||||
func main() Bool {
|
||||
true
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
let tx_bytes = hex::decode("84a80081825820275b5da338c8b899035081eb34bfa950b634911a5dd3271b3ad6cf4c2bba0c50010182825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a00111958a1581cdae5a9bdfbdd28831245f80ba10e4717f2975e5d684a3551f3e4fb99a1400a825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d51a029f7b29021a0002bc5009a1581cdae5a9bdfbdd28831245f80ba10e4717f2975e5d684a3551f3e4fb99a1400a0b58205013dbe72526511f63b0c4a235fbbc5d09d11d42f310113aaab1a28e01e0bde60d81825820275b5da338c8b899035081eb34bfa950b634911a5dd3271b3ad6cf4c2bba0c500110825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d51a02af3659111a00041a78a30081825820065dd553fbe4e240a8f819bb9e333a7483de4a22b65c7fb6a95ce9450f84dff758401679b607eabef3dbbc9ac0abb03afb3a979ea32243bb5b99e299290d709bb4a6c2aa528c447c2db610a103cc9c0e7c018caa4fc8322d8ec217620e6d4bc2ef0b03815453010000322233335734600693124c4c931251010581840100d87980821909611a00094d78f5f6").unwrap();
|
||||
|
||||
let raw_inputs = hex::decode("8682582075a419179618ca358554fc47aeb33b6c93d12ba8f752495a4e5ef6ea0a1a099a03825820b810e77e706ccaebf7284f6c3d41e2a1eb4af5fabae452618f4175ad1b2aaded03825820975c17a4fed0051be622328efa548e206657d2b65a19224bf6ff8132571e6a50038258207453531a00f98db47c8c2b05e5c38f2c40a0be4f91d42d835bc3bc998b612a8e00825820452b2fc0d170323f86ad1e5b761dcae912774c42c1b1af4de2905a094f2f541403825820275b5da338c8b899035081eb34bfa950b634911a5dd3271b3ad6cf4c2bba0c5001").unwrap();
|
||||
let raw_outputs = hex::decode("86825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a00412c6aad581c01dd79d464e2446231d662c9422445c4cf709b691baceb8b040a34d4a14d28323232294d6174726978363701581c11638d4d600d32b2849c93314e7e6bc656fded924f30514749e1eb3ea64c28323232294d617472697830014c28323232294d617472697831014d28323232294d61747269783133014d28323232294d61747269783330014d28323232294d61747269783534014d28323232294d6174726978383601581c1e60ac8228a21f6e3685c73970584aa54504a0476c4b66f3ef5c4dd2a14c28323232294d61747269783001581c25da1064122988292665c14259ea26cb4dd96d7f04535125fea248ffa14c28323232294d61747269783001581c46214283f4b5cc5d66836a4fe743e121190f1e5b91448a1b52f1b7bfa14d28323232294d6174726978313801581c4788a484721270845917e0986ab55b51922a46b514eb7a1f871e917ca14d28323232294d6174726978323101581c6ed9951ddcd79c98bc50142ba033890815330d4de1cb4c96870a234ca24c28323232294d617472697830014c28323232294d61747269783101581c6f7fd77c85b9856bdb1cfac1afa90c65d92c3c5e2fcca4a993e7fb52a14d28323232294d6174726978323401581ca07afd05db7f0ccb144052935be97b48593e5c8435f9eb859191de81a34c28323232294d617472697830014c28323232294d617472697831014d28323232294d6174726978323101581ca5ca38805c14270ec4c3c1c2446b28a95324054fac98066c5e82a016a14d28323232294d6174726978313901581ca65e6e94d1a260dbc6c4d9319b45585fa54b83742a33a2c599df56b9a2494265727279436f616c014c426572727954616e67656c6f01581cb3e2625ebd6bd613ce904db9fedb0565eec0671054d30d08bc5edadda44c28323232294d617472697835014d28323232294d61747269783237014d28323232294d61747269783430014d28323232294d6174726978343701581ce3ef435a5910f74d890b2a7cb0d1f7288efc22c75823d57acdab9f52a14d28323232294d6174726978363101825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a0011f436a1581c11638d4d600d32b2849c93314e7e6bc656fded924f30514749e1eb3ea14d28323232294d6174726978363801825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a0011f436a1581c11638d4d600d32b2849c93314e7e6bc656fded924f30514749e1eb3ea14d28323232294d6174726978343101825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a0012378ea1581c2c04f7a15aec58b2bec5dab3d201f3e3898370b98d2f01d4ac8bc270a14d28323232294d6174726978323801825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a0011f436a1581c11638d4d600d32b2849c93314e7e6bc656fded924f30514749e1eb3ea14d28323232294d6174726978323101825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d51a02b350d1").unwrap();
|
||||
|
||||
let inputs = MaybeIndefArray::<TransactionInput>::decode_fragment(&raw_inputs).unwrap();
|
||||
let outputs = MaybeIndefArray::<TransactionOutput>::decode_fragment(&raw_outputs).unwrap();
|
||||
|
||||
let utxos: MaybeIndefArray<ResolvedInput> = MaybeIndefArray::Indef(
|
||||
inputs
|
||||
.iter()
|
||||
.zip(outputs.iter())
|
||||
.map(|(input, output)| ResolvedInput {
|
||||
input: input.clone(),
|
||||
output: output.clone(),
|
||||
})
|
||||
.collect(),
|
||||
);
|
||||
|
||||
let slot_config = SlotConfig {
|
||||
zero_time: 1660003200000, // Preview network
|
||||
slot_length: 1000,
|
||||
};
|
||||
|
||||
let costs: Vec<i64> = 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,
|
||||
];
|
||||
|
||||
let cost_mdl = CostMdls {
|
||||
plutus_v1: Some(costs),
|
||||
plutus_v2: None,
|
||||
};
|
||||
|
||||
let initial_budget = ExBudget {
|
||||
cpu: 10000000000,
|
||||
mem: 14000000,
|
||||
};
|
||||
|
||||
let multi_era_tx = MultiEraTx::decode(Era::Babbage, &tx_bytes)
|
||||
.or_else(|_| MultiEraTx::decode(Era::Alonzo, &tx_bytes))
|
||||
.unwrap();
|
||||
match multi_era_tx {
|
||||
MultiEraTx::Babbage(tx) => {
|
||||
let redeemers = eval_phase_two(
|
||||
&tx,
|
||||
&utxos,
|
||||
Some(&cost_mdl),
|
||||
Some(&initial_budget),
|
||||
&slot_config,
|
||||
false,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
println!("{:?}", redeemers.len());
|
||||
}
|
||||
_ => unreachable!(),
|
||||
};
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_eval_5() {
|
||||
/*
|
||||
|
||||
Plutus V1
|
||||
|
||||
Helios script:
|
||||
|
||||
func main(ctx: ScriptContext) -> Bool {ctx.tx.fee == ctx.tx.fee}
|
||||
|
||||
*/
|
||||
|
||||
let tx_bytes = hex::decode("84a80081825820275b5da338c8b899035081eb34bfa950b634911a5dd3271b3ad6cf4c2bba0c50010182825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a00111958a1581cd1f4c65937e3c25d4f229b12b79a68f22e500c312b4c2e6977ffe443a1400a825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d51a029ef827021a00033f5209a1581cd1f4c65937e3c25d4f229b12b79a68f22e500c312b4c2e6977ffe443a1400a0b5820bdbcad5d5d3667646455252dcc5a255ce7162a9792be84ea48635b4645b962480d81825820275b5da338c8b899035081eb34bfa950b634911a5dd3271b3ad6cf4c2bba0c500110825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d51a02ae71d6111a0004defba30081825820065dd553fbe4e240a8f819bb9e333a7483de4a22b65c7fb6a95ce9450f84dff7584060b43793ced32fb8128ad53e0710f7f4191410548a0d6bd80454b6988fbb0ae58e5f0c942b8bbf4cbfe79aeae36156690a289096cff034c31c13d083a096420803815902375902340100003232323232323232323232323232323232323232223333573460060024931324c466012600860040026008600400200246ae84c0180040048d5d0980100091aba23002001235744600400246aae78dd5000911998019119b87002001002001222332232330010013300b00300222333357346ae8c0049289191999ab9a300d33300b0093300a0060013300a00500124a046600a00a6ae880112635742004931bab0023756002446466002002006446666ae68d5d180091bb24988cccd5cd19baf35573a6ae840080108dd59aab9e357420064660080086ae8800d26498888c8cc004004cc01c00c00888cccd5cd1aba300124a24646666ae68c024cc01ccc020018004cc0200140049281198028029aba2004498d5d080124c44646660020020060044446666ae68d5d180112400046666ae68cdd79aab9d3574200600446eb4d55cf1aba10042333005005357440080069324c4666ae6800528251223232323300a003001333001001002003222333357346ae8c004802c8c8cccd5cd1980500300091998030030029aba2004233574000466600c00c00a6ae880112635573a6ae840092630030022323300100100222333357346ae8c004801c8cd5d01aab9d35742004660060066ae8800926223300300223375e00200444646660020020060044446666ae68d5d1801125023333573460046ae8400c92891998028029aba20040034992637629311191998008008010019111999ab9a357460024006466ae80d5d08011998020020019aba200249810581840100d87980821a0001bdce1a0263d96ff5f6").unwrap();
|
||||
|
||||
let raw_inputs = hex::decode("8682582075a419179618ca358554fc47aeb33b6c93d12ba8f752495a4e5ef6ea0a1a099a03825820b810e77e706ccaebf7284f6c3d41e2a1eb4af5fabae452618f4175ad1b2aaded03825820975c17a4fed0051be622328efa548e206657d2b65a19224bf6ff8132571e6a50038258207453531a00f98db47c8c2b05e5c38f2c40a0be4f91d42d835bc3bc998b612a8e00825820452b2fc0d170323f86ad1e5b761dcae912774c42c1b1af4de2905a094f2f541403825820275b5da338c8b899035081eb34bfa950b634911a5dd3271b3ad6cf4c2bba0c5001").unwrap();
|
||||
let raw_outputs = hex::decode("86825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a00412c6aad581c01dd79d464e2446231d662c9422445c4cf709b691baceb8b040a34d4a14d28323232294d6174726978363701581c11638d4d600d32b2849c93314e7e6bc656fded924f30514749e1eb3ea64c28323232294d617472697830014c28323232294d617472697831014d28323232294d61747269783133014d28323232294d61747269783330014d28323232294d61747269783534014d28323232294d6174726978383601581c1e60ac8228a21f6e3685c73970584aa54504a0476c4b66f3ef5c4dd2a14c28323232294d61747269783001581c25da1064122988292665c14259ea26cb4dd96d7f04535125fea248ffa14c28323232294d61747269783001581c46214283f4b5cc5d66836a4fe743e121190f1e5b91448a1b52f1b7bfa14d28323232294d6174726978313801581c4788a484721270845917e0986ab55b51922a46b514eb7a1f871e917ca14d28323232294d6174726978323101581c6ed9951ddcd79c98bc50142ba033890815330d4de1cb4c96870a234ca24c28323232294d617472697830014c28323232294d61747269783101581c6f7fd77c85b9856bdb1cfac1afa90c65d92c3c5e2fcca4a993e7fb52a14d28323232294d6174726978323401581ca07afd05db7f0ccb144052935be97b48593e5c8435f9eb859191de81a34c28323232294d617472697830014c28323232294d617472697831014d28323232294d6174726978323101581ca5ca38805c14270ec4c3c1c2446b28a95324054fac98066c5e82a016a14d28323232294d6174726978313901581ca65e6e94d1a260dbc6c4d9319b45585fa54b83742a33a2c599df56b9a2494265727279436f616c014c426572727954616e67656c6f01581cb3e2625ebd6bd613ce904db9fedb0565eec0671054d30d08bc5edadda44c28323232294d617472697835014d28323232294d61747269783237014d28323232294d61747269783430014d28323232294d6174726978343701581ce3ef435a5910f74d890b2a7cb0d1f7288efc22c75823d57acdab9f52a14d28323232294d6174726978363101825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a0011f436a1581c11638d4d600d32b2849c93314e7e6bc656fded924f30514749e1eb3ea14d28323232294d6174726978363801825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a0011f436a1581c11638d4d600d32b2849c93314e7e6bc656fded924f30514749e1eb3ea14d28323232294d6174726978343101825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a0012378ea1581c2c04f7a15aec58b2bec5dab3d201f3e3898370b98d2f01d4ac8bc270a14d28323232294d6174726978323801825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d5821a0011f436a1581c11638d4d600d32b2849c93314e7e6bc656fded924f30514749e1eb3ea14d28323232294d6174726978323101825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d51a02b350d1").unwrap();
|
||||
|
||||
let inputs = MaybeIndefArray::<TransactionInput>::decode_fragment(&raw_inputs).unwrap();
|
||||
let outputs = MaybeIndefArray::<TransactionOutput>::decode_fragment(&raw_outputs).unwrap();
|
||||
|
||||
let utxos: MaybeIndefArray<ResolvedInput> = MaybeIndefArray::Indef(
|
||||
inputs
|
||||
.iter()
|
||||
.zip(outputs.iter())
|
||||
.map(|(input, output)| ResolvedInput {
|
||||
input: input.clone(),
|
||||
output: output.clone(),
|
||||
})
|
||||
.collect(),
|
||||
);
|
||||
|
||||
let slot_config = SlotConfig {
|
||||
zero_time: 1660003200000, // Preview network
|
||||
slot_length: 1000,
|
||||
};
|
||||
|
||||
let costs: Vec<i64> = 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,
|
||||
];
|
||||
|
||||
let cost_mdl = CostMdls {
|
||||
plutus_v1: Some(costs),
|
||||
plutus_v2: None,
|
||||
};
|
||||
|
||||
let initial_budget = ExBudget {
|
||||
cpu: 10000000000,
|
||||
mem: 14000000,
|
||||
};
|
||||
|
||||
let multi_era_tx = MultiEraTx::decode(Era::Babbage, &tx_bytes)
|
||||
.or_else(|_| MultiEraTx::decode(Era::Alonzo, &tx_bytes))
|
||||
.unwrap();
|
||||
match multi_era_tx {
|
||||
MultiEraTx::Babbage(tx) => {
|
||||
let redeemers = eval_phase_two(
|
||||
&tx,
|
||||
&utxos,
|
||||
Some(&cost_mdl),
|
||||
Some(&initial_budget),
|
||||
&slot_config,
|
||||
false,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
println!("{:?}", redeemers.len());
|
||||
}
|
||||
_ => unreachable!(),
|
||||
};
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn eval_missing_redeemer() {
|
||||
let tx_bytes = hex::decode("84a30082825820275b5da338c8b899035081eb34bfa950b634911a5dd3271b3ad6cf4c2bba0c5000825820275b5da338c8b899035081eb34bfa950b634911a5dd3271b3ad6cf4c2bba0c50010181825839000af00cc47500bb64cfffb783e8c42f746b4e8b8a70ede9c08c7113acf3bde34d1041f5a2076ef9aa6cf4539ab1a96ed462a0300acbdb65d51a02cf47c8021a00028d89a1068149480100002221200101f5f6").unwrap();
|
||||
|
|
Loading…
Reference in New Issue