From 23ca16d215e7789ccd7be9a5c3cc57c481be371a Mon Sep 17 00:00:00 2001
From: Constantin <papizh.konstantin@demlabs.net>
Date: Fri, 12 May 2023 14:30:12 +0700
Subject: [PATCH] ...

---
 modules/chain/dap_chain_ledger.c         | 20 ++++++++++++++++++++
 modules/chain/include/dap_chain_ledger.h |  4 ++++
 2 files changed, 24 insertions(+)

diff --git a/modules/chain/dap_chain_ledger.c b/modules/chain/dap_chain_ledger.c
index ca769f4f7b..c90c9e70c1 100644
--- a/modules/chain/dap_chain_ledger.c
+++ b/modules/chain/dap_chain_ledger.c
@@ -1783,6 +1783,26 @@ dap_list_t *dap_chain_ledger_token_info(dap_ledger_t *a_ledger)
     return l_ret_list;
 }
 
+/**
+ * @brief Get all token declatations
+ * @param a_ledger
+ * @return
+ */
+dap_list_t* dap_chain_ledger_token_decl_all(dap_ledger_t *a_ledger)
+{
+    dap_list_t * l_ret = NULL;
+    dap_chain_ledger_token_item_t *l_token_item, *l_tmp_item;
+    pthread_rwlock_rdlock(&PVT(a_ledger)->tokens_rwlock);
+
+    HASH_ITER(hh, PVT(a_ledger)->tokens, l_token_item, l_tmp_item) {
+        dap_chain_datum_token_t *l_token = l_token_item->datum_token;
+        l_ret = dap_list_append(l_ret, l_token);
+    }
+    pthread_rwlock_unlock(&PVT(a_ledger)->tokens_rwlock);
+    return l_ret;
+}
+
+
 /**
  * @brief s_threshold_emissions_proc
  * @param a_ledger
diff --git a/modules/chain/include/dap_chain_ledger.h b/modules/chain/include/dap_chain_ledger.h
index c76a9d1127..e0cc9f45e2 100644
--- a/modules/chain/include/dap_chain_ledger.h
+++ b/modules/chain/include/dap_chain_ledger.h
@@ -142,6 +142,10 @@ int dap_chain_ledger_token_add(dap_ledger_t *a_ledger, dap_chain_datum_token_t *
 int dap_chain_ledger_token_load(dap_ledger_t *a_ledger, dap_chain_datum_token_t *a_token, size_t a_token_size);
 int dap_chain_ledger_token_decl_add_check(dap_ledger_t *a_ledger, dap_chain_datum_token_t *a_token, size_t a_token_size);
 dap_list_t *dap_chain_ledger_token_info(dap_ledger_t *a_ledger);
+
+// Get all token-declarations
+dap_list_t* dap_chain_ledger_token_decl_all(dap_ledger_t *a_ledger);
+
 dap_string_t *dap_chain_ledger_threshold_info(dap_ledger_t *a_ledger);
 dap_string_t *dap_chain_ledger_threshold_hash_info(dap_ledger_t *a_ledger, dap_chain_hash_fast_t *l_tx_treshold_hash);
 dap_string_t *dap_chain_ledger_balance_info(dap_ledger_t *a_ledger);
-- 
GitLab