diff --git a/modules/chain/dap_chain.c b/modules/chain/dap_chain.c
index db1ddc82f5be49b8c085a6ec321474d470552d28..b6b5943cad3e12664e182183cd356d6cf3ae1ddb 100644
--- a/modules/chain/dap_chain.c
+++ b/modules/chain/dap_chain.c
@@ -35,6 +35,7 @@
 #include "dap_config.h"
 #include "dap_chain_pvt.h"
 #include "dap_chain.h"
+#include "dap_chain_ledger.h"
 #include "dap_cert.h"
 #include "dap_chain_cs.h"
 #include "dap_chain_vf.h"
@@ -78,7 +79,7 @@ int dap_chain_init(void)
     }
     // Cell sharding init
     dap_chain_cell_init();
-
+    dap_chain_ledger_init();
     dap_chain_cs_init();
 
     dap_chain_vf_init();
@@ -96,6 +97,8 @@ void dap_chain_deinit(void)
     HASH_ITER(hh, s_chain_items, l_item, l_tmp) {
           dap_chain_delete(l_item->chain);
     }
+    dap_chain_ledger_deinit();
+
 }
 
 
diff --git a/modules/chain/dap_chain_ledger.c b/modules/chain/dap_chain_ledger.c
index 6849cc59b16a32d6acb614b596b4258d0116d55f..f2016b1ce54c4faa0c06f2e91abc4336b01b7f23 100644
--- a/modules/chain/dap_chain_ledger.c
+++ b/modules/chain/dap_chain_ledger.c
@@ -48,6 +48,7 @@
 #include "dap_hash.h"
 #include "dap_string.h"
 #include "dap_strfuncs.h"
+#include "dap_config.h"
 #include "dap_cert.h"
 #include "dap_chain_datum_tx_token.h"
 #include "dap_chain_datum_token.h"
@@ -200,6 +201,25 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
 static int s_ledger_permissions_check(dap_chain_ledger_token_item_t *  a_token_item, uint16_t a_permission_id, const void * a_data,size_t a_data_size );
 static size_t s_treshold_emissions_max = 1000;
 static size_t s_treshold_txs_max = 10000;
+static bool s_debug_more = false;
+
+/**
+ * @brief dap_chain_ledger_init
+ * @return
+ */
+int dap_chain_ledger_init()
+{
+    s_debug_more = dap_config_get_item_bool_default(g_config,"ledger","debug_more",false);
+    return 0;
+}
+
+/**
+ * @brief dap_chain_ledger_deinit
+ */
+void dap_chain_ledger_deinit()
+{
+
+}
 
 /**
  * Create dap_ledger_t structure
@@ -257,7 +277,8 @@ static int compare_datum_items(const void * l_a, const void * l_b)
 int dap_chain_ledger_token_decl_add_check(dap_ledger_t * a_ledger,  dap_chain_datum_token_t *a_token)
 {
     if ( !a_ledger){
-        log_it(L_ERROR, "NULL ledger, can't add datum with token declaration!");
+        if(s_debug_more)
+            log_it(L_ERROR, "NULL ledger, can't add datum with token declaration!");
         return  -1;
     }
 
@@ -266,7 +287,8 @@ int dap_chain_ledger_token_decl_add_check(dap_ledger_t * a_ledger,  dap_chain_da
     HASH_FIND_STR(PVT(a_ledger)->tokens,a_token->ticker,l_token_item);
     pthread_rwlock_unlock(&PVT(a_ledger)->tokens_rwlock);
     if ( l_token_item != NULL ){
-        log_it(L_WARNING,"Duplicate token declaration for ticker '%s' ", a_token->ticker);
+        if(s_debug_more)
+            log_it(L_WARNING,"Duplicate token declaration for ticker '%s' ", a_token->ticker);
         return -3;
     }
     // Checks passed
@@ -282,7 +304,8 @@ int dap_chain_ledger_token_decl_add_check(dap_ledger_t * a_ledger,  dap_chain_da
 int dap_chain_ledger_token_ticker_check(dap_ledger_t * a_ledger, const char *a_token_ticker)
 {
     if ( !a_ledger){
-        log_it(L_WARNING, "NULL ledger, can't find token ticker");
+        if(s_debug_more)
+            log_it(L_WARNING, "NULL ledger, can't find token ticker");
         return  -2;
     }
     dap_chain_ledger_token_item_t *l_token_item;
@@ -301,7 +324,8 @@ int dap_chain_ledger_token_ticker_check(dap_ledger_t * a_ledger, const char *a_t
 int dap_chain_ledger_token_add(dap_ledger_t * a_ledger,  dap_chain_datum_token_t *a_token, size_t a_token_size)
 {
     if ( !a_ledger){
-        log_it(L_ERROR, "NULL ledger, can't add datum with token declaration!");
+        if(s_debug_more)
+            log_it(L_ERROR, "NULL ledger, can't add datum with token declaration!");
         return  -1;
     }
 
@@ -311,7 +335,8 @@ int dap_chain_ledger_token_add(dap_ledger_t * a_ledger,  dap_chain_datum_token_t
     pthread_rwlock_unlock(&PVT(a_ledger)->tokens_rwlock);
 
     if (l_token_item) {
-        log_it(L_WARNING,"Duplicate token declaration for ticker '%s' ", a_token->ticker);
+        if(s_debug_more)
+            log_it(L_WARNING,"Duplicate token declaration for ticker '%s' ", a_token->ticker);
         return -3;
     }
 
@@ -328,7 +353,8 @@ int dap_chain_ledger_token_add(dap_ledger_t * a_ledger,  dap_chain_datum_token_t
     memcpy(l_token_cache, a_token, a_token_size);
     char *l_gdb_group = dap_chain_ledger_get_gdb_group(a_ledger, DAP_CHAIN_LEDGER_TOKENS_STR);
     if (!dap_chain_global_db_gr_set(dap_strdup(a_token->ticker), l_token_cache, a_token_size, l_gdb_group)) {
-        log_it(L_WARNING, "Ledger cache mismatch");
+        if(s_debug_more)
+            log_it(L_WARNING, "Ledger cache mismatch");
         DAP_DELETE(l_token_cache);
     }
     DAP_DELETE(l_gdb_group);
@@ -344,7 +370,8 @@ int dap_chain_ledger_token_add(dap_ledger_t * a_ledger,  dap_chain_datum_token_t
             for(uint16_t k=0; k<l_token_item->auth_signs_total;k++){
                 dap_sign_get_pkey_hash(l_token_item->auth_signs[k],&l_token_item->auth_signs_pkey_hash[k]);
             }
-            log_it(L_NOTICE, "Simple token %s added (total_supply = %.1llf total_signs_valid=%hu signs_total=%hu type=DAP_CHAIN_DATUM_TOKEN_PRIVATE )",
+            if(s_debug_more)
+                log_it(L_NOTICE, "Simple token %s added (total_supply = %.1llf total_signs_valid=%hu signs_total=%hu type=DAP_CHAIN_DATUM_TOKEN_PRIVATE )",
                    a_token->ticker, dap_chain_datoshi_to_coins(a_token->header_private.total_supply),
                    a_token->header_private.signs_valid, a_token->header_private.signs_total);
         }
@@ -352,18 +379,21 @@ int dap_chain_ledger_token_add(dap_ledger_t * a_ledger,  dap_chain_datum_token_t
     }
 
     case DAP_CHAIN_DATUM_TOKEN_TYPE_PRIVATE_DECL: {
-        log_it( L_NOTICE, "Private token %s type=DAP_CHAIN_DATUM_TOKEN_PRIVATE_DECL ", a_token->ticker);
+        if(s_debug_more)
+            log_it( L_NOTICE, "Private token %s type=DAP_CHAIN_DATUM_TOKEN_PRIVATE_DECL ", a_token->ticker);
         s_token_tsd_parse(a_ledger,l_token_item, a_token, a_token_size);
         break;
     }
     case DAP_CHAIN_DATUM_TOKEN_TYPE_PRIVATE_UPDATE: {
-        log_it( L_WARNING, "Private token %s type=DAP_CHAIN_DATUM_TOKEN_PRIVATE_UPDATE. Not processed, wait for software update", a_token->ticker);
+        if(s_debug_more)
+            log_it( L_WARNING, "Private token %s type=DAP_CHAIN_DATUM_TOKEN_PRIVATE_UPDATE. Not processed, wait for software update", a_token->ticker);
                 // TODO: Check authorithy
                 //s_token_tsd_parse(a_ledger,l_token_item, a_token, a_token_size);
         break;
     }
     default:
-        log_it(L_WARNING,"Unknown token declaration type 0x%04X", a_token->type );
+        if(s_debug_more)
+            log_it(L_WARNING,"Unknown token declaration type 0x%04X", a_token->type );
     }
         // Proc emissions tresholds
     s_treshold_emissions_proc( a_ledger);
@@ -388,10 +418,12 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
         l_tsd = (dap_chain_datum_token_tsd_t *) (((byte_t*)l_tsd ) +l_offset);
         l_tsd_size =  l_tsd? dap_chain_datum_token_tsd_size(l_tsd): 0;
         if( l_tsd_size==0 ){
-            log_it(L_ERROR,"Wrong zero TSD size, exiting TSD parse");
+            if(s_debug_more)
+                log_it(L_ERROR,"Wrong zero TSD size, exiting TSD parse");
             break;
         }else if (l_tsd_size + l_offset > l_tsd_total_size ){
-            log_it(L_ERROR,"Wrong %zd TSD size, exiting TSD parse", l_tsd_size);
+            if(s_debug_more)
+                log_it(L_ERROR,"Wrong %zd TSD size, exiting TSD parse", l_tsd_size);
             break;
         }
         switch (l_tsd->type) {
@@ -443,7 +475,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                     a_token_item->auth_signs[a_token_item->auth_signs_total-1] = NULL;
                     memcpy( &a_token_item->auth_signs_pkey_hash[a_token_item->auth_signs_total-1], l_tsd->data, l_tsd->size ) ;
                 }else{
-                    log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SIGNS_ADD expected to have %zd bytes data length, not %zd",
+                    if(s_debug_more)
+                        log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TOTAL_SIGNS_ADD expected to have %zd bytes data length, not %zd",
                            sizeof (dap_hash_fast_t), l_tsd_size );
                 }
             }break;
@@ -459,7 +492,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                     dap_chain_addr_t * l_add_addr = (dap_chain_addr_t *) l_tsd->data;
                     int l_add_addr_check;
                     if (  (l_add_addr_check=dap_chain_addr_check_sum(l_add_addr))!=0){
-                        log_it(L_ERROR,"Wrong address checksum in TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_ALLOWED_ADD (code %d)",
+                        if(s_debug_more)
+                            log_it(L_ERROR,"Wrong address checksum in TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_ALLOWED_ADD (code %d)",
                                l_add_addr_check);
                         return -12;
                     }
@@ -467,7 +501,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                     for( size_t i=0; i < a_token_item->tx_recv_allow_size; i++){ // Check for all the list
                         if ( memcmp(&a_token_item->tx_recv_allow[i], l_tsd->data, l_tsd->size) == 0 ){ // Found
                             char * l_addr_str= dap_chain_addr_to_str((dap_chain_addr_t*) l_tsd->data );
-                            log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_ALLOWED_ADD has address %s thats already present in list",
+                            if(s_debug_more)
+                                log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_ALLOWED_ADD has address %s thats already present in list",
                                    l_addr_str);
                             DAP_DELETE(l_addr_str);
                             return -11;
@@ -483,7 +518,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                         return -20;
                     }
                 }else{
-                    log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_ALLOWED_ADD expected to have %zd bytes data length, not %zd",
+                    if(s_debug_more)
+                        log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_ALLOWED_ADD expected to have %zd bytes data length, not %zd",
                            sizeof (dap_chain_addr_t), l_tsd->size );
                     return -10;
                 }
@@ -495,7 +531,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                     dap_chain_addr_t * l_add_addr = (dap_chain_addr_t *) l_tsd->data;
                     int l_add_addr_check;
                     if (  (l_add_addr_check=dap_chain_addr_check_sum(l_add_addr))!=0){
-                        log_it(L_ERROR,"Wrong address checksum in TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_ALLOWED_REMOVE (code %d)",
+                        if(s_debug_more)
+                            log_it(L_ERROR,"Wrong address checksum in TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_ALLOWED_REMOVE (code %d)",
                                l_add_addr_check);
                         return -12;
                     }
@@ -511,7 +548,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                         }
                     }
                 }else{
-                    log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_ALLOWED_REMOVE expected to have %zd bytes data length, not %zd",
+                    if(s_debug_more)
+                        log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_ALLOWED_REMOVE expected to have %zd bytes data length, not %zd",
                            sizeof (dap_chain_addr_t), l_tsd->size );
                     return -10;
                 }
@@ -523,7 +561,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                         DAP_DEL_Z(a_token_item->tx_recv_allow);
                     a_token_item->tx_recv_allow_size = 0;
                 }else{
-                    log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_ALLOWED_CLEAR expected to have 0 bytes data length, not %zd",
+                    if(s_debug_more)
+                        log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_ALLOWED_CLEAR expected to have 0 bytes data length, not %zd",
                            l_tsd->size );
                     return -10;
                 }
@@ -540,7 +579,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                     dap_chain_addr_t * l_add_addr = (dap_chain_addr_t *) l_tsd->data;
                     int l_add_addr_check;
                     if (  (l_add_addr_check=dap_chain_addr_check_sum(l_add_addr))!=0){
-                        log_it(L_ERROR,"Wrong address checksum in TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_BLOCKED_ADD (code %d)",
+                        if(s_debug_more)
+                            log_it(L_ERROR,"Wrong address checksum in TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_BLOCKED_ADD (code %d)",
                                l_add_addr_check);
                         return -12;
                     }
@@ -548,7 +588,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                     for( size_t i=0; i < a_token_item->tx_recv_block_size; i++){ // Check for all the list
                         if ( memcmp(&a_token_item->tx_recv_block[i], l_tsd->data, l_tsd->size) == 0 ){ // Found
                             char * l_addr_str= dap_chain_addr_to_str((dap_chain_addr_t*) l_tsd->data );
-                            log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_BLOCKED_ADD has address %s thats already present in list",
+                            if(s_debug_more)
+                                log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_BLOCKED_ADD has address %s thats already present in list",
                                    l_addr_str);
                             DAP_DELETE(l_addr_str);
                             return -11;
@@ -564,7 +605,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                         log_it(L_ERROR,"Out of memory! Can't extend TX_RECEIVER_BLOCKED array");
                     }
                 }else{
-                    log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_BLOCKED_ADD expected to have %zd bytes data length, not %zd",
+                    if(s_debug_more)
+                        log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_BLOCKED_ADD expected to have %zd bytes data length, not %zd",
                            sizeof (dap_chain_addr_t), l_tsd->size );
                     return -10;
                 }
@@ -576,7 +618,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                     dap_chain_addr_t * l_add_addr = (dap_chain_addr_t *) l_tsd->data;
                     int l_add_addr_check;
                     if (  (l_add_addr_check=dap_chain_addr_check_sum(l_add_addr))!=0){
-                        log_it(L_ERROR,"Wrong address checksum in TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_BLOCKED_REMOVE (code %d)",
+                        if(s_debug_more)
+                            log_it(L_ERROR,"Wrong address checksum in TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_BLOCKED_REMOVE (code %d)",
                                l_add_addr_check);
                         return -12;
                     }
@@ -592,7 +635,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                         }
                     }
                 }else{
-                    log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_BLOCKED_REMOVE expected to have %zd bytes data length, not %zd",
+                    if(s_debug_more)
+                        log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_BLOCKED_REMOVE expected to have %zd bytes data length, not %zd",
                            sizeof (dap_chain_addr_t), l_tsd->size );
                     return -10;
                 }
@@ -604,7 +648,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                         DAP_DEL_Z(a_token_item->tx_recv_block);
                     a_token_item->tx_recv_block_size = 0;
                 }else{
-                    log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_BLOCKED_CLEAR expected to have 0 bytes data length, not %zd",
+                    if(s_debug_more)
+                        log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_BLOCKED_CLEAR expected to have 0 bytes data length, not %zd",
                            l_tsd->size );
                     return -10;
                 }
@@ -620,7 +665,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                     dap_chain_addr_t * l_add_addr = (dap_chain_addr_t *) l_tsd->data;
                     int l_add_addr_check;
                     if (  (l_add_addr_check=dap_chain_addr_check_sum(l_add_addr))!=0){
-                        log_it(L_ERROR,"Wrong address checksum in TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_ADD (code %d)",
+                        if(s_debug_more)
+                            log_it(L_ERROR,"Wrong address checksum in TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_ADD (code %d)",
                                l_add_addr_check);
                         return -12;
                     }
@@ -628,7 +674,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                     for( size_t i=0; i < a_token_item->tx_send_allow_size; i++){ // Check for all the list
                         if ( memcmp(&a_token_item->tx_send_allow[i], l_tsd->data, l_tsd->size) == 0 ){ // Found
                             char * l_addr_str= dap_chain_addr_to_str((dap_chain_addr_t*) l_tsd->data );
-                            log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_ADD has address %s thats already present in list",
+                            if(s_debug_more)
+                                log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_ADD has address %s thats already present in list",
                                    l_addr_str);
                             DAP_DELETE(l_addr_str);
                             return -11;
@@ -643,7 +690,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                         log_it(L_ERROR,"Out of memory! Can't extend TX_SENDER_ALLOWED array");
                     }
                 }else{
-                    log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_ADD expected to have %zd bytes data length, not %zd",
+                    if(s_debug_more)
+                        log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_ADD expected to have %zd bytes data length, not %zd",
                            sizeof (dap_chain_addr_t), l_tsd->size );
                 }
             }break;
@@ -654,7 +702,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                     dap_chain_addr_t * l_add_addr = (dap_chain_addr_t *) l_tsd->data;
                     int l_add_addr_check;
                     if (  (l_add_addr_check=dap_chain_addr_check_sum(l_add_addr))!=0){
-                        log_it(L_ERROR,"Wrong address checksum in TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_REMOVE (code %d)",
+                        if(s_debug_more)
+                            log_it(L_ERROR,"Wrong address checksum in TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_REMOVE (code %d)",
                                l_add_addr_check);
                         return -12;
                     }
@@ -670,7 +719,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                         }
                     }
                 }else{
-                    log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_REMOVE expected to have %zd bytes data length, not %zd",
+                    if(s_debug_more)
+                        log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_REMOVE expected to have %zd bytes data length, not %zd",
                            sizeof (dap_chain_addr_t), l_tsd->size );
                     return -10;
                 }
@@ -682,7 +732,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                         DAP_DEL_Z(a_token_item->tx_send_allow);
                     a_token_item->tx_send_allow_size = 0;
                 }else{
-                    log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_CLEAR expected to have 0 bytes data length, not %zd",
+                    if(s_debug_more)
+                        log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_CLEAR expected to have 0 bytes data length, not %zd",
                            l_tsd->size );
                     return -10;
                 }
@@ -699,7 +750,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                     dap_chain_addr_t * l_add_addr = (dap_chain_addr_t *) l_tsd->data;
                     int l_add_addr_check;
                     if (  (l_add_addr_check=dap_chain_addr_check_sum(l_add_addr))!=0){
-                        log_it(L_ERROR,"Wrong address checksum in TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_ADD (code %d)",
+                        if(s_debug_more)
+                            log_it(L_ERROR,"Wrong address checksum in TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_ADD (code %d)",
                                l_add_addr_check);
                         return -12;
                     }
@@ -707,7 +759,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                     for( size_t i=0; i < a_token_item->tx_send_block_size; i++){ // Check for all the list
                         if ( memcmp(&a_token_item->tx_send_block[i], l_tsd->data, l_tsd->size) == 0 ){ // Found
                             char * l_addr_str= dap_chain_addr_to_str((dap_chain_addr_t*) l_tsd->data );
-                            log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_ADD has address %s thats already present in list",
+                            if(s_debug_more)
+                                log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_ADD has address %s thats already present in list",
                                    l_addr_str);
                             DAP_DELETE(l_addr_str);
                             return -11;
@@ -722,7 +775,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                         log_it(L_ERROR,"Out of memory! Can't extend TX_SENDER_BLOCKED array");
                     }
                 }else{
-                    log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_BLOCKED_ADD expected to have %zd bytes data length, not %zd",
+                    if(s_debug_more)
+                        log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_BLOCKED_ADD expected to have %zd bytes data length, not %zd",
                            sizeof (dap_chain_addr_t), l_tsd->size );
                 }
             }break;
@@ -733,7 +787,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                     dap_chain_addr_t * l_add_addr = (dap_chain_addr_t *) l_tsd->data;
                     int l_add_addr_check;
                     if (  (l_add_addr_check=dap_chain_addr_check_sum(l_add_addr))!=0){
-                        log_it(L_ERROR,"Wrong address checksum in TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_BLOCKED_REMOVE (code %d)",
+                        if(s_debug_more)
+                            log_it(L_ERROR,"Wrong address checksum in TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_BLOCKED_REMOVE (code %d)",
                                l_add_addr_check);
                         return -12;
                     }
@@ -749,7 +804,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                         }
                     }
                 }else{
-                    log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_BLOCKED_REMOVE expected to have %zd bytes data length, not %zd",
+                    if(s_debug_more)
+                        log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_BLOCKED_REMOVE expected to have %zd bytes data length, not %zd",
                            sizeof (dap_chain_addr_t), l_tsd->size );
                     return -10;
                 }
@@ -761,7 +817,8 @@ static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_ite
                         DAP_DEL_Z(a_token_item->tx_send_block);
                     a_token_item->tx_send_block_size = 0;
                 }else{
-                    log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_BLOCKED_CLEAR expected to have 0 bytes data length, not %zd",
+                    if(s_debug_more)
+                        log_it(L_ERROR,"TSD param DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_BLOCKED_CLEAR expected to have 0 bytes data length, not %zd",
                            l_tsd->size );
                     return -10;
                 }
@@ -991,11 +1048,13 @@ int dap_chain_ledger_token_emission_add_check(dap_ledger_t *a_ledger, const dap_
     pthread_rwlock_unlock(l_token_item ? &l_token_item->token_emissions_rwlock
                                        : &l_ledger_priv->treshold_emissions_rwlock);
     if(l_token_emission_item ) {
-        log_it(L_ERROR, "Can't add token emission datum of %llu %s ( %s ): already present in cache",
+        if(s_debug_more)
+            log_it(L_ERROR, "Can't add token emission datum of %llu %s ( %s ): already present in cache",
                 a_token_emission->hdr.value, c_token_ticker, l_hash_str);
         ret = -1;
     }else if ( (! l_token_item) && ( l_threshold_emissions_count >= s_treshold_emissions_max)) {
-        log_it(L_WARNING,"Treshold for emissions is overfulled (%lu max)",
+        if(s_debug_more)
+            log_it(L_WARNING,"Treshold for emissions is overfulled (%lu max)",
                s_treshold_emissions_max);
         ret = -2;
     }else{ // Chech emission correctness
@@ -1033,13 +1092,15 @@ int dap_chain_ledger_token_emission_add_check(dap_ledger_t *a_ledger, const dap_
                         }
 
                         if (l_aproves < l_aproves_valid ){
-                            log_it(L_WARNING, "Emission of %llu datoshi of %s:%s is wrong: only %u valid aproves when %u need",
+                            if(s_debug_more)
+                                log_it(L_WARNING, "Emission of %llu datoshi of %s:%s is wrong: only %u valid aproves when %u need",
                                    a_token_emission->hdr.value, a_ledger->net_name, a_token_emission->hdr.ticker, l_aproves, l_aproves_valid );
                             ret = -1;
                         }
                     }
                 }else{
-                    log_it(L_WARNING,"Can't find token declaration %s:%s thats pointed in token emission datum", a_ledger->net_name, a_token_emission->hdr.ticker);
+                    if(s_debug_more)
+                        log_it(L_WARNING,"Can't find token declaration %s:%s thats pointed in token emission datum", a_ledger->net_name, a_token_emission->hdr.ticker);
                     ret = DAP_CHAIN_CS_VERIFY_CODE_TX_NO_PREVIOUS;
                 }
             }break;
@@ -1111,22 +1172,24 @@ int dap_chain_ledger_token_emission_add(dap_ledger_t *a_ledger,
             }
             DAP_DELETE(l_gdb_group);
             char * l_token_emission_address_str = dap_chain_addr_to_str( &(a_token_emission->hdr.address) );
-            log_it(L_NOTICE,
-             "Added token emission datum to %s: type=%s value=%.1llf token=%s to_addr=%s ",
-                   l_token_item?"emissions cache":"emissions treshold",
-                     c_dap_chain_datum_token_emission_type_str[ a_token_emission->hdr.type ] ,
-                   dap_chain_datoshi_to_coins(a_token_emission->hdr.value), c_token_ticker,
-                   l_token_emission_address_str);
+            if(s_debug_more)
+                log_it(L_NOTICE, "Added token emission datum to %s: type=%s value=%.1llf token=%s to_addr=%s ",
+                           l_token_item?"emissions cache":"emissions treshold",
+                           c_dap_chain_datum_token_emission_type_str[ a_token_emission->hdr.type ] ,
+                           dap_chain_datoshi_to_coins(a_token_emission->hdr.value), c_token_ticker,
+                           l_token_emission_address_str);
             DAP_DELETE(l_token_emission_address_str);
         }else{
-            log_it(L_WARNING,"Treshold for emissions is overfulled (%lu max), dropping down new data, added nothing",
+            if(s_debug_more)
+                log_it(L_WARNING,"Treshold for emissions is overfulled (%lu max), dropping down new data, added nothing",
                    s_treshold_emissions_max);
             ret = -2;
         }
     } else {
         if (l_token_item) {
-            log_it(L_ERROR, "Can't add token emission datum of %llu %s ( %s )",
-                a_token_emission->hdr.value, c_token_ticker, l_hash_str);
+            if(s_debug_more)
+                log_it(L_ERROR, "Can't add token emission datum of %llu %s ( %s )",
+                            a_token_emission->hdr.value, c_token_ticker, l_hash_str);
         }
         ret = -1;
     }
@@ -1324,7 +1387,8 @@ static bool dap_chain_ledger_item_is_used_out(dap_chain_ledger_tx_item_t *a_item
         return false;
     }
     if(a_idx_out >= MAX_OUT_ITEMS) {
-        log_it(L_ERROR, "Too big index(%d) of 'out'items (max=%d)", a_idx_out, MAX_OUT_ITEMS);
+        if(s_debug_more)
+            log_it(L_ERROR, "Too big index(%d) of 'out'items (max=%d)", a_idx_out, MAX_OUT_ITEMS);
     }
     assert(a_idx_out < MAX_OUT_ITEMS);
     // if there are used 'out' items
@@ -1470,11 +1534,13 @@ int dap_chain_ledger_tx_cache_check(dap_ledger_t *a_ledger, dap_chain_datum_tx_t
         bool l_is_blank = dap_hash_fast_is_blank(&l_tx_prev_hash);
         char l_tx_prev_hash_str[70]={[0]='\0'};
         if (l_is_blank){
-           log_it(L_DEBUG, "Tx check: blank prev hash ");
+            if(s_debug_more)
+                log_it(L_DEBUG, "Tx check: blank prev hash ");
            dap_snprintf(l_tx_prev_hash_str,sizeof( l_tx_prev_hash_str),"BLANK");
         }else{
             dap_chain_hash_fast_to_str(&l_tx_prev_hash,l_tx_prev_hash_str,sizeof(l_tx_prev_hash_str));
-            log_it(L_DEBUG, "Tx check:  tx prev hash %s",l_tx_prev_hash_str);
+            if(s_debug_more)
+                log_it(L_DEBUG, "Tx check:  tx prev hash %s",l_tx_prev_hash_str);
         }
 
         if(l_is_blank || l_is_first_transaction) {
@@ -1502,11 +1568,13 @@ int dap_chain_ledger_tx_cache_check(dap_ledger_t *a_ledger, dap_chain_datum_tx_t
                 s_find_datum_tx_by_hash(a_ledger, &l_tx_prev_hash, &l_item_out); // dap_chain_datum_tx_t *l_tx_prev = (dap_chain_datum_tx_t*) dap_chain_node_datum_tx_cache_find(&tx_prev_hash);
         bound_item->item_out = l_item_out;
         if(!l_tx_prev) { // First transaction
-            log_it(L_DEBUG,"No previous transaction was found for hash %s",l_tx_prev_hash_str);
+            if(s_debug_more)
+                log_it(L_DEBUG,"No previous transaction was found for hash %s",l_tx_prev_hash_str);
             l_err_num = DAP_CHAIN_CS_VERIFY_CODE_TX_NO_PREVIOUS;
             break;
         }
-        //log_it(L_INFO,"Previous transaction was found for hash %s",l_tx_prev_hash_str);
+        if(s_debug_more)
+            log_it(L_INFO,"Previous transaction was found for hash %s",l_tx_prev_hash_str);
         bound_item->tx_prev = l_tx_prev;
 
         // 1. Verify signature in previous transaction
@@ -1609,7 +1677,8 @@ int dap_chain_ledger_tx_cache_check(dap_ledger_t *a_ledger, dap_chain_datum_tx_t
                 HASH_FIND_INT(s_verificators, &l_tmp, l_verificator);
                 pthread_rwlock_unlock(&s_verificators_rwlock);
                 if (!l_verificator || !l_verificator->callback) {
-                    log_it(L_ERROR, "No verificator set for conditional output subtype %d", l_tmp);
+                    if(s_debug_more)
+                        log_it(L_ERROR, "No verificator set for conditional output subtype %d", l_tmp);
                     l_err_num = -13;
                     break;
                 }
@@ -1637,7 +1706,8 @@ int dap_chain_ledger_tx_cache_check(dap_ledger_t *a_ledger, dap_chain_datum_tx_t
         HASH_FIND_STR(l_ledger_priv->tokens,l_token, l_token_item);
         pthread_rwlock_unlock(&l_ledger_priv->tokens_rwlock);
         if (! l_token_item){
-            log_it(L_WARNING, "No token permissions found for token %s", l_token);
+            if(s_debug_more)
+                log_it(L_WARNING, "No token permissions found for token %s", l_token);
             l_err_num = -15;
             break;
         }
@@ -1648,7 +1718,8 @@ int dap_chain_ledger_tx_cache_check(dap_ledger_t *a_ledger, dap_chain_datum_tx_t
             if(s_ledger_permissions_check(l_token_item, DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_ALLOWED_ADD,&l_tx_in_from,
                                           sizeof (l_tx_in_from)) != 0 ){
                 char * l_tmp_tx_in_from = dap_chain_addr_to_str(&l_tx_in_from);
-                log_it(L_WARNING, "No permission for addr %s", l_tmp_tx_in_from?l_tmp_tx_in_from:"(null)");
+                if(s_debug_more)
+                    log_it(L_WARNING, "No permission for addr %s", l_tmp_tx_in_from?l_tmp_tx_in_from:"(null)");
                 DAP_DELETE(l_tmp_tx_in_from);
                 l_err_num = -20;
                 break;
@@ -1659,7 +1730,8 @@ int dap_chain_ledger_tx_cache_check(dap_ledger_t *a_ledger, dap_chain_datum_tx_t
             if(s_ledger_permissions_check(l_token_item, DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_SENDER_BLOCKED_ADD ,&l_tx_in_from,
                                           sizeof (l_tx_in_from)) == 0 ){
                 char * l_tmp_tx_in_from = dap_chain_addr_to_str(&l_tx_in_from);
-                log_it(L_WARNING, "No permission for addr %s", l_tmp_tx_in_from?l_tmp_tx_in_from:"(null)");
+                if(s_debug_more)
+                    log_it(L_WARNING, "No permission for addr %s", l_tmp_tx_in_from?l_tmp_tx_in_from:"(null)");
                 DAP_DELETE(l_tmp_tx_in_from);
                 l_err_num = -20;
                 break;
@@ -1759,7 +1831,8 @@ int dap_chain_ledger_tx_cache_check(dap_ledger_t *a_ledger, dap_chain_datum_tx_t
         HASH_FIND_STR(l_ledger_priv->tokens,l_token, l_token_item);
         pthread_rwlock_unlock(&l_ledger_priv->tokens_rwlock);
         if (! l_token_item){
-            log_it(L_WARNING, "No token permissions found for token %s", l_token);
+            if(s_debug_more)
+                log_it(L_WARNING, "No token permissions found for token %s", l_token);
             l_err_num = -15;
             break;
         }
@@ -1770,7 +1843,8 @@ int dap_chain_ledger_tx_cache_check(dap_ledger_t *a_ledger, dap_chain_datum_tx_t
             if(s_ledger_permissions_check(l_token_item, DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_ALLOWED_ADD,&l_tx_out_to ,
                                           sizeof (l_tx_out_to)) != 0 ){
                 char * l_tmp_tx_out_to = dap_chain_addr_to_str(&l_tx_out_to);
-                log_it(L_WARNING, "No permission for addr %s", l_tmp_tx_out_to?l_tmp_tx_out_to:"(null)");
+                if(s_debug_more)
+                    log_it(L_WARNING, "No permission for addr %s", l_tmp_tx_out_to?l_tmp_tx_out_to:"(null)");
                 DAP_DELETE(l_tmp_tx_out_to);
                 l_err_num = -20;
                 break;
@@ -1782,7 +1856,8 @@ int dap_chain_ledger_tx_cache_check(dap_ledger_t *a_ledger, dap_chain_datum_tx_t
             if(s_ledger_permissions_check(l_token_item, DAP_CHAIN_DATUM_TOKEN_TSD_TYPE_TX_RECEIVER_BLOCKED_ADD ,&l_tx_out_to,
                                           sizeof (l_tx_out_to)) == 0 ){
                 char * l_tmp_tx_out_to = dap_chain_addr_to_str(&l_tx_out_to);
-                log_it(L_WARNING, "No permission for addr %s", l_tmp_tx_out_to?l_tmp_tx_out_to:"(null)");
+                if(s_debug_more)
+                    log_it(L_WARNING, "No permission for addr %s", l_tmp_tx_out_to?l_tmp_tx_out_to:"(null)");
                 DAP_DELETE(l_tmp_tx_out_to);
                 l_err_num = -20;
                 break;
@@ -1814,7 +1889,8 @@ int dap_chain_ledger_tx_cache_check(dap_ledger_t *a_ledger, dap_chain_datum_tx_t
         HASH_ITER(hh, l_values_from_prev_tx, l_value_cur, l_tmp) {
             HASH_FIND_STR(l_values_from_cur_tx, l_value_cur->token_ticker, l_res);
             if (!l_res || l_res->sum != l_value_cur->sum) {
-                log_it(L_ERROR, "Sum of values in out items of current tx (%llu) is not equal outs from previous tx (%llu) for token %s",
+                if(s_debug_more)
+                    log_it(L_ERROR, "Sum of values in out items of current tx (%llu) is not equal outs from previous tx (%llu) for token %s",
                        l_res ? l_res->sum : 0, l_value_cur->sum, l_value_cur->token_ticker);
                 l_err_num = -12;
                 break;
@@ -1859,13 +1935,15 @@ int dap_chain_ledger_tx_add_check(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *
     int l_ret_check;
     if( (l_ret_check = dap_chain_ledger_tx_cache_check(
              a_ledger, a_tx, &l_list_bound_items, &l_list_tx_out)) < 0){
-        log_it (L_DEBUG, "dap_chain_ledger_tx_add_check() tx not passed the check: code %d ",l_ret_check);
+        if(s_debug_more)
+            log_it (L_DEBUG, "dap_chain_ledger_tx_add_check() tx not passed the check: code %d ",l_ret_check);
         return -1;
     }
     dap_chain_hash_fast_t *l_tx_hash = dap_chain_node_datum_tx_calc_hash(a_tx);
     char l_tx_hash_str[70];
     dap_chain_hash_fast_to_str(l_tx_hash,l_tx_hash_str,sizeof(l_tx_hash_str));
-    //log_it ( L_INFO, "dap_chain_ledger_tx_add_check() check passed for tx %s",l_tx_hash_str);
+    if(s_debug_more)
+        log_it ( L_INFO, "dap_chain_ledger_tx_add_check() check passed for tx %s",l_tx_hash_str);
     return 0;
 }
 
@@ -1875,7 +1953,8 @@ int dap_chain_ledger_balance_cache_update(dap_ledger_t *a_ledger, dap_ledger_wal
     uint128_t *l_balance_value = DAP_NEW_Z(uint128_t);
     *l_balance_value = a_balance->balance;
     if (!dap_chain_global_db_gr_set(dap_strdup(a_balance->key), l_balance_value, sizeof(uint128_t), l_gdb_group)) {
-        log_it(L_WARNING, "Ledger cache mismatch");
+        if(s_debug_more)
+            log_it(L_WARNING, "Ledger cache mismatch");
         DAP_DELETE(l_balance_value);
         return -1;
     }
@@ -1890,7 +1969,8 @@ int dap_chain_ledger_balance_cache_update(dap_ledger_t *a_ledger, dap_ledger_wal
 int dap_chain_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx, bool a_from_threshold)
 {
     if(!a_tx){
-        log_it(L_ERROR, "NULL tx detected");
+        if(s_debug_more)
+            log_it(L_ERROR, "NULL tx detected");
         return -1;
     }
     int ret = 1;
@@ -1907,7 +1987,8 @@ int dap_chain_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx,
     pthread_rwlock_unlock(&l_ledger_priv->ledger_rwlock);
     // transaction already present in the cache list
     if (l_item_tmp) {
-        log_it(L_WARNING, "Transaction %s already present in the cache", l_tx_hash_str);
+        if(s_debug_more)
+            log_it(L_WARNING, "Transaction %s already present in the cache", l_tx_hash_str);
         ret = 1;
         goto FIN;
     }
@@ -1923,7 +2004,8 @@ int dap_chain_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx,
             pthread_rwlock_unlock(&l_ledger_priv->treshold_txs_rwlock);
             if (!l_item_tmp) {
                 if (l_threshold_txs_count >= s_treshold_txs_max) {
-                    log_it(L_WARNING,"Treshold for tranactions is overfulled (%lu max), dropping down new data, added nothing",
+                    if(s_debug_more)
+                        log_it(L_WARNING,"Treshold for tranactions is overfulled (%lu max), dropping down new data, added nothing",
                                    s_treshold_txs_max);
                 } else {
                     l_item_tmp = DAP_NEW_Z(dap_chain_ledger_tx_item_t);
@@ -1934,25 +2016,29 @@ int dap_chain_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx,
                     pthread_rwlock_wrlock(&l_ledger_priv->treshold_txs_rwlock);
                     HASH_ADD(hh, l_ledger_priv->treshold_txs, tx_hash_fast, sizeof(dap_chain_hash_fast_t), l_item_tmp);
                     pthread_rwlock_unlock(&l_ledger_priv->treshold_txs_rwlock);
-                    log_it (L_DEBUG, "Tx %s added to threshold", l_tx_hash_str);
+                    if(s_debug_more)
+                        log_it (L_DEBUG, "Tx %s added to threshold", l_tx_hash_str);
                     // Add it to cache
                     dap_chain_datum_tx_t *l_tx_cache = DAP_NEW_Z_SIZE(dap_chain_datum_tx_t, l_tx_size);
                     memcpy(l_tx_cache, a_tx, l_tx_size);
                     char *l_gdb_group = dap_chain_ledger_get_gdb_group(a_ledger, DAP_CHAIN_LEDGER_TXS_THRES_STR);
                     if (!dap_chain_global_db_gr_set(dap_strdup(l_tx_hash_str), l_tx_cache, l_tx_size, l_gdb_group)) {
-                        log_it(L_WARNING, "Ledger cache mismatch");
+                        if(s_debug_more)
+                            log_it(L_WARNING, "Ledger cache mismatch");
                         DAP_DELETE(l_tx_cache);
                     }
                     DAP_DELETE(l_gdb_group);
                 }
             }
         } else {
-            log_it (L_WARNING, "dap_chain_ledger_tx_add() tx %s not passed the check: code %d ",l_tx_hash_str, l_ret_check);
+            if(s_debug_more)
+                log_it (L_WARNING, "dap_chain_ledger_tx_add() tx %s not passed the check: code %d ",l_tx_hash_str, l_ret_check);
         }
         ret = l_ret_check;
         goto FIN;
     }
-    log_it ( L_DEBUG, "dap_chain_ledger_tx_add() check passed for tx %s",l_tx_hash_str);
+    if(s_debug_more)
+        log_it ( L_DEBUG, "dap_chain_ledger_tx_add() check passed for tx %s",l_tx_hash_str);
 
     char l_token_ticker[DAP_CHAIN_TICKER_SIZE_MAX]      = { '\0'},
          l_token_ticker_old[DAP_CHAIN_TICKER_SIZE_MAX]  = { '\0'};
@@ -1992,13 +2078,15 @@ int dap_chain_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx,
                 uint64_t l_value = (l_out_type == TX_ITEM_TYPE_OUT) ?
                                     bound_item->out.tx_prev_out->header.value :
                                     bound_item->out.tx_prev_out_ext->header.value;
-                //log_it(L_DEBUG,"SPEND %lu from addr: %s", l_value, l_wallet_balance_key);
+                if(s_debug_more)
+                    log_it(L_DEBUG,"SPEND %lu from addr: %s", l_value, l_wallet_balance_key);
                 uint128_t l_sub = dap_chain_uint128_from(l_value);
                 wallet_balance->balance = dap_uint128_substract(wallet_balance->balance, l_sub);
                 // Update the cache
                 dap_chain_ledger_balance_cache_update(a_ledger, wallet_balance);
             } else {
-                log_it(L_ERROR,"!!! Attempt to SPEND from some non-existent balance !!!: %s %s", l_addr_str, l_token_ticker);
+                if(s_debug_more)
+                    log_it(L_ERROR,"!!! Attempt to SPEND from some non-existent balance !!!: %s %s", l_addr_str, l_token_ticker);
             }
             DAP_DELETE(l_addr_str);
             DAP_DELETE(l_wallet_balance_key);
@@ -2021,14 +2109,16 @@ int dap_chain_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx,
             // remove from memory ledger
             int res = dap_chain_ledger_tx_remove(a_ledger, &l_tx_prev_hash_to_del);
             if(res == -2) {
-                log_it(L_ERROR, "Can't delete previous transactions because hash=0x%x not found", l_tx_prev_hash_str);
+                if(s_debug_more)
+                    log_it(L_ERROR, "Can't delete previous transactions because hash=0x%x not found", l_tx_prev_hash_str);
                 ret = -100;
                 DAP_DELETE(l_tx_prev_hash_str);
                 dap_list_free_full(l_list_bound_items, free);
                 goto FIN;
             }
             else if(res != 1) {
-                log_it(L_ERROR, "Can't delete previous transactions with hash=0x%x", l_tx_prev_hash_str);
+                if(s_debug_more)
+                    log_it(L_ERROR, "Can't delete previous transactions with hash=0x%x", l_tx_prev_hash_str);
                 ret = -101;
                 DAP_DELETE(l_tx_prev_hash_str);
                 dap_list_free_full(l_list_bound_items, free);
@@ -2079,6 +2169,7 @@ int dap_chain_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx,
                                         &l_out_item->addr :
                                         &l_out_item_ext->addr;
             char *l_addr_str = dap_chain_addr_to_str(l_addr);
+
             //log_it (L_DEBUG, "Check unspent %.03Lf %s for addr %s",
             //        (long double) l_out_item->header.value/ 1000000000000.0L,
             //        l_token_ticker, l_addr_str);
@@ -2088,12 +2179,15 @@ int dap_chain_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx,
             }
             char *l_wallet_balance_key = dap_strjoin(" ", l_addr_str, l_token_ticker, (char*)NULL);
             uint64_t l_value =  (l_type == TX_ITEM_TYPE_OUT) ? l_out_item->header.value : l_out_item_ext->header.value;
-            //log_it (L_DEBUG,"GOT %lu to addr: %s", l_value, l_wallet_balance_key);
+
+            if(s_debug_more)
+                log_it (L_DEBUG,"GOT %lu to addr: %s", l_value, l_wallet_balance_key);
             pthread_rwlock_rdlock(&l_ledger_priv->balance_accounts_rwlock);
             HASH_FIND_STR(PVT(a_ledger)->balance_accounts, l_wallet_balance_key, wallet_balance);
             pthread_rwlock_unlock(&l_ledger_priv->balance_accounts_rwlock);
             if (wallet_balance) {
-                //log_it(L_DEBUG, "Balance item is present in cache");
+                if(s_debug_more)
+                    log_it(L_DEBUG, "Balance item is present in cache");
                 uint128_t l_add = dap_chain_uint128_from(l_value);
                 wallet_balance->balance = dap_uint128_add(wallet_balance->balance, l_add);
                 DAP_DELETE (l_wallet_balance_key);
@@ -2104,7 +2198,8 @@ int dap_chain_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx,
                 wallet_balance->key = l_wallet_balance_key;
                 uint128_t l_add = dap_chain_uint128_from(l_value);
                 wallet_balance->balance = dap_uint128_add(wallet_balance->balance, l_add);
-                //log_it(L_DEBUG,"!!! Create new balance item: %s %s", l_addr_str, l_token_ticker);
+                if(s_debug_more)
+                    log_it(L_DEBUG,"!!! Create new balance item: %s %s", l_addr_str, l_token_ticker);
                 pthread_rwlock_wrlock(&l_ledger_priv->balance_accounts_rwlock);
                 HASH_ADD_KEYPTR(hh, PVT(a_ledger)->balance_accounts, wallet_balance->key,
                                 strlen(l_wallet_balance_key), wallet_balance);
@@ -2114,7 +2209,8 @@ int dap_chain_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx,
             }
             DAP_DELETE (l_addr_str);
         } else {
-            log_it(L_WARNING, "Can't detect tx ticker or matching output, can't append balances cache");
+            if(s_debug_more)
+                log_it(L_WARNING, "Can't detect tx ticker or matching output, can't append balances cache");
         }
     }
 
@@ -2138,7 +2234,8 @@ int dap_chain_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx,
                     // TODO list conditional outputs
                     dap_chain_tx_out_t * l_tx_out = l_tist_tmp->data;
                     char * l_tx_out_addr_str = dap_chain_addr_to_str( &l_tx_out->addr );
-                    //log_it(L_DEBUG,"Added tx out to %s",l_tx_out_addr_str );
+                    if(s_debug_more)
+                        log_it(L_DEBUG,"Added tx out to %s",l_tx_out_addr_str );
                     DAP_DELETE (l_tx_out_addr_str);
                 }
                 if(l_tist_tmp)
@@ -2147,7 +2244,8 @@ int dap_chain_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx,
         }
 
         if (!l_ticker_trl) { //No token ticker in previous txs
-            //log_it(L_DEBUG, "No token ticker in previous txs");
+            if(s_debug_more)
+                log_it(L_DEBUG, "No token ticker in previous txs");
             //int l_tokens_count = 0;
             //dap_list_t *l_tokens_list = dap_chain_datum_tx_items_get(a_tx, TX_ITEM_TYPE_TOKEN, &l_tokens_count );
             //if ( l_tokens_count>0 ){
@@ -2174,7 +2272,8 @@ int dap_chain_ledger_tx_add(dap_ledger_t *a_ledger, dap_chain_datum_tx_t *a_tx,
         memcpy(l_tx_cache + sizeof(l_item_tmp->cache_data), a_tx, l_tx_size);
         char *l_gdb_group = dap_chain_ledger_get_gdb_group(a_ledger, DAP_CHAIN_LEDGER_TXS_STR);
         if (!dap_chain_global_db_gr_set(dap_strdup(l_tx_hash_str), l_tx_cache, l_tx_size + sizeof(l_item_tmp->cache_data), l_gdb_group)) {
-            log_it(L_WARNING, "Ledger cache mismatch");
+            if(s_debug_more)
+                log_it(L_WARNING, "Ledger cache mismatch");
             DAP_DELETE(l_tx_cache);
         }
         DAP_DELETE(l_gdb_group);
@@ -2408,7 +2507,8 @@ uint128_t dap_chain_ledger_calc_balance(dap_ledger_t *a_ledger, const dap_chain_
 
     HASH_FIND_STR(PVT(a_ledger)->balance_accounts, l_wallet_balance_key, l_balance_item);
     if (l_balance_item) {
-        log_it (L_INFO,"Found address in cache with balance %llu", l_balance_item->balance);
+        if(s_debug_more)
+            log_it (L_INFO,"Found address in cache with balance %llu", l_balance_item->balance);
         l_ret = l_balance_item->balance;
     }
     DAP_DELETE(l_addr);
@@ -2449,8 +2549,10 @@ uint128_t dap_chain_ledger_calc_balance_full(dap_ledger_t *a_ledger, const dap_c
         int l_out_item_count = 0;
         dap_list_t *l_list_out_items = dap_chain_datum_tx_items_get(l_cur_tx, TX_ITEM_TYPE_OUT_ALL, &l_out_item_count);
         if(l_out_item_count >= MAX_OUT_ITEMS) {
-            log_it(L_ERROR, "Too many 'out' items=%d in transaction (max=%d)", l_out_item_count, MAX_OUT_ITEMS);
-            assert(l_out_item_count < MAX_OUT_ITEMS);
+            if(s_debug_more)
+                log_it(L_ERROR, "Too many 'out' items=%d in transaction (max=%d)", l_out_item_count, MAX_OUT_ITEMS);
+            if (l_out_item_count >= MAX_OUT_ITEMS)
+                return 0;
         }
         int l_out_idx_tmp = 0;
         for (dap_list_t *l_list_tmp = l_list_out_items; l_list_tmp; l_list_tmp = dap_list_next(l_list_tmp), l_out_idx_tmp++) {
diff --git a/modules/chain/include/dap_chain_ledger.h b/modules/chain/include/dap_chain_ledger.h
index a9f7feab224b80ad6462e92748dda7f4e89ea5e5..ca99601676ac9b15c873634b1d1e886f722876b3 100644
--- a/modules/chain/include/dap_chain_ledger.h
+++ b/modules/chain/include/dap_chain_ledger.h
@@ -62,6 +62,9 @@ typedef bool (* dap_chain_ledger_verificator_callback_t)(dap_chain_tx_out_cond_t
 #define DAP_CHAIN_LEDGER_TXS_THRES_STR           "thres_txs"
 #define DAP_CHAIN_LEDGER_BALANCES_STR            "balances"
 
+int dap_chain_ledger_init();
+void dap_chain_ledger_deinit();
+
 dap_ledger_t* dap_chain_ledger_create(uint16_t a_check_flags, char *a_net_name);
 
 // Remove dap_ledger_t structure
diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c
index 4083a15849b7f202a143b99564ad05ca7ffeb7e0..d73d98acd0a1f9cb6231dbcef26b366d1dc6309c 100644
--- a/modules/type/dag/dap_chain_cs_dag.c
+++ b/modules/type/dag/dap_chain_cs_dag.c
@@ -123,6 +123,7 @@ static int s_cli_dag(int argc, char ** argv, void *arg_func, char **str_reply);
 void s_dag_events_lasts_process_new_last_event(dap_chain_cs_dag_t * a_dag, dap_chain_cs_dag_event_item_t * a_event_item);
 
 static bool s_seed_mode = false;
+static bool s_debug_more = false;
 /**
  * @brief dap_chain_cs_dag_init
  * @return
@@ -132,6 +133,8 @@ int dap_chain_cs_dag_init(void)
     srand((unsigned int) time(NULL));
     dap_chain_cs_type_add( "dag", dap_chain_cs_dag_new );
     s_seed_mode = dap_config_get_item_bool_default(g_config,"general","seed_mode",false);
+    s_debug_more = dap_config_get_item_bool_default(g_config,"dag","debug_more",false);
+
     dap_chain_node_cli_cmd_item_create ("dag", s_cli_dag, NULL, "DAG commands",
         "dag -net <chain net name> -chain <chain name> event create -datum <datum hash> [-H hex|base58(default)]\n"
             "\tCreate event from datum mempool element\n\n"
@@ -332,10 +335,12 @@ static int s_dap_chain_add_atom_to_events_table(dap_chain_cs_dag_t * a_dag, dap_
     char l_buf_hash[128];
     dap_chain_hash_fast_to_str(&a_event_item->hash,l_buf_hash,sizeof(l_buf_hash)-1);
     if (res == 0 || memcmp( &a_event_item->hash, &a_dag->static_genesis_event_hash, sizeof(a_event_item->hash) ) == 0) {
-        log_it(L_DEBUG,"Dag event %s checked, add it to ledger", l_buf_hash);
+        if(s_debug_more)
+            log_it(L_DEBUG,"Dag event %s checked, add it to ledger", l_buf_hash);
         int l_ledger_res = s_dap_chain_add_atom_to_ledger(a_dag, a_ledger, a_event_item);
         if ( l_ledger_res ) {
-            log_it(L_WARNING,"Dag event %s checked, but ledger declined: code %d", l_buf_hash, l_ledger_res);
+            if(s_debug_more)
+                log_it(L_WARNING,"Dag event %s checked, but ledger declined: code %d", l_buf_hash, l_ledger_res);
         }
         //All correct, no matter for result
         HASH_ADD(hh, PVT(a_dag)->events,hash,sizeof (a_event_item->hash), a_event_item);
@@ -384,38 +389,45 @@ static dap_chain_atom_verify_res_t s_chain_callback_atom_add(dap_chain_t * a_cha
     dap_chain_cs_dag_event_calc_hash(l_event, a_atom_size,&l_event_hash);
 
     char * l_event_hash_str = dap_chain_hash_fast_to_str_new(&l_event_item->hash);
-    log_it(L_DEBUG, "Processing event: %s... (size %zd)", l_event_hash_str,a_atom_size);
+    if(s_debug_more)
+        log_it(L_DEBUG, "Processing event: %s... (size %zd)", l_event_hash_str,a_atom_size);
 
     pthread_rwlock_wrlock( l_events_rwlock );
 
     // check if we already have this event
     if(s_dap_chain_check_if_event_is_present(PVT(l_dag)->events, &l_event_item->hash)){
         ret = ATOM_PASS;
-        log_it(L_DEBUG, "... already present in events");
+        if(s_debug_more)
+            log_it(L_DEBUG, "... already present in events");
     }else if(s_dap_chain_check_if_event_is_present(PVT(l_dag)->events_treshold, &l_event_item->hash)){
         ret = ATOM_PASS;
-        log_it(L_DEBUG, "... already present in threshold");
+        if(s_debug_more)
+            log_it(L_DEBUG, "... already present in threshold");
     }
 
     // verify hashes and consensus
     if(ret == ATOM_ACCEPT){
         ret = s_chain_callback_atom_verify (a_chain, a_atom, a_atom_size);
-        log_it(L_DEBUG, "Verified atom %p: code %d", a_atom, ret);
+        if(s_debug_more)
+            log_it(L_DEBUG, "Verified atom %p: code %d", a_atom, ret);
     }
 
     if( ret == ATOM_MOVE_TO_THRESHOLD){
         HASH_ADD(hh, PVT(l_dag)->events_treshold,hash,sizeof (l_event_item->hash),  l_event_item);
-        log_it(L_DEBUG, "... added to threshold");
+        if(s_debug_more)
+            log_it(L_DEBUG, "... added to threshold");
     }else if( ret == ATOM_ACCEPT){
         int l_consensus_check = s_dap_chain_add_atom_to_events_table(l_dag, a_chain->ledger, l_event_item);
         if(!l_consensus_check){
-             log_it(L_DEBUG, "... added");
+            if(s_debug_more)
+                log_it(L_DEBUG, "... added");
         }else if (l_consensus_check == DAP_CHAIN_CS_VERIFY_CODE_TX_NO_PREVIOUS){
             HASH_ADD(hh, PVT(l_dag)->events_treshold, hash, sizeof(l_event_item->hash), l_event_item);
-            log_it(L_DEBUG, "... tresholded");
+            if(s_debug_more)
+                log_it(L_DEBUG, "... tresholded");
             ret = ATOM_MOVE_TO_THRESHOLD;
         }else{
-             log_it(L_DEBUG, "... error adding (code %d)", l_consensus_check);
+             log_it(L_WARNING, "Atom %s (size %zd) error adding (code %d)", l_event_hash_str,a_atom_size, l_consensus_check);
              ret = ATOM_REJECT;
         }
     }
@@ -728,7 +740,8 @@ static dap_chain_atom_verify_res_t s_chain_callback_atom_verify(dap_chain_t * a_
             HASH_FIND(hh, PVT(l_dag)->events ,l_hash ,sizeof (*l_hash),  l_event_search);
             if ( l_event_search == NULL ){
                 char * l_hash_str = dap_chain_hash_fast_to_str_new(l_hash);
-                log_it(L_WARNING, "Hash %s wasn't in hashtable of previously parsed", l_hash_str);
+                if(s_debug_more)
+                    log_it(L_WARNING, "Hash %s wasn't in hashtable of previously parsed", l_hash_str);
                 DAP_DELETE(l_hash_str);
                 res = ATOM_MOVE_TO_THRESHOLD;
                 break;
@@ -851,16 +864,19 @@ dap_chain_cs_dag_event_item_t* dap_chain_cs_dag_proc_treshold(dap_chain_cs_dag_t
 
             if(ret == DAP_THRESHOLD_OK){
                 char * l_event_hash_str = dap_chain_hash_fast_to_str_new(&l_event_item->hash);
-                log_it(L_DEBUG, "Processing event (threshold): %s...", l_event_hash_str);
+                if(s_debug_more)
+                    log_it(L_DEBUG, "Processing event (threshold): %s...", l_event_hash_str);
 
                 int l_add_res = s_dap_chain_add_atom_to_events_table(a_dag, a_ledger, l_event_item);
                 if(! l_add_res){
-                    log_it(L_DEBUG, "... added", l_event_hash_str);
+                    if(s_debug_more)
+                        log_it(L_INFO, "... moved from treshold to main chains", l_event_hash_str);
                     DAP_DELETE(l_event_hash_str);
                     res = true;
                     break;
                 }else{
-                    log_it(L_DEBUG, "... error adding", l_event_hash_str);
+                    if(s_debug_more)
+                        log_it(L_WARNING, "... error adding", l_event_hash_str);
                     //todo: delete event
                 }
                 DAP_DELETE(l_event_hash_str);