diff --git a/dap_chain_mempool.c b/dap_chain_mempool.c
index 3019c9549c575523341fb69421ec0294e5a98fe5..4641bb087ca672bc5e885e64597564a96e8d19a1 100755
--- a/dap_chain_mempool.c
+++ b/dap_chain_mempool.c
@@ -52,7 +52,6 @@
 #include "dap_list.h"
 #include "dap_chain_sign.h"
 #include "dap_chain_datum_tx.h"
-#include "dap_chain_utxo.h"
 #include "dap_chain_datum_tx_items.h"
 
 #define LOG_TAG "dap_chain_mempool"
@@ -88,14 +87,14 @@ int dap_chain_mempool_datum_add(dap_chain_datum_t * a_datum)
  *
  * return 0 Ok, -2 not enough funds to transfer, -1 other Error
  */
-int dap_chain_mempool_tx_create(dap_enc_key_t *a_key_from,
+int dap_chain_mempool_tx_create(dap_ledger_t  *a_ledger, dap_enc_key_t *a_key_from,
         const dap_chain_addr_t* a_addr_from, const dap_chain_addr_t* a_addr_to,
         const dap_chain_addr_t* a_addr_fee,
         const char a_token_ticker[10],
         uint64_t a_value, uint64_t a_value_fee)
 {
     // check valid param
-    if(!a_key_from || !a_key_from->priv_key_data || !a_key_from->priv_key_data_size ||
+    if(!a_ledger | !a_key_from || !a_key_from->priv_key_data || !a_key_from->priv_key_data_size ||
             !dap_chain_addr_check_sum(a_addr_from) || !dap_chain_addr_check_sum(a_addr_to) ||
             (a_addr_fee && !dap_chain_addr_check_sum(a_addr_fee)) || !a_value)
         return -1;
@@ -109,7 +108,7 @@ int dap_chain_mempool_tx_create(dap_enc_key_t *a_key_from,
         while(l_value_transfer < l_value_need)
         {
             // Get the transaction in the cache by the addr in out item
-            const dap_chain_datum_tx_t *l_tx = dap_chain_utxo_tx_find_by_addr(a_addr_from,
+            const dap_chain_datum_tx_t *l_tx = dap_chain_ledger_tx_find_by_addr(a_ledger, a_addr_from,
                     &l_tx_cur_hash);
             if(!l_tx)
                 break;
@@ -125,7 +124,7 @@ int dap_chain_mempool_tx_create(dap_enc_key_t *a_key_from,
                 if(out_item && &out_item->addr && !memcmp(a_addr_from, &out_item->addr, sizeof(dap_chain_addr_t))) {
 
                     // Check whether used 'out' items
-                    if(!dap_chain_utxo_tx_hash_is_used_out_item(&l_tx_cur_hash, l_out_idx_tmp)) {
+                    if(!dap_chain_ledger_tx_hash_is_used_out_item(a_ledger, &l_tx_cur_hash, l_out_idx_tmp)) {
 
                         list_used_item_t *item = DAP_NEW(list_used_item_t);
                         memcpy(&item->tx_hash_fast, &l_tx_cur_hash, sizeof(dap_chain_hash_fast_t));
@@ -207,9 +206,9 @@ int dap_chain_mempool_tx_create(dap_enc_key_t *a_key_from,
     if(dap_chain_global_db_gr_set(l_key_str, (uint8_t *) l_datum, dap_chain_datum_size(l_datum)
             , c_dap_datum_mempool_gdb_group)) {
         log_it(L_NOTICE, "Transaction %s placed in mempool", l_key_str);
-        // add transaction to utxo
-        if(dap_chain_utxo_tx_add((dap_chain_datum_tx_t*) l_datum->data) < 0)
-            log_it(L_ERROR, "Transaction %s not placed in UTXO", l_key_str);
+        // add transaction to ledger
+        if(dap_chain_ledger_tx_add(a_ledger, (dap_chain_datum_tx_t*) l_datum->data) < 0)
+            log_it(L_ERROR, "Transaction %s not placed in LEDGER", l_key_str);
     }
     DAP_DELETE(l_key_str);
 
@@ -221,13 +220,14 @@ int dap_chain_mempool_tx_create(dap_enc_key_t *a_key_from,
  *
  * return 0 Ok, -2 not enough funds to transfer, -1 other Error
  */
-int dap_chain_mempool_tx_create_cond(dap_enc_key_t *a_key_from, dap_enc_key_t *a_key_cond,
+int dap_chain_mempool_tx_create_cond(dap_ledger_t  *a_ledger,
+        dap_enc_key_t *a_key_from, dap_enc_key_t *a_key_cond,
         const dap_chain_addr_t* a_addr_from, const dap_chain_addr_t* a_addr_cond,
         const dap_chain_addr_t* a_addr_fee, const char a_token_ticker[10],
         uint64_t a_value, uint64_t a_value_fee, const void *a_cond, size_t a_cond_size)
 {
     // check valid param
-    if(!a_key_from || !a_key_from->priv_key_data || !a_key_from->priv_key_data_size ||
+    if(!a_ledger || !a_key_from || !a_key_from->priv_key_data || !a_key_from->priv_key_data_size ||
             !dap_chain_addr_check_sum(a_addr_from) || !dap_chain_addr_check_sum(a_addr_cond) ||
             (a_addr_fee && !dap_chain_addr_check_sum(a_addr_fee)) || !a_value)
         return -1;
@@ -241,7 +241,7 @@ int dap_chain_mempool_tx_create_cond(dap_enc_key_t *a_key_from, dap_enc_key_t *a
         while(l_value_transfer < l_value_need)
         {
             // Get the transaction in the cache by the addr in out item
-            const dap_chain_datum_tx_t *l_tx = dap_chain_utxo_tx_find_by_addr(a_addr_from,
+            const dap_chain_datum_tx_t *l_tx = dap_chain_ledger_tx_find_by_addr(a_ledger, a_addr_from,
                     &l_tx_cur_hash);
             if(!l_tx)
                 break;
@@ -257,7 +257,7 @@ int dap_chain_mempool_tx_create_cond(dap_enc_key_t *a_key_from, dap_enc_key_t *a
                 if(out_item && &out_item->addr && !memcmp(a_addr_from, &out_item->addr, sizeof(dap_chain_addr_t))) {
 
                     // Check whether used 'out' items
-                    if(!dap_chain_utxo_tx_hash_is_used_out_item(&l_tx_cur_hash, l_out_idx_tmp)) {
+                    if(!dap_chain_ledger_tx_hash_is_used_out_item(a_ledger, &l_tx_cur_hash, l_out_idx_tmp)) {
 
                         list_used_item_t *item = DAP_NEW(list_used_item_t);
                         memcpy(&item->tx_hash_fast, &l_tx_cur_hash, sizeof(dap_chain_hash_fast_t));
@@ -340,9 +340,9 @@ int dap_chain_mempool_tx_create_cond(dap_enc_key_t *a_key_from, dap_enc_key_t *a
     if(dap_chain_global_db_gr_set(l_key_str, (uint8_t *) l_datum, dap_chain_datum_size(l_datum)
             , c_dap_datum_mempool_gdb_group)) {
         log_it(L_NOTICE, "Transaction %s placed in mempool", l_key_str);
-        // add transaction to utxo
-        if(dap_chain_utxo_tx_add((dap_chain_datum_tx_t*) l_datum->data) < 0)
-            log_it(L_ERROR, "Transaction %s not placed in UTXO", l_key_str);
+        // add transaction to ledger
+        if(dap_chain_ledger_tx_add(a_ledger, (dap_chain_datum_tx_t*) l_datum->data) < 0)
+            log_it(L_ERROR, "Transaction %s not placed in LEDGER", l_key_str);
     }
     DAP_DELETE(l_key_str);
 
@@ -375,7 +375,7 @@ int dap_chain_mempool_tx_create_receipt(uint64_t a_value)
         while(l_value_transfer < l_value_need)
         {
             // Get the transaction in the cache by the addr in out item
-            const dap_chain_datum_tx_t *l_tx = dap_chain_utxo_tx_find_by_addr(a_addr_from,
+            const dap_chain_datum_tx_t *l_tx = dap_chain_ledger_tx_find_by_addr(a_addr_from,
                     &l_tx_cur_hash);
             if(!l_tx)
                 break;
@@ -391,7 +391,7 @@ int dap_chain_mempool_tx_create_receipt(uint64_t a_value)
                 if(out_item && &out_item->addr && !memcmp(a_addr_from, &out_item->addr, sizeof(dap_chain_addr_t))) {
 
                     // Check whether used 'out' items
-                    if(!dap_chain_utxo_tx_hash_is_used_out_item(&l_tx_cur_hash, l_out_idx_tmp)) {
+                    if(!dap_chain_ledger_tx_hash_is_used_out_item(&l_tx_cur_hash, l_out_idx_tmp)) {
 
                         list_used_item_t *item = DAP_NEW(list_used_item_t);
                         memcpy(&item->tx_hash_fast, &l_tx_cur_hash, sizeof(dap_chain_hash_fast_t));
@@ -474,9 +474,9 @@ int dap_chain_mempool_tx_create_receipt(uint64_t a_value)
     if(dap_chain_global_db_gr_set(l_key_str, (uint8_t *) l_datum, dap_chain_datum_size(l_datum)
             , c_dap_datum_mempool_gdb_group)) {
         log_it(L_NOTICE, "Transaction %s placed in mempool", l_key_str);
-        // add transaction to utxo
-        if(dap_chain_utxo_tx_add((dap_chain_datum_tx_t*) l_datum->data) < 0)
-            log_it(L_ERROR, "Transaction %s not placed in UTXO", l_key_str);
+        // add transaction to ledger
+        if(dap_chain_ledger_tx_add((dap_chain_datum_tx_t*) l_datum->data) < 0)
+            log_it(L_ERROR, "Transaction %s not placed in LEDGER", l_key_str);
     }
     DAP_DELETE(l_key_str);*/
 
diff --git a/dap_chain_mempool.h b/dap_chain_mempool.h
index ea22e054027d1b9bbd0e32221ae2199bbdf66dc0..b9b5a8e939acca94abe2ad099c348bc7c770152c 100755
--- a/dap_chain_mempool.h
+++ b/dap_chain_mempool.h
@@ -2,6 +2,7 @@
 
 #include <stdint.h>
 #include "dap_chain_datum.h"
+#include "dap_chain_ledger.h"
 #include "dap_http.h"
 /*
  // datum mempool structure
@@ -41,15 +42,17 @@ void dap_datum_mempool_free(dap_datum_mempool_t *datum);
 
 void dap_chain_mempool_add_proc(dap_http_t * a_http_server, const char * a_url);
 
-int dap_chain_mempool_tx_create(dap_enc_key_t *a_key_from,
-        const dap_chain_addr_t* a_addr_from, const dap_chain_addr_t* a_addr_to, const dap_chain_addr_t* a_addr_fee,
-                                const char a_token_ticker[10],
+int dap_chain_mempool_tx_create(dap_ledger_t  *a_ledger, dap_enc_key_t *a_key_from,
+        const dap_chain_addr_t* a_addr_from, const dap_chain_addr_t* a_addr_to,
+        const dap_chain_addr_t* a_addr_fee,
+        const char a_token_ticker[10],
         uint64_t a_value, uint64_t a_value_fee);
 
 // Make transfer transaction & insert to cache
-int dap_chain_mempool_tx_create_cond(dap_enc_key_t *a_key_from, dap_enc_key_t *a_key_cond,
-       const dap_chain_addr_t* a_addr_from, const dap_chain_addr_t* a_addr_cond,
-       const dap_chain_addr_t* a_addr_fee, const char a_token_ticker[10],
-       uint64_t a_value, uint64_t a_value_fee, const void *a_cond, size_t a_cond_size);
+int dap_chain_mempool_tx_create_cond(dap_ledger_t  *a_ledger,
+        dap_enc_key_t *a_key_from, dap_enc_key_t *a_key_cond,
+        const dap_chain_addr_t* a_addr_from, const dap_chain_addr_t* a_addr_cond,
+        const dap_chain_addr_t* a_addr_fee, const char a_token_ticker[10],
+        uint64_t a_value, uint64_t a_value_fee, const void *a_cond, size_t a_cond_size);
 
 int dap_chain_mempool_datum_add(dap_chain_datum_t * a_datum);