From 549786b702be5aaed0d45ce1e5235f4dfcde4ab8 Mon Sep 17 00:00:00 2001 From: tomasarrachea Date: Fri, 10 Jan 2025 11:43:32 -0300 Subject: [PATCH] feat: add debug mode for build_script_with_sections --- crates/rust-client/src/transactions/mod.rs | 6 ++++-- crates/rust-client/src/transactions/request/mod.rs | 3 ++- crates/rust-client/src/transactions/script_builder.rs | 9 ++++++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/crates/rust-client/src/transactions/mod.rs b/crates/rust-client/src/transactions/mod.rs index 52c5ac1bc..4a7af9ed4 100644 --- a/crates/rust-client/src/transactions/mod.rs +++ b/crates/rust-client/src/transactions/mod.rs @@ -361,8 +361,10 @@ impl Client { let future_notes: Vec<(NoteDetails, NoteTag)> = transaction_request.expected_future_notes().cloned().collect(); - let tx_script = transaction_request - .build_transaction_script(self.get_account_capabilities(account_id).await?)?; + let tx_script = transaction_request.build_transaction_script( + self.get_account_capabilities(account_id).await?, + self.in_debug_mode, + )?; let foreign_accounts = transaction_request.foreign_accounts().clone(); let mut tx_args = transaction_request.into_transaction_args(tx_script); diff --git a/crates/rust-client/src/transactions/request/mod.rs b/crates/rust-client/src/transactions/request/mod.rs index 5bf1a0102..b4ee59c4a 100644 --- a/crates/rust-client/src/transactions/request/mod.rs +++ b/crates/rust-client/src/transactions/request/mod.rs @@ -180,6 +180,7 @@ impl TransactionRequest { pub(crate) fn build_transaction_script( &self, account_capabilities: AccountCapabilities, + in_debug_mode: bool, ) -> Result { match &self.script_template { Some(TransactionScriptTemplate::CustomScript(script)) => Ok(script.clone()), @@ -187,7 +188,7 @@ impl TransactionRequest { let tx_script_builder = TransactionScriptBuilder::new(account_capabilities, self.expiration_delta); - Ok(tx_script_builder.build_send_notes_script(notes)?) + Ok(tx_script_builder.build_send_notes_script(notes, in_debug_mode)?) }, None => { if self.input_notes.is_empty() { diff --git a/crates/rust-client/src/transactions/script_builder.rs b/crates/rust-client/src/transactions/script_builder.rs index 5e2a3b576..98c2fcc8c 100644 --- a/crates/rust-client/src/transactions/script_builder.rs +++ b/crates/rust-client/src/transactions/script_builder.rs @@ -146,18 +146,19 @@ impl TransactionScriptBuilder { pub fn build_send_notes_script( &self, output_notes: &[PartialNote], + in_debug_mode: bool, ) -> Result { let send_note_procedure = self .account_capabilities .interfaces .send_note_procedure(self.account_capabilities.account_id, output_notes)?; - self.build_script_with_sections(vec![send_note_procedure]) + self.build_script_with_sections(vec![send_note_procedure], in_debug_mode) } /// Builds a simple authentication script for the transaction that doesn't send any notes. pub fn build_auth_script(&self) -> Result { - self.build_script_with_sections(vec![]) + self.build_script_with_sections(vec![], false) } /// Builds a transaction script with the specified sections. @@ -168,6 +169,7 @@ impl TransactionScriptBuilder { fn build_script_with_sections( &self, sections: Vec, + debug_mode: bool, ) -> Result { let script = format!( "{} begin {} {} {} end", @@ -177,7 +179,8 @@ impl TransactionScriptBuilder { self.script_authentication() ); - let tx_script = TransactionScript::compile(script, vec![], TransactionKernel::assembler()) + let assembler = TransactionKernel::assembler().with_debug_mode(debug_mode); + let tx_script = TransactionScript::compile(script, vec![], assembler) .map_err(TransactionScriptBuilderError::InvalidTransactionScript)?; Ok(tx_script)