From 188d2241c6feb7b41ee15e45d01dbc4a75619aca Mon Sep 17 00:00:00 2001
From: Dmitriy Gerasimov <naeper@demlabs.net>
Date: Tue, 21 May 2019 23:39:09 +0700
Subject: [PATCH] [*] Replaced ledger with chain

---
 dap_chain_mempool.c | 34 ++++++++++++++++------------------
 dap_chain_mempool.h |  4 ++--
 2 files changed, 18 insertions(+), 20 deletions(-)

diff --git a/dap_chain_mempool.c b/dap_chain_mempool.c
index 4641bb0..ba4ce67 100755
--- a/dap_chain_mempool.c
+++ b/dap_chain_mempool.c
@@ -50,6 +50,8 @@
 
 #include "dap_common.h"
 #include "dap_list.h"
+#include "dap_chain.h"
+#include "dap_chain_net.h"
 #include "dap_chain_sign.h"
 #include "dap_chain_datum_tx.h"
 #include "dap_chain_datum_tx_items.h"
@@ -64,11 +66,9 @@ typedef struct list_used_item {
 //dap_chain_tx_out_t *tx_out;
 } list_used_item_t;
 
-const char* c_dap_datum_mempool_gdb_group = NULL;
 
 int dap_datum_mempool_init(void)
 {
-    c_dap_datum_mempool_gdb_group = dap_config_get_item_str_default(g_config, "mempool", "gdb_group", "datum-pool");
     return 0;
 }
 
@@ -87,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_ledger_t  *a_ledger, dap_enc_key_t *a_key_from,
+int dap_chain_mempool_tx_create(dap_chain_t * a_chain, 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_ledger | !a_key_from || !a_key_from->priv_key_data || !a_key_from->priv_key_data_size ||
+    if(!a_chain | !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;
@@ -108,7 +108,7 @@ int dap_chain_mempool_tx_create(dap_ledger_t  *a_ledger, dap_enc_key_t *a_key_fr
         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_ledger_tx_find_by_addr(a_ledger, a_addr_from,
+            const dap_chain_datum_tx_t *l_tx = dap_chain_ledger_tx_find_by_addr(a_chain->ledger, a_addr_from,
                     &l_tx_cur_hash);
             if(!l_tx)
                 break;
@@ -124,7 +124,7 @@ int dap_chain_mempool_tx_create(dap_ledger_t  *a_ledger, dap_enc_key_t *a_key_fr
                 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_ledger_tx_hash_is_used_out_item(a_ledger, &l_tx_cur_hash, l_out_idx_tmp)) {
+                    if(!dap_chain_ledger_tx_hash_is_used_out_item (a_chain->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));
@@ -203,13 +203,12 @@ int dap_chain_mempool_tx_create(dap_ledger_t  *a_ledger, dap_enc_key_t *a_key_fr
     DAP_DELETE(l_tx);
 
     char * l_key_str = dap_chain_hash_fast_to_str_new(&l_key_hash);
+    char * l_gdb_group = dap_chain_net_get_gdb_group_mempool(a_chain);
     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)) {
+            ,l_gdb_group)) {
         log_it(L_NOTICE, "Transaction %s placed in mempool", 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_gdb_group);
     DAP_DELETE(l_key_str);
 
     return 0;
@@ -220,14 +219,14 @@ int dap_chain_mempool_tx_create(dap_ledger_t  *a_ledger, dap_enc_key_t *a_key_fr
  *
  * return 0 Ok, -2 not enough funds to transfer, -1 other Error
  */
-int dap_chain_mempool_tx_create_cond(dap_ledger_t  *a_ledger,
+int dap_chain_mempool_tx_create_cond(dap_chain_t * a_chain,
         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_ledger || !a_key_from || !a_key_from->priv_key_data || !a_key_from->priv_key_data_size ||
+    if(!a_chain || !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 +240,7 @@ int dap_chain_mempool_tx_create_cond(dap_ledger_t  *a_ledger,
         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_ledger_tx_find_by_addr(a_ledger, a_addr_from,
+            const dap_chain_datum_tx_t *l_tx = dap_chain_ledger_tx_find_by_addr(a_chain->ledger, a_addr_from,
                     &l_tx_cur_hash);
             if(!l_tx)
                 break;
@@ -257,7 +256,7 @@ int dap_chain_mempool_tx_create_cond(dap_ledger_t  *a_ledger,
                 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_ledger_tx_hash_is_used_out_item(a_ledger, &l_tx_cur_hash, l_out_idx_tmp)) {
+                    if(!dap_chain_ledger_tx_hash_is_used_out_item(a_chain->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));
@@ -337,13 +336,12 @@ int dap_chain_mempool_tx_create_cond(dap_ledger_t  *a_ledger,
     DAP_DELETE(l_tx);
 
     char * l_key_str = dap_chain_hash_fast_to_str_new(&l_key_hash);
+    char * l_gdb_group = dap_chain_net_get_gdb_group_mempool(a_chain);
     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)) {
+            , l_gdb_group)) {
         log_it(L_NOTICE, "Transaction %s placed in mempool", 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_gdb_group);
     DAP_DELETE(l_key_str);
 
     return 0;
diff --git a/dap_chain_mempool.h b/dap_chain_mempool.h
index b9b5a8e..facb979 100755
--- a/dap_chain_mempool.h
+++ b/dap_chain_mempool.h
@@ -42,14 +42,14 @@ 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_ledger_t  *a_ledger, dap_enc_key_t *a_key_from,
+int dap_chain_mempool_tx_create(dap_chain_t * a_chain, 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_ledger_t  *a_ledger,
+int dap_chain_mempool_tx_create_cond(dap_chain_t * a_chain,
         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],
-- 
GitLab