From d77b83737745a8aa298384fa723490d6abe61e42 Mon Sep 17 00:00:00 2001
From: "alexey.stratulat" <alexey.stratulat@demlabs.net>
Date: Wed, 16 Nov 2022 06:26:11 +0000
Subject: [PATCH] [*] Redesigned datum entry into mempool: now they are
 recorded with the key...

---
 modules/mempool/dap_chain_mempool.c                   |  2 +-
 modules/net/dap_chain_node_cli_cmd.c                  | 11 ++++++-----
 .../service/stake_lock/dap_chain_net_srv_stake_lock.c |  2 +-
 modules/type/blocks/dap_chain_cs_blocks.c             |  2 +-
 modules/type/dag/dap_chain_cs_dag.c                   |  2 +-
 5 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/modules/mempool/dap_chain_mempool.c b/modules/mempool/dap_chain_mempool.c
index 844d1d0e78..1fe3d74b3a 100644
--- a/modules/mempool/dap_chain_mempool.c
+++ b/modules/mempool/dap_chain_mempool.c
@@ -89,7 +89,7 @@ char *dap_chain_mempool_datum_add(const dap_chain_datum_t *a_datum, dap_chain_t
 
     dap_chain_hash_fast_t l_key_hash;
 
-    dap_hash_fast(a_datum, dap_chain_datum_size(a_datum), &l_key_hash);
+    dap_hash_fast(a_datum->data, a_datum->header.data_size, &l_key_hash);
     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_new(a_chain);
 
diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c
index 4904bd70ee..462e95f2c1 100644
--- a/modules/net/dap_chain_node_cli_cmd.c
+++ b/modules/net/dap_chain_node_cli_cmd.c
@@ -2178,7 +2178,7 @@ int com_token_decl_sign(int argc, char ** argv, char ** a_str_reply)
                 // Calc datum's hash
                 l_datum_size = dap_chain_datum_size(l_datum);
                 dap_chain_hash_fast_t l_key_hash={};
-                dap_hash_fast(l_datum, l_datum_size, &l_key_hash);
+                dap_hash_fast(l_datum->data, l_datum->header.data_size, &l_key_hash);
                 char * l_key_str = dap_chain_hash_fast_to_str_new(&l_key_hash);
                 char * l_key_str_base58 = dap_enc_base58_encode_hash_to_str(&l_key_hash);
                 const char * l_key_out_str;
@@ -3073,7 +3073,7 @@ int com_token_decl(int a_argc, char ** a_argv, char ** a_str_reply)
 
     // Calc datum's hash
     dap_chain_hash_fast_t l_key_hash;
-    dap_hash_fast(l_datum, l_datum_size, &l_key_hash);
+    dap_hash_fast(l_datum->data, l_datum->header.data_size, &l_key_hash);
     char * l_key_str = dap_chain_hash_fast_to_str_new(&l_key_hash);
     char * l_key_str_out = dap_strcmp(l_hash_out_type, "hex") ?
                 dap_enc_base58_encode_hash_to_str(&l_key_hash) : l_key_str;
@@ -3270,7 +3270,7 @@ int com_token_update(int a_argc, char ** a_argv, char ** a_str_reply)
 
     // Calc datum's hash
     dap_chain_hash_fast_t l_key_hash;
-    dap_hash_fast(l_datum, l_datum_size, &l_key_hash);
+    dap_hash_fast(l_datum->data, l_datum->header.data_size, &l_key_hash);
     char * l_key_str = dap_chain_hash_fast_to_str_new(&l_key_hash);
     char * l_key_str_out = dap_strcmp(l_hash_out_type, "hex") ?
                            dap_enc_base58_encode_hash_to_str(&l_key_hash) : l_key_str;
@@ -3499,7 +3499,8 @@ int com_token_emit(int a_argc, char ** a_argv, char ** a_str_reply)
     size_t l_datum_emission_size = sizeof(l_datum_emission->header) + l_datum_emission->header.data_size;
 
     // Calc datum emission's hash
-    dap_hash_fast(l_datum_emission, l_datum_emission_size, &l_datum_emission_hash);
+    dap_hash_fast(l_datum_emission->data, l_datum_emission->header.data_size,
+                  &l_datum_emission_hash);
     // return 0 (false) if strings are equivalent
     bool l_hex_format = dap_strcmp(l_hash_out_type, "hex") ? false
                                                            : true;
@@ -4403,7 +4404,7 @@ int com_tx_create_json(int a_argc, char ** a_argv, char **a_str_reply)
     // Add transaction to mempool
     char *l_gdb_group_mempool_base_tx = dap_chain_net_get_gdb_group_mempool_new(l_chain);// get group name for mempool
     dap_chain_hash_fast_t *l_datum_tx_hash = DAP_NEW(dap_hash_fast_t);
-    dap_hash_fast(l_datum_tx, l_datum_tx_size, l_datum_tx_hash);// Calculate datum hash
+    dap_hash_fast(l_datum_tx->data, l_datum_tx->header.data_size, l_datum_tx_hash);// Calculate datum hash
     char *l_tx_hash_str = dap_chain_hash_fast_to_str_new(l_datum_tx_hash);
     bool l_placed = dap_global_db_set(l_gdb_group_mempool_base_tx,l_tx_hash_str, l_datum_tx, l_datum_tx_size, true, NULL,NULL );
 
diff --git a/modules/service/stake_lock/dap_chain_net_srv_stake_lock.c b/modules/service/stake_lock/dap_chain_net_srv_stake_lock.c
index 1a16a57dd5..cde50a6232 100644
--- a/modules/service/stake_lock/dap_chain_net_srv_stake_lock.c
+++ b/modules/service/stake_lock/dap_chain_net_srv_stake_lock.c
@@ -1399,7 +1399,7 @@ static dap_chain_hash_fast_t *dap_chain_mempool_base_tx_for_stake_lock_create(da
     DAP_DEL_Z(l_tx);
     // calc datum hash
     dap_chain_hash_fast_t *l_datum_tx_hash = DAP_NEW(dap_hash_fast_t);
-    dap_hash_fast(l_datum_tx, l_datum_tx_size, l_datum_tx_hash);
+    dap_hash_fast(l_datum_tx->data, l_datum_tx->header.data_size, l_datum_tx_hash);
     char *l_tx_hash_str = dap_chain_hash_fast_to_str_new(l_datum_tx_hash);
     // Add to mempool tx token
     bool l_placed = dap_global_db_set_sync(l_gdb_group_mempool_base_tx, l_tx_hash_str, l_datum_tx,
diff --git a/modules/type/blocks/dap_chain_cs_blocks.c b/modules/type/blocks/dap_chain_cs_blocks.c
index d013cb0a7a..54c65b26dd 100644
--- a/modules/type/blocks/dap_chain_cs_blocks.c
+++ b/modules/type/blocks/dap_chain_cs_blocks.c
@@ -444,7 +444,7 @@ static int s_cli_blocks(int a_argc, char ** a_argv, char **a_str_reply)
             l_datums[0] = l_datum;
             for (size_t i = 0; i < l_datums_count; i++) {
                 dap_chain_hash_fast_t l_datum_hash = { };
-                dap_hash_fast(l_datums[i],dap_chain_datum_size(l_datums[i]),&l_datum_hash);
+                dap_hash_fast(l_datums[i]->data,l_datums[i]->header.data_size,&l_datum_hash);
                 char *l_datums_datum_hash_str = dap_chain_hash_fast_to_str_new(&l_datum_hash);
                 bool l_err = dap_chain_node_mempool_process(l_chain, l_datums[i]);
                 if (l_err) {
diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c
index 735e3ca797..6f1728dd57 100644
--- a/modules/type/dag/dap_chain_cs_dag.c
+++ b/modules/type/dag/dap_chain_cs_dag.c
@@ -1440,7 +1440,7 @@ static int s_cli_dag(int argc, char ** argv, char **a_str_reply)
                 if ( s_callback_add_datums(l_chain, l_datums, l_datums_count) == l_datums_count ){
                     for ( size_t i = 0; i <l_datums_count; i++){
                        dap_chain_hash_fast_t l_datum_hash;
-                       dap_hash_fast(l_datums[i],dap_chain_datum_size(l_datums[i]),&l_datum_hash);
+                       dap_hash_fast(l_datums[i]->data,l_datums[i]->header.data_size, &l_datum_hash);
                        char * l_datums_datum_hash_str = dap_chain_hash_fast_to_str_new(&l_datum_hash);
                        if ( dap_global_db_del_sync(l_gdb_group_mempool, l_datums_datum_hash_str ) ==0 ){
                            dap_cli_server_cmd_set_reply_text(a_str_reply,
-- 
GitLab