From 1d7f49587f3066df32ba4218b8261591305f9080 Mon Sep 17 00:00:00 2001 From: Andrei Vasilescu Date: Thu, 29 Aug 2024 16:03:58 +0300 Subject: [PATCH 1/3] fixed returnsNewTokenIdentifier interactor --- framework/snippets/src/network_response.rs | 23 +++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/framework/snippets/src/network_response.rs b/framework/snippets/src/network_response.rs index d505e7a525..4d828e12c7 100644 --- a/framework/snippets/src/network_response.rs +++ b/framework/snippets/src/network_response.rs @@ -103,25 +103,31 @@ fn process_new_deployed_address(tx: &TransactionOnNetwork) -> Option
{ } fn process_new_issued_token_identifier(tx: &TransactionOnNetwork) -> Option { + let original_tx_data = String::from_utf8(base64_decode(tx.data.as_ref().unwrap())).unwrap(); + for scr in tx.smart_contract_results.iter() { if scr.sender.to_bech32_string().unwrap() != ESDTSystemSCAddress.to_bech32_string() { continue; } - let Some(prev_tx) = tx + let prev_tx_data: &str = if let Some(prev_tx) = tx .smart_contract_results .iter() .find(|e| e.hash == scr.prev_tx_hash) - else { + { + prev_tx.data.as_ref() + } else if &scr.prev_tx_hash == tx.hash.as_ref().unwrap() { + &original_tx_data + } else { continue; }; - let is_issue_fungible = prev_tx.data.starts_with("issue@"); - let is_issue_semi_fungible = prev_tx.data.starts_with("issueSemiFungible@"); - let is_issue_non_fungible = prev_tx.data.starts_with("issueNonFungible@"); - let is_register_meta_esdt = prev_tx.data.starts_with("registerMetaESDT@"); + let is_issue_fungible = prev_tx_data.starts_with("issue@"); + let is_issue_semi_fungible = prev_tx_data.starts_with("issueSemiFungible@"); + let is_issue_non_fungible = prev_tx_data.starts_with("issueNonFungible@"); + let is_register_meta_esdt = prev_tx_data.starts_with("registerMetaESDT@"); let is_register_and_set_all_roles_esdt = - prev_tx.data.starts_with("registerAndSetAllRoles@"); + prev_tx_data.starts_with("registerAndSetAllRoles@"); if !is_issue_fungible && !is_issue_semi_fungible @@ -135,12 +141,11 @@ fn process_new_issued_token_identifier(tx: &TransactionOnNetwork) -> Option Date: Thu, 29 Aug 2024 17:05:05 +0300 Subject: [PATCH 2/3] added fix for sc calls creating systemSC issues --- sdk/core/src/gateway/gateway_tx_retrieve.rs | 23 +++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/sdk/core/src/gateway/gateway_tx_retrieve.rs b/sdk/core/src/gateway/gateway_tx_retrieve.rs index 821713f972..c5bbda6adf 100644 --- a/sdk/core/src/gateway/gateway_tx_retrieve.rs +++ b/sdk/core/src/gateway/gateway_tx_retrieve.rs @@ -14,6 +14,7 @@ impl GatewayProxy { let mut retries = 0; let mut backoff_delay = Duration::from_secs_f32(INITIAL_BACKOFF_DELAY); let start_time = Instant::now(); + let mut issue_found = false; loop { match self.get_transaction_status(&tx_hash).await { @@ -26,6 +27,20 @@ impl GatewayProxy { .get_transaction_info_with_results(&tx_hash) .await .unwrap(); + + if transaction_info_with_results.smart_contract_results.len() > 0 + && issue_found == false + { + let first_scr = + &transaction_info_with_results.smart_contract_results[0]; + + if GatewayProxy::is_issue_tx(&first_scr.data) { + issue_found = true; + tokio::time::sleep(Duration::from_secs(30)).await; + continue; + } + } + info!( "Transaction retrieved successfully, with status {}: {:#?}", status, transaction_info_with_results @@ -60,4 +75,12 @@ impl GatewayProxy { ); TransactionOnNetwork::default() } + + fn is_issue_tx(data: &str) -> bool { + data.starts_with("issue@") + || data.starts_with("issueSemiFungible@") + || data.starts_with("issueNonFungible@") + || data.starts_with("registerMetaESDT@") + || data.starts_with("registerAndSetAllRoles@") + } } From 044153613ea4dbedd53822b4ff0681e341b99ec0 Mon Sep 17 00:00:00 2001 From: Andrei Vasilescu Date: Thu, 29 Aug 2024 17:07:39 +0300 Subject: [PATCH 3/3] fixed clippy warnings --- sdk/core/src/gateway/gateway_tx_retrieve.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sdk/core/src/gateway/gateway_tx_retrieve.rs b/sdk/core/src/gateway/gateway_tx_retrieve.rs index c5bbda6adf..452d37b3e0 100644 --- a/sdk/core/src/gateway/gateway_tx_retrieve.rs +++ b/sdk/core/src/gateway/gateway_tx_retrieve.rs @@ -28,8 +28,10 @@ impl GatewayProxy { .await .unwrap(); - if transaction_info_with_results.smart_contract_results.len() > 0 - && issue_found == false + if !transaction_info_with_results + .smart_contract_results + .is_empty() + && !issue_found { let first_scr = &transaction_info_with_results.smart_contract_results[0];