diff --git a/dap-sdk/core/src/dap_common.c b/dap-sdk/core/src/dap_common.c
index d36d88e4575a670ce1774896f706fbe4436932a1..ba91569fe2a3eda1583e5b60507af32fb6c5e5fd 100755
--- a/dap-sdk/core/src/dap_common.c
+++ b/dap-sdk/core/src/dap_common.c
@@ -224,14 +224,12 @@ void dap_set_log_tag_width(size_t a_width) {
  */
 
 /**
- * @brief dap_common_init call this function before using dap sdk modules
- * 
- * @param a_console_title set console title. Can be result of dap_get_appname()
- * @param a_log_file_path path to log file. Saved in s_log_file_path variable
- * @param a_log_dirpath path to log directory. Saved in s_log_dir_path variable
- * @return int (0 if succcess, -1 if error)
+ * @brief this function is used for dap sdk modules initialization
+ * @param a_console_title const char *: set console title. Can be result of dap_get_appname(). For example: cellframe-node
+ * @param a_log_file_path const char *: path to log file. Saved in s_log_file_path variable. For example: C:\\Users\\Public\\Documents\\cellframe-node\\var\\log\\cellframe-node.log
+ * @param a_log_dirpath const char *: path to log directory. Saved in s_log_dir_path variable. For example. C:\\Users\\Public\\Document\\cellframe-node\\var\\log
+ * @return int. (0 if succcess, -1 if error)
  */
-
 int dap_common_init( const char *a_console_title, const char *a_log_file_path, const char *a_log_dirpath) {
 
     // init randomer
diff --git a/dap-sdk/core/src/dap_strfuncs.c b/dap-sdk/core/src/dap_strfuncs.c
index f8944b88b34ef8fb956dfcb35036a7c188b07211..636a7c12f8e4b448de9d5ad0cd236d6a77774395 100755
--- a/dap-sdk/core/src/dap_strfuncs.c
+++ b/dap-sdk/core/src/dap_strfuncs.c
@@ -158,6 +158,14 @@ char *dap_utoa128(char *dest, uint128_t v, int base)
     return strcpy(dest, p);
 }
 
+/**
+ * @brief dap_itoa128
+ * 
+ * @param a_str 
+ * @param a_value 
+ * @param a_base 
+ * @return char* 
+ */
 char *dap_itoa128(char *a_str, int128_t a_value, int a_base)
 {
     char *p = a_str;
diff --git a/dap-sdk/crypto/include/dap_hash.h b/dap-sdk/crypto/include/dap_hash.h
index f247fa5b5807e92de400842819b043ef80fead63..f11b1f1334c4bae0715d873d6fbe0f35d0e8627f 100755
--- a/dap-sdk/crypto/include/dap_hash.h
+++ b/dap-sdk/crypto/include/dap_hash.h
@@ -56,6 +56,15 @@ extern "C" {
 //size_t dap_chain_hash_fast_to_str(dap_chain_hash_fast_t * a_hash, char * a_str, size_t a_str_max);
 int dap_chain_hash_fast_from_str( const char * a_hash_str, dap_hash_fast_t * a_hash);
 
+/**
+ * @brief 
+ * get SHA3_256 hash for specific data
+ * @param a_data_in input data
+ * @param a_data_in_size size of input data
+ * @param a_hash_out returned hash
+ * @return true 
+ * @return false 
+ */
 static inline bool dap_hash_fast( const void *a_data_in, size_t a_data_in_size, dap_hash_fast_t *a_hash_out )
 {
     if ( (a_data_in == NULL) || (a_data_in_size == 0) || (a_hash_out == NULL) )
@@ -73,8 +82,9 @@ static inline bool dap_hash_fast( const void *a_data_in, size_t a_data_in_size,
 
 /**
  * @brief dap_hash_fast_compare
- * @param a_hash1
- * @param a_hash2
+ * compare to hashes (dap_hash_fast_t) through memcmp
+ * @param a_hash1 - dap_hash_fast_t hash1
+ * @param a_hash2 - dap_hash_fast_t hash2
  * @return
  */
 static inline bool dap_hash_fast_compare(dap_hash_fast_t *a_hash1, dap_hash_fast_t *a_hash2)
diff --git a/dap-sdk/crypto/src/dap_cert_file.c b/dap-sdk/crypto/src/dap_cert_file.c
index 52b76b66c0057c7e2a2ba72a4417778bb391a2d4..4ade46227435ada96cc2c985b5f997e5f3785bc4 100755
--- a/dap-sdk/crypto/src/dap_cert_file.c
+++ b/dap-sdk/crypto/src/dap_cert_file.c
@@ -37,11 +37,10 @@ static const char s_key_inheritor[] = "Inheritor";
 
 /**
  * @brief dap_cert_file_save
- * @param a_cert
- * @param a_cert_file_path
+ * @param a_cert dap_cert_t certificate struucture
+ * @param a_cert_file_path path to certificate
  * @return int
  */
-
 int dap_cert_file_save(dap_cert_t * a_cert, const char * a_cert_file_path)
 {
     char * l_file_dir = dap_path_get_dirname(a_cert_file_path);
@@ -77,11 +76,10 @@ int dap_cert_file_save(dap_cert_t * a_cert, const char * a_cert_file_path)
 /**
  * @brief s_balance_the_tree
  * 
- * @param a_reorder 
- * @param a_left_idx 
- * @param a_right_idx 
+ * @param a_reorder dap_cert_file_aux_t
+ * @param a_left_idx size_t left tree node
+ * @param a_right_idx size_t right tree node
  */
-
 void s_balance_the_tree(dap_cert_file_aux_t *a_reorder, size_t a_left_idx, size_t a_right_idx)
 {
     if (a_left_idx == a_right_idx) {
diff --git a/dap-sdk/crypto/src/dap_enc_base58.c b/dap-sdk/crypto/src/dap_enc_base58.c
index ad6c897a31beddb1ee04489d91bdbc19c10e389f..0614fa39ef5c57d1f87efdd555a7d62f73485301 100755
--- a/dap-sdk/crypto/src/dap_enc_base58.c
+++ b/dap-sdk/crypto/src/dap_enc_base58.c
@@ -203,8 +203,8 @@ size_t dap_enc_base58_encode(const void * a_in, size_t a_in_size, char * a_out)
 
 /**
  * @brief dap_enc_base58_encode_to_str Encode to base58 and convert to string like '0xXXXXXXXXXXXXXXX'
- * @param a_in
- * @param a_in_size
+ * @param a_in buffer for encode
+ * @param a_in_size size of string
  * @return allocated string or NULL if error
  */
 char* dap_enc_base58_encode_to_str(const void * a_in, size_t a_in_size)
diff --git a/dap-sdk/crypto/src/dap_enc_salsa2012.c b/dap-sdk/crypto/src/dap_enc_salsa2012.c
index 770fddefa31e4caaafecebf5e6e18c51e389549d..1e0ed1973bdafb3ecc6c2268445a9ce8e41a9709 100644
--- a/dap-sdk/crypto/src/dap_enc_salsa2012.c
+++ b/dap-sdk/crypto/src/dap_enc_salsa2012.c
@@ -13,6 +13,18 @@
 #define SALSA20_KEY_SIZE 32
 #define SALSA20_NONCE_SIZE 8
 
+/**
+ * @brief dap_enc_salsa2012_key_generate
+ * 
+ * Generate key for Salsa20 crypto alghorithm. Key is stored in a_key->priv_key_data
+ * 
+ * @param a_key - dap_enc_key key descriptor
+ * @param kex_buf - 
+ * @param kex_size 
+ * @param seed 
+ * @param seed_size 
+ * @param key_size 
+ */
 void dap_enc_salsa2012_key_generate(struct dap_enc_key * a_key, const void *kex_buf,
         size_t kex_size, const void * seed, size_t seed_size, size_t key_size)
 {
@@ -34,6 +46,11 @@ void dap_enc_salsa2012_key_generate(struct dap_enc_key * a_key, const void *kex_
     Keccak_HashFinal(&Keccak_ctx, a_key->priv_key_data);
 }
 
+/**
+ * @brief dap_enc_salsa2012_key_delete 
+ * 
+ * @param a_key 
+ */
 void dap_enc_salsa2012_key_delete(struct dap_enc_key *a_key)
 {
     if(a_key->priv_key_data != NULL)
@@ -43,7 +60,12 @@ void dap_enc_salsa2012_key_delete(struct dap_enc_key *a_key)
     }
     //a_key->priv_key_data_size = 0;
 }
-//------SALSA2012-----------
+
+/**
+ * @brief dap_enc_salsa2012_key_new
+ * 
+ * @param a_key 
+ */
 void dap_enc_salsa2012_key_new(struct dap_enc_key * a_key)
 {
     a_key->_inheritor = NULL;
@@ -55,7 +77,15 @@ void dap_enc_salsa2012_key_new(struct dap_enc_key * a_key)
     a_key->dec_na = dap_enc_salsa2012_decrypt_fast;
 }
 
-
+/**
+ * @brief dap_enc_salsa2012_decrypt
+ * 
+ * @param a_key 
+ * @param a_in 
+ * @param a_in_size 
+ * @param a_out 
+ * @return size_t 
+ */
 size_t dap_enc_salsa2012_decrypt(struct dap_enc_key *a_key, const void * a_in, size_t a_in_size, void ** a_out)
 {
     size_t l_out_size = a_in_size - SALSA20_NONCE_SIZE;
@@ -70,6 +100,15 @@ size_t dap_enc_salsa2012_decrypt(struct dap_enc_key *a_key, const void * a_in, s
     return l_out_size;
 }
 
+/**
+ * @brief dap_enc_salsa2012_encrypt
+ * 
+ * @param a_key 
+ * @param a_in 
+ * @param a_in_size 
+ * @param a_out 
+ * @return size_t 
+ */
 size_t dap_enc_salsa2012_encrypt(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void ** a_out)
 {
     if(a_in_size <= 0) {
@@ -84,11 +123,23 @@ size_t dap_enc_salsa2012_encrypt(struct dap_enc_key * a_key, const void * a_in,
     return l_out_size;
 }
 
+/**
+ * @brief dap_enc_salsa2012_calc_encode_size
+ * 
+ * @param size_in 
+ * @return size_t 
+ */
 size_t dap_enc_salsa2012_calc_encode_size(const size_t size_in)
 {
     return size_in + SALSA20_NONCE_SIZE;
 }
 
+/**
+ * @brief dap_enc_salsa2012_calc_decode_size
+ * 
+ * @param size_in 
+ * @return size_t 
+ */
 size_t dap_enc_salsa2012_calc_decode_size(const size_t size_in)
 {
     if(size_in <= SALSA20_NONCE_SIZE) {
@@ -98,6 +149,16 @@ size_t dap_enc_salsa2012_calc_decode_size(const size_t size_in)
     return size_in - SALSA20_NONCE_SIZE;
 }
 
+/**
+ * @brief dap_enc_salsa2012_decrypt_fast
+ * 
+ * @param a_key 
+ * @param a_in 
+ * @param a_in_size 
+ * @param a_out 
+ * @param buf_out_size 
+ * @return size_t 
+ */
 size_t dap_enc_salsa2012_decrypt_fast(struct dap_enc_key *a_key, const void * a_in,
         size_t a_in_size, void * a_out, size_t buf_out_size) {
     size_t l_out_size = a_in_size - SALSA20_NONCE_SIZE;
@@ -111,6 +172,16 @@ size_t dap_enc_salsa2012_decrypt_fast(struct dap_enc_key *a_key, const void * a_
     return l_out_size;
 }
 
+/**
+ * @brief dap_enc_salsa2012_encrypt_fast
+ * 
+ * @param a_key 
+ * @param a_in 
+ * @param a_in_size 
+ * @param a_out 
+ * @param buf_out_size 
+ * @return size_t 
+ */
 size_t dap_enc_salsa2012_encrypt_fast(struct dap_enc_key * a_key, const void * a_in, size_t a_in_size, void * a_out,size_t buf_out_size)
 {
     size_t l_out_size = a_in_size + SALSA20_NONCE_SIZE;
diff --git a/dap-sdk/crypto/src/dap_enc_tesla.c b/dap-sdk/crypto/src/dap_enc_tesla.c
index 07533bcf4b9def2b0ea65cfb2bb26bdea2c4e3bd..a67cb0618fe84f26f2ebc8c86304d56a8e6b1057 100755
--- a/dap-sdk/crypto/src/dap_enc_tesla.c
+++ b/dap-sdk/crypto/src/dap_enc_tesla.c
@@ -30,6 +30,16 @@ void dap_enc_sig_tesla_key_new(struct dap_enc_key *key) {
 // a_key->data  --- Alice's public key
 // alice_priv  ---  Alice's private key
 // alice_msg_len --- Alice's private key length
+/**
+ * @brief dap_enc_sig_tesla_key_new_generate
+ * 
+ * @param key 
+ * @param kex_buf 
+ * @param kex_size 
+ * @param seed 
+ * @param seed_size 
+ * @param key_size 
+ */
 void dap_enc_sig_tesla_key_new_generate(struct dap_enc_key * key, const void *kex_buf,
         size_t kex_size, const void * seed, size_t seed_size,
         size_t key_size)
diff --git a/dap-sdk/net/core/dap_events.c b/dap-sdk/net/core/dap_events.c
index f32d76083548e87bebfa391088e32364ef00ceaf..a415e2c6b59c6a63dd2c066474bb649aa7d5feb8 100644
--- a/dap-sdk/net/core/dap_events.c
+++ b/dap-sdk/net/core/dap_events.c
@@ -104,6 +104,11 @@ static dap_worker_t **s_workers = NULL;
 static dap_thread_t *s_threads = NULL;
 static dap_events_t * s_events_default = NULL;
 
+/**
+ * @brief dap_get_cpu_count
+ * 
+ * @return uint32_t 
+ */
 uint32_t dap_get_cpu_count( )
 {
 #ifdef _WIN32
@@ -144,6 +149,11 @@ uint32_t dap_get_cpu_count( )
 #endif
 }
 
+/**
+ * @brief dap_cpu_assign_thread_on
+ * 
+ * @param a_cpu_id 
+ */
 void dap_cpu_assign_thread_on(uint32_t a_cpu_id)
 {
 #ifndef DAP_OS_WINDOWS
@@ -253,6 +263,11 @@ dap_events_t * dap_events_new( )
     return ret;
 }
 
+/**
+ * @brief dap_events_get_default
+ * simply return s_events_default
+ * @return dap_events_t* 
+ */
 dap_events_t* dap_events_get_default( )
 {
     return s_events_default;
@@ -272,6 +287,13 @@ void dap_events_delete( dap_events_t *a_events )
     }
 }
 
+/**
+ * @brief dap_events_remove_and_delete_socket_unsafe
+ * calls dap_events_socket_remove_and_delete_unsafe
+ * @param a_events 
+ * @param a_socket 
+ * @param a_preserve_inheritor 
+ */
 void dap_events_remove_and_delete_socket_unsafe(dap_events_t *a_events, dap_events_socket_t *a_socket, bool a_preserve_inheritor)
 {
     (void) a_events;
@@ -364,7 +386,7 @@ int dap_events_start( dap_events_t *a_events )
 
 /**
  * @brief dap_events_wait
- * @param sh
+ * @param dap_events_t *a_events
  * @return
  */
 int dap_events_wait( dap_events_t *a_events )
diff --git a/dap-sdk/net/server/http_server/dap_http.c b/dap-sdk/net/server/http_server/dap_http.c
index b931d229d80fee1d272d23c0396e55eaad071893..7af054d9eac9952a0cc847367ea1f8ecbbe6775e 100644
--- a/dap-sdk/net/server/http_server/dap_http.c
+++ b/dap-sdk/net/server/http_server/dap_http.c
@@ -130,12 +130,29 @@ void dap_http_delete( dap_server_t *a_server, void * a_arg )
 
 
 /**
- * @brief dap_http_add_proc   Add custom procesor for the HTTP server
- * @param a_http              Server's instance
- * @param a_url_path          Part of URL to be processed
- * @param a_read_callback     Callback for read in DATA state
- * @param a_write_callback    Callback for write in DATA state
- * @param a_error_callback    Callback for error processing
+ * @brief dap_http_add_proc             Add custom procesor for the HTTP server
+ * 
+ * @param a_http                        Server's instance
+ * @param a_url_path                    Part of URL to be processed
+ * @param a_inheritor                   Internal data specific to the current URL processor
+ * @param a_new_callback                additional callback function
+ * 
+ * Called in s_queue_add_es_callback    
+ * if ( ! l_es_new->is_initalized ){
+        if (l_es_new->callbacks.new_callback)
+            l_es_new->callbacks.new_callback(l_es_new, NULL);
+        l_es_new->is_initalized = true;
+    }
+ * @param a_delete_callback             callback which is called, when HTTP server object is deleted
+ * @param a_headers_read_callback       Callback for read HTTP headers callback
+ * @param a_headers_write_callback      Callback for write HTTP headers callback
+ * @param a_data_read_callback          Callback for read in DATA state
+ * @param a_data_write_callback         Callback for write in DATA state
+ * @param a_error_callback              Callback for error processing
+ * @note 
+ * data_read_callback is called, when headers is finished in body request, and next part of 
+ * body request contains remaining part of buffer. If data contains only in header, a_data_read_callback is not called.
+ * @return dap_http_url_proc_t* 
  */
 dap_http_url_proc_t * dap_http_add_proc(dap_http_t *a_http, const char *a_url_path, void *a_inheritor
                       ,dap_http_client_callback_t a_new_callback
diff --git a/modules/chain/dap_chain.c b/modules/chain/dap_chain.c
index cda76b3195794ca835f41ddc99a1fedc67a4e984..ca4cf49bd85359e778496b925da4e3cad7c6fec0 100644
--- a/modules/chain/dap_chain.c
+++ b/modules/chain/dap_chain.c
@@ -129,12 +129,14 @@ void dap_chain_enum_unlock(void)
 }
 
 /**
- * @brief dap_chain_create
- * @param a_chain_net_name
- * @param a_chain_name
- * @param a_chain_net_id
- * @param a_chain_id
- * @return
+ * @brief 
+ * create dap chain object
+ * @param a_ledger dap_ledger_t ledger object
+ * @param a_chain_net_name blockchain network name
+ * @param a_chain_name chain name
+ * @param a_chain_net_id 
+ * @param a_chain_id chain id
+ * @return dap_chain_t* 
  */
 dap_chain_t * dap_chain_create(dap_ledger_t* a_ledger, const char * a_chain_net_name, const char * a_chain_name, dap_chain_net_id_t a_chain_net_id, dap_chain_id_t a_chain_id )
 {
@@ -159,8 +161,9 @@ dap_chain_t * dap_chain_create(dap_ledger_t* a_ledger, const char * a_chain_net_
 }
 
 /**
- * @brief dap_chain_delete
- * @param a_chain
+ * @brief
+ * delete dap chain object
+ * @param a_chain dap_chain_t object
  */
 void dap_chain_delete(dap_chain_t * a_chain)
 {
@@ -234,6 +237,12 @@ dap_chain_t * dap_chain_find_by_id(dap_chain_net_id_t a_chain_net_id,dap_chain_i
     return l_ret_item ? l_ret_item->chain : NULL;
 }
 
+/**
+ * @brief s_chain_type_from_str
+ * get dap_chain_type_t value by str value a_type_str
+ * @param a_type_str str values:token,emission,transaction,ca
+ * @return dap_chain_type_t 
+ */
 static dap_chain_type_t s_chain_type_from_str(const char *a_type_str)
 {
     if(!dap_strcmp(a_type_str, "token")) {
@@ -251,6 +260,12 @@ static dap_chain_type_t s_chain_type_from_str(const char *a_type_str)
     return CHAIN_TYPE_LAST;
 }
 
+/**
+ * @brief s_datum_type_from_str
+ * get datum type (DAP_CHAIN_DATUM_TOKEN_DECL, DAP_CHAIN_DATUM_TOKEN_EMISSION, DAP_CHAIN_DATUM_TX) by str value
+ * @param a_type_str datum type in string value (token,emission,transaction)
+ * @return uint16_t 
+ */
 static uint16_t s_datum_type_from_str(const char *a_type_str)
 {
     if(!dap_strcmp(a_type_str, "token")) {
@@ -265,6 +280,12 @@ static uint16_t s_datum_type_from_str(const char *a_type_str)
     return DAP_CHAIN_DATUM_CUSTOM;
 }
 
+/**
+ * @brief s_chain_type_convert
+ * convert dap_chain_type_t to  DAP_CNAIN* constants
+ * @param a_type - dap_chain_type_t a_type [CHAIN_TYPE_TOKEN, CHAIN_TYPE_EMISSION, CHAIN_TYPE_TX]
+ * @return uint16_t 
+ */
 static uint16_t s_chain_type_convert(dap_chain_type_t a_type)
 {
     switch (a_type) {
@@ -280,11 +301,12 @@ static uint16_t s_chain_type_convert(dap_chain_type_t a_type)
 }
 
 /**
- * @brief dap_chain_load_from_cfg
- * @param a_chain_net_name
- * @param a_chain_net_id
- * @param a_chain_cfg_path
- * @return
+ * Loading chain from config file
+ * @param a_ledger - ledger object
+ * @param a_chain_net_name - chain name, taken from config, for example - "home21-network"
+ * @param a_chain_net_id - dap_chain_net_id_t chain network identification
+ * @param a_chain_cfg_name chain config name, for example "network/home21-network/chain-0"
+ * @return dap_chain_t* 
  */
 dap_chain_t * dap_chain_load_from_cfg(dap_ledger_t* a_ledger, const char * a_chain_net_name,dap_chain_net_id_t a_chain_net_id, const char * a_chain_cfg_name)
 {
diff --git a/modules/chain/dap_chain_cell.c b/modules/chain/dap_chain_cell.c
index e4b10ca85ab599a692f610722edf77ace4c01fbf..3a0fe517d071677f2cc5d3839f0135a7753da15a 100644
--- a/modules/chain/dap_chain_cell.c
+++ b/modules/chain/dap_chain_cell.c
@@ -66,6 +66,13 @@ int dap_chain_cell_init(void)
     return  0;
 }
 
+/**
+ * @brief dap_chain_cell_find_by_id
+ * get dap_chain_cell_t object by cell (shard) id
+ * @param a_chain dap_chain_t object
+ * @param a_cell_id dap_chain_cell_id_t cell (shard) id
+ * @return dap_chain_cell_t* 
+ */
 dap_chain_cell_t * dap_chain_cell_find_by_id(dap_chain_t * a_chain, dap_chain_cell_id_t a_cell_id)
 {
     if (!a_chain->cells)
@@ -78,9 +85,11 @@ dap_chain_cell_t * dap_chain_cell_find_by_id(dap_chain_t * a_chain, dap_chain_ce
 }
 
 /**
- * @brief dap_chain_cell_create_fill
- * a_cell_id if <0 then not used
- * @return
+ * @brief 
+ * a_cell_id if < 0 then not used
+ * @param a_chain dap_chain_t object
+ * @param a_cell_id dap_chain_cell_id_t cell (shard) id
+ * @return dap_chain_cell_t* 
  */
 dap_chain_cell_t * dap_chain_cell_create_fill(dap_chain_t * a_chain, dap_chain_cell_id_t a_cell_id)
 {
@@ -94,6 +103,14 @@ dap_chain_cell_t * dap_chain_cell_create_fill(dap_chain_t * a_chain, dap_chain_c
     return l_cell;
 }
 
+/**
+ * @brief dap_chain_cell_create_fill2
+ * set l_cell->file_storage_path and l_cell->id.uint64 from name of chain. 
+ * For example, 0.dchaincell. 0 - chain id, dchaincell - name of file
+ * @param a_chain - chain object
+ * @param a_filename - chain filename, for example "0.dchaincell"
+ * @return dap_chain_cell_t* 
+ */
 dap_chain_cell_t * dap_chain_cell_create_fill2(dap_chain_t * a_chain, const char *a_filename)
 {
     dap_chain_cell_t * l_cell = DAP_NEW_Z(dap_chain_cell_t);
@@ -106,6 +123,11 @@ dap_chain_cell_t * dap_chain_cell_create_fill2(dap_chain_t * a_chain, const char
     return l_cell;
 }
 
+/**
+ * @brief
+ * close a_cell->file_storage file object
+ * @param a_cell dap_chain_cell_t object
+ */
 void dap_chain_cell_close(dap_chain_cell_t *a_cell)
 {
     if(!a_cell)
@@ -117,8 +139,9 @@ void dap_chain_cell_close(dap_chain_cell_t *a_cell)
 }
 
 /**
- * @brief dap_chain_cell_delete
- * @return
+ * @brief 
+ * free chain cell objects
+ * @param a_cell dap_chain_cell_t object
  */
 void dap_chain_cell_delete(dap_chain_cell_t *a_cell)
 {
@@ -142,9 +165,9 @@ void dap_chain_cell_delete(dap_chain_cell_t *a_cell)
 }
 
 /**
- * @brief dap_chain_cell_load
- * @param a_chain
- * @param a_cell_file_path
+ * load cell file, which is pointed in a_cell_file_path variable, for example "0.dchaincell"
+ * @param a_chain dap_chain_t object
+ * @param a_cell_file_path contains name of chain, for example "0.dchaincell" 
  * @return
  */
 int dap_chain_cell_load(dap_chain_t * a_chain, const char * a_cell_file_path)
@@ -208,10 +231,12 @@ int dap_chain_cell_load(dap_chain_t * a_chain, const char * a_cell_file_path)
 
 /**
  * @brief s_cell_file_append
- * @param a_cell
- * @param a_atom
- * @param a_atom_size
- * @return
+ * add atoms to selected chain
+ * @param a_cell - cell object. Contains file path to cell storage data, for example - "0.dchaincell"
+ * a_cell->chain contains 
+ *  name - "zerochain"
+ *  net_name - "kelvin-testnet"
+ *  filepath - "C:\\Users\\Public\\Documents\\cellframe-node\\var\\lib\\network\\kelvin-testnet\\zerochain\\/0.dchaincell
  */
 int dap_chain_cell_file_append( dap_chain_cell_t * a_cell, const void* a_atom, size_t a_atom_size)
 {
@@ -307,9 +332,9 @@ int dap_chain_cell_file_append( dap_chain_cell_t * a_cell, const void* a_atom, s
 }
 
 /**
- * @brief dap_chain_cell_file_update
- * @param a_cell
- * @return
+ * @brief
+ * return dap_chain_cell_file_append(a_cell, NULL, 0);
+ * @param a_cell dap_chain_cell_t
  */
 int dap_chain_cell_file_update( dap_chain_cell_t * a_cell)
 {
diff --git a/modules/chain/dap_chain_cs.c b/modules/chain/dap_chain_cs.c
index 491a35002a51330d1a2c4cb69dc8d37bf5d81046..d398b361eaa8ae5f1174b493f28b5d8c6a084725 100644
--- a/modules/chain/dap_chain_cs.c
+++ b/modules/chain/dap_chain_cs.c
@@ -63,8 +63,8 @@ void dap_chain_cs_deinit(void)
 
 /**
  * @brief dap_chain_class_add
- * @param a_cs_str
- * @param a_callback_init
+ * @param a_cs_str consensus name
+ * @param a_callback_init callback function
  */
 void dap_chain_cs_type_add (const char * a_cs_str,  dap_chain_callback_new_cfg_t a_callback_init)
 {
@@ -110,8 +110,11 @@ void dap_chain_cs_add (const char * a_cs_str,  dap_chain_callback_new_cfg_t a_ca
 
 /**
  * @brief dap_chain_cs_create
- * @param a_chain
- * @param a_chain_cfg
+ * get consensus from chain cfg file [dag_pos, dag_poa, block_poa, none]
+ * dap_config_get_item_str( a_chain_cfg, "chain", "consensus");
+ * verify if consensus was created by dap_chain_cs_add function
+ * @param a_chain dap_chain_t chain object
+ * @param a_chain_cfg dap_config_t 
  * @return
  */
 int dap_chain_cs_create(dap_chain_t * a_chain, dap_config_t * a_chain_cfg)
diff --git a/modules/chain/dap_chain_ledger.c b/modules/chain/dap_chain_ledger.c
index 69d885f18eadff5451d35e3086a7ab7a05624218..16d33b959bfa72a11dd21a33e94f05e49aeb368f 100644
--- a/modules/chain/dap_chain_ledger.c
+++ b/modules/chain/dap_chain_ledger.c
@@ -205,6 +205,7 @@ static bool s_debug_more = false;
 
 /**
  * @brief dap_chain_ledger_init
+ * current function version set s_debug_more parameter, if it define in config, and returns 0
  * @return
  */
 int dap_chain_ledger_init()
@@ -215,6 +216,7 @@ int dap_chain_ledger_init()
 
 /**
  * @brief dap_chain_ledger_deinit
+ * nothing do
  */
 void dap_chain_ledger_deinit()
 {
@@ -222,7 +224,9 @@ void dap_chain_ledger_deinit()
 }
 
 /**
- * Create dap_ledger_t structure
+ * @brief dap_chain_ledger_handle_new
+ * Create empty dap_ledger_t structure
+ * @return dap_ledger_t* 
  */
 static dap_ledger_t * dap_chain_ledger_handle_new(void)
 {
@@ -404,10 +408,11 @@ int dap_chain_ledger_token_add(dap_ledger_t * a_ledger,  dap_chain_datum_token_t
 }
 
 /**
- * @brief s_token_tsd_parse
- * @param a_ledger
- * @param a_token
- * @param a_token_size
+ * @param a_ledger 
+ * @param a_token_item 
+ * @param a_token 
+ * @param a_token_size 
+ * @return int 
  */
 static int s_token_tsd_parse(dap_ledger_t * a_ledger, dap_chain_ledger_token_item_t *a_token_item , dap_chain_datum_token_t * a_token, size_t a_token_size)
 {
@@ -1033,9 +1038,15 @@ void dap_chain_ledger_load_cache(dap_ledger_t *a_ledger)
 }
 
 /**
- * @brief dap_chain_ledger_create
- * @param a_check_flags
- * @return dap_ledger_t
+ * @brief 
+ * create ledger for specific net
+ * load ledger cache
+ * @param a_check_flags checking flags
+ *          DAP_CHAIN_LEDGER_CHECK_TOKEN_EMISSION
+ *          DAP_CHAIN_LEDGER_CHECK_CELLS_DS
+ *          DAP_CHAIN_LEDGER_CHECK_CELLS_DS
+ * @param a_net_name char * network name, for example "kelvin-testnet"
+ * @return dap_ledger_t* 
  */
 dap_ledger_t* dap_chain_ledger_create(uint16_t a_check_flags, char *a_net_name)
 {
diff --git a/modules/chain/dap_chain_vf.c b/modules/chain/dap_chain_vf.c
index c35a2366e85a22bc4029c50a0935bb550ec7a9f9..5331558c69362ca447b37d9e5b80ea3a84b63a62 100644
--- a/modules/chain/dap_chain_vf.c
+++ b/modules/chain/dap_chain_vf.c
@@ -28,7 +28,9 @@
 #define LOG_TAG "dap_chain_vf"
 
 /**
- * @brief dap_chain_vf_init
+ * @brief
+ * empty function
+ * return 0
  * @return
  */
 int dap_chain_vf_init()
@@ -45,9 +47,9 @@ void dap_chain_vf_deinit()
 }
 
 /**
- * @brief dap_chain_vf_add
- * @param a_vf_id
- * @param a_callback
+ * @brief 
+ * empty function
+ * return 0
  * @return
  */
 int dap_chain_vf_add(dap_chain_vf_id_t a_vf_id, dap_chain_vf_callback_t a_callback)
@@ -57,6 +59,8 @@ int dap_chain_vf_add(dap_chain_vf_id_t a_vf_id, dap_chain_vf_callback_t a_callba
 
 /**
  * @brief dap_chain_vf_check
+ * empty function
+ * return true
  * @param a_vf_id
  * @param a_ledger
  * @param a_receipt
diff --git a/modules/channel/chain/dap_stream_ch_chain.c b/modules/channel/chain/dap_stream_ch_chain.c
index bb60eb3945cfff89f9f527b13e5c1f32ed78eaef..9bd440266b666d73d85e0d04797662780db40ba1 100644
--- a/modules/channel/chain/dap_stream_ch_chain.c
+++ b/modules/channel/chain/dap_stream_ch_chain.c
@@ -447,9 +447,9 @@ static bool s_sync_update_gdb_proc_callback(dap_proc_thread_t *a_thread, void *a
 }
 
 /**
- * @brief s_chain_in_pkt_callback
- * @param a_thread
- * @param a_arg
+ * @brief s_sync_in_chains_callback
+ * @param a_thread dap_proc_thread_t
+ * @param a_arg void
  * @return
  */
 static bool s_sync_in_chains_callback(dap_proc_thread_t *a_thread, void *a_arg)
diff --git a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c
index 3613d3acf082ad795c68a5daa4fe691fe1a8d0f1..09ffc0a59e5f8729d1d6925b7688f54535f5ab19 100644
--- a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c
+++ b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c
@@ -74,7 +74,9 @@ static int s_cli_dag_poa(int argc, char ** argv, void *arg_func, char **str_repl
 
 static bool s_seed_mode = false;
 /**
- * @brief dap_chain_cs_dag_poa_init
+ * @brief
+ * init consensus dag_poa
+ * read parameters from config and register dag_poa commands to cellframe-node-cli
  * @return
  */
 int dap_chain_cs_dag_poa_init(void)
@@ -100,9 +102,10 @@ void dap_chain_cs_dag_poa_deinit(void)
 
 
 /**
- * @brief s_cli_dag_poa
- * @param argc
- * @param argv
+ * @brief
+ * parse and execute cellframe-node-cli dag-poa commands
+ * @param argc arguments count
+ * @param argv array with arguments
  * @param arg_func
  * @param str_reply
  * @return
@@ -219,8 +222,11 @@ static int s_cli_dag_poa(int argc, char ** argv, void *arg_func, char **a_str_re
 
 /**
  * @brief s_cs_callback
- * @param a_chain
- * @param a_chain_cfg
+ * dap_chain_callback_new_cfg_item_t->callback_init function.
+ * get dag-poa consensus parameters from config
+ * and set dap_chain_cs_dag_t l_dag->chain->callback_created = s_callback_new
+ * @param a_chain dap_chain_t chain object
+ * @param a_chain_cfg chain config object
  */
 static int s_callback_new(dap_chain_t * a_chain, dap_config_t * a_chain_cfg)
 {
@@ -260,9 +266,10 @@ static int s_callback_new(dap_chain_t * a_chain, dap_config_t * a_chain_cfg)
 }
 
 /**
- * @brief s_callback_created
- * @param a_chain
- * @param a_chain_cfg
+ * @brief create callback load certificate for event signing for specific chain
+ * path to certificate iw written to chain config file in dag_poa section
+ * @param a_chain chain object (for example, a_chain.name = zerochain, a_chain.network = kelvin-testnet)
+ * @param a_chain_net_cfg dap_config_t network config object
  * @return
  */
 static int s_callback_created(dap_chain_t * a_chain, dap_config_t *a_chain_net_cfg)
@@ -287,8 +294,9 @@ static int s_callback_created(dap_chain_t * a_chain, dap_config_t *a_chain_net_c
 }
 
 /**
- * @brief s_chain_cs_dag_callback_delete
- * @param a_dag
+ * @brief 
+ * delete dap_chain_cs_dag_poa_pvt_t callback
+ * @param a_dag dap_chain_cs_dag_t object
  */
 static void s_callback_delete(dap_chain_cs_dag_t * a_dag)
 {
@@ -312,12 +320,14 @@ static void s_callback_delete(dap_chain_cs_dag_t * a_dag)
 }
 
 /**
- * @brief s_callback_event_create
- * @param a_dag
- * @param a_datum
- * @param a_hashes
- * @param a_hashes_count
- * @return
+ * @brief 
+ * callback for create event operation
+ * @param a_dag dap_chain_cs_dag_t DAG object
+ * @param a_datum dap_chain_datum_t
+ * @param a_hashes  dap_chain_hash_fast_t 
+ * @param a_hashes_count size_t
+ * @param a_dag_event_size size_t
+ * @return dap_chain_cs_dag_event_t* 
  */
 static dap_chain_cs_dag_event_t * s_callback_event_create(dap_chain_cs_dag_t * a_dag, dap_chain_datum_t * a_datum,
                                                           dap_chain_hash_fast_t * a_hashes, size_t a_hashes_count, size_t* a_event_size)
@@ -340,10 +350,12 @@ static dap_chain_cs_dag_event_t * s_callback_event_create(dap_chain_cs_dag_t * a
 
 
 /**
- * @brief s_chain_cs_dag_callback_event_verify
- * @param a_dag
- * @param a_dag_event
- * @return
+ * @brief 
+ * function makes event singing verification
+ * @param a_dag dag object
+ * @param a_dag_event dap_chain_cs_dag_event_t
+ * @param a_dag_event_size size_t size of event object
+ * @return int 
  */
 static int s_callback_event_verify(dap_chain_cs_dag_t * a_dag, dap_chain_cs_dag_event_t * a_dag_event, size_t a_dag_event_size)
 {
diff --git a/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c b/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c
index fc2be92cdd3b535d1d68fd2438eb2ccc71759a6f..9b23ff9b298e08245528c59ca01644768773cec9 100644
--- a/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c
+++ b/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c
@@ -178,12 +178,14 @@ static void s_callback_delete(dap_chain_cs_dag_t * a_dag)
 }
 
 /**
- * @brief s_callback_event_create
- * @param a_dag
- * @param a_datum
- * @param a_hashes
- * @param a_hashes_count
- * @return
+ * @brief 
+ * create event
+ * @param a_dag 
+ * @param a_datum 
+ * @param a_hashes 
+ * @param a_hashes_count 
+ * @param a_dag_event_size 
+ * @return dap_chain_cs_dag_event_t* 
  */
 static dap_chain_cs_dag_event_t * s_callback_event_create(dap_chain_cs_dag_t * a_dag, dap_chain_datum_t * a_datum,
                                                           dap_chain_hash_fast_t * a_hashes, size_t a_hashes_count,
diff --git a/modules/consensus/none/dap_chain_cs_none.c b/modules/consensus/none/dap_chain_cs_none.c
index b3bae67c29784c400075212ca7816f8bb8fcb6a5..12ada2512c703bfbb658a95031e66389a36eac7c 100644
--- a/modules/consensus/none/dap_chain_cs_none.c
+++ b/modules/consensus/none/dap_chain_cs_none.c
@@ -107,6 +107,7 @@ static int s_cs_callback_new(dap_chain_t * a_chain, dap_config_t * a_chain_cfg)
 
 /**
  * @brief dap_chain_cs_gdb_init
+ * Initialize GDB chain items organization class
  * @return
  */
 int dap_chain_gdb_init(void)
diff --git a/modules/global-db/dap_chain_global_db.c b/modules/global-db/dap_chain_global_db.c
index 991c83a21d5fec114b05b29a3a4b080074660798..7fa502006bcba5a694502c95fa519e6291be8dca 100644
--- a/modules/global-db/dap_chain_global_db.c
+++ b/modules/global-db/dap_chain_global_db.c
@@ -77,10 +77,12 @@ static sync_group_item_t *s_sync_group_extra_items = NULL;
 static bool s_track_history = false;
 
 /**
- * @brief dap_chain_global_db_add_sync_group
- * @details Add group name for synchronization
- * @param a_group_prefix
- */
+ * @brief Adds a group name for synchronization.
+ * @param a_group_prefix a prefix of the group name 
+ * @param a_callback a callback function
+ * @param a_arg a pointer to an argument
+ * @return (none)
+*/
 void dap_chain_global_db_add_sync_group(const char *a_group_prefix, dap_global_db_obj_callback_notify_t a_callback, void *a_arg)
 {
     sync_group_item_t * l_item = DAP_NEW_Z(sync_group_item_t);
@@ -92,9 +94,11 @@ void dap_chain_global_db_add_sync_group(const char *a_group_prefix, dap_global_d
 }
 
 /**
- * @brief dap_chain_global_db_add_sync_extra_group
- * @details Add group name for synchronization with especially node addresses
- * @param a_group_prefix
+ * @brief Adds a group name for synchronization with especially node addresses.
+ * @param a_group_mask a group mask string
+ * @param a_callback a callabck function
+ * @param a_arg a pointer to an argument
+ * @return (none)
  */
 void dap_chain_global_db_add_sync_extra_group(const char *a_group_mask, dap_global_db_obj_callback_notify_t a_callback, void *a_arg)
 {
@@ -106,6 +110,11 @@ void dap_chain_global_db_add_sync_extra_group(const char *a_group_mask, dap_glob
     HASH_ADD_STR(s_sync_group_extra_items, group_mask, l_item);
 }
 
+/**
+ * @brief Gets a list of a group mask.
+ * @param a_table a table
+ * @return Returns a pointer to a list of a group mask.
+ */
 dap_list_t *dap_chain_db_get_sync_groups_internal(sync_group_item_t *a_table)
 {
     dap_list_t *l_ret = NULL;
@@ -116,18 +125,29 @@ dap_list_t *dap_chain_db_get_sync_groups_internal(sync_group_item_t *a_table)
     return l_ret;
 }
 
+/** 
+ * @brief Gets a list of a group mask for s_sync_group_items.
+ * @return Returns a pointer to a list of a group mask.
+ */
 dap_list_t *dap_chain_db_get_sync_groups()
 {
     return dap_chain_db_get_sync_groups_internal(s_sync_group_items);
 }
 
+/** 
+ * @brief Gets a list of a group mask for s_sync_group_items.
+ * @param a_table a table
+ * @return Returns a pointer to a list of a group mask.
+ */
 dap_list_t *dap_chain_db_get_sync_extra_groups()
 {
     return dap_chain_db_get_sync_groups_internal(s_sync_group_extra_items);
 }
 
 /**
- * Clean struct dap_global_db_obj_t
+ * @brief Deallocates memory of a key and a value members of an obj structure.
+ * @param obj a pointer to the structure
+ * @return (none)
  */
 void dap_chain_global_db_obj_clean(dap_global_db_obj_t *obj)
 {
@@ -140,7 +160,9 @@ void dap_chain_global_db_obj_clean(dap_global_db_obj_t *obj)
 }
 
 /**
- * Delete struct dap_global_db_obj_t
+ * @brief Deallocates memory of an obj structure.
+ * @param obj a pointer to the object 
+ * @return (none)
  */
 void dap_chain_global_db_obj_delete(dap_global_db_obj_t *obj)
 {
@@ -149,7 +171,10 @@ void dap_chain_global_db_obj_delete(dap_global_db_obj_t *obj)
 }
 
 /**
- * Delete mass of struct dap_global_db_obj_t
+ * @brief Deallocates memory of an objs array.
+ * @param objs a pointer to the first object of the array
+ * @param a_count a number of objects in the array
+ * @return (none)
  */
 void dap_chain_global_db_objs_delete(dap_global_db_obj_t *objs, size_t a_count)
 {
@@ -160,9 +185,10 @@ void dap_chain_global_db_objs_delete(dap_global_db_obj_t *objs, size_t a_count)
 }
 
 /**
- * @brief dap_chain_global_db_init
- * @param g_config
- * @return
+ * @brief Initializes a database by g_config structure. 
+ * @note You should call this function before calling any other functions in this library.
+ * @param g_config a pointer to the configuration structure
+ * @return Returns 0 if successful; otherwise, <0.
  */
 int dap_chain_global_db_init(dap_config_t * g_config)
 {
@@ -181,8 +207,10 @@ int dap_chain_global_db_init(dap_config_t * g_config)
 }
 
 /**
- * @brief dap_chain_global_db_deinit
- */
+ * @brief Deinitialize a database. 
+ * @note You should call this function at the end.
+ * @return (none)
+*/
 void dap_chain_global_db_deinit(void)
 {
     lock();
@@ -207,8 +235,10 @@ void dap_chain_global_db_deinit(void)
 }
 
 /**
- * @brief dap_chain_global_db_flush
- * @return
+ * @brief Gets an object from a database by a_key and a_group arguments.
+ * @param a_key an object key string
+ * @param a_group a group name string
+ * @return If successful, returns a pointer to the item, otherwise NULL.
  */
 int dap_chain_global_db_flush(void){
     lock();
@@ -218,9 +248,10 @@ int dap_chain_global_db_flush(void){
 }
 
 /**
- * Get entry from base
- *
- * return dap_store_obj_t*
+ * @brief Gets an object from a database by a_key and a_group arguments.
+ * @param a_key an object key string
+ * @param a_group a group name string
+ * @return If successful, returns a pointer to the item, otherwise NULL.
  */
 void* dap_chain_global_db_obj_get(const char *a_key, const char *a_group)
 {
@@ -231,11 +262,12 @@ void* dap_chain_global_db_obj_get(const char *a_key, const char *a_group)
 }
 
 /**
- * @brief dap_chain_global_db_obj_gr_get
- * @param a_key
- * @param a_data_out
- * @param a_group
- * @return
+ * @brief Gets an array consisting of a_data_len_out objects from a database by a_key and a_group arguments.
+ * @param a_key an object key string
+ * @param a_data_len_out[in] a number of objects to be gotten, if NULL - no limits
+ * @param a_data_len_out[out] a number of objects that were gotten
+ * @param a_group a group name string  
+ * @return If successful, returns a pointer to the first item in the array; otherwise NULL.
  */
 dap_store_obj_t* dap_chain_global_db_obj_gr_get(const char *a_key, size_t *a_data_len_out, const char *a_group)
 {
@@ -252,11 +284,12 @@ dap_store_obj_t* dap_chain_global_db_obj_gr_get(const char *a_key, size_t *a_dat
 }
 
 /**
- * @brief dap_chain_global_db_gr_get
- * @param a_key
- * @param a_data_out
- * @param a_group
- * @return
+ * @brief Gets an object value from database by a_key and a_group.
+ * @param a_key an object key string
+ * @param a_data_out[in] a number of objects to be gotten, if NULL - no limits
+ * @param a_data_out[out] a length of values that were gotten
+ * @param a_group a group name string
+ * @return If successful, returns a pointer to the object value.
  */
 uint8_t * dap_chain_global_db_gr_get(const char *a_key, size_t *a_data_len_out, const char *a_group)
 {
@@ -282,9 +315,12 @@ uint8_t * dap_chain_global_db_get(const char *a_key, size_t *a_data_len_out)
     return dap_chain_global_db_gr_get(a_key, a_data_len_out, GROUP_LOCAL_GENERAL);
 }
 
-
 /**
- * Add info about the deleted entry to the base
+ * @brief Adds info about the deleted entry to the database.
+ * @param a_key an object key string
+ * @param a_group a group name string
+ * @param a_timestamp an object time stamp
+ * @return True if successful, false otherwise.
  */
 static bool global_db_gr_del_add(char *a_key,const char *a_group, time_t a_timestamp)
 {
@@ -310,7 +346,10 @@ static bool global_db_gr_del_add(char *a_key,const char *a_group, time_t a_times
 }
 
 /**
- * Delete info about the deleted entry from the base
+ * @brief Deletes info about the deleted object from the database
+ * @param a_key an object key string, looked like "0x8FAFBD00B..."
+ * @param a_group a group name string, for example "kelvin-testnet.nodes"
+ * @return If successful, returns true; otherwise, false. 
  */
 static bool global_db_gr_del_del(char *a_key, const char *a_group)
 {
@@ -334,7 +373,10 @@ static bool global_db_gr_del_del(char *a_key, const char *a_group)
 }
 
 /**
- * Get timestamp of the deleted entry
+ * @brief Gets time stamp of the deleted object by a_group and a_key arguments.
+ * @param a_group a group name sring, for example "kelvin-testnet.nodes"
+ * @param a_key an object key string, looked like "0x8FAFBD00B..."
+ * @return If successful, a time stamp, otherwise 0.
  */
 time_t global_db_gr_del_get_timestamp(const char *a_group, char *a_key)
 {
@@ -360,17 +402,20 @@ time_t global_db_gr_del_get_timestamp(const char *a_group, char *a_key)
     return l_timestamp;
 }
 
-
+/**
+ * @brief Deletes item from a database by a a_key for the "local.general" group.
+ * @param a_key an object key string
+ * @return True if successful, false otherwise.
+ */
 bool dap_chain_global_db_del(char *a_key)
 {
     return dap_chain_global_db_gr_del(a_key, GROUP_LOCAL_GENERAL);
 }
 
 /**
- * Read last item in global_db
- *
- * @param data_size[out] size of output array
- * @return array (note:not Null-terminated string) on NULL in case of an error
+ * @brief Gets a last item from a database by a_group.
+ * @param a_group a group name string
+ * @return If successful, a pointer to the object; otherwise NULL.
  */
 dap_store_obj_t* dap_chain_global_db_get_last(const char *a_group)
 {
@@ -382,10 +427,12 @@ dap_store_obj_t* dap_chain_global_db_get_last(const char *a_group)
 }
 
 /**
- * Read the entire database with condition into an array of size bytes
- *
- * @param data_size[out] size of output array
- * @return array (note:not Null-terminated string) on NULL in case of an error
+ * @brief Gets objects from a database by a_group_name and a_first_id.
+ * @param a_group a group name string
+ * @param a_first_id a first id
+ * @param a_objs_count[in] a number of object to be read, if 0 - no limits
+ * @param a_objs_count[out] a number of object were read
+ * @return If successful, a pointer to objects; otherwise NULL.
  */
 dap_store_obj_t* dap_chain_global_db_cond_load(const char *a_group, uint64_t a_first_id, size_t *a_objs_count)
 {
@@ -397,10 +444,11 @@ dap_store_obj_t* dap_chain_global_db_cond_load(const char *a_group, uint64_t a_f
 }
 
 /**
- * Read the entire database into an array of size bytes
- *
- * @param data_size[out] size of output array
- * @return array (note:not Null-terminated string) on NULL in case of an error
+ * @brief Gets all data from a database by a_group.
+ * @param a_group a group name string
+ * @param a_data_size[in] a poiter to return a number of data
+ * @param a_data_size[out] a number of data
+ * @return If successful, a pointer to data; otherwise NULL.
  */
 dap_global_db_obj_t* dap_chain_global_db_gr_load(const char *a_group, size_t *a_data_size_out)
 {
@@ -427,15 +475,19 @@ dap_global_db_obj_t* dap_chain_global_db_gr_load(const char *a_group, size_t *a_
     return l_data;
 }
 
+/**
+ * @brief Gets all data from a database for the "local.general" group
+ */
 dap_global_db_obj_t* dap_chain_global_db_load(size_t *a_data_size_out)
 {
     return dap_chain_global_db_gr_load(GROUP_LOCAL_GENERAL, a_data_size_out);
 }
 
 /**
- * @brief extract_group_mask
- * @param a_group
- * @return
+ * @brief Finds item by a_items and a_group 
+ * @param a_items items
+ * @param a_group a group name string
+ * @return 
  */
 static sync_group_item_t *find_item_by_mask(sync_group_item_t *a_items, const char *a_group)
 {
@@ -447,7 +499,12 @@ static sync_group_item_t *find_item_by_mask(sync_group_item_t *a_items, const ch
     return NULL;
 }
 
-
+/**
+ * @brief Adds data to the history log
+ * 
+ * @param a_store_data a pointer to an object
+ * @return (none)
+ */
 void dap_global_db_obj_track_history(void* a_store_data)
 {
     if (!s_track_history)
@@ -482,13 +539,13 @@ void dap_global_db_obj_track_history(void* a_store_data)
 
 
 /**
- * @brief dap_chain_global_db_gr_set
- * @param a_key
- * @param a_value
- * @param a_value_len
- * @param a_group
+ * @brief Adds a value to a database.
+ * @param a_key a object key string
+ * @param a_value a value to be added
+ * @param a_value_len length of value. If a_value_len=-1, the function calculates length.
+ * @param a_group a group name string
  * @details Set one entry to base. IMPORTANT: a_key and a_value should be passed without free after (it will be released by gdb itself)
- * @return
+ * @return True if successful, false otherwise.
  */
 bool dap_chain_global_db_gr_set(char *a_key, void *a_value, size_t a_value_len, const char *a_group)
 {
@@ -515,13 +572,22 @@ bool dap_chain_global_db_gr_set(char *a_key, void *a_value, size_t a_value_len,
     return !l_res;
 }
 
+/**
+ * @brief Adds a value to a database for the "local.general" group
+ * @param a_value a value to be added
+ * @param a_value_len length of value. If a_value_len=-1, the function counts length.
+ * @return True if successful, false otherwise.
+ */
 bool dap_chain_global_db_set( char *a_key,  void *a_value, size_t a_value_len)
 {
     return dap_chain_global_db_gr_set(a_key, a_value, a_value_len, GROUP_LOCAL_GENERAL);
 }
 
-/**
- * Delete entry from base
+/** 
+ * @brief Deletes object from a database by a a_key and a_group arguments.
+ * @param a_key a object key string
+ * @param a_group a group name string
+ * @return True if object was deleted or false otherwise.
  */
 bool dap_chain_global_db_gr_del(char *a_key,const char *a_group)
 {
@@ -546,9 +612,10 @@ bool dap_chain_global_db_gr_del(char *a_key,const char *a_group)
 }
 
 /**
- * Write to the database from an array of data_size bytes
- *
- * @return
+ * @brief Saves(deletes) objects to (from) a database.
+ * @param a_store_data a pointer to objects
+ * @param a_objs_count a number of objects
+ * @return True if object was deleted or false otherwise.
  */
 bool dap_chain_global_db_obj_save(void* a_store_data, size_t a_objs_count)
 {
@@ -575,6 +642,13 @@ bool dap_chain_global_db_obj_save(void* a_store_data, size_t a_objs_count)
     return !l_res;
 }
 
+/**
+ * @brief Saves objects in a database by a_group.
+ * @param a_objs a pointer to objects
+ * @param a_objs_count a number of objects
+ * @param a_group a group name string
+ * @return If successful, true; otherwise false.
+ */
 bool dap_chain_global_db_gr_save(dap_global_db_obj_t* a_objs, size_t a_objs_count, const char *a_group)
 {
     dap_store_obj_t *l_store_data = DAP_NEW_Z_SIZE(dap_store_obj_t, a_objs_count * sizeof(struct dap_store_obj));
@@ -604,15 +678,22 @@ bool dap_chain_global_db_gr_save(dap_global_db_obj_t* a_objs, size_t a_objs_coun
     return false;
 }
 
+/**
+ * @brief Saves objectss in a database.
+ * @param a_objs a pointer to objects
+ * @param a_objs_count a number of objects
+ * @return If successful, true; otherwise false.
+ */
 bool dap_chain_global_db_save(dap_global_db_obj_t* a_objs, size_t a_objs_count)
 {
     return dap_chain_global_db_gr_save(a_objs, a_objs_count, GROUP_LOCAL_GENERAL);
 }
 
 /**
- * Calc hash for data
- *
- * return hash or NULL
+ * @brief Calcs a hash string for data
+ * @param data a pointer to data
+ * @param data_size a size of data
+ * @return A hash string or NULL.
  */
 char* dap_chain_global_db_hash(const uint8_t *data, size_t data_size)
 {
diff --git a/modules/global-db/dap_chain_global_db_driver.c b/modules/global-db/dap_chain_global_db_driver.c
index 2acb41cae4165cec4c4ee10d9d8153ff2c6edf48..998d4c1706b32a04a3e13e09cc44a2217060f110 100644
--- a/modules/global-db/dap_chain_global_db_driver.c
+++ b/modules/global-db/dap_chain_global_db_driver.c
@@ -72,10 +72,12 @@ static void* func_write_buf(void * arg);
 static dap_db_driver_callbacks_t s_drv_callback;
 
 /**
- * Select driver
- * driver_name may be "ldb", "sqlite"
- *
- * return 0 OK, <0 Error
+ * @brief Initializes a database driver. 
+ * @note You should Call this function before using the driver.
+ * @param driver_name a string determining a type of database driver:
+ * "сdb", "sqlite" ("sqlite3") or "pgsql"
+ * @param a_filename_db a path to a database file
+ * @return Returns 0, if successful; otherwise <0.
  */
 int dap_db_driver_init(const char *a_driver_name, const char *a_filename_db)
 {
@@ -127,9 +129,10 @@ int dap_db_driver_init(const char *a_driver_name, const char *a_filename_db)
 }
 
 /**
- * Shutting down the db library
+ * @brief Deinitializes a database driver.
+ * @note You should call this function after using the driver.
+ * @return (none)
  */
-
 void dap_db_driver_deinit(void)
 {
 #ifdef USE_WRITE_BUFFER
@@ -168,11 +171,21 @@ void dap_db_driver_deinit(void)
     }
 }
 
+/**
+ * @brief Flushes a database cahce to disk.
+ * @return Returns 0, if successful; otherwise <0.
+ */
 int dap_db_driver_flush(void)
 {
     return s_drv_callback.flush();
 }
 
+/**
+ * @brief Copies objects from a_store_obj.
+ * @param a_store_obj a pointer to the source objects
+ * @param a_store_count a number of objects
+ * @return A pointer to the copied objects.
+ */ 
 dap_store_obj_t* dap_store_obj_copy(dap_store_obj_t *a_store_obj, size_t a_store_count)
 {
     if(!a_store_obj || !a_store_count)
@@ -190,6 +203,12 @@ dap_store_obj_t* dap_store_obj_copy(dap_store_obj_t *a_store_obj, size_t a_store
     return l_store_obj;
 }
 
+/**
+ * @brief Deallocates memory of objects.
+ * @param a_store_obj a pointer to objects
+ * @param a_store_count a number of objects
+ * @return (none)
+ */
 void dap_store_obj_free(dap_store_obj_t *a_store_obj, size_t a_store_count)
 {
     if(!a_store_obj)
@@ -204,9 +223,10 @@ void dap_store_obj_free(dap_store_obj_t *a_store_obj, size_t a_store_count)
 }
 
 /**
- * Calc hash for data
- *
- * return hash or NULL
+ * @brief Calculates a hash of data.
+ * @param data a pointer to data
+ * @param data_size a size of data
+ * @return Returns a hash string if successful; otherwise NULL.
  */
 char* dap_chain_global_db_driver_hash(const uint8_t *data, size_t data_size)
 {
@@ -226,8 +246,11 @@ char* dap_chain_global_db_driver_hash(const uint8_t *data, size_t data_size)
 }
 
 /**
- * Wait data to write buffer
- * return 0 - Ok, 1 - timeout
+ * @brief Waits for a buffer to be written.
+ * @param a_mutex a mutex
+ * @param a_cond a condition
+ * @param l_timeout_ms timeout in ms, if -1 endless waiting
+ * @return Returns 0 if successful or 1 when the timeout is due.
  */
 static int wait_data(pthread_mutex_t *a_mutex, pthread_cond_t *a_cond, int l_timeout_ms)
 {
@@ -257,7 +280,10 @@ static int wait_data(pthread_mutex_t *a_mutex, pthread_cond_t *a_cond, int l_tim
 }
 
 #ifdef USE_WRITE_BUFFER
-// return 0 if buffer empty, 1 data present
+/**
+ * @brief Checks if a buffer is not empty.
+ * @return Returns true if the buffer is not empty, false if it is empty.
+ */
 static bool check_fill_buf(void)
 {
     dap_list_t *l_list_begin;
@@ -275,7 +301,10 @@ static bool check_fill_buf(void)
     return l_ret;
 }
 
-// wait apply write buffer
+/**
+ * @brief Waits until the buffer is not empty.
+ * @return (none)
+ */
 static void wait_write_buf()
 {
 //    printf("** Start wait data\n");
@@ -289,7 +318,10 @@ static void wait_write_buf()
 //    printf("** End wait data\n");
 }
 
-// save data from buffer to database
+/**
+ * @brief Saves data from a buffer to a database.
+ * @return 0
+ */
 static int save_write_buf(void)
 {
     dap_list_t *l_list_end;
@@ -348,7 +380,11 @@ static int save_write_buf(void)
     return 0;
 }
 
-// thread for save data from buffer to database
+/**
+ * @brief A thread for saving data from buffer to a database
+ * @param arg NULL, is not used
+ * @return NULL
+ */
 static void* func_write_buf(void * arg)
 {
     while(1) {
@@ -366,6 +402,12 @@ static void* func_write_buf(void * arg)
 }
 #endif //USE_WRITE_BUFFER
 
+/**
+ * @brief Applies objects to database.
+ * @param a_store an pointer to the objects
+ * @param a_store_count a number of objectss
+ * @return Returns 0, if successful.
+ */
 int dap_chain_global_db_driver_appy(pdap_store_obj_t a_store_obj, size_t a_store_count)
 {
     //dap_store_obj_t *l_store_obj = dap_store_obj_copy(a_store_obj, a_store_count);
@@ -424,6 +466,12 @@ int dap_chain_global_db_driver_appy(pdap_store_obj_t a_store_obj, size_t a_store
 
 }
 
+/**
+ * @brief Adds objects to a database.
+ * @param a_store_obj objects to be added
+ * @param a_store_count a number of added objects
+ * @return Returns 0 if sucseesful.
+ */
 int dap_chain_global_db_driver_add(pdap_store_obj_t a_store_obj, size_t a_store_count)
 {
     for(size_t i = 0; i < a_store_count; i++)
@@ -431,6 +479,12 @@ int dap_chain_global_db_driver_add(pdap_store_obj_t a_store_obj, size_t a_store_
     return dap_chain_global_db_driver_appy(a_store_obj, a_store_count);
 }
 
+/**
+ * @brief Deletes objects from a database.
+ * @param a_store_obj objects to be deleted
+ * @param a_store_count a number of deleted objects
+ * @return Returns 0 if sucseesful.
+ */
 int dap_chain_global_db_driver_delete(pdap_store_obj_t a_store_obj, size_t a_store_count)
 {
     for(size_t i = 0; i < a_store_count; i++)
@@ -439,10 +493,10 @@ int dap_chain_global_db_driver_delete(pdap_store_obj_t a_store_obj, size_t a_sto
 }
 
 /**
- * Read the number of items
- *
- * a_group - group name
- * a_id - from this id
+ * @brief Gets a number of stored objects in a database by a_group and id.
+ * @param a_group the group name string
+ * @param a_id id
+ * @return Returns a number of objects.
  */
 size_t dap_chain_global_db_driver_count(const char *a_group, uint64_t id)
 {
@@ -454,11 +508,11 @@ size_t dap_chain_global_db_driver_count(const char *a_group, uint64_t id)
 }
 
 /**
- * Get group matching the pattern
+ * @brief Gets a list of group names matching the pattern.
  * Check whether the groups match the pattern a_group_mask, which is a shell wildcard pattern
- * patterns: [] {} [!] * ?
- * https://en.wikipedia.org/wiki/Glob_(programming)
- * a_group_mask - group mask
+ * patterns: [] {} [!] * ? https://en.wikipedia.org/wiki/Glob_(programming).
+ * @param a_group_mask the group mask string
+ * @return If successful, returns the list of group names, otherwise NULL.
  */
 dap_list_t* dap_chain_global_db_driver_get_groups_by_mask(const char *a_group_mask)
 {
@@ -470,9 +524,9 @@ dap_list_t* dap_chain_global_db_driver_get_groups_by_mask(const char *a_group_ma
 
 
 /**
- * Read last items
- *
- * a_group - group name
+ * @brief Reads last object in the database.
+ * @param a_group the group name
+ * @return If successful, a pointer to the object, otherwise NULL.
  */
 dap_store_obj_t* dap_chain_global_db_driver_read_last(const char *a_group)
 {
@@ -488,13 +542,12 @@ dap_store_obj_t* dap_chain_global_db_driver_read_last(const char *a_group)
 }
 
 /**
- * Read several items
- *
- * a_group - group name
- * a_key - key name, may by NULL, it means reading the whole group
- * a_id - from this id
- * a_count_out[in], how many items to read, 0 - no limits
- * a_count_out[out], how many items was read
+ * @brief Reads several objects from a database by a_group and id.
+ * @param a_group the group name string
+ * @param a_id id
+ * @param a_count_out[in] a number of objects to be read, if 0 - no limits
+ * @param a_count_out[out] a count of objects that were read
+ * @return If successful, a pointer to an objects, otherwise NULL.
  */
 dap_store_obj_t* dap_chain_global_db_driver_cond_read(const char *a_group, uint64_t id, size_t *a_count_out)
 {
@@ -510,12 +563,13 @@ dap_store_obj_t* dap_chain_global_db_driver_cond_read(const char *a_group, uint6
 }
 
 /**
- * Read several items
- *
- * a_group - group name
- * a_key - key name, may by NULL, it means reading the whole group
- * a_count_out[in], how many items to read, 0 - no limits
- * a_count_out[out], how many items was read
+ * @brief Reads several objects from a database by a_group and a_key.
+ * If a_key is NULL, reads whole group.
+ * @param a_group a group name string
+ * @param a_key  an object key string. If equal NULL, it means reading the whole group
+ * @param a_count_out[in] a number of objects to be read, if 0 - no limits
+ * @param a_count_out[out] a number of objects that were read
+ * @return If successful, a pointer to an objects, otherwise NULL.
  */
 dap_store_obj_t* dap_chain_global_db_driver_read(const char *a_group, const char *a_key, size_t *a_count_out)
 {
@@ -531,10 +585,10 @@ dap_store_obj_t* dap_chain_global_db_driver_read(const char *a_group, const char
 }
 
 /**
- * Check an element in the database
- *
- * a_group - group name
- * a_key - key name
+ * @brief Checks if an object is in a database by a_group and a_key.
+ * @param a_group a group name string
+ * @param a_key a object key string
+ * @return Returns true if it is, false otherwise.
  */
 bool dap_chain_global_db_driver_is(const char *a_group, const char *a_key)
 {
diff --git a/modules/global-db/dap_chain_global_db_driver_cdb.c b/modules/global-db/dap_chain_global_db_driver_cdb.c
index 1aeba149aaf31a97e43ef8511a2c7ccf1a0c0b20..7d00b153a0879f2e362e0dea9bed116d830b72f1 100644
--- a/modules/global-db/dap_chain_global_db_driver_cdb.c
+++ b/modules/global-db/dap_chain_global_db_driver_cdb.c
@@ -52,11 +52,26 @@ typedef struct _cdb_instance {
     UT_hash_handle hh;
 } cdb_instance, *pcdb_instance;
 
+/** A path to a CDB file. */
 static char *s_cdb_path = NULL;
+/** A pointer to a CDB instance. */
 static pcdb_instance s_cdb = NULL;
+/** A mutex for working with a CDB instanse. */
 static pthread_mutex_t cdb_mutex = PTHREAD_MUTEX_INITIALIZER;
+/** A read-write lock for working with a CDB instanse. */
 static pthread_rwlock_t cdb_rwlock = PTHREAD_RWLOCK_INITIALIZER;
 
+/**
+ * @brief Serialize key and val to a item
+ * key -> key
+ * val[0..8] => id
+ * val[..] => value_len
+ * val[..] => value
+ * val[..] => timestamp
+ * @param a_obj a pointer to a item
+ * @param key a key
+ * @param val a serialize string
+ */
 static void cdb_serialize_val_to_dap_store_obj(pdap_store_obj_t a_obj, const char *key, const char *val) {
     if (!key || !val) {
         a_obj = NULL;
@@ -74,6 +89,7 @@ static void cdb_serialize_val_to_dap_store_obj(pdap_store_obj_t a_obj, const cha
     a_obj->timestamp = (time_t)dap_hex_to_uint(val + offset, sizeof(time_t));
 }
 
+/** A callback function designed for finding a last item */
 bool dap_cdb_get_last_obj_iter_callback(void *arg, const char *key, int ksize, const char *val, int vsize, uint32_t expire, uint64_t oid) {
     UNUSED(ksize);
     UNUSED(val);
@@ -88,6 +104,7 @@ bool dap_cdb_get_last_obj_iter_callback(void *arg, const char *key, int ksize, c
     return true;
 }
 
+//** A callback function designed for finding a some items */
 bool dap_cdb_get_some_obj_iter_callback(void *arg, const char *key, int ksize, const char *val, int vsize, uint32_t expire, uint64_t oid) {
     UNUSED(ksize);
     UNUSED(val);
@@ -103,6 +120,7 @@ bool dap_cdb_get_some_obj_iter_callback(void *arg, const char *key, int ksize, c
     return true;
 }
 
+//** A callback function designed for finding a some items by conditionals */
 bool dap_cdb_get_cond_obj_iter_callback(void *arg, const char *key, int ksize, const char *val, int vsize, uint32_t expire, uint64_t oid) {
     UNUSED(ksize);
     UNUSED(val);
@@ -120,7 +138,7 @@ bool dap_cdb_get_cond_obj_iter_callback(void *arg, const char *key, int ksize, c
     }
     return true;
 }
-
+//** A callback function designed for countng items*/
 bool dap_cdb_get_count_iter_callback(void *arg, const char *key, int ksize, const char *val, int vsize, uint32_t expire, uint64_t oid) {
     UNUSED(ksize);
     UNUSED(val);
@@ -138,6 +156,14 @@ bool dap_cdb_get_count_iter_callback(void *arg, const char *key, int ksize, cons
     return true;
 }
 
+/** 
+ * @brief Initiates a CDB with main hash table size: 1000000,
+ * record cache: 128Mb, index page cache: 1024Mb.
+ * @param a_group a group name 
+ * @param a_flags should be combination of CDB_CREAT / CDB_TRUNC / CDB_PAGEWARMUP 
+   CDB_PAGEWARMUP
+ * @return A pointer to CDB, if success. NULL, if error.
+ */
 pcdb_instance dap_cdb_init_group(char *a_group, int a_flags) {
     pcdb_instance l_cdb_i = NULL;
     pthread_mutex_lock(&cdb_mutex);
@@ -198,6 +224,12 @@ ERR:
     return NULL;
 }
 
+/**
+ * @brief Initiates a CDB with callback fuctions.
+ * @param a_cdb_path a path to CDB. Saved in s_cdb_path
+ * @param a_drv_callback a struct for callback functions
+ * @return 0 if success, -1 if сouldn't open db directory, -2 if dap_cdb_init_group() returns NULL.
+ */
 int dap_db_driver_cdb_init(const char *a_cdb_path, dap_db_driver_callbacks_t *a_drv_callback) {
     s_cdb_path = dap_strdup(a_cdb_path);
     if(s_cdb_path[strlen(s_cdb_path)] == '/') {
@@ -251,6 +283,11 @@ int dap_db_driver_cdb_init(const char *a_cdb_path, dap_db_driver_callbacks_t *a_
     return CDB_SUCCESS;
 }
 
+/**
+ * @brief Gets CDB by a_group.
+ * @param a_group a group name
+ * @return if CDB is found, a pointer to CDB, otherwise NULL.
+ */
 pcdb_instance dap_cdb_get_db_by_group(const char *a_group) {
     pcdb_instance l_cdb_i = NULL;
     pthread_rwlock_rdlock(&cdb_rwlock);
@@ -259,6 +296,11 @@ pcdb_instance dap_cdb_get_db_by_group(const char *a_group) {
     return l_cdb_i;
 }
 
+/**
+ * @brief Creates a directory on the path s_cdb_path/a_group.
+ * @param a_group the group name
+ * @return 0
+ */ 
 int dap_cdb_add_group(const char *a_group) {
     char l_cdb_path[strlen(s_cdb_path) + strlen(a_group) + 2];
     memset(l_cdb_path, '\0', sizeof(l_cdb_path));
@@ -271,6 +313,10 @@ int dap_cdb_add_group(const char *a_group) {
     return 0;
 }
 
+/**
+ * @brief Deinitialize CDB.
+ * @return 0
+ */
 int dap_db_driver_cdb_deinit() {
     pcdb_instance cur_cdb, tmp;
     pthread_rwlock_wrlock(&cdb_rwlock);
@@ -285,6 +331,10 @@ int dap_db_driver_cdb_deinit() {
     return CDB_SUCCESS;
 }
 
+/**
+ * @brief Flushing CDB to the disk.
+ * @return 0
+ */
 int dap_db_driver_cdb_flush(void) {
     int ret = 0;
     log_it(L_DEBUG, "Flushing CDB to disk");
@@ -298,6 +348,11 @@ int dap_db_driver_cdb_flush(void) {
     return ret;
 }
 
+/**
+ * @brief Read last store item from CDB.
+ * @param a_group a group name
+ * @return If successful, a pointer to item, otherwise NULL.
+ */ 
 dap_store_obj_t *dap_db_driver_cdb_read_last_store_obj(const char* a_group) {
     if (!a_group) {
         return NULL;
@@ -319,6 +374,12 @@ dap_store_obj_t *dap_db_driver_cdb_read_last_store_obj(const char* a_group) {
     return l_arg.o;
 }
 
+/**
+ * @brief Checks if CDB has a_key
+ * @param a_group the group name
+ * @param a_key the key
+ * @return true or false
+ */  
 bool dap_db_driver_cdb_is_obj(const char *a_group, const char *a_key)
 {
     bool l_ret = false;
@@ -338,6 +399,13 @@ bool dap_db_driver_cdb_is_obj(const char *a_group, const char *a_key)
     return l_ret;
 }
 
+/**
+ * @brief Gets items from CDB by a_group and a_key. If a_key=NULL then gets a_count_out items.
+ * @param a_group the group name
+ * @param a_key the key or NULL
+ * @param a_count_out IN. Count of read items. OUT Count of items was read
+ * @return If successful, pointer to items; otherwise NULL.
+ */  
 dap_store_obj_t *dap_db_driver_cdb_read_store_obj(const char *a_group, const char *a_key, size_t *a_count_out) {
     if (!a_group) {
         return NULL;
@@ -390,6 +458,14 @@ dap_store_obj_t *dap_db_driver_cdb_read_store_obj(const char *a_group, const cha
     return l_obj;
 }
 
+/**
+ * @brief Gets items from CDB by a_group and a_id.
+ * @param a_group the group name
+ * @param a_id id
+ * @param a_count_out[in] a count of items
+ * @param a_count[out] a count of items were got
+ * @return If successful, pointer to items, otherwise NULL.
+ */  
 dap_store_obj_t* dap_db_driver_cdb_read_cond_store_obj(const char *a_group, uint64_t a_id, size_t *a_count_out) {
     if (!a_group) {
         return NULL;
@@ -436,6 +512,12 @@ dap_store_obj_t* dap_db_driver_cdb_read_cond_store_obj(const char *a_group, uint
     return l_arg.o;
 }
 
+/**
+ * @brief Reads count of items in CDB by a_group and a_id.
+ * @param a_group the group name
+ * @param a_id id
+ * @return If successful, count of store items; otherwise 0.
+ */
 size_t dap_db_driver_cdb_read_count_store(const char *a_group, uint64_t a_id)
 {
     if (!a_group) {
@@ -458,7 +540,9 @@ size_t dap_db_driver_cdb_read_count_store(const char *a_group, uint64_t a_id)
 }
 
 /**
- * Check whether the groups match the pattern a_group_mask, which is a shell wildcard pattern
+ * @brief Check whether the groups match the pattern a_group_mask, which is a shell wildcard pattern.
+ * @param a_group_mask the mask
+ * @return If successful, pointer to dap_list with group names; otherwise NULL.
  */
 dap_list_t* dap_db_driver_cdb_get_groups_by_mask(const char *a_group_mask)
 {
@@ -476,6 +560,11 @@ dap_list_t* dap_db_driver_cdb_get_groups_by_mask(const char *a_group_mask)
     return l_ret_list;
 }
 
+/**
+ * @brief Adds or deletes item in CDB depending on a_store_obj->type.
+ * @param a_store_obj a pointer to the item
+ * @return 0 if success, <0 error.
+ */
 int dap_db_driver_cdb_apply_store_obj(pdap_store_obj_t a_store_obj) {
     if(!a_store_obj || !a_store_obj->group) {
         return -1;
diff --git a/modules/global-db/dap_chain_global_db_remote.c b/modules/global-db/dap_chain_global_db_remote.c
index 8954518599b1ecd341d8a9f1822c254f3db3e887..7ba84b9502fe6888d5c8188a69ebee325e572e0d 100644
--- a/modules/global-db/dap_chain_global_db_remote.c
+++ b/modules/global-db/dap_chain_global_db_remote.c
@@ -14,6 +14,12 @@
 // default time of node address expired in hours
 #define NODE_TIME_EXPIRED_DEFAULT 720
 
+/**
+ * @brief Sets current node adress
+ * @param a_address a current node adress
+ * @param a_net_name a net name
+ * @return True if success, otherwise false
+ */
 static bool dap_db_set_cur_node_addr_common(uint64_t a_address, char *a_net_name, time_t a_expire_time)
 {
     if(!a_net_name)
diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c
index 9e72b93607c3783b0b89028d424eb947d43fd712..aaf69b79cf7c9ed54ab2ea1af0c1a540ae47e164 100644
--- a/modules/net/dap_chain_net.c
+++ b/modules/net/dap_chain_net.c
@@ -964,12 +964,12 @@ dap_chain_node_role_t dap_chain_net_get_role(dap_chain_net_t * a_net)
 }
 
 /**
- * @brief dap_chain_net_new
- * @param a_id
- * @param a_name
- * @param a_node_role
- * @param a_node_name
- * @return
+ * @brief set node role
+ * [root_master, root, archive, cell_master, master, full, light]
+ * @param a_id 
+ * @param a_name 
+ * @param a_node_role 
+ * @return dap_chain_net_t* 
  */
 static dap_chain_net_t *s_net_new(const char * a_id, const char * a_name ,
                                     const char * a_node_role)
@@ -1045,7 +1045,9 @@ void dap_chain_net_delete( dap_chain_net_t * a_net )
 
 
 /**
- * @brief dap_chain_net_init
+ * @brief
+ * init network settings from cellrame-node.cfg file
+ * register net* commands in cellframe-node-cli interface
  * @return
  */
 int dap_chain_net_init()
@@ -1089,6 +1091,10 @@ int dap_chain_net_init()
     return 0;
 }
 
+/**
+ * @brief 
+ * load network config settings
+ */
 void dap_chain_net_load_all()
 {
     char * l_net_dir_str = dap_strdup_printf("%s/network", dap_config_path());
@@ -1157,9 +1163,10 @@ void s_set_reply_text_node_status(char **a_str_reply, dap_chain_net_t * a_net){
 }
 
 /**
- * @brief s_cli_net
- * @param argc
- * @param argv
+ * @brief
+ * register net* command in cellframe-node-cli interface
+ * @param argc arguments count
+ * @param argv arguments value
  * @param arg_func
  * @param str_reply
  * @return
@@ -1565,9 +1572,11 @@ static int callback_compare_prioritity_list(const void * a_item1, const void * a
 }
 
 /**
- * @brief s_net_load
- * @param a_net_name
- * @return
+ * @brief load network config settings from cellframe-node.cfg file
+ * 
+ * @param a_net_name const char *: network name, for example "home21-network"
+ * @param a_acl_idx currently 0
+ * @return int 
  */
 int s_net_load(const char * a_net_name, uint16_t a_acl_idx)
 {
@@ -2499,6 +2508,10 @@ int dap_chain_net_verify_datum_for_add(dap_chain_net_t *a_net, dap_chain_datum_t
 
 /**
  * @brief dap_chain_net_dump_datum
+ * process datum verification process. Can be:
+ * if DAP_CHAIN_DATUM_TX, called dap_chain_ledger_tx_add_check
+ * if DAP_CHAIN_DATUM_TOKEN_DECL, called dap_chain_ledger_token_decl_add_check
+ * if DAP_CHAIN_DATUM_TOKEN_EMISSION, called dap_chain_ledger_token_emission_add_check
  * @param a_str_out
  * @param a_datum
  */
diff --git a/modules/net/dap_chain_node.c b/modules/net/dap_chain_node.c
index 817455ff9e922ce73b65281a17ff5d93668e425a..ed3e1ee5e164c4201d36be9030d48190fe02583b 100644
--- a/modules/net/dap_chain_node.c
+++ b/modules/net/dap_chain_node.c
@@ -268,6 +268,12 @@ bool dap_chain_node_mempool_process(dap_chain_t *a_chain, dap_chain_node_role_t
 
 static bool s_mempool_auto = false;
 
+/**
+ * @brief 
+ * get automatic mempool processing, when network config contains mempool_auto_types for specific datums
+ * @return true 
+ * @return false 
+ */
 bool dap_chain_node_mempool_autoproc_init()
 {
     uint16_t l_net_count;
diff --git a/modules/net/dap_chain_node_cli.c b/modules/net/dap_chain_node_cli.c
index 5259aa57156ddb46b3d3537a33c5c08fb6bc2942..23484d9697dcbeefd610322898f26918ada4c45a 100644
--- a/modules/net/dap_chain_node_cli.c
+++ b/modules/net/dap_chain_node_cli.c
@@ -84,15 +84,17 @@ bool s_debug_cli = false;
 
 static dap_chain_node_cmd_item_t * s_commands = NULL;
 
-
 /**
+ * @brief 
  * Wait for data
  * timeout -  timeout in ms
  * [Specifying a negative value in timeout means an infinite timeout.]
  * [Specifying a timeout of zero causes poll() to return immediately, even if no file descriptors are ready.]
- * return zero if the time limit expired
- * return: >0 if data is present to read
- * return: -1 if error
+ * @param socket 
+ * @param timeout 
+ * @return zero if the time limit expired
+ * @return: >0 if data is present to read
+ * @return: -1 if error
  */
 static int s_poll( int socket, int timeout )
 {
@@ -112,7 +114,11 @@ static int s_poll( int socket, int timeout )
 }
 
 /**
+ * @brief is_valid_socket
  * Check socket for validity
+ * @param sock 
+ * @return true 
+ * @return false
  */
 static bool is_valid_socket(SOCKET sock)
 {
@@ -145,10 +151,14 @@ static bool is_valid_socket(SOCKET sock)
 }
 
 /**
- * Read from socket
- *
+ * @brief s_recv
  * timeout in milliseconds
  * return the number of read bytes (-1 err or -2 timeout)
+ * @param sock 
+ * @param buf 
+ * @param bufsize 
+ * @param timeout 
+ * @return long 
  */
 long s_recv(SOCKET sock, unsigned char *buf, size_t bufsize, int timeout)
 {
@@ -173,12 +183,19 @@ long s_recv(SOCKET sock, unsigned char *buf, size_t bufsize, int timeout)
 }
 
 /**
+ * @brief s_get_next_str
  * Reading from the socket till arrival the specified string
  *
  * stop_str - string to which reading will continue
  * del_stop_str - удалять ли строку для поиска в конце
  * timeout - in ms
  * return: string (if waited for final characters) or NULL, if the string requires deletion
+ * @param nSocket 
+ * @param dwLen 
+ * @param stop_str 
+ * @param del_stop_str 
+ * @param timeout 
+ * @return char* 
  */
 char* s_get_next_str( SOCKET nSocket, int *dwLen, const char *stop_str, bool del_stop_str, int timeout )
 {
@@ -379,6 +396,16 @@ static void* thread_one_client_func(void *args)
 
 #ifdef _WIN32
 
+/**
+ * @brief p_get_next_str
+ * 
+ * @param hPipe 
+ * @param dwLen 
+ * @param stop_str 
+ * @param del_stop_str 
+ * @param timeout 
+ * @return char* 
+ */
 char *p_get_next_str( HANDLE hPipe, int *dwLen, const char *stop_str, bool del_stop_str, int timeout )
 {
     bool bSuccess = false;
@@ -455,7 +482,10 @@ char *p_get_next_str( HANDLE hPipe, int *dwLen, const char *stop_str, bool del_s
 
 
 /**
+ * @brief thread_pipe_client_func
  * threading function for processing a request from a client
+ * @param args 
+ * @return void* 
  */
 static void *thread_pipe_client_func( void *args )
 {
@@ -603,7 +633,10 @@ static void *thread_pipe_client_func( void *args )
 
 
 /**
+ * @brief thread_pipe_func
  * main threading server function pipe win32
+ * @param args 
+ * @return void* 
  */
 static void* thread_pipe_func( void *args )
 {
@@ -651,7 +684,10 @@ static void* thread_pipe_func( void *args )
 #endif
 
 /**
+ * @brief thread_main_func
  * main threading server function
+ * @param args 
+ * @return void* 
  */
 static void* thread_main_func(void *args)
 {
@@ -682,7 +718,11 @@ static void* thread_main_func(void *args)
 }
 
 /**
+ * @brief dap_chain_node_cli_set_reply_text
  * Write text to reply string
+ * @param str_reply 
+ * @param str 
+ * @param ... 
  */
 void dap_chain_node_cli_set_reply_text(char **str_reply, const char *str, ...)
 {
@@ -726,9 +766,14 @@ int dap_chain_node_cli_check_option( char** argv, int arg_start, int arg_end, co
 }
 
 /**
- * find option value
- *
+ * @brief dap_chain_node_cli_find_option_val
  * return index of string in argv, or 0 if not found
+ * @param argv 
+ * @param arg_start 
+ * @param arg_end 
+ * @param opt_name 
+ * @param opt_value 
+ * @return int 
  */
 int dap_chain_node_cli_find_option_val( char** argv, int arg_start, int arg_end, const char *opt_name, const char **opt_value)
 {
@@ -784,6 +829,12 @@ void dap_chain_node_cli_cmd_item_create(const char * a_name, cmdfunc_t *a_func,
     log_it(L_DEBUG,"Added command %s",l_cmd_item->name);
 }
 
+/**
+ * @brief dap_chain_node_cli_cmd_item_apply_overrides
+ * 
+ * @param a_name 
+ * @param a_overrides 
+ */
 void dap_chain_node_cli_cmd_item_apply_overrides(const char * a_name, const dap_chain_node_cmd_item_func_overrides_t * a_overrides){
     dap_chain_node_cmd_item_t *l_cmd_item = dap_chain_node_cli_cmd_find(a_name);
     if(l_cmd_item)
@@ -813,10 +864,14 @@ dap_chain_node_cmd_item_t* dap_chain_node_cli_cmd_find(const char *a_name)
 
 
 /**
+ * @brief dap_chain_node_cli_init
  * Initialization of the server side of the interaction
  * with the console kelvin-node-cli
  *
+ * init commands description
  * return 0 if OK, -1 error
+ * @param g_config 
+ * @return int 
  */
 int dap_chain_node_cli_init(dap_config_t * g_config)
 {
diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c
index 36beb9ed111a199e5df42163235175a599a31b91..f73e975f7cff3df62e84eb349914690cf552f3d0 100644
--- a/modules/net/dap_chain_node_cli_cmd.c
+++ b/modules/net/dap_chain_node_cli_cmd.c
@@ -3,7 +3,7 @@
  * Dmitriy A. Gerasimov <gerasimov.dmitriy@demlabs.net>
  * Alexander Lysikov <alexander.lysikov@demlabs.net>
  * DeM Labs Inc.   https://demlabs.net
- * Kelvin Project https://github.com/kelvinblockchain
+ * Cellframe Network  https://github.com/demlabs-cellframe
  * Copyright  (c) 2019
  * All rights reserved.
 
@@ -107,9 +107,13 @@
 
 
 /**
+ * @brief dap_chain_node_addr_t* dap_chain_node_addr_get_by_alias
  * Find in base addr by alias
  *
  * return addr, NULL if not found
+ * @param a_net 
+ * @param a_alias 
+ * @return dap_chain_node_addr_t* 
  */
 dap_chain_node_addr_t* dap_chain_node_addr_get_by_alias(dap_chain_net_t * a_net, const char *a_alias)
 {
@@ -129,9 +133,13 @@ dap_chain_node_addr_t* dap_chain_node_addr_get_by_alias(dap_chain_net_t * a_net,
 }
 
 /**
+ * @brief dap_list_t* get_aliases_by_name Get the aliases by name object
  * Find in base alias by addr
  *
  * return list of addr, NULL if not found
+ * @param l_net 
+ * @param a_addr 
+ * @return dap_list_t* 
  */
 static dap_list_t* get_aliases_by_name(dap_chain_net_t * l_net, dap_chain_node_addr_t *a_addr)
 {
@@ -157,6 +165,15 @@ static dap_list_t* get_aliases_by_name(dap_chain_net_t * l_net, dap_chain_node_a
     return list_aliases;
 }
 
+/**
+ * @brief dap_chain_node_addr_t* s_node_info_get_addr
+ * 
+ * @param a_net 
+ * @param a_node_info 
+ * @param a_addr 
+ * @param a_alias_str 
+ * @return dap_chain_node_addr_t* 
+ */
 static dap_chain_node_addr_t* s_node_info_get_addr(dap_chain_net_t * a_net, dap_chain_node_info_t *a_node_info,
         dap_chain_node_addr_t *a_addr, const char *a_alias_str)
 {
@@ -172,7 +189,12 @@ static dap_chain_node_addr_t* s_node_info_get_addr(dap_chain_net_t * a_net, dap_
 }
 
 /**
+ * @brief node_info_read_and_reply
  * Read node from base
+ * @param a_net 
+ * @param a_address 
+ * @param a_str_reply 
+ * @return dap_chain_node_info_t* 
  */
 static dap_chain_node_info_t* node_info_read_and_reply(dap_chain_net_t * a_net, dap_chain_node_addr_t *a_address,
         char **a_str_reply)
@@ -214,7 +236,19 @@ static dap_chain_node_info_t* node_info_read_and_reply(dap_chain_net_t * a_net,
 }
 
 /**
- * Save node to base
+ * @brief node_info_add_with_reply
+ * Handler of command 'global_db node add'
+ *
+ * str_reply[out] for reply
+ * return 0 Ok, -1 error
+ * @param a_net 
+ * @param a_node_info 
+ * @param a_alias_str 
+ * @param a_cell_str 
+ * @param a_ipv4_str 
+ * @param a_ipv6_str 
+ * @param a_str_reply 
+ * @return int 
  */
 static bool node_info_save_and_reply(dap_chain_net_t * a_net, dap_chain_node_info_t *a_node_info, char **str_reply)
 {
@@ -246,10 +280,19 @@ static bool node_info_save_and_reply(dap_chain_net_t * a_net, dap_chain_node_inf
 }
 
 /**
+ * @brief node_info_add_with_reply
  * Handler of command 'global_db node add'
  *
  * str_reply[out] for reply
  * return 0 Ok, -1 error
+ * @param a_net 
+ * @param a_node_info 
+ * @param a_alias_str 
+ * @param a_cell_str 
+ * @param a_ipv4_str 
+ * @param a_ipv6_str 
+ * @param a_str_reply 
+ * @return int 
  */
 static int node_info_add_with_reply(dap_chain_net_t * a_net, dap_chain_node_info_t *a_node_info,
         const char *a_alias_str,
@@ -297,9 +340,15 @@ static int node_info_add_with_reply(dap_chain_net_t * a_net, dap_chain_node_info
 }
 
 /**
+ * @brief node_info_del_with_reply
  * Handler of command 'global_db node add'
  *
  * str_reply[out] for reply
+ * @param a_net 
+ * @param a_node_info 
+ * @param alias_str 
+ * @param str_reply str_reply[out] for reply
+ * @return int 
  * return 0 Ok, -1 error
  */
 static int node_info_del_with_reply(dap_chain_net_t * a_net, dap_chain_node_info_t *a_node_info, const char *alias_str,
@@ -357,11 +406,19 @@ static int node_info_del_with_reply(dap_chain_net_t * a_net, dap_chain_node_info
 }
 
 /**
+ * @brief link_add_or_del_with_reply
  * Handler of command 'global_db node link'
  *
  * cmd 'add' or 'del'
  * str_reply[out] for reply
  * return 0 Ok, -1 error
+ * @param a_net 
+ * @param a_node_info 
+ * @param cmd 
+ * @param a_alias_str 
+ * @param link 
+ * @param a_str_reply 
+ * @return int 
  */
 static int link_add_or_del_with_reply(dap_chain_net_t * a_net, dap_chain_node_info_t *a_node_info, const char *cmd,
         const char *a_alias_str,
@@ -469,9 +526,16 @@ static int link_add_or_del_with_reply(dap_chain_net_t * a_net, dap_chain_node_in
 
 /**
  * Handler of command 'node dump'
+ * @brief node_info_dump_with_reply Handler of command 'node dump'
  *
  * str_reply[out] for reply
  * return 0 Ok, -1 error
+ * @param a_net 
+ * @param a_addr 
+ * @param a_is_full 
+ * @param a_alias 
+ * @param a_str_reply 
+ * @return int 
  */
 static int node_info_dump_with_reply(dap_chain_net_t * a_net, dap_chain_node_addr_t * a_addr, bool a_is_full,
         const char *a_alias, char **a_str_reply)
@@ -669,11 +733,16 @@ static int node_info_dump_with_reply(dap_chain_net_t * a_net, dap_chain_node_add
 }
 
 /**
+ * @brief com_global_db
  * global_db command
  *
+ * @param a_argc 
+ * @param a_argv 
+ * @param arg_func 
+ * @param a_str_reply 
+ * @return int 
  * return 0 OK, -1 Err
  */
-
 int com_global_db(int a_argc, char ** a_argv, void *arg_func, char **a_str_reply)
 {
     enum {
@@ -1265,7 +1334,13 @@ int com_node(int a_argc, char ** a_argv, void *arg_func, char **a_str_reply)
 /**
  * Traceroute command
  *
+ * @brief Traceroute command
  * return 0 OK, -1 Err
+ * @param argc 
+ * @param argv 
+ * @param arg_func 
+ * @param str_reply 
+ * @return int 
  */
 int com_traceroute(int argc, char** argv, void *arg_func, char **str_reply)
 {
@@ -1344,8 +1419,14 @@ int com_traceroute(int argc, char** argv, void *arg_func, char **str_reply)
 }
 
 /**
+ * @brief com_tracepath
  * Tracepath command
  *
+ * @param argc 
+ * @param argv 
+ * @param arg_func 
+ * @param str_reply 
+ * @return int 
  * return 0 OK, -1 Err
  */
 int com_tracepath(int argc, char** argv, void *arg_func, char **str_reply)
@@ -1422,7 +1503,13 @@ int com_tracepath(int argc, char** argv, void *arg_func, char **str_reply)
 /**
  * Ping command
  *
+ * @brief Ping command
  * return 0 OK, -1 Err
+ * @param argc 
+ * @param argv 
+ * @param arg_func 
+ * @param str_reply 
+ * @return int 
  */
 int com_ping(int argc, char** argv, void *arg_func, char **str_reply)
 {
@@ -1509,7 +1596,13 @@ int com_version(int argc, char ** argv, void *arg_func, char **str_reply)
 
 
 /**
+ * @brief 
  * Help command
+ * @param argc 
+ * @param argv 
+ * @param arg_func 
+ * @param str_reply 
+ * @return int 
  */
 int com_help(int argc, char ** argv, void *arg_func, char **str_reply)
 {
@@ -1544,7 +1637,14 @@ int com_help(int argc, char ** argv, void *arg_func, char **str_reply)
 /**
  * com_tx_create command
  *
+ * @brief com_tx_wallet
  * Wallet info
+ * com_tx_create command
+ * @param argc 
+ * @param argv 
+ * @param arg_func 
+ * @param str_reply 
+ * @return int 
  */
 int com_tx_wallet(int argc, char ** argv, void *arg_func, char **str_reply)
 {
@@ -2048,6 +2148,14 @@ int com_token_decl_sign(int argc, char ** argv, void *arg_func, char ** a_str_re
     }
 }
 
+/**
+ * @brief s_com_mempool_list_print_for_chain
+ * 
+ * @param a_net 
+ * @param a_chain 
+ * @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, dap_string_t * a_str_tmp, const char *a_hash_out_type){
     char * l_gdb_group_mempool = dap_chain_net_get_gdb_group_mempool(a_chain);
     if(!l_gdb_group_mempool){
@@ -3384,9 +3492,14 @@ int com_token_emit(int a_argc, char ** a_argv, void *a_arg_func, char ** a_str_r
 }
 
 /**
- * com_tx_cond_create command
- *
+ * @brief com_tx_cond_create
  * Create transaction
+ * com_tx_cond_create command
+ * @param a_argc 
+ * @param a_argv 
+ * @param a_arg_func 
+ * @param a_str_reply 
+ * @return int 
  */
 int com_tx_cond_create(int a_argc, char ** a_argv, void *a_arg_func, char **a_str_reply)
 {
@@ -3659,9 +3772,15 @@ int com_mempool_add_ca( int a_argc,  char ** a_argv, void *a_arg_func, char ** a
 
 
 /**
+ * @brief Create transaction
  * com_tx_create command
  *
  * Create transaction
+ * @param argc 
+ * @param argv 
+ * @param arg_func 
+ * @param str_reply 
+ * @return int 
  */
 int com_tx_create(int argc, char ** argv, void *arg_func, char **str_reply)
 {
@@ -3802,9 +3921,14 @@ int com_tx_create(int argc, char ** argv, void *arg_func, char **str_reply)
 }
 
 /**
- * tx_verify command
- *
+ * @brief com_tx_verify
  * Verifing transaction
+ * tx_verify command
+ * @param argc 
+ * @param argv 
+ * @param arg_func 
+ * @param str_reply 
+ * @return int 
  */
 int com_tx_verify(int argc, char ** argv, void *arg_func, char **str_reply)
 {
@@ -3818,9 +3942,15 @@ int com_tx_verify(int argc, char ** argv, void *arg_func, char **str_reply)
 }
 
 /**
+ * @brief com_tx_history
  * tx_history command
  *
  * Transaction history for an address
+ * @param a_argc 
+ * @param a_argv 
+ * @param a_arg_func 
+ * @param a_str_reply 
+ * @return int 
  */
 int com_tx_history(int a_argc, char ** a_argv, void *a_arg_func, char **a_str_reply)
 {
@@ -3935,7 +4065,13 @@ int com_tx_history(int a_argc, char ** a_argv, void *a_arg_func, char **a_str_re
 }
 
 /**
- * stats command
+ * @brief stats command
+ * 
+ * @param argc 
+ * @param argv 
+ * @param arg_func 
+ * @param str_reply 
+ * @return int 
  */
 int com_stats(int argc, char ** argv, void *arg_func, char **str_reply)
 {
@@ -3986,6 +4122,15 @@ int com_stats(int argc, char ** argv, void *arg_func, char **str_reply)
     return 0;
 }
 
+/**
+ * @brief com_exit
+ * 
+ * @param argc 
+ * @param argv 
+ * @param arg_func 
+ * @param str_reply 
+ * @return int 
+ */
 int com_exit(int argc, char ** argv, void *arg_func, char **str_reply)
 {
     //dap_events_stop_all();
@@ -3995,10 +4140,13 @@ int com_exit(int argc, char ** argv, void *arg_func, char **str_reply)
 
 
 /**
- * print_log command
- *
- * Print log info
+ * @brief com_print_log Print log info
  * print_log [ts_after <timestamp >] [limit <line numbers>]
+ * @param argc 
+ * @param argv 
+ * @param arg_func 
+ * @param str_reply 
+ * @return int 
  */
 int com_print_log(int argc, char ** argv, void *arg_func, char **str_reply)
 {
diff --git a/modules/net/dap_chain_node_cli_cmd_tx.c b/modules/net/dap_chain_node_cli_cmd_tx.c
index 1633f6fe57133dfadad059bc3d79afd15afa21ac..94896a07a5dc6f7ee8eeb3c80ade13e35fc4d48e 100644
--- a/modules/net/dap_chain_node_cli_cmd_tx.c
+++ b/modules/net/dap_chain_node_cli_cmd_tx.c
@@ -60,6 +60,12 @@ typedef struct dap_chain_tx_hash_processed_ht{
     dap_chain_hash_fast_t hash;
     UT_hash_handle hh;
 }dap_chain_tx_hash_processed_ht_t;
+
+/**
+ * @brief _dap_chain_tx_hash_processed_ht_free
+ * free l_current_hash->hash, l_current_hash, l_hash_processed
+ * @param l_hash_processed dap_chain_tx_hash_processed_ht_t
+ */
 void _dap_chain_tx_hash_processed_ht_free(dap_chain_tx_hash_processed_ht_t *l_hash_processed){
     dap_chain_tx_hash_processed_ht_t *l_tmp;
     dap_chain_tx_hash_processed_ht_t *l_current_hash;
@@ -70,6 +76,17 @@ void _dap_chain_tx_hash_processed_ht_free(dap_chain_tx_hash_processed_ht_t *l_ha
     DAP_FREE(l_hash_processed);
 }
 
+/**
+ * @brief _dap_chain_datum_tx_out_data
+ * 
+ * @param a_datum 
+ * @param a_ledger 
+ * @param a_str_out 
+ * @param a_hash_out_type 
+ * @param save_processed_tx 
+ * @param a_tx_hash_processed 
+ * @param l_tx_num 
+ */
 void _dap_chain_datum_tx_out_data(dap_chain_datum_tx_t *a_datum,
                                   dap_ledger_t *a_ledger,
                                   dap_string_t *a_str_out,
@@ -349,9 +366,14 @@ static dap_chain_datum_t* get_prev_tx(dap_tx_data_t *a_tx_data)
 }
 
 /**
+ * @brief dap_db_history_tx
  * Get data according the history log
  *
  * return history string
+ * @param a_tx_hash 
+ * @param a_chain 
+ * @param a_hash_out_type 
+ * @return char* 
  */
 char* dap_db_history_tx(dap_chain_hash_fast_t* a_tx_hash, dap_chain_t * a_chain, const char *a_hash_out_type)
 {
@@ -566,9 +588,14 @@ char* dap_db_history_tx(dap_chain_hash_fast_t* a_tx_hash, dap_chain_t * a_chain,
 }
 
 /**
+ * @brief dap_db_history_addr
  * Get data according the history log
  *
  * return history string
+ * @param a_addr 
+ * @param a_chain 
+ * @param a_hash_out_type 
+ * @return char* 
  */
 char* dap_db_history_addr(dap_chain_addr_t * a_addr, dap_chain_t * a_chain, const char *a_hash_out_type)
 {
@@ -952,6 +979,15 @@ char* dap_db_history_addr(dap_chain_addr_t * a_addr, dap_chain_t * a_chain, cons
     return l_ret_str;
 }
 
+/**
+ * @brief char* dap_db_history_token_list
+ * 
+ * @param a_chain 
+ * @param a_token_name 
+ * @param a_hash_out_type 
+ * @param a_token_num 
+ * @return char* 
+ */
 static char* dap_db_history_token_list(dap_chain_t * a_chain, const char *a_token_name, const char *a_hash_out_type, size_t *a_token_num)
 {
     dap_string_t *l_str_out = dap_string_new(NULL);
@@ -1056,9 +1092,20 @@ static char* dap_db_history_token_list(dap_chain_t * a_chain, const char *a_toke
 }
 
 /**
+ * @brief dap_db_history_filter
  * Get data according the history log
  *
  * return history string
+ * @param a_chain 
+ * @param a_ledger 
+ * @param a_filter_token_name 
+ * @param a_filtr_addr_base58 
+ * @param a_hash_out_type 
+ * @param a_datum_start 
+ * @param a_datum_end 
+ * @param a_total_datums 
+ * @param a_tx_hash_processed 
+ * @return char* 
  */
 static char* dap_db_history_filter(dap_chain_t * a_chain, dap_ledger_t *a_ledger, const char *a_filter_token_name, const char *a_filtr_addr_base58, const char *a_hash_out_type, long a_datum_start, long a_datum_end, long *a_total_datums, dap_chain_tx_hash_processed_ht_t *a_tx_hash_processed)
 {
@@ -1517,11 +1564,15 @@ static char* dap_db_history_filter(dap_chain_t * a_chain, dap_ledger_t *a_ledger
 }
 
 
-
-
 /**
+ * @brief com_ledger
  * ledger command
  *
+ * @param a_argc 
+ * @param a_argv 
+ * @param a_arg_func 
+ * @param a_str_reply 
+ * @return int 
  */
 int com_ledger(int a_argc, char ** a_argv, void *a_arg_func, char **a_str_reply)
 {
@@ -1745,8 +1796,14 @@ int com_ledger(int a_argc, char ** a_argv, void *a_arg_func, char **a_str_reply)
 }
 
 /**
+ * @brief com_token
  * token command
  *
+ * @param a_argc 
+ * @param a_argv 
+ * @param a_arg_func 
+ * @param a_str_reply 
+ * @return int 
  */
 int com_token(int a_argc, char ** a_argv, void *a_arg_func, char **a_str_reply)
 {
diff --git a/modules/net/dap_chain_node_client.c b/modules/net/dap_chain_node_client.c
index d7dba4dc714af081603d2becfd615b06c7e04161..f2c4384bca13b5f35417a18ac5ad45c9a5eb253b 100644
--- a/modules/net/dap_chain_node_client.c
+++ b/modules/net/dap_chain_node_client.c
@@ -178,6 +178,12 @@ static void s_stage_status_error_callback(dap_client_t *a_client, void *a_arg)
         l_node_client->callbacks.error(l_node_client, EINVAL,l_node_client->callbacks_arg );
 }
 
+/**
+ * @brief s_node_client_connected_synchro_start_callback
+ * 
+ * @param a_worker dap_worker_t
+ * @param a_arg void 
+ */
 static void s_node_client_connected_synchro_start_callback(dap_worker_t *a_worker, void *a_arg)
 {
     UNUSED(a_worker);
@@ -492,6 +498,13 @@ static void s_ch_chain_callback_notify_packet_out(dap_stream_ch_chain_t* a_ch_ch
     //}
 }
 
+/**
+ * @brief save_stat_to_database
+ * 
+ * @param a_request 
+ * @param a_node_client 
+ * @return int 
+ */
 static int save_stat_to_database(dap_stream_ch_chain_net_srv_pkt_test_t *a_request, dap_chain_node_client_t * a_node_client)
 {
     int l_ret = 0;
@@ -571,11 +584,15 @@ static void s_ch_chain_callback_notify_packet_R(dap_stream_ch_chain_net_srv_t* a
 }
 
 /**
+ * @brief dap_chain_node_client_connect_channels
  * Create connection to server
  *
  * return a connection handle, or NULL, if an error
+ * @param l_net 
+ * @param a_node_info 
+ * @param a_active_channels 
+ * @return dap_chain_node_client_t* return a connection handle, or NULL, if an error
  */
-
 dap_chain_node_client_t* dap_chain_node_client_connect_channels(dap_chain_net_t * l_net, dap_chain_node_info_t *a_node_info, const char *a_active_channels)
 {
     return dap_chain_net_client_create_n_connect_channels(l_net,a_node_info,a_active_channels);
@@ -630,7 +647,14 @@ dap_chain_node_client_t* dap_chain_node_client_create_n_connect(dap_chain_net_t
     return NULL;
 }
 
-// Create new dap_client, setup it, and send it in adventure trip
+/**
+ * @brief dap_chain_node_client_connect_internal
+ * Create new dap_client, setup it, and send it in adventure trip
+ * @param a_node_client dap_chain_node_client_t
+ * @param a_active_channels a_active_channels
+ * @return true 
+ * @return false 
+ */
 static bool dap_chain_node_client_connect_internal(dap_chain_node_client_t *a_node_client, const char *a_active_channels)
 {
     a_node_client->client = dap_client_new(a_node_client->events, s_stage_status_callback,
@@ -668,9 +692,13 @@ static bool dap_chain_node_client_connect_internal(dap_chain_node_client_t *a_no
 }
 
 /**
+ * @brief dap_chain_node_client_connect
  * Create connection to server
  *
  * return a connection handle, or NULL, if an error
+ * @param a_net 
+ * @param a_node_info 
+ * @return dap_chain_node_client_t* return a connection handle, or NULL, if an error
  */
 dap_chain_node_client_t* dap_chain_node_client_connect(dap_chain_net_t * a_net,dap_chain_node_info_t *a_node_info)
 {
@@ -678,7 +706,11 @@ dap_chain_node_client_t* dap_chain_node_client_connect(dap_chain_net_t * a_net,d
     return dap_chain_node_client_connect_channels(a_net,a_node_info, l_active_channels);
 }
 
-
+/**
+ * @brief dap_chain_node_client_reset
+ * 
+ * @param a_client dap_chain_node_client_t
+ */
 void dap_chain_node_client_reset(dap_chain_node_client_t *a_client)
 {
     if (a_client->state > NODE_CLIENT_STATE_ESTABLISHED) {
@@ -687,7 +719,9 @@ void dap_chain_node_client_reset(dap_chain_node_client_t *a_client)
 }
 
 /**
+ * @brief dap_chain_node_client_close
  * Close connection to server, delete chain_node_client_t *client
+ * @param a_client dap_chain_node_client_t
  */
 void dap_chain_node_client_close(dap_chain_node_client_t *a_client)
 {
@@ -721,7 +755,14 @@ void dap_chain_node_client_close(dap_chain_node_client_t *a_client)
 }
 
 /**
+ * @brief dap_chain_node_client_send_ch_pkt 
  * Send stream request to server
+ * @param a_client 
+ * @param a_ch_id 
+ * @param a_type 
+ * @param a_pkt_data 
+ * @param a_pkt_data_size 
+ * @return int 
  */
 int dap_chain_node_client_send_ch_pkt(dap_chain_node_client_t *a_client, uint8_t a_ch_id, uint8_t a_type,
         const void *a_pkt_data, size_t a_pkt_data_size)
@@ -735,11 +776,16 @@ int dap_chain_node_client_send_ch_pkt(dap_chain_node_client_t *a_client, uint8_t
 }
 
 /**
+ * @brief dap_chain_node_client_wait
  * wait for the complete of request
  *
  * timeout_ms timeout in milliseconds
  * waited_state state which we will wait, sample NODE_CLIENT_STATE_CONNECT or NODE_CLIENT_STATE_SENDED
  * return -2 false, -1 timeout, 0 end of connection or sending data
+ * @param a_client 
+ * @param a_waited_state 
+ * @param a_timeout_ms 
+ * @return int return -2 false, -1 timeout, 0 end of connection or sending data
  */
 int dap_chain_node_client_wait(dap_chain_node_client_t *a_client, int a_waited_state, int a_timeout_ms)
 {
@@ -815,6 +861,13 @@ int dap_chain_node_client_wait(dap_chain_node_client_t *a_client, int a_waited_s
     return ret;
 }
 
+/**
+ * @brief dap_chain_node_client_set_callbacks
+ * 
+ * @param a_client dap_client_t
+ * @param a_ch_id uint8_t
+ * @return int 
+ */
 int dap_chain_node_client_set_callbacks(dap_client_t *a_client, uint8_t a_ch_id)
 {
     int l_ret = -1;
@@ -867,7 +920,10 @@ static void nodelist_response_error_callback(dap_client_t *a_client, int a_err)
 }*/
 
 /**
+ * @brief dap_chain_node_client_send_nodelist_req
  * Send nodelist request to server
+ * @param a_client 
+ * @return int 
  */
 int dap_chain_node_client_send_nodelist_req(dap_chain_node_client_t *a_client)
 {