diff --git a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c
index 63beb35923e2cd226799a56790172c84ffc8248a..581c26b64c10618639aece02164585574be2ae29 100644
--- a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c
+++ b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c
@@ -3516,9 +3516,19 @@ static json_object* s_dap_chain_net_srv_stake_reward_all(json_object* a_json_arr
     size_t l_arr_end = 0;
     s_set_offset_limit_json(json_obj_reward, &l_arr_start, &l_arr_end, a_limit, a_offset, a_chain->callback_count_tx(a_chain));
 
+    if (a_node_info){
+        json_object* json_obj_addr = json_object_new_object();
+        char *l_addr_valid = dap_strdup_printf(NODE_ADDR_FP_STR,NODE_ADDR_FP_ARGS_S(a_node_info->address));
+        json_object_object_add(json_obj_addr, "validator addr", json_object_new_string(l_addr_valid));
+        DAP_DELETE(l_addr_valid);
+        json_object_array_add(json_obj_reward, json_obj_addr);
+    }
+    
     size_t i_tmp = 0;
     uint256_t l_value_total = uint256_0;
+    uint256_t l_value_total_calc = uint256_0;
     dap_chain_net_srv_stake_t *l_srv_stake = s_srv_stake_by_net_id(a_chain->net_id);
+    dap_chain_net_srv_stake_item_t *l_stake_valid = NULL;
 
     // load transactions
     dap_chain_datum_iter_t *l_datum_iter = a_chain->callback_datum_iter_create(a_chain);
@@ -3535,13 +3545,20 @@ static json_object* s_dap_chain_net_srv_stake_reward_all(json_object* a_json_arr
                             l_datum = iter_direc(l_datum_iter))
     {
         dap_hash_fast_t l_ttx_hash = {0};
-        dap_chain_hash_fast_t l_datum_hash;        
+        dap_chain_hash_fast_t l_datum_hash;
+        dap_chain_datum_tx_t *l_tx = (dap_chain_datum_tx_t *)l_datum->data;
+        dap_hash_fast(l_tx, l_datum->header.data_size, &l_ttx_hash);
+        const char *l_tx_token_ticker = NULL;        
         if (a_limit && i_tmp >= l_arr_end)
             break;
         if (l_datum->header.type_id != DAP_CHAIN_DATUM_TX)
             // go to next datum
             continue;
-        
+        l_tx_token_ticker = l_datum_iter ? l_datum_iter->token_ticker
+                                     : dap_ledger_tx_get_token_ticker_by_hash(a_net->pub.ledger, &l_ttx_hash);
+                                     //dap_ledger_tx_get_token_ticker_by_hash(l_ledger, &l_datum_hash);
+        if (!l_tx_token_ticker)//DECLINED transaction
+            continue;
         if (a_time_form && l_datum->header.ts_create < a_time_form)
             continue;
         if (a_time_to && l_datum->header.ts_create >= a_time_to)
@@ -3549,7 +3566,7 @@ static json_object* s_dap_chain_net_srv_stake_reward_all(json_object* a_json_arr
         if (i_tmp >= l_arr_end)
             break;
         
-        dap_chain_datum_tx_t *l_tx = (dap_chain_datum_tx_t *)l_datum->data;
+        
         dap_list_t *l_list_in_items = dap_chain_datum_tx_items_get(l_tx, TX_ITEM_TYPE_IN_REWARD, NULL);
         if (!l_list_in_items) // a bad tx
             continue;
@@ -3557,106 +3574,97 @@ static json_object* s_dap_chain_net_srv_stake_reward_all(json_object* a_json_arr
             i_tmp++;
             continue;
         }
-        // all in items should be from the same address
-        dap_hash_fast(l_tx, l_datum->header.data_size, &l_ttx_hash);
-        dap_hash_fast(l_datum, dap_chain_datum_size(l_datum), &l_datum_hash);
+        // all in items should be from the same address        
+        if (a_node_info) {
+            dap_hash_fast_t pkey_hash_tx = {};
+            int l_item_cnt = 0;
+            dap_list_t *l_signs_list = dap_chain_datum_tx_items_get(l_tx, TX_ITEM_TYPE_SIG, &l_item_cnt);
+            bool l_flag_continue = true;
+
+            if (!l_signs_list) {
+                log_it(L_WARNING, "Can't get signs from tx %s", dap_chain_hash_fast_to_str_static(&l_ttx_hash));
+                continue;
+            }
+            while(l_signs_list) {
+                dap_chain_tx_sig_t *l_vote_sig = (dap_chain_tx_sig_t *)(l_signs_list->data);
+                dap_sign_get_pkey_hash((dap_sign_t*)l_vote_sig->sig, &pkey_hash_tx);
+
+                char l_pkey_hash_str[DAP_CHAIN_HASH_FAST_STR_SIZE];
+                dap_chain_hash_fast_to_str(&pkey_hash_tx, l_pkey_hash_str, sizeof(l_pkey_hash_str));
+                l_stake_valid = NULL;
+                HASH_FIND(hh, l_srv_stake->itemlist, &pkey_hash_tx, sizeof(dap_hash_fast_t), l_stake_valid);
+                if (l_stake_valid && (a_node_info->address.uint64 == l_stake_valid->node_addr.uint64)) {
+                    l_flag_continue = false;
+                    break;
+                }
+                l_signs_list = l_signs_list->next;
+            }
+            if (l_flag_continue) continue;
+            dap_list_free(l_signs_list);
+        }
+    
         json_object* json_obj_hash = json_object_new_object();
         json_object_object_add(json_obj_hash, "tx_hash",
                                         json_object_new_string(dap_chain_hash_fast_to_str_static(&l_ttx_hash)));
-        json_object_array_add(json_obj_reward, json_obj_hash);
+        json_object_array_add(json_obj_reward, json_obj_hash); 
 
-        /*
-        const char * l_tx_token_ticker = l_datum_iter ? l_datum_iter->token_ticker
-                                     : dap_ledger_tx_get_token_ticker_by_hash(l_ledger, &l_datum_hash);*/
         json_object* json_arr_sign_out = NULL;
         json_object* json_block_hash = NULL;
         uint256_t l_value_reward = uint256_0, l_value_out = uint256_0;
-        
+        l_value_total_calc = uint256_0;
         dap_list_t *l_list_out_items = dap_chain_datum_tx_items_get(l_tx, TX_ITEM_TYPE_OUT, NULL);
-        dap_list_t *l_list_out_cond_items = dap_chain_datum_tx_items_get(l_tx, TX_ITEM_TYPE_OUT_COND, NULL);
         for(dap_list_t *it = l_list_out_items; it; it = it->next) {
              dap_chain_tx_out_t *l_tx_out = (dap_chain_tx_out_t *)it->data;
              SUM_256_256(l_value_out, l_tx_out->header.value, &l_value_out);
-        }
-        for(dap_list_t *it = l_list_out_cond_items; it; it = it->next) {
-             dap_chain_tx_out_cond_t *l_tx_out_cound = (dap_chain_tx_out_cond_t *)it->data;
-             SUM_256_256(l_value_out, l_tx_out_cound->header.value, &l_value_out);
-        }
+        }        
         dap_list_free(l_list_out_items);
-        dap_list_free(l_list_out_cond_items);
-        
-        for(dap_list_t *it = l_list_in_items; it; it = it->next)
-        {
-            dap_chain_tx_in_reward_t *l_in_reward = (dap_chain_tx_in_reward_t *) it->data;            
-            dap_chain_block_cache_t *l_block_cache = dap_chain_block_cache_get_by_hash(DAP_CHAIN_CS_BLOCKS(a_chain), &l_in_reward->block_hash);
-            char *l_block_hash = NULL;
-            json_arr_sign_out = json_object_new_array();
-            l_block_hash = dap_chain_hash_fast_to_str_new(&l_in_reward->block_hash);
-            json_block_hash = json_object_new_object();
-            json_object_object_add(json_block_hash, "block hash", json_object_new_string(l_block_hash));
-            DAP_DELETE(l_block_hash);
-
-
-            for (uint32_t i=0; i < l_block_cache->sign_count ; i++) {
-                if (!json_arr_sign_out) {
-                    json_arr_sign_out = json_object_new_array();
-                    l_block_hash = dap_chain_hash_fast_to_str_new(&l_in_reward->block_hash);
-                    json_block_hash = json_object_new_object();
-                    json_object_object_add(json_block_hash, "block hash", json_object_new_string(l_block_hash));
-                    DAP_DELETE(l_block_hash);
-                }
-                            
-                dap_sign_t * l_sign = dap_chain_block_sign_get(l_block_cache->block, l_block_cache->block_size, i);
+        if (!a_brief) {
+            for(dap_list_t *it = l_list_in_items; it; it = it->next)
+            {
+                dap_chain_tx_in_reward_t *l_in_reward = (dap_chain_tx_in_reward_t *) it->data;            
+                dap_chain_block_cache_t *l_block_cache = dap_chain_block_cache_get_by_hash(DAP_CHAIN_CS_BLOCKS(a_chain), &l_in_reward->block_hash);
+                json_arr_sign_out = json_object_new_array();
+                json_block_hash = json_object_new_object();
+                json_object_object_add(json_block_hash, "block hash", json_object_new_string(dap_chain_hash_fast_to_str_static(&l_in_reward->block_hash))); 
+                dap_sign_t *l_sign = dap_chain_block_sign_get(l_block_cache->block, l_block_cache->block_size, 0);
                 size_t l_sign_size = dap_sign_get_size(l_sign);
                 dap_chain_hash_fast_t l_pkey_hash;
                 dap_sign_get_pkey_hash(l_sign, &l_pkey_hash);
                 char l_pkey_hash_str[DAP_CHAIN_HASH_FAST_STR_SIZE];
                 dap_chain_hash_fast_to_str(&l_pkey_hash, l_pkey_hash_str, sizeof(l_pkey_hash_str));
-                dap_chain_net_srv_stake_item_t *l_stake = NULL;
-                HASH_FIND(hh, l_srv_stake->itemlist, &l_pkey_hash, sizeof(dap_hash_fast_t), l_stake);
-                if (a_node_info) {
-                    if (!l_stake || a_node_info->address.uint64 != l_stake->node_addr.uint64) {
-                        if (json_object_array_length(json_arr_sign_out) == 0) {
-                            json_object_put(json_arr_sign_out);
-                            json_object_put(json_block_hash);
-                            json_arr_sign_out = NULL;
-                            json_block_hash = NULL;
-                        }
-                        continue;
-                    }
-                }
                 json_object* json_obj_sign = json_object_new_object();
-                if (l_stake && !a_brief) {
-                    char *l_addr = dap_strdup_printf(""NODE_ADDR_FP_STR"",NODE_ADDR_FP_ARGS_S(l_stake->node_addr));
-                    json_object_object_add(json_obj_sign, "validator addr", json_object_new_string(l_addr));
-                    DAP_DELETE(l_addr);
-                }
+                json_object_object_add(json_obj_sign, "pkey_hash",json_object_new_string(l_pkey_hash_str));
+
                 dap_pkey_t * l_block_sign_pkey = dap_pkey_get_from_sign(l_sign);
                 l_value_reward = a_chain->callback_calc_reward(a_chain, &l_block_cache->block_hash,
-                                                             l_block_sign_pkey);
+                                                        l_block_sign_pkey);
                 DAP_DELETE(l_block_sign_pkey);
-                if (!a_brief) {
-                    json_object_object_add(json_obj_sign, "pkey_hash",json_object_new_string(l_pkey_hash_str));                
-                    const char  *l_coins_str,
+                const char  *l_coins_str,
                         *l_value_str = dap_uint256_to_char(l_value_reward, &l_coins_str);
-                    json_object_object_add(json_obj_sign, "reward value", json_object_new_string(l_value_str));
-                    json_object_object_add(json_obj_sign, "reward coins", json_object_new_string(l_coins_str));
-                }                
+                json_object_object_add(json_obj_sign, "reward value", json_object_new_string(l_value_str));
+                json_object_object_add(json_obj_sign, "reward coins", json_object_new_string(l_coins_str));
+                                    
                 if (json_object_object_length(json_obj_sign))
-                    json_object_array_add(json_arr_sign_out, json_obj_sign);
-            }
-            SUM_256_256(l_value_total, l_value_reward, &l_value_total);
-            l_value_reward = uint256_0;
-            if (json_arr_sign_out && json_object_array_length(json_arr_sign_out) > 0) {
-                json_object_object_add(json_block_hash, "REWARDS", json_arr_sign_out);
+                        json_object_array_add(json_arr_sign_out, json_obj_sign);                   
+                SUM_256_256(l_value_total_calc, l_value_reward, &l_value_total_calc);
+                l_value_reward = uint256_0;
                 json_object_array_add(json_obj_reward, json_block_hash);
-            }                        
+                json_object_array_add(json_obj_reward, json_arr_sign_out);                       
+            }
+            const char  *l_coins_t_out_str, *l_value_t_str;
+            json_object* json_value_t_out = json_object_new_object();
+            l_value_t_str = dap_uint256_to_char(l_value_total_calc, &l_coins_t_out_str);
+            json_object_object_add(json_value_t_out, "Rewards value (calculated)", json_object_new_string(l_value_t_str));
+            json_object_object_add(json_value_t_out, "Rewards coins (calculated)", json_object_new_string(l_coins_t_out_str));
+            json_object_array_add(json_obj_reward, json_value_t_out);
         }
+        
         const char  *l_coins_out_str, *l_value_str;
         json_object* json_value_out = json_object_new_object();
+        SUM_256_256(l_value_total, l_value_out, &l_value_total);
         l_value_str = dap_uint256_to_char(l_value_out, &l_coins_out_str);
-        json_object_object_add(json_value_out, "Rewards value (calculated)", json_object_new_string(l_value_str));
-        json_object_object_add(json_value_out, "Rewards coins (calculated)", json_object_new_string(l_coins_out_str));
+        json_object_object_add(json_value_out, "Rewards value (tx_out)", json_object_new_string(l_value_str));
+        json_object_object_add(json_value_out, "Rewards coins (tx_out)", json_object_new_string(l_coins_out_str));
         json_object_array_add(json_obj_reward, json_value_out);
         i_tmp++;
         dap_list_free(l_list_in_items);