Skip to content

Commit 49adbed

Browse files
authored
Merge pull request #782 from bitcoin-dev-project/no-means-no
graph: allow 0 connections in new network
2 parents e980311 + dbcd6f2 commit 49adbed

1 file changed

Lines changed: 17 additions & 16 deletions

File tree

src/warnet/graph.py

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -60,24 +60,25 @@ def custom_graph(
6060
image = {"tag": entry["version"]}
6161
node = {"name": f"tank-{index:04d}", "addnode": [], "image": image}
6262

63-
# Add round-robin connection
64-
next_node = (index + 1) % total_count
65-
node["addnode"].append(f"tank-{next_node:04d}")
66-
connections.add((index, next_node))
67-
68-
# Add random connections
63+
# Connect to other nodes
6964
available_nodes = list(range(total_count))
65+
# Do not connect to self
7066
available_nodes.remove(index)
71-
if next_node in available_nodes:
72-
available_nodes.remove(next_node)
73-
74-
for _ in range(min(int(entry["connections"]) - 1, len(available_nodes))):
75-
random_node = random.choice(available_nodes)
76-
# Avoid circular loops of A -> B -> A
77-
if (random_node, index) not in connections:
78-
node["addnode"].append(f"tank-{random_node:04d}")
79-
connections.add((index, random_node))
80-
available_nodes.remove(random_node)
67+
for count in range(min(int(entry["connections"]), len(available_nodes))):
68+
# Add neighbor connection first to create minimal round-robin
69+
if count == 0:
70+
next_node = (index + 1) % total_count
71+
node["addnode"].append(f"tank-{next_node:04d}")
72+
connections.add((index, next_node))
73+
if next_node in available_nodes:
74+
available_nodes.remove(next_node)
75+
else:
76+
random_node = random.choice(available_nodes)
77+
# Avoid circular loops of A -> B -> A
78+
if (random_node, index) not in connections:
79+
node["addnode"].append(f"tank-{random_node:04d}")
80+
connections.add((index, random_node))
81+
available_nodes.remove(random_node)
8182

8283
nodes.append(node)
8384
index += 1

0 commit comments

Comments
 (0)