From 108e2e2557bc6d5f09a19b9e8795e8b55110a961 Mon Sep 17 00:00:00 2001
From: Holger Nahrstaedt <holgernahrstaedt@gmx.de>
Date: Sat, 26 Jun 2021 22:18:43 +0200
Subject: [PATCH] More robust HIVE_CHAIN_ID detection

---
 CHANGELOG.rst               |  4 ++++
 beem/version.py             |  2 +-
 beemapi/graphenerpc.py      | 28 ++++++++++++++++++++++++----
 beemapi/version.py          |  2 +-
 beembase/version.py         |  2 +-
 beemgraphenebase/version.py |  2 +-
 setup.py                    |  2 +-
 7 files changed, 33 insertions(+), 9 deletions(-)

diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 9d7c43a..6bddc6d 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,5 +1,9 @@
 Changelog
 ========
+0.24.25
+-------
+* More robust HIVE_CHAIN_ID detection
+
 0.24.24
 -------
 * Prioritize HIVE_CHAIN_ID property for the chain selection (@emre)
diff --git a/beem/version.py b/beem/version.py
index dfcd13f..1f1ab9a 100644
--- a/beem/version.py
+++ b/beem/version.py
@@ -1,2 +1,2 @@
 """THIS FILE IS GENERATED FROM beem SETUP.PY."""
-version = '0.24.24'
+version = '0.24.25'
diff --git a/beemapi/graphenerpc.py b/beemapi/graphenerpc.py
index e904406..96d69cd 100644
--- a/beemapi/graphenerpc.py
+++ b/beemapi/graphenerpc.py
@@ -304,15 +304,35 @@ class GrapheneRPC(object):
         prefix = None
         symbols = []
         chain_assets = []
-        if 'HIVE_CHAIN_ID' in props and 'STEEM_CHAIN_ID' in props:
+
+        prefix_count = {}
+        for key in props:
+            if key.split("_")[0] in prefix_count:
+                prefix_count[key.split("_")[0]] += 1
+            else:
+                prefix_count[key.split("_")[0]] = 1
+        if len(prefix_count) > 0:
+            sorted_prefix_count = sorted(prefix_count.items(), key=lambda x: x[1], reverse=True)
+            if sorted_prefix_count[0][1] > 1:
+                blockchain_name = sorted_prefix_count[0][0]
+        if blockchain_name is None and 'HIVE_CHAIN_ID' in props and 'STEEM_CHAIN_ID' in props:
             del props['STEEM_CHAIN_ID']
+        
+        
         for key in props:
-            if key[-8:] == "CHAIN_ID":
+            
+            if key[-8:] == "CHAIN_ID" and blockchain_name is None:
                 chain_id = props[key]
                 blockchain_name = key.split("_")[0]
-            elif key[-13:] == "CHAIN_VERSION":
+            elif key[-8:] == "CHAIN_ID" and key.split("_")[0] == blockchain_name:
+                chain_id = props[key]
+            elif key[-13:] == "CHAIN_VERSION" and blockchain_name is None:
                 network_version = props[key]
-            elif key[-14:] == "ADDRESS_PREFIX":
+            elif key[-13:] == "CHAIN_VERSION" and key.split("_")[0] == blockchain_name:
+                network_version = props[key]            
+            elif key[-14:] == "ADDRESS_PREFIX" and blockchain_name is None:
+                prefix = props[key]
+            elif key[-14:] == "ADDRESS_PREFIX" and key.split("_")[0] == blockchain_name:
                 prefix = props[key]
             elif key[-6:] == "SYMBOL":
                 value = {}
diff --git a/beemapi/version.py b/beemapi/version.py
index dfcd13f..1f1ab9a 100644
--- a/beemapi/version.py
+++ b/beemapi/version.py
@@ -1,2 +1,2 @@
 """THIS FILE IS GENERATED FROM beem SETUP.PY."""
-version = '0.24.24'
+version = '0.24.25'
diff --git a/beembase/version.py b/beembase/version.py
index dfcd13f..1f1ab9a 100644
--- a/beembase/version.py
+++ b/beembase/version.py
@@ -1,2 +1,2 @@
 """THIS FILE IS GENERATED FROM beem SETUP.PY."""
-version = '0.24.24'
+version = '0.24.25'
diff --git a/beemgraphenebase/version.py b/beemgraphenebase/version.py
index dfcd13f..1f1ab9a 100644
--- a/beemgraphenebase/version.py
+++ b/beemgraphenebase/version.py
@@ -1,2 +1,2 @@
 """THIS FILE IS GENERATED FROM beem SETUP.PY."""
-version = '0.24.24'
+version = '0.24.25'
diff --git a/setup.py b/setup.py
index d19c2eb..44b0a21 100755
--- a/setup.py
+++ b/setup.py
@@ -16,7 +16,7 @@ except LookupError:
     ascii = codecs.lookup('ascii')
     codecs.register(lambda name, enc=ascii: {True: enc}.get(name == 'mbcs'))
 
-VERSION = '0.24.24'
+VERSION = '0.24.25'
 
 tests_require = ['mock >= 2.0.0', 'pytest', 'pytest-mock', 'parameterized']
 
-- 
GitLab