diff --git a/modules/net/dap_chain_node_cli.c b/modules/net/dap_chain_node_cli.c
index 5dfec5e143910d718a06b5c0b89574f7562eb71d..bd467d2052f1cfe3ab444a2076ffc12a70c62940 100644
--- a/modules/net/dap_chain_node_cli.c
+++ b/modules/net/dap_chain_node_cli.c
@@ -235,7 +235,7 @@ int dap_chain_node_cli_init(dap_config_t * g_config)
 
     dap_cli_server_cmd_add ("mempool_list", com_mempool_list,
                                         "List mempool (entries or transaction) for (selected chain network or wallet)",
-            "mempool_list -net <net_name> [-chain <chain_name>] [-addr <addr>] \n");
+            "mempool_list -net <net_name> [-chain <chain_name>] [-addr <addr>] [-fast] \n");
 
     dap_cli_server_cmd_add ("mempool_check", com_mempool_check, "Check mempool entrie for presence in selected chain network",
             "mempool_check -net <net_name> -datum <datum hash>\n");
diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c
index 3e363090f8f029ed5713253f29128197f55aa94c..cb8f668ede6ba21da022074baff6c88c41067c8c 100644
--- a/modules/net/dap_chain_node_cli_cmd.c
+++ b/modules/net/dap_chain_node_cli_cmd.c
@@ -2348,7 +2348,7 @@ const char *s_ticker_list_get_main_ticker(dap_list_t *a_tickers, const char *a_n
  * @param a_str_tmp
  * @param a_hash_out_type
  */
-void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a_chain, const char * a_add, dap_string_t * a_str_tmp, const char *a_hash_out_type){
+void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a_chain, const char * a_add, dap_string_t * a_str_tmp, const char *a_hash_out_type, bool a_fast){
     int l_removed = 0;
     dap_chain_mempool_filter(a_chain, &l_removed);
     dap_string_append_printf(a_str_tmp, "Removed %i records from the %s chain mempool in %s network. \n\n",
@@ -2435,62 +2435,64 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a
                 if (obj_token) {
                     l_token_ticker = obj_token->header.ticker;
                 } else {
-                    dap_list_t* l_tickers = NULL;
-                    dap_chain_datum_tx_t *l_tx_parent = NULL;
-                    int l_item_in_size = 0;
-                    void *l_item_in = dap_chain_datum_tx_item_get((dap_chain_datum_tx_t*)l_datum->data, NULL, TX_ITEM_TYPE_IN_ALL, &l_item_in_size);
-                    bool l_is_unchained = false;
-                    dap_hash_fast_t l_parent_hash = {0};
-                    int l_parrent_tx_out_idx;
-                    for (int l_item_in_size_current = 0; l_item_in_size_current < l_item_in_size && !l_token_ticker;) {
-                        size_t l_tmp_size = dap_chain_datum_item_tx_get_size(l_item_in);
-                        if (l_tmp_size == 0)
-                            break;
-                        l_item_in_size_current += l_tmp_size;
-                        switch (dap_chain_datum_tx_item_get_type(l_item_in)) {
-                            case TX_ITEM_TYPE_IN:
-                                l_parent_hash = ((dap_chain_tx_in_t*)l_item_in)->header.tx_prev_hash;
-                                l_parrent_tx_out_idx = ((dap_chain_tx_in_t*)l_item_in)->header.tx_out_prev_idx;
-                                l_tx_parent = dap_chain_ledger_tx_find_by_hash(a_net->pub.ledger, &((dap_chain_tx_in_t*)l_item_in)->header.tx_prev_hash);
+                    if (!a_fast) {
+                        dap_list_t* l_tickers = NULL;
+                        dap_chain_datum_tx_t *l_tx_parent = NULL;
+                        int l_item_in_size = 0;
+                        void *l_item_in = dap_chain_datum_tx_item_get((dap_chain_datum_tx_t*)l_datum->data, NULL, TX_ITEM_TYPE_IN_ALL, &l_item_in_size);
+                        bool l_is_unchained = false;
+                        dap_hash_fast_t l_parent_hash = {0};
+                        int l_parrent_tx_out_idx;
+                        for (int l_item_in_size_current = 0; l_item_in_size_current < l_item_in_size && !l_token_ticker;) {
+                            size_t l_tmp_size = dap_chain_datum_item_tx_get_size(l_item_in);
+                            if (l_tmp_size == 0)
                                 break;
-                            case TX_ITEM_TYPE_IN_COND:
-                                l_parent_hash = ((dap_chain_tx_in_cond_t*)l_item_in)->header.tx_prev_hash;
-                                l_parrent_tx_out_idx = ((dap_chain_tx_in_cond_t*)l_item_in)->header.tx_out_prev_idx;
-                                l_tx_parent = dap_chain_ledger_tx_find_by_hash(a_net->pub.ledger, &((dap_chain_tx_in_cond_t*)l_item_in)->header.tx_prev_hash);
+                            l_item_in_size_current += l_tmp_size;
+                            switch (dap_chain_datum_tx_item_get_type(l_item_in)) {
+                                case TX_ITEM_TYPE_IN:
+                                    l_parent_hash = ((dap_chain_tx_in_t*)l_item_in)->header.tx_prev_hash;
+                                    l_parrent_tx_out_idx = ((dap_chain_tx_in_t*)l_item_in)->header.tx_out_prev_idx;
+                                    l_tx_parent = dap_chain_ledger_tx_find_by_hash(a_net->pub.ledger, &((dap_chain_tx_in_t*)l_item_in)->header.tx_prev_hash);
+                                    break;
+                                case TX_ITEM_TYPE_IN_COND:
+                                    l_parent_hash = ((dap_chain_tx_in_cond_t*)l_item_in)->header.tx_prev_hash;
+                                    l_parrent_tx_out_idx = ((dap_chain_tx_in_cond_t*)l_item_in)->header.tx_out_prev_idx;
+                                    l_tx_parent = dap_chain_ledger_tx_find_by_hash(a_net->pub.ledger, &((dap_chain_tx_in_cond_t*)l_item_in)->header.tx_prev_hash);
+                                    break;
+                            }
+                            if (!l_tx_parent) {
+                                l_is_unchained = true;
                                 break;
+                            }
+                            const char *l_current_token = NULL;
+                            void *l_out_unknown = (dap_chain_tx_out_cond_t*)dap_chain_datum_tx_item_get_nth(
+                                    l_tx_parent, TX_ITEM_TYPE_OUT_ALL, l_parrent_tx_out_idx);
+                            switch(dap_chain_datum_tx_item_get_type(l_out_unknown)) {
+                                case TX_ITEM_TYPE_OUT:
+                                    l_current_token = dap_chain_ledger_tx_get_token_ticker_by_hash(a_net->pub.ledger, &l_parent_hash);
+                                    l_tickers = dap_list_append(l_tickers, (void *)l_current_token);
+                                    break;
+                                case TX_ITEM_TYPE_OUT_EXT:
+                                    l_current_token = ((dap_chain_tx_out_ext_t*)l_out_unknown)->token;
+                                    l_tickers = dap_list_append(l_tickers, (void *)l_current_token);
+                                    break;
+                                case TX_ITEM_TYPE_OUT_COND:
+                                    if(((dap_chain_tx_out_cond_t*)l_out_unknown)->header.subtype != DAP_CHAIN_TX_OUT_COND_SUBTYPE_FEE) {
+                                        l_token_ticker = dap_chain_ledger_tx_get_token_ticker_by_hash(a_net->pub.ledger, &l_parent_hash);
+                                    }
+                                    break;
+                            }
                         }
-                        if (!l_tx_parent) {
-                            l_is_unchained = true;
-                            break;
+                        if (l_is_unchained) {
+                            dap_string_append_printf(a_str_tmp, ": Transaction %s unchained. \n", l_objs[i].key);
                         }
-                        const char *l_current_token = NULL;
-                        void *l_out_unknown = (dap_chain_tx_out_cond_t*)dap_chain_datum_tx_item_get_nth(
-                                l_tx_parent, TX_ITEM_TYPE_OUT_ALL, l_parrent_tx_out_idx);
-                        switch(dap_chain_datum_tx_item_get_type(l_out_unknown)) {
-                            case TX_ITEM_TYPE_OUT:
-                                l_current_token = dap_chain_ledger_tx_get_token_ticker_by_hash(a_net->pub.ledger, &l_parent_hash);
-                                l_tickers = dap_list_append(l_tickers, (void *)l_current_token);
-                                break;
-                            case TX_ITEM_TYPE_OUT_EXT:
-                                l_current_token = ((dap_chain_tx_out_ext_t*)l_out_unknown)->token;
-                                l_tickers = dap_list_append(l_tickers, (void *)l_current_token);
-                                break;
-                            case TX_ITEM_TYPE_OUT_COND:
-                                if(((dap_chain_tx_out_cond_t*)l_out_unknown)->header.subtype != DAP_CHAIN_TX_OUT_COND_SUBTYPE_FEE) {
-                                    l_token_ticker = dap_chain_ledger_tx_get_token_ticker_by_hash(a_net->pub.ledger, &l_parent_hash);
-                                }
-                                break;
+                        if (!l_is_unchained && !l_token_ticker) {
+                            l_token_ticker = s_ticker_list_get_main_ticker(l_tickers, a_net->pub.native_ticker);
+                            if (!l_token_ticker)
+                                dap_string_append_printf(a_str_tmp, ": Can't find token ticker for transaction %s. \n", l_objs[i].key);
                         }
+                        dap_list_free(l_tickers);
                     }
-                    if (l_is_unchained) {
-                        dap_string_append_printf(a_str_tmp, ": Transaction %s unchained. \n", l_objs[i].key);
-                    }
-                    if (!l_is_unchained && !l_token_ticker) {
-                        l_token_ticker = s_ticker_list_get_main_ticker(l_tickers, a_net->pub.native_ticker);
-                        if (!l_token_ticker)
-                            dap_string_append_printf(a_str_tmp, ": Can't find token ticker for transaction %s. \n", l_objs[i].key);
-                    }
-                    dap_list_free(l_tickers);
                 }
             }
             dap_string_append_printf(a_str_tmp,
@@ -2501,8 +2503,8 @@ void s_com_mempool_list_print_for_chain(dap_chain_net_t * a_net, dap_chain_t * a
                                                                   (l_datum->header.type_id == DAP_CHAIN_DATUM_TX ) ? "UNKNOWN" : "",
                                                  l_datum->header.data_size,
                                                  dap_ctime_r(&l_ts_create, buf));
-
-            dap_chain_datum_dump(a_str_tmp, l_datum, a_hash_out_type);
+            if (!a_fast)
+                dap_chain_datum_dump(a_str_tmp, l_datum, a_hash_out_type);
         }
         if(a_add)
             dap_string_append_printf(a_str_tmp, l_objs_addr
@@ -2531,11 +2533,13 @@ int com_mempool_list(int a_argc, char **a_argv, char **a_str_reply)
     dap_chain_t * l_chain = NULL;
     dap_chain_net_t * l_net = NULL;
     const char *l_addr_base58 = NULL;
+    bool l_fast = false;
 
     const char * l_hash_out_type = "hex";
     dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-H", &l_hash_out_type);
     dap_chain_node_cli_cmd_values_parse_net_chain(&arg_index, a_argc, a_argv, a_str_reply, &l_chain, &l_net);
     dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-addr", &l_addr_base58);
+    l_fast = (dap_cli_server_cmd_check_option(a_argv, arg_index, a_argc, "-fast") != -1) ? true : false;
     if(!l_net)
         return -1;
     else {
@@ -2547,10 +2551,10 @@ int com_mempool_list(int a_argc, char **a_argv, char **a_str_reply)
 
     dap_string_t * l_str_tmp = dap_string_new(NULL);
     if(l_chain)
-        s_com_mempool_list_print_for_chain(l_net, l_chain, l_addr_base58, l_str_tmp, l_hash_out_type);
+        s_com_mempool_list_print_for_chain(l_net, l_chain, l_addr_base58, l_str_tmp, l_hash_out_type, l_fast);
     else
         DL_FOREACH(l_net->pub.chains, l_chain)
-                s_com_mempool_list_print_for_chain(l_net, l_chain, l_addr_base58, l_str_tmp, l_hash_out_type);
+                s_com_mempool_list_print_for_chain(l_net, l_chain, l_addr_base58, l_str_tmp, l_hash_out_type, l_fast);
     dap_cli_server_cmd_set_reply_text(a_str_reply, "%s", l_str_tmp->str);
     dap_string_free(l_str_tmp, true);
     return 0;