From ac39f5635bc53cb32dd5370d02015b20b700cf78 Mon Sep 17 00:00:00 2001 From: dmitry <dmitry.puzyrkov@demlabs.net> Date: Thu, 22 Feb 2024 13:20:17 +0700 Subject: [PATCH] [+] mempool: datum get api. (cherry picked from commit 05bdfcfc24a615efcb2637bcf44325db37407f58) --- modules/mempool/dap_chain_mempool.c | 18 ++++++++++++++++++ modules/mempool/include/dap_chain_mempool.h | 1 + 2 files changed, 19 insertions(+) diff --git a/modules/mempool/dap_chain_mempool.c b/modules/mempool/dap_chain_mempool.c index 44fe70e588..721c40b699 100644 --- a/modules/mempool/dap_chain_mempool.c +++ b/modules/mempool/dap_chain_mempool.c @@ -1166,6 +1166,24 @@ dap_chain_datum_token_emission_t *dap_chain_mempool_emission_get(dap_chain_t *a_ return l_ret; } +dap_chain_datum_t *dap_chain_mempool_datum_get(dap_chain_t *a_chain, const char *a_datum_hash_str) +{ + size_t l_datum_size; + char *l_gdb_group = dap_chain_net_get_gdb_group_mempool_new(a_chain); + dap_chain_datum_t *l_datum = (dap_chain_datum_t *)dap_global_db_get_sync(l_gdb_group, + a_datum_hash_str, &l_datum_size, NULL, NULL ); + if (!l_datum) { + char *l_emission_hash_str_from_base58 = dap_enc_base58_to_hex_str_from_str(a_datum_hash_str); + l_datum = (dap_chain_datum_t *)dap_global_db_get_sync(l_gdb_group, + l_emission_hash_str_from_base58, &l_datum_size, NULL, NULL ); + DAP_DELETE(l_emission_hash_str_from_base58); + } + + DAP_DELETE(l_gdb_group); + + return l_datum; +} + dap_chain_datum_token_emission_t *dap_chain_mempool_datum_emission_extract(dap_chain_t *a_chain, byte_t *a_data, size_t a_size) { if (!a_chain || !a_data || a_size < sizeof(dap_chain_datum_t)) diff --git a/modules/mempool/include/dap_chain_mempool.h b/modules/mempool/include/dap_chain_mempool.h index a2221296a2..22880ac66d 100644 --- a/modules/mempool/include/dap_chain_mempool.h +++ b/modules/mempool/include/dap_chain_mempool.h @@ -101,6 +101,7 @@ char *dap_chain_mempool_base_tx_create(dap_chain_t *a_chain, dap_chain_hash_fast dap_chain_id_t a_emission_chain_id, uint256_t a_emission_value, const char *a_ticker, dap_chain_addr_t *a_addr_to, dap_enc_key_t *a_private_key, const char *a_hash_out_type, uint256_t a_value_fee); +dap_chain_datum_t *dap_chain_mempool_datum_get(dap_chain_t *a_chain, const char *a_emission_hash_str); dap_chain_datum_token_emission_t *dap_chain_mempool_emission_get(dap_chain_t *a_chain, const char *a_emission_hash_str); dap_chain_datum_token_emission_t *dap_chain_mempool_datum_emission_extract(dap_chain_t *a_chain, byte_t *a_data, size_t a_size); char *dap_chain_mempool_tx_coll_fee_create(dap_chain_cs_blocks_t *a_blocks, dap_enc_key_t *a_key_from, const dap_chain_addr_t* a_addr_to, dap_list_t *a_block_list, -- GitLab