diff --git a/chain/vm/src/tx_execution/exec_general_tx.rs b/chain/vm/src/tx_execution/exec_general_tx.rs index 2100e3fb20..d5e47d7b0f 100644 --- a/chain/vm/src/tx_execution/exec_general_tx.rs +++ b/chain/vm/src/tx_execution/exec_general_tx.rs @@ -1,3 +1,4 @@ +use num_bigint::BigUint; use num_traits::Zero; use crate::{ @@ -52,6 +53,19 @@ pub(crate) fn create_transfer_value_log(tx_input: &TxInput, call_type: CallType) let mut data = vec![call_type.to_log_bytes(), tx_input.func_name.to_bytes()]; data.append(&mut tx_input.args.clone()); + if tx_input.esdt_values.is_empty() { + if !tx_input.callback_payments.egld_value.is_zero() + && tx_input.call_type == CallType::AsyncCallback + { + return TxLog { + address: tx_input.from.clone(), + endpoint: "transferValueOnly".into(), + topics: vec![b"".to_vec(), tx_input.to.to_vec()], + data, + }; + } + } + let egld_value = if tx_input.call_type == CallType::AsyncCallback { &tx_input.callback_payments.egld_value } else {