diff --git a/modules/net/dap_chain_ledger.c b/modules/net/dap_chain_ledger.c index 5d15b33d5dda7a08e8d98310bf2aca0fb9546946..bff172b62570a79258370cd10b274cca3beefc7b 100644 --- a/modules/net/dap_chain_ledger.c +++ b/modules/net/dap_chain_ledger.c @@ -3463,6 +3463,7 @@ static int s_tx_cache_check(dap_ledger_t *a_ledger, uint256_t l_taxed_value = {}; if(a_tag) dap_ledger_deduct_tx_tag(a_ledger, a_tx, NULL, a_tag, a_action); + bool l_tax_check = false; // find all previous transactions for (dap_list_t *it = l_list_in; it; it = it->next) { @@ -3919,6 +3920,7 @@ static int s_tx_cache_check(dap_ledger_t *a_ledger, l_bound_item->cond = l_tx_prev_out_cond; l_value = l_tx_prev_out_cond->header.value; if (l_tx_prev_out_cond->header.subtype == DAP_CHAIN_TX_OUT_COND_SUBTYPE_FEE) { + l_tax_check = true; l_token = a_ledger->net->pub.native_ticker; // Overflow checked later with overall values sum SUM_256_256(l_taxed_value, l_value, &l_taxed_value); @@ -4005,8 +4007,12 @@ static int s_tx_cache_check(dap_ledger_t *a_ledger, HASH_ADD_STR(l_values_from_cur_tx, token_ticker, l_value_cur); } - dap_chain_net_srv_stake_item_t *l_key_item = dap_chain_net_srv_stake_check_pkey_hash(a_ledger->net->pub.id, &l_tx_first_sign_pkey_hash); - bool l_tax_check = l_key_item && !dap_chain_addr_is_blank(&l_key_item->sovereign_addr) && !IS_ZERO_256(l_key_item->sovereign_tax); + dap_chain_net_srv_stake_item_t *l_key_item = NULL; + if (l_tax_check) { + l_key_item = dap_chain_net_srv_stake_check_pkey_hash(a_ledger->net->pub.id, &l_tx_first_sign_pkey_hash); + l_tax_check = l_key_item && !dap_chain_addr_is_blank(&l_key_item->sovereign_addr) && !IS_ZERO_256(l_key_item->sovereign_tax); + } + // find 'out' items bool l_cross_network = false;