From b465c3c45435a73713b80f2b88173cf2e685bc04 Mon Sep 17 00:00:00 2001
From: Brian of London <brian@podping.org>
Date: Thu, 6 Oct 2022 08:50:27 +0300
Subject: [PATCH] More robust HIVE_CHAIN_ID detection

Taken from this commit:

108e2e2557bc6d5f09a19b9e8795e8b55110a961

By Holger
---
 beemapi/graphenerpc.py | 28 ++++++++++++++++++++++++----
 1 file changed, 24 insertions(+), 4 deletions(-)

diff --git a/beemapi/graphenerpc.py b/beemapi/graphenerpc.py
index e904406..322ff6c 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 = {}
-- 
GitLab