@@ -31,7 +31,7 @@ def do_process_block(self, n):
31
31
block_number UInt64 CODEC(Delta, ZSTD),
32
32
timestamp DateTime CODEC(Delta, ZSTD),
33
33
netuid UInt8 CODEC(Delta, ZSTD),
34
- alpha Float64 CODEC(ZSTD)
34
+ alpha_to_tao Float64 CODEC(ZSTD)
35
35
) ENGINE = ReplacingMergeTree()
36
36
PARTITION BY toYYYYMM(timestamp)
37
37
ORDER BY (block_number, netuid)
@@ -57,7 +57,38 @@ def do_process_block(self, n):
57
57
raise ShovelProcessingError (f"Invalid block timestamp (0) for block { n } " )
58
58
59
59
try :
60
- buffer_insert (self .table_name , [n , block_timestamp ])
60
+ # Get list of active subnets
61
+ networks_added = substrate .query_map (
62
+ 'SubtensorModule' ,
63
+ 'NetworksAdded' ,
64
+ block_hash = block_hash
65
+ )
66
+ networks = [int (net [0 ].value ) for net in networks_added ]
67
+
68
+ # Process each subnet
69
+ for netuid in networks :
70
+ subnet_tao = float (str (substrate .query (
71
+ 'SubtensorModule' ,
72
+ 'SubnetTAO' ,
73
+ [netuid ],
74
+ block_hash = block_hash
75
+ ).value ).replace (',' , '' )) / 1e9
76
+
77
+ subnet_alpha_in = float (str (substrate .query (
78
+ 'SubtensorModule' ,
79
+ 'SubnetAlphaIn' ,
80
+ [netuid ],
81
+ block_hash = block_hash
82
+ ).value ).replace (',' , '' )) / 1e9
83
+
84
+ # Calculate exchange rate (TAO per Alpha)
85
+ alpha_to_tao = subnet_tao / subnet_alpha_in if subnet_alpha_in > 0 else 0
86
+
87
+ buffer_insert (
88
+ self .table_name ,
89
+ [n , block_timestamp , netuid , alpha_to_tao ]
90
+ )
91
+
61
92
except Exception as e :
62
93
raise DatabaseConnectionError (f"Failed to insert data into buffer: { str (e )} " )
63
94
0 commit comments