feat: Make traces produced by expect dependent on
the value of the tracing flag.
This commit is contained in:
		
							parent
							
								
									dbfa08a5a7
								
							
						
					
					
						commit
						db369da96e
					
				|  | @ -10,6 +10,8 @@ | |||
|   ``` | ||||
|   compare_with(a, >=, b) == compare_with(a, fn(l, r) { l >= r }, b) | ||||
|   ``` | ||||
| - **aiken-lang**: Make traces produced by expect dependent on the value of the | ||||
|   tracing flag. | ||||
| 
 | ||||
| ### Fixed | ||||
| 
 | ||||
|  |  | |||
|  | @ -1139,6 +1139,15 @@ impl From<bool> for Tracing { | |||
|     } | ||||
| } | ||||
| 
 | ||||
| impl From<Tracing> for bool { | ||||
|     fn from(value: Tracing) -> Self { | ||||
|         match value { | ||||
|             Tracing::NoTraces => false, | ||||
|             Tracing::KeepTraces => true, | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #[derive(Copy, Clone, PartialEq, Eq)] | ||||
| pub struct Span { | ||||
|     pub start: usize, | ||||
|  |  | |||
|  | @ -3,9 +3,7 @@ use std::{rc::Rc, sync::Arc}; | |||
| use indexmap::{IndexMap, IndexSet}; | ||||
| use itertools::Itertools; | ||||
| use uplc::{ | ||||
|     ast::{ | ||||
|         Constant as UplcConstant, DeBruijn, Name, NamedDeBruijn, Program, Term, Type as UplcType, | ||||
|     }, | ||||
|     ast::{Constant as UplcConstant, Name, NamedDeBruijn, Program, Term, Type as UplcType}, | ||||
|     builder::{CONSTR_FIELDS_EXPOSER, CONSTR_GET_FIELD, CONSTR_INDEX_EXPOSER, EXPECT_ON_LIST}, | ||||
|     builtins::DefaultFunction, | ||||
|     machine::cost_model::ExBudget, | ||||
|  | @ -59,7 +57,7 @@ pub struct CodeGenerator<'a> { | |||
|     needs_field_access: bool, | ||||
|     code_gen_functions: IndexMap<String, CodeGenFunction>, | ||||
|     zero_arg_functions: IndexMap<FunctionAccessKey, Vec<Air>>, | ||||
|     uplc_to_function: IndexMap<Program<DeBruijn>, FunctionAccessKey>, | ||||
|     tracing: bool, | ||||
| } | ||||
| 
 | ||||
| impl<'a> CodeGenerator<'a> { | ||||
|  | @ -67,6 +65,7 @@ impl<'a> CodeGenerator<'a> { | |||
|         functions: IndexMap<FunctionAccessKey, &'a TypedFunction>, | ||||
|         data_types: IndexMap<DataTypeKey, &'a TypedDataType>, | ||||
|         module_types: IndexMap<&'a String, &'a TypeInfo>, | ||||
|         tracing: bool, | ||||
|     ) -> Self { | ||||
|         CodeGenerator { | ||||
|             defined_functions: IndexMap::new(), | ||||
|  | @ -77,7 +76,7 @@ impl<'a> CodeGenerator<'a> { | |||
|             id_gen: IdGenerator::new().into(), | ||||
|             code_gen_functions: IndexMap::new(), | ||||
|             zero_arg_functions: IndexMap::new(), | ||||
|             uplc_to_function: IndexMap::new(), | ||||
|             tracing, | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | @ -87,7 +86,6 @@ impl<'a> CodeGenerator<'a> { | |||
|         self.id_gen = IdGenerator::new().into(); | ||||
|         self.needs_field_access = false; | ||||
|         self.defined_functions = IndexMap::new(); | ||||
|         self.uplc_to_function = IndexMap::new(); | ||||
|     } | ||||
| 
 | ||||
|     pub fn generate( | ||||
|  | @ -2624,9 +2622,11 @@ impl<'a> CodeGenerator<'a> { | |||
|                     ); | ||||
|                 } | ||||
| 
 | ||||
|                 if self.tracing { | ||||
|                     trace_stack.trace(tipo.clone()); | ||||
| 
 | ||||
|                     trace_stack.string("Constr index did not match any type variant"); | ||||
|                 } | ||||
| 
 | ||||
|                 trace_stack.error(tipo.clone()); | ||||
| 
 | ||||
|  | @ -4054,6 +4054,7 @@ impl<'a> CodeGenerator<'a> { | |||
|                     inner_types, | ||||
|                     check_last_item, | ||||
|                     true, | ||||
|                     self.tracing, | ||||
|                 ) | ||||
|                 .apply(value); | ||||
| 
 | ||||
|  | @ -4406,13 +4407,16 @@ impl<'a> CodeGenerator<'a> { | |||
| 
 | ||||
|                 let mut term = arg_stack.pop().unwrap(); | ||||
| 
 | ||||
|                 let error_term = | ||||
|                     Term::Error.trace(Term::string("Expected on incorrect constructor variant.")); | ||||
|                 let trace_term = if self.tracing { | ||||
|                     Term::Error.trace(Term::string("Expected on incorrect constructor variant.")) | ||||
|                 } else { | ||||
|                     Term::Error | ||||
|                 }; | ||||
| 
 | ||||
|                 term = Term::equals_integer() | ||||
|                     .apply(Term::integer(constr_index.into())) | ||||
|                     .apply(Term::var(CONSTR_INDEX_EXPOSER).apply(constr)) | ||||
|                     .delayed_if_else(term, error_term); | ||||
|                     .delayed_if_else(term, trace_term); | ||||
| 
 | ||||
|                 arg_stack.push(term); | ||||
|             } | ||||
|  | @ -4420,13 +4424,16 @@ impl<'a> CodeGenerator<'a> { | |||
|                 let value = arg_stack.pop().unwrap(); | ||||
|                 let mut term = arg_stack.pop().unwrap(); | ||||
| 
 | ||||
|                 let error_term = | ||||
|                     Term::Error.trace(Term::string("Expected on incorrect boolean variant")); | ||||
|                 let trace_term = if self.tracing { | ||||
|                     Term::Error.trace(Term::string("Expected on incorrect boolean variant")) | ||||
|                 } else { | ||||
|                     Term::Error | ||||
|                 }; | ||||
| 
 | ||||
|                 if is_true { | ||||
|                     term = value.delayed_if_else(term, error_term) | ||||
|                     term = value.delayed_if_else(term, trace_term) | ||||
|                 } else { | ||||
|                     term = value.delayed_if_else(error_term, term) | ||||
|                     term = value.delayed_if_else(trace_term, term) | ||||
|                 } | ||||
|                 arg_stack.push(term); | ||||
|             } | ||||
|  | @ -4747,6 +4754,7 @@ impl<'a> CodeGenerator<'a> { | |||
|                         inner_types, | ||||
|                         check_last_item, | ||||
|                         false, | ||||
|                         self.tracing, | ||||
|                     ) | ||||
|                 } else { | ||||
|                     term | ||||
|  | @ -4762,12 +4770,15 @@ impl<'a> CodeGenerator<'a> { | |||
|                 let value = arg_stack.pop().unwrap(); | ||||
|                 let mut term = arg_stack.pop().unwrap(); | ||||
| 
 | ||||
|                 let trace_term = if self.tracing { | ||||
|                     Term::Error.trace(Term::string("Expected no fields for Constr")) | ||||
|                 } else { | ||||
|                     Term::Error | ||||
|                 }; | ||||
| 
 | ||||
|                 term = Term::var(CONSTR_FIELDS_EXPOSER) | ||||
|                     .apply(value) | ||||
|                     .delayed_choose_list( | ||||
|                         term, | ||||
|                         Term::Error.trace(Term::string("Expected no fields for Constr")), | ||||
|                     ); | ||||
|                     .delayed_choose_list(term, trace_term); | ||||
| 
 | ||||
|                 arg_stack.push(term); | ||||
|             } | ||||
|  | @ -4775,10 +4786,13 @@ impl<'a> CodeGenerator<'a> { | |||
|                 let value = arg_stack.pop().unwrap(); | ||||
|                 let mut term = arg_stack.pop().unwrap(); | ||||
| 
 | ||||
|                 term = value.delayed_choose_list( | ||||
|                     term, | ||||
|                     Term::Error.trace(Term::string("Expected no items for List")), | ||||
|                 ); | ||||
|                 let trace_term = if self.tracing { | ||||
|                     Term::Error.trace(Term::string("Expected no items for List")) | ||||
|                 } else { | ||||
|                     Term::Error | ||||
|                 }; | ||||
| 
 | ||||
|                 term = value.delayed_choose_list(term, trace_term); | ||||
| 
 | ||||
|                 arg_stack.push(term); | ||||
|             } | ||||
|  | @ -5026,6 +5040,7 @@ impl<'a> CodeGenerator<'a> { | |||
|                         tipo.get_inner_types(), | ||||
|                         check_last_item, | ||||
|                         false, | ||||
|                         self.tracing, | ||||
|                     ) | ||||
|                     .apply(value); | ||||
|                 } | ||||
|  |  | |||
|  | @ -508,7 +508,16 @@ pub fn list_access_to_uplc( | |||
|     tipos: Vec<Arc<Type>>, | ||||
|     check_last_item: bool, | ||||
|     is_list_accessor: bool, | ||||
|     tracing: bool, | ||||
| ) -> Term<Name> { | ||||
|     let trace_term = if tracing { | ||||
|         Term::Error.trace(Term::string( | ||||
|             "List/Tuple/Constr contains more items than expected", | ||||
|         )) | ||||
|     } else { | ||||
|         Term::Error | ||||
|     }; | ||||
| 
 | ||||
|     if let Some((first, names)) = names.split_first() { | ||||
|         let (current_tipo, tipos) = tipos.split_first().unwrap(); | ||||
| 
 | ||||
|  | @ -567,12 +576,7 @@ pub fn list_access_to_uplc( | |||
|                             "tail_index_{}_{}", | ||||
|                             current_index, id_list[current_index] | ||||
|                         ))) | ||||
|                         .delayed_choose_list( | ||||
|                             term, | ||||
|                             Term::Error.trace(Term::string( | ||||
|                                 "List/Tuple/Constr contains more items than expected", | ||||
|                             )), | ||||
|                         ) | ||||
|                         .delayed_choose_list(term, trace_term) | ||||
|                 } else { | ||||
|                     term | ||||
|                 } | ||||
|  | @ -588,12 +592,7 @@ pub fn list_access_to_uplc( | |||
|                             "tail_index_{}_{}", | ||||
|                             current_index, id_list[current_index] | ||||
|                         ))) | ||||
|                         .delayed_choose_list( | ||||
|                             term, | ||||
|                             Term::Error.trace(Term::string( | ||||
|                                 "List/Tuple/Constr contains more items than expected", | ||||
|                             )), | ||||
|                         ) | ||||
|                         .delayed_choose_list(term, trace_term) | ||||
|                 } else { | ||||
|                     term | ||||
|                 } | ||||
|  | @ -614,6 +613,7 @@ pub fn list_access_to_uplc( | |||
|                 tipos.to_owned(), | ||||
|                 check_last_item, | ||||
|                 is_list_accessor, | ||||
|                 tracing, | ||||
|             ); | ||||
| 
 | ||||
|             list_access_inner = match &list_access_inner { | ||||
|  | @ -652,6 +652,7 @@ pub fn list_access_to_uplc( | |||
|                 tipos.to_owned(), | ||||
|                 check_last_item, | ||||
|                 is_list_accessor, | ||||
|                 tracing, | ||||
|             ); | ||||
| 
 | ||||
|             list_access_inner = match &list_access_inner { | ||||
|  |  | |||
|  | @ -205,6 +205,7 @@ mod test { | |||
|             &project.functions, | ||||
|             &project.data_types, | ||||
|             &project.module_types, | ||||
|             true, | ||||
|         ); | ||||
| 
 | ||||
|         let (validator, def) = modules | ||||
|  |  | |||
|  | @ -267,6 +267,7 @@ where | |||
|                     &self.functions, | ||||
|                     &self.data_types, | ||||
|                     &self.module_types, | ||||
|                     options.tracing.into(), | ||||
|                 ); | ||||
| 
 | ||||
|                 let blueprint = Blueprint::new(&self.config, &self.checked_modules, &mut generator) | ||||
|  | @ -295,7 +296,8 @@ where | |||
|                 verbose, | ||||
|                 exact_match, | ||||
|             } => { | ||||
|                 let tests = self.collect_tests(verbose, match_tests, exact_match)?; | ||||
|                 let tests = | ||||
|                     self.collect_tests(verbose, match_tests, exact_match, options.tracing.into())?; | ||||
| 
 | ||||
|                 if !tests.is_empty() { | ||||
|                     self.event_listener.handle_event(Event::RunningTests); | ||||
|  | @ -598,6 +600,7 @@ where | |||
|         verbose: bool, | ||||
|         match_tests: Option<Vec<String>>, | ||||
|         exact_match: bool, | ||||
|         tracing: bool, | ||||
|     ) -> Result<Vec<Script>, Error> { | ||||
|         let mut scripts = Vec::new(); | ||||
| 
 | ||||
|  | @ -690,6 +693,7 @@ where | |||
|                 &self.functions, | ||||
|                 &self.data_types, | ||||
|                 &self.module_types, | ||||
|                 tracing, | ||||
|             ); | ||||
| 
 | ||||
|             let evaluation_hint = func_def.test_hint().map(|(bin_op, left_src, right_src)| { | ||||
|  |  | |||
|  | @ -297,6 +297,7 @@ impl CheckedModules { | |||
|         builtin_functions: &'a IndexMap<FunctionAccessKey, TypedFunction>, | ||||
|         builtin_data_types: &'a IndexMap<DataTypeKey, TypedDataType>, | ||||
|         module_types: &'a HashMap<String, TypeInfo>, | ||||
|         tracing: bool, | ||||
|     ) -> CodeGenerator<'a> { | ||||
|         let mut functions = IndexMap::new(); | ||||
|         for (k, v) in builtin_functions { | ||||
|  | @ -343,7 +344,7 @@ impl CheckedModules { | |||
|         let mut module_types_index = IndexMap::new(); | ||||
|         module_types_index.extend(module_types); | ||||
| 
 | ||||
|         CodeGenerator::new(functions, data_types, module_types_index) | ||||
|         CodeGenerator::new(functions, data_types, module_types_index, tracing) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -31,6 +31,7 @@ fn assert_uplc(source_code: &str, expected: Term<Name>, should_fail: bool) { | |||
|         &project.functions, | ||||
|         &project.data_types, | ||||
|         &project.module_types, | ||||
|         true, | ||||
|     ); | ||||
| 
 | ||||
|     let Some(checked_module) = modules.values().next() | ||||
|  |  | |||
|  | @ -19,8 +19,8 @@ | |||
|           "$ref": "#/definitions/spend~1PoolRedeemer" | ||||
|         } | ||||
|       }, | ||||
|       "compiledCode": "590722010000323232323232323232323232222323232533300b3232323232323253330123370e90000008992513010007153330123370e9001000899191919299980b19b87480080044c8c8c8c8c8c8c9289811000980c99299980e19b8748000c06c004400454cc07524012a4578706563746564206f6e20696e636f727265637420636f6e7374727563746f722076617269616e742e00163300d0140033020001301732533301a3370e9000180c80088008a9980da4812a4578706563746564206f6e20696e636f727265637420636f6e7374727563746f722076617269616e742e00163300a012001300848901ff00301d001301400214a0602800266020602401a9001180c8009808003899191919299980b19b87480080044c8c8c8c8c8c8c9289811000980c99299980e19b8748000c06c004400454cc0752412a4578706563746564206f6e20696e636f727265637420636f6e7374727563746f722076617269616e742e00163300d0140033020001301732533301a3370e9000180c80088008a9980da4812a4578706563746564206f6e20696e636f727265637420636f6e7374727563746f722076617269616e742e00163300a012001300848901ff00301d001301400214a0602800266020602401a9001180c80098080039808003119ba548000cc058cdd2a40046602c6ea40052f5c06602c98103d87a80004bd7011198021bac3300d300f3300d300f00248001200423375e6601c6020002900000111198019bac3300c300e3300c300e00248001200023375e6601a601e6601a601e0029001240000046002002444a6660260042980103d87a8000132325333011300300213374a90001980b00125eb804ccc01401400400cc05c00cc054008cc01cc0240092000149858c8018c94ccc02ccdc3a40000022646464646464a66602a60300042649318048028a99809249334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e2065787065637465640016375a602c002602c0046eb4c050004c050008c048004c02401854cc0312412b436f6e73747220696e64657820646964206e6f74206d6174636820616e7920747970652076617269616e74001630090053200432533300a3370e9000000899192999808180980109924c64a66601a66e1d20000011323253330133016002149854cc041241334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e2065787065637465640016375a602800260160042a66601a66e1d20020011323253330133016002132498c94ccc040cdc3a4000002264646464a66603060360042649318060018a9980aa481334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e2065787065637465640016375a60320026032004602e002601c0042a660229212b436f6e73747220696e64657820646964206e6f74206d6174636820616e7920747970652076617269616e740016300e00115330104901334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e20657870656374656400163014001300b0021533300d3370e9002000899192999809980b00109924c64a66602066e1d20000011323232325333018301b002132498c03000c54cc055241334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e2065787065637465640016375a60320026032004602e002601c0042a660229212b436f6e73747220696e64657820646964206e6f74206d6174636820616e7920747970652076617269616e740016300e00115330104901334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e20657870656374656400163014001300b002153300e4912b436f6e73747220696e64657820646964206e6f74206d6174636820616e7920747970652076617269616e740016300b001153300d4901334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e206578706563746564001630110013008004153300b4912b436f6e73747220696e64657820646964206e6f74206d6174636820616e7920747970652076617269616e7400163008003232533300a3370e90000008991919192999809180a8010a4c2a6601e921334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e2065787065637465640016375c602600260260046eb8c044004c02000854cc02d2412b436f6e73747220696e64657820646964206e6f74206d6174636820616e7920747970652076617269616e740016300800133001001480008888cccc01ccdc38008018069199980280299b8000448008c03c0040080088c018dd5000918021baa0015734ae7155ceaab9e5573eae815d0aba21", | ||||
|       "hash": "b0e1ce90ece6e3bbb745025cce93a6361e1c9f4c06d8cdebd65a5a8a" | ||||
|       "compiledCode": "59035b0100003232323232323232323232222323232533300b3232323232323253330123370e90000008992513010007153330123370e9001000899191919299980b19b87480080044c8c8c8c8c8c8c9289810800980c99299980e19b8748000c06c004400458cc03405000cc07c004c05cc94ccc068cdc3a4000603200220022c66014024002601091101ff00301c001301400214a0602800266020602401a9001180c0009808003899191919299980b19b87480080044c8c8c8c8c8c8c9289810800980c99299980e19b8748000c06c004400458cc03405000cc07c004c05cc94ccc068cdc3a4000603200220022c660140240026010910101ff00301c001301400214a0602800266020602401a9001180c00098080039808003119ba548000cc054cdd2a40046602a6ea40052f5c06602a98103d87a80004bd7011198021bac3300d300f3300d300f00248001200423375e6601c6020002900000111198019bac3300c300e3300c300e00248001200023375e6601a601e6601a601e0029001240000046002002444a6660240042980103d87a8000132325333011300300213374a90001980a80125eb804ccc01401400400cc05800cc050008cc01cc0240092000149858c8018c94ccc02ccdc3a40000022646464646464a666028602e0042649318048028b1bad30150013015002375a602600260260046022002601200c2c601200a6400864a66601466e1d200000113232533300f3012002132498c94ccc034cdc3a400000226464a666024602a0042930b1bad3013001300b0021533300d3370e9001000899192999809180a80109924c64a66602066e1d20000011323232325333017301a002132498c03000c58dd6980c000980c001180b00098070010b18070008b180980098058010a99980699b87480100044c8c94ccc048c0540084c9263253330103370e9000000899191919299980b980d00109924c60180062c6eb4c060004c060008c058004c03800858c03800458c04c004c02c00858c02c00458c040004c02001058c02000c8c94ccc028cdc3a4000002264646464a66602260280042930b1bae30120013012002375c602000260100042c60100026600200290001111199980399b8700100300c233330050053370000890011807000801001118029baa001230033754002ae6955ceaab9e5573eae815d0aba21", | ||||
|       "hash": "0cacc32c28d8b9724b7ce935bdfade75a3807ab9a7cf4c4e95bbdad8" | ||||
|     } | ||||
|   ], | ||||
|   "definitions": { | ||||
|  |  | |||
|  | @ -27,8 +27,8 @@ | |||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "compiledCode": "5902d601000032323232323232323232323223222232533300b323232323232323232323232323232533301e30210021323232533301d3370e90000008a99980e9999180080091129998120010a50132325333022300300214a2266600a00a0020066050006604c004016466ebccc068c07000520000171533301d3370e0049001099b8f00301714a02a6603c921254578706563746564206f6e20696e636f727265637420626f6f6c65616e2076617269616e74001616301b012375a603c0046eb8c07000454cc06d2401334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e2065787065637465640016301f001333232223232533301e3370e90010008a5eb7bdb1804c8dd59812800980e001180e000998018010009800800911299980f8010a6103d87a8000132323232533301f3371e00a002266e95200033024374c00497ae01333007007003005375c60400066eacc080008c08c00cc084008004020dd5980e800980e800980e000980d800980d0011bac3018001300f005375c602c002601aa66601e66e1d2000300e001100115330104912a4578706563746564206f6e20696e636f727265637420636f6e7374727563746f722076617269616e742e00163014001301400230120013009002149858c800cc94ccc02ccdc3a40000022a66601e60120062930a998062491d4578706563746564206e6f206669656c647320666f7220436f6e73747200161533300b3370e90010008a99980798048018a4c2a6601892011d4578706563746564206e6f206669656c647320666f7220436f6e7374720016153300c4912b436f6e73747220696e64657820646964206e6f74206d6174636820616e7920747970652076617269616e7400163009002375c0026600200290001111199980399b8700100300d233330050053370000890011807800801001118031baa001230043754002ae695ce2ab9d5573caae7d5d02ba15745", | ||||
|       "hash": "47f04b17991835e079855a20d5c4506bee37d7917260a688ceae8266" | ||||
|       "compiledCode": "5901c2010000323232323232323232323223222232533300b323232323232323232323232323232533301d30200021323232533301d3370e90000008a99980e9999180080091129998118010a50132325333022300300214a2266600a00a002006604e006604a004016466ebccc068c07000520000171533301d3370e0049001099b8f00301714a02c2c60360246eb4c074008dd7180d8008b180f000999919111919299980f19b874800800452f5bded8c02646eacc090004c070008c070004cc00c008004c0040048894ccc0780085300103d87a8000132323232533301f3371e00a002266e95200033023374c00497ae01333007007003005375c603e0066eacc07c008c08800cc080008004020dd5980e000980e000980d800980d000980c8011bac3017001300f005375c602a002601aa66601e66e1d2000300e0011001163013001301300230110013009002149858c800cc94ccc02ccdc3a40000022a66601c60120062930b0a99980599b874800800454ccc038c02400c52616163009002375c0026600200290001111199980399b8700100300c233330050053370000890011807000801001118029baa001230033754002ae6955ceaab9e5573eae815d0aba21", | ||||
|       "hash": "e413cd6136ea78be9b974e540f4acd04ab1274353e63b430018433b7" | ||||
|     } | ||||
|   ], | ||||
|   "definitions": { | ||||
|  |  | |||
|  | @ -36,8 +36,8 @@ | |||
|           "$ref": "#/definitions/Data" | ||||
|         } | ||||
|       }, | ||||
|       "compiledCode": "5903b1010000323232323232323232323232322223232533300a3230020013301033300a323375e00c0026601693260103d87980004c0103d87a80004c0103d87980003301033300a332323232232323253330123375e98106d8799f182aff0000213370e600a00890020a503253330123370e900000089919299980c980e0010a4c2a6602c921334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e2065787065637465640016375a603400260200042a660289212b436f6e73747220696e64657820646964206e6f74206d6174636820616e7920747970652076617269616e74001630100013017001300d3253330103370e9000180780088008a9980924812a4578706563746564206f6e20696e636f727265637420636f6e7374727563746f722076617269616e742e001632330050020013237280026ecd300106d8799f182aff0030010012253330130011480004c8cdc02400466006006002602c0026002002444a6660240042980103d87a800013232323253330113371e00a002266e952000330170024bd7009998038038018029bae301300330130023016003301400237566600c60106600c6010006900024028980103d87a80004c0103d87980003301033300a325333010001161325333011001161323232325333010323008001330163330103375e66018601c004900226126d87a9f5820fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273ff004c0103d87a80004c0103d8798000330163330103375e66018601c0049003260122d8799f581ce37db487fbd58c45d059bcbf5cd6b1604d3bec16cf888f1395a4ebc4ff004c0103d87a80004c0103d87980004bd7009918040009980b19980819baf3300c300e3300c300e0014800120024c12ad8799fd8799fd8799f581c66666666666666666666666666666666666666666666666666666666ffffff004c0103d87a80004c0103d879800033016333010323253330123370e900200089925130100021630100013300c300e0014801130103d87a80004c0103d87980004bd700a5030160043015004163014001301300137586600c60106600c601000690002400898103d87a80004c0103d87980004bd700a4c2c600200244a66601e00229444c8c94ccc0300084cc010010004528180980119b8748008c034dd5180880099800800a40004444666600e66e1c00400c0388cccc014014cdc00022400460200020040044600e6ea80048c014dd5000ab9a5736ae7155ceaab9e5573eae815d0aba21", | ||||
|       "hash": "a29971e3525c7d2f66af7b40e5cb700aa4fa9fc2dad3ddd078bb2c30" | ||||
|       "compiledCode": "5903100100003232323232323232323232322223232533300a3230020013300f33300a323375e00c0026601693260103d87980004c0103d87a80004c0103d87980003300f33300a332323232232323253330123375e98106d8799f182aff0000213370e600a00890020a503253330123370e900000089919299980c180d8010a4c2c6eb4c064004c04000858c040004c058004c034c94ccc040cdc3a4000601e00220022c646600a004002646e50004dd9a60106d8799f182aff0030010012253330120011480004c8cdc02400466006006002602a0026002002444a6660220042980103d87a800013232323253330113371e00a002266e952000330160024bd7009998038038018029bae301200330120023015003301300237566600c60106600c6010006900024028980103d87a80004c0103d87980003300f33300a32533300f001161325333010001161323232325333010323008001330153330103375e66018601c004900226126d87a9f5820fcaa61fb85676101d9e3398a484674e71c45c3fd41b492682f3b0054f4cf3273ff004c0103d87a80004c0103d8798000330153330103375e66018601c0049003260122d8799f581ce37db487fbd58c45d059bcbf5cd6b1604d3bec16cf888f1395a4ebc4ff004c0103d87a80004c0103d87980004bd7009918040009980a99980819baf3300c300e3300c300e0014800120024c12ad8799fd8799fd8799f581c66666666666666666666666666666666666666666666666666666666ffffff004c0103d87a80004c0103d879800033015333010323253330123370e900200089925130100021630100013300c300e0014801130103d87a80004c0103d87980004bd700a5030150043014004163013001301200137586600c60106600c601000690002400898103d87a80004c0103d87980004bd700a4c2c600200244a66601c00229444c8c94ccc0300084cc010010004528180900119b8748008c030dd5180800099800800a40004444666600e66e1c00400c0348cccc014014cdc000224004601e0020040044600c6ea80048c010dd5000ab9a5736aae7555cf2ab9f5740ae855d11", | ||||
|       "hash": "7430b07ebb41177b84d49ffed5e102eff7ffee61ad2b81c3f3ab3dbb" | ||||
|     }, | ||||
|     { | ||||
|       "title": "mint.mint", | ||||
|  | @ -47,8 +47,8 @@ | |||
|           "$ref": "#/definitions/Data" | ||||
|         } | ||||
|       }, | ||||
|       "compiledCode": "59043401000032323232323232323232323222533300732332300100122533300e00114a226464a6660180042660080080022940c048008cdc3a400460186ea8c040004004cc030ccc01ccc8c8c8c88c8c94ccc048c0540084c8c8cdc78018009bae3015001300c32533300f3370e9000180700088008a998082492a4578706563746564206f6e20696e636f727265637420636f6e7374727563746f722076617269616e742e00163300a300c0034800854cc03d2401334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e2065787065637465640016375c6026002646460080026600a0029101003756660106014660106014002900024010600200244a66601e002297ae013232323301337520026600a00a0046eb8c03c008c04c008c044004c0040048894ccc03800852f5bded8c0264646464a66601c66e3c014004400c4cc04ccdd81ba9001374c00466600e00e00600a6eb8c03c00cdd5980780118090019808001000a6103d87a80004c0103d87980003300c333007333232323222323232323253330123370e90010008b0991919b87001483c850dd6980c8009808001180800099803000a44103666f6f003322323253330133370e90010008a5eb7bdb1804c8dd5980d00098088011808800998048010009bab3300b300d00348020004dd7180a0009805a99980699b8748000c030008400854cc03924012a4578706563746564206f6e20696e636f727265637420636f6e7374727563746f722076617269616e742e00163001001222533301000214c103d87a800013232323253330103371e00a002266e95200033015375000497ae01333007007003005375c60220066eb4c044008c05000cc048008c0040048894ccc038008530103d87a8000132323232533300e3371e00a002266e95200033013374c00497ae01333007007003005375c601e0066eacc03c008c04800cc040008cc00cc01400520023300330050014800130103d87a80004c0103d87980003300c3330073332323232223232533300f3375e006002266e1cc8c018004dd5998059806998059806802240009009240042940c050004c02cc94ccc038cdc3a4000601a00220022a6601e9212a4578706563746564206f6e20696e636f727265637420636f6e7374727563746f722076617269616e742e00163322330070020013756660126016660126016004900024024660126016004900118008009129998078008a400026466e0120023300300300130120013001001222533300e00214c103d87a8000132323232533300e3375e00a002266e952000330130024bd7009998038038018029807801980780118090019808001000801260103d87a80004c0103d87980004bd700a4c2c6600200290001111199980399b8700100300d233330050053370000890011807800801001118031baa001230043754002ae695ce2ab9d5573caae7d5d02ba157441", | ||||
|       "hash": "0323607667c44dd282e59f9e3ae4049235264933be9e8404a641b81a" | ||||
|       "compiledCode": "590363010000323232323232323232323222533300732332300100122533300d00114a226464a6660180042660080080022940c044008cdc3a400460166ea8c03c004004cc02cccc01ccc8c8c8c88c8c94ccc044c0500084c8c8cdc78018009bae3014001300c32533300f3370e9000180700088008b198051806001a40042c6eb8c048004c8c8c010004cc014005221003756660106014660106014002900024010600200244a66601c002297ae013232323301237520026600a00a0046eb8c038008c048008c040004c0040048894ccc03400852f5bded8c0264646464a66601c66e3c014004400c4cc048cdd81ba9001374c00466600e00e00600a6eb8c03800cdd5980700118088019807801000a6103d87a80004c0103d87980003300b333007333232323222323232323253330123370e90010008b0991919b87001483c850dd6980c0009808001180800099803000a44103666f6f003322323253330133370e90010008a5eb7bdb1804c8dd5980c80098088011808800998048010009bab3300b300d00348020004dd718098009805a99980699b8748000c030008400858c0040048894ccc03c0085300103d87a800013232323253330103371e00a002266e95200033014375000497ae01333007007003005375c60200066eb4c040008c04c00cc044008c0040048894ccc034008530103d87a8000132323232533300e3371e00a002266e95200033012374c00497ae01333007007003005375c601c0066eacc038008c04400cc03c008cc00cc01400520023300330050014800130103d87a80004c0103d87980003300b3330073332323232223232533300f3375e006002266e1cc8c018004dd5998059806998059806802240009009240042940c04c004c02cc94ccc038cdc3a4000601a00220022c66446600e0040026eaccc024c02ccc024c02c009200048048cc024c02c0092002300100122533300e0011480004c8cdc0240046600600600260220026002002444a66601a004298103d87a8000132323232533300e3375e00a002266e952000330120024bd7009998038038018029807001980700118088019807801000801260103d87a80004c0103d87980004bd700a4c2c6600200290001111199980399b8700100300c233330050053370000890011807000801001118029baa001230033754002ae6955ceaab9e5573eae815d0aba21", | ||||
|       "hash": "af428f3f11ea2384e5105bc172b778576324039e95050066cb8a006f" | ||||
|     }, | ||||
|     { | ||||
|       "title": "withdrawals.spend", | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 microproofs
						microproofs