n8n-nodes-bittensor 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/LICENSE +46 -0
  2. package/README.md +329 -0
  3. package/dist/credentials/BittensorApi.credentials.d.ts +8 -0
  4. package/dist/credentials/BittensorApi.credentials.js +75 -0
  5. package/dist/credentials/BittensorApi.credentials.js.map +1 -0
  6. package/dist/credentials/BittensorNetwork.credentials.d.ts +8 -0
  7. package/dist/credentials/BittensorNetwork.credentials.js +117 -0
  8. package/dist/credentials/BittensorNetwork.credentials.js.map +1 -0
  9. package/dist/credentials/SubnetCredentials.credentials.d.ts +8 -0
  10. package/dist/credentials/SubnetCredentials.credentials.js +81 -0
  11. package/dist/credentials/SubnetCredentials.credentials.js.map +1 -0
  12. package/dist/nodes/Bittensor/Bittensor.node.d.ts +5 -0
  13. package/dist/nodes/Bittensor/Bittensor.node.js +938 -0
  14. package/dist/nodes/Bittensor/Bittensor.node.js.map +1 -0
  15. package/dist/nodes/Bittensor/bittensor.svg +4 -0
  16. package/dist/nodes/Bittensor/constants/hyperparameters.d.ts +23 -0
  17. package/dist/nodes/Bittensor/constants/hyperparameters.js +127 -0
  18. package/dist/nodes/Bittensor/constants/hyperparameters.js.map +1 -0
  19. package/dist/nodes/Bittensor/constants/networks.d.ts +31 -0
  20. package/dist/nodes/Bittensor/constants/networks.js +54 -0
  21. package/dist/nodes/Bittensor/constants/networks.js.map +1 -0
  22. package/dist/nodes/Bittensor/constants/pallets.d.ts +73 -0
  23. package/dist/nodes/Bittensor/constants/pallets.js +99 -0
  24. package/dist/nodes/Bittensor/constants/pallets.js.map +1 -0
  25. package/dist/nodes/Bittensor/constants/subnets.d.ts +25 -0
  26. package/dist/nodes/Bittensor/constants/subnets.js +55 -0
  27. package/dist/nodes/Bittensor/constants/subnets.js.map +1 -0
  28. package/dist/nodes/Bittensor/transport/metagraphSync.d.ts +63 -0
  29. package/dist/nodes/Bittensor/transport/metagraphSync.js +153 -0
  30. package/dist/nodes/Bittensor/transport/metagraphSync.js.map +1 -0
  31. package/dist/nodes/Bittensor/transport/queryClient.d.ts +93 -0
  32. package/dist/nodes/Bittensor/transport/queryClient.js +144 -0
  33. package/dist/nodes/Bittensor/transport/queryClient.js.map +1 -0
  34. package/dist/nodes/Bittensor/transport/subtensorClient.d.ts +138 -0
  35. package/dist/nodes/Bittensor/transport/subtensorClient.js +414 -0
  36. package/dist/nodes/Bittensor/transport/subtensorClient.js.map +1 -0
  37. package/dist/nodes/Bittensor/transport/taostatsApi.d.ts +133 -0
  38. package/dist/nodes/Bittensor/transport/taostatsApi.js +139 -0
  39. package/dist/nodes/Bittensor/transport/taostatsApi.js.map +1 -0
  40. package/dist/nodes/Bittensor/utils/addressUtils.d.ts +25 -0
  41. package/dist/nodes/Bittensor/utils/addressUtils.js +70 -0
  42. package/dist/nodes/Bittensor/utils/addressUtils.js.map +1 -0
  43. package/dist/nodes/Bittensor/utils/metagraphUtils.d.ts +103 -0
  44. package/dist/nodes/Bittensor/utils/metagraphUtils.js +113 -0
  45. package/dist/nodes/Bittensor/utils/metagraphUtils.js.map +1 -0
  46. package/dist/nodes/Bittensor/utils/unitConverter.d.ts +48 -0
  47. package/dist/nodes/Bittensor/utils/unitConverter.js +109 -0
  48. package/dist/nodes/Bittensor/utils/unitConverter.js.map +1 -0
  49. package/dist/nodes/Bittensor/utils/weightUtils.d.ts +49 -0
  50. package/dist/nodes/Bittensor/utils/weightUtils.js +90 -0
  51. package/dist/nodes/Bittensor/utils/weightUtils.js.map +1 -0
  52. package/package.json +87 -0
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) Velocity BPA, LLC
4
+ * Licensed under the Business Source License 1.1
5
+ * Commercial use requires a separate commercial license.
6
+ * See LICENSE file for details.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.MetagraphSync = void 0;
10
+ exports.createMetagraphSync = createMetagraphSync;
11
+ exports.syncMetagraph = syncMetagraph;
12
+ const CACHE_TTL = 60000; // 1 minute
13
+ /**
14
+ * Metagraph Sync Class
15
+ */
16
+ class MetagraphSync {
17
+ constructor(client) {
18
+ this.cache = new Map();
19
+ this.client = client;
20
+ }
21
+ /**
22
+ * Sync metagraph from chain
23
+ */
24
+ async sync(options) {
25
+ const { netuid } = options;
26
+ // Note: lite and includeAxons options reserved for future optimization
27
+ // Check cache
28
+ const cached = this.cache.get(netuid);
29
+ if (cached && Date.now() - cached.timestamp < CACHE_TTL) {
30
+ return cached.metagraph;
31
+ }
32
+ // Get basic subnet info
33
+ const subnetInfo = await this.client.getSubnetInfo(netuid);
34
+ const n = subnetInfo.n;
35
+ const block = await this.client.getBlockNumber();
36
+ // Initialize arrays
37
+ const neurons = [];
38
+ // Fetch neuron data
39
+ for (let uid = 0; uid < n; uid++) {
40
+ try {
41
+ const neuronData = await this.client.getNeuronInfo(netuid, uid);
42
+ const neuron = {
43
+ uid,
44
+ hotkey: neuronData.hotkey,
45
+ coldkey: '',
46
+ stake: BigInt(neuronData.stake),
47
+ stakeTao: Number(neuronData.stake) / 1e9,
48
+ rank: neuronData.rank / 65535,
49
+ trust: neuronData.trust / 65535,
50
+ consensus: neuronData.consensus / 65535,
51
+ incentive: neuronData.incentive / 65535,
52
+ dividends: neuronData.dividends / 65535,
53
+ emission: BigInt(neuronData.emission),
54
+ emissionTao: Number(neuronData.emission) / 1e9,
55
+ validatorTrust: neuronData.validatorTrust / 65535,
56
+ validatorPermit: neuronData.validatorPermit,
57
+ active: neuronData.active,
58
+ lastUpdate: 0,
59
+ };
60
+ neurons.push(neuron);
61
+ }
62
+ catch {
63
+ // Skip neurons that fail to load
64
+ }
65
+ }
66
+ const metagraph = {
67
+ netuid,
68
+ n,
69
+ block,
70
+ neurons,
71
+ };
72
+ // Cache result
73
+ this.cache.set(netuid, {
74
+ metagraph,
75
+ timestamp: Date.now(),
76
+ block,
77
+ });
78
+ return metagraph;
79
+ }
80
+ /**
81
+ * Sync lite metagraph (UIDs and hotkeys only)
82
+ */
83
+ async syncLite(netuid) {
84
+ const subnetInfo = await this.client.getSubnetInfo(netuid);
85
+ const n = subnetInfo.n;
86
+ const uids = [];
87
+ const hotkeys = [];
88
+ for (let uid = 0; uid < n; uid++) {
89
+ try {
90
+ const neuronData = await this.client.getNeuronInfo(netuid, uid);
91
+ uids.push(uid);
92
+ hotkeys.push(neuronData.hotkey);
93
+ }
94
+ catch {
95
+ // Skip
96
+ }
97
+ }
98
+ return { uids, hotkeys };
99
+ }
100
+ /**
101
+ * Get cached metagraph
102
+ */
103
+ getCached(netuid) {
104
+ const cached = this.cache.get(netuid);
105
+ if (cached && Date.now() - cached.timestamp < CACHE_TTL) {
106
+ return cached.metagraph;
107
+ }
108
+ return undefined;
109
+ }
110
+ /**
111
+ * Clear cache
112
+ */
113
+ clearCache(netuid) {
114
+ if (netuid !== undefined) {
115
+ this.cache.delete(netuid);
116
+ }
117
+ else {
118
+ this.cache.clear();
119
+ }
120
+ }
121
+ /**
122
+ * Get cache info
123
+ */
124
+ getCacheInfo() {
125
+ const now = Date.now();
126
+ return Array.from(this.cache.entries()).map(([netuid, entry]) => ({
127
+ netuid,
128
+ age: now - entry.timestamp,
129
+ block: entry.block,
130
+ }));
131
+ }
132
+ /**
133
+ * Set cache TTL (for testing)
134
+ */
135
+ setCacheTTL(_ttl) {
136
+ // This would require a class variable, simplified here
137
+ }
138
+ }
139
+ exports.MetagraphSync = MetagraphSync;
140
+ /**
141
+ * Create metagraph sync helper
142
+ */
143
+ function createMetagraphSync(client) {
144
+ return new MetagraphSync(client);
145
+ }
146
+ /**
147
+ * Quick sync function
148
+ */
149
+ async function syncMetagraph(client, netuid, lite = false) {
150
+ const sync = new MetagraphSync(client);
151
+ return sync.sync({ netuid, lite });
152
+ }
153
+ //# sourceMappingURL=metagraphSync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metagraphSync.js","sourceRoot":"","sources":["../../../../nodes/Bittensor/transport/metagraphSync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ import { AxonInfo } from '../utils/metagraphUtils';
2
+ /**
3
+ * Query request options
4
+ */
5
+ export interface QueryOptions {
6
+ timeout?: number;
7
+ retries?: number;
8
+ retryDelay?: number;
9
+ }
10
+ /**
11
+ * Query response
12
+ */
13
+ export interface QueryResponse<T = unknown> {
14
+ success: boolean;
15
+ data?: T;
16
+ error?: string;
17
+ latency?: number;
18
+ }
19
+ /**
20
+ * Text generation request
21
+ */
22
+ export interface TextGenerationRequest {
23
+ prompt: string;
24
+ maxTokens?: number;
25
+ temperature?: number;
26
+ topP?: number;
27
+ }
28
+ /**
29
+ * Image generation request
30
+ */
31
+ export interface ImageGenerationRequest {
32
+ prompt: string;
33
+ width?: number;
34
+ height?: number;
35
+ steps?: number;
36
+ }
37
+ /**
38
+ * Query Client Class
39
+ */
40
+ export declare class QueryClient {
41
+ private client;
42
+ private defaultOptions;
43
+ constructor(options?: QueryOptions);
44
+ /**
45
+ * Build axon URL
46
+ */
47
+ private buildAxonUrl;
48
+ /**
49
+ * Query an axon endpoint
50
+ */
51
+ query<T = unknown>(axon: AxonInfo, path: string, data: unknown, options?: QueryOptions): Promise<QueryResponse<T>>;
52
+ /**
53
+ * Text generation query
54
+ */
55
+ generateText(axon: AxonInfo, request: TextGenerationRequest, options?: QueryOptions): Promise<QueryResponse<{
56
+ text: string;
57
+ }>>;
58
+ /**
59
+ * Image generation query
60
+ */
61
+ generateImage(axon: AxonInfo, request: ImageGenerationRequest, options?: QueryOptions): Promise<QueryResponse<{
62
+ image: string;
63
+ }>>;
64
+ /**
65
+ * Embedding generation query
66
+ */
67
+ generateEmbeddings(axon: AxonInfo, texts: string[], options?: QueryOptions): Promise<QueryResponse<{
68
+ embeddings: number[][];
69
+ }>>;
70
+ /**
71
+ * Health check
72
+ */
73
+ healthCheck(axon: AxonInfo): Promise<boolean>;
74
+ /**
75
+ * Get axon info
76
+ */
77
+ getAxonInfo(axon: AxonInfo): Promise<QueryResponse<Record<string, unknown>>>;
78
+ /**
79
+ * Batch query multiple axons
80
+ */
81
+ batchQuery<T = unknown>(axons: AxonInfo[], path: string, data: unknown, options?: QueryOptions): Promise<QueryResponse<T>[]>;
82
+ /**
83
+ * Query with consensus (multiple miners)
84
+ */
85
+ consensusQuery<T = unknown>(axons: AxonInfo[], path: string, data: unknown, minResponses?: number, options?: QueryOptions): Promise<{
86
+ responses: QueryResponse<T>[];
87
+ consensus: T | null;
88
+ }>;
89
+ }
90
+ /**
91
+ * Create query client
92
+ */
93
+ export declare function createQueryClient(options?: QueryOptions): QueryClient;
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) Velocity BPA, LLC
4
+ * Licensed under the Business Source License 1.1
5
+ * Commercial use requires a separate commercial license.
6
+ * See LICENSE file for details.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.QueryClient = void 0;
13
+ exports.createQueryClient = createQueryClient;
14
+ /**
15
+ * Query Client
16
+ *
17
+ * Client for querying Bittensor subnet miners and validators.
18
+ */
19
+ const axios_1 = __importDefault(require("axios"));
20
+ /**
21
+ * Query Client Class
22
+ */
23
+ class QueryClient {
24
+ constructor(options = {}) {
25
+ this.defaultOptions = {
26
+ timeout: options.timeout || 30000,
27
+ retries: options.retries || 3,
28
+ retryDelay: options.retryDelay || 1000,
29
+ };
30
+ this.client = axios_1.default.create({
31
+ timeout: this.defaultOptions.timeout,
32
+ headers: {
33
+ 'Content-Type': 'application/json',
34
+ },
35
+ });
36
+ }
37
+ /**
38
+ * Build axon URL
39
+ */
40
+ buildAxonUrl(axon, path = '') {
41
+ const protocol = axon.protocol === 4 ? 'https' : 'http';
42
+ return `${protocol}://${axon.ip}:${axon.port}${path}`;
43
+ }
44
+ /**
45
+ * Query an axon endpoint
46
+ */
47
+ async query(axon, path, data, options) {
48
+ const opts = { ...this.defaultOptions, ...options };
49
+ const url = this.buildAxonUrl(axon, path);
50
+ const startTime = Date.now();
51
+ let lastError = null;
52
+ for (let attempt = 0; attempt < (opts.retries || 1); attempt++) {
53
+ try {
54
+ const response = await this.client.post(url, data, {
55
+ timeout: opts.timeout,
56
+ });
57
+ return {
58
+ success: true,
59
+ data: response.data,
60
+ latency: Date.now() - startTime,
61
+ };
62
+ }
63
+ catch (error) {
64
+ lastError = error;
65
+ if (attempt < (opts.retries || 1) - 1) {
66
+ await new Promise(resolve => setTimeout(resolve, opts.retryDelay));
67
+ }
68
+ }
69
+ }
70
+ return {
71
+ success: false,
72
+ error: lastError?.message || 'Unknown error',
73
+ latency: Date.now() - startTime,
74
+ };
75
+ }
76
+ /**
77
+ * Text generation query
78
+ */
79
+ async generateText(axon, request, options) {
80
+ return this.query(axon, '/generate', request, options);
81
+ }
82
+ /**
83
+ * Image generation query
84
+ */
85
+ async generateImage(axon, request, options) {
86
+ return this.query(axon, '/generate-image', request, options);
87
+ }
88
+ /**
89
+ * Embedding generation query
90
+ */
91
+ async generateEmbeddings(axon, texts, options) {
92
+ return this.query(axon, '/embeddings', { texts }, options);
93
+ }
94
+ /**
95
+ * Health check
96
+ */
97
+ async healthCheck(axon) {
98
+ try {
99
+ const url = this.buildAxonUrl(axon, '/health');
100
+ const response = await this.client.get(url, { timeout: 5000 });
101
+ return response.status === 200;
102
+ }
103
+ catch {
104
+ return false;
105
+ }
106
+ }
107
+ /**
108
+ * Get axon info
109
+ */
110
+ async getAxonInfo(axon) {
111
+ return this.query(axon, '/info', {});
112
+ }
113
+ /**
114
+ * Batch query multiple axons
115
+ */
116
+ async batchQuery(axons, path, data, options) {
117
+ const promises = axons.map(axon => this.query(axon, path, data, options));
118
+ return Promise.all(promises);
119
+ }
120
+ /**
121
+ * Query with consensus (multiple miners)
122
+ */
123
+ async consensusQuery(axons, path, data, minResponses = 1, options) {
124
+ const responses = await this.batchQuery(axons, path, data, options);
125
+ const successful = responses.filter(r => r.success && r.data);
126
+ if (successful.length < minResponses) {
127
+ return { responses, consensus: null };
128
+ }
129
+ // Simple consensus: return first successful response
130
+ // More sophisticated consensus would compare responses
131
+ return {
132
+ responses,
133
+ consensus: successful[0].data || null,
134
+ };
135
+ }
136
+ }
137
+ exports.QueryClient = QueryClient;
138
+ /**
139
+ * Create query client
140
+ */
141
+ function createQueryClient(options) {
142
+ return new QueryClient(options);
143
+ }
144
+ //# sourceMappingURL=queryClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryClient.js","sourceRoot":"","sources":["../../../../nodes/Bittensor/transport/queryClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ import { NetworkType } from '../constants/networks';
2
+ /**
3
+ * Connection options
4
+ */
5
+ export interface SubtensorConnectionOptions {
6
+ network: NetworkType | 'custom';
7
+ wsEndpoint?: string;
8
+ coldkeyMnemonic?: string;
9
+ hotkeyMnemonic?: string;
10
+ timeout?: number;
11
+ }
12
+ /**
13
+ * Transaction result
14
+ */
15
+ export interface TransactionResult {
16
+ success: boolean;
17
+ blockHash?: string;
18
+ txHash?: string;
19
+ events?: unknown[];
20
+ error?: string;
21
+ }
22
+ /**
23
+ * Subtensor Client Class
24
+ */
25
+ export declare class SubtensorClient {
26
+ private api;
27
+ private provider;
28
+ private coldkey;
29
+ private hotkey;
30
+ private _network;
31
+ private wsEndpoint;
32
+ private connected;
33
+ constructor(options: SubtensorConnectionOptions);
34
+ /**
35
+ * Get the connected network
36
+ */
37
+ get network(): NetworkType | 'custom';
38
+ /**
39
+ * Connect to Subtensor
40
+ */
41
+ connect(): Promise<void>;
42
+ /**
43
+ * Disconnect from Subtensor
44
+ */
45
+ disconnect(): Promise<void>;
46
+ /**
47
+ * Initialize coldkey from mnemonic
48
+ */
49
+ initColdkey(mnemonic: string): void;
50
+ /**
51
+ * Initialize hotkey from mnemonic
52
+ */
53
+ initHotkey(mnemonic: string): void;
54
+ /**
55
+ * Ensure connected
56
+ */
57
+ private ensureConnected;
58
+ /**
59
+ * Get balance for an address
60
+ */
61
+ getBalance(address: string): Promise<bigint>;
62
+ /**
63
+ * Get stake for coldkey-hotkey pair
64
+ */
65
+ getStake(coldkey: string, hotkey: string): Promise<bigint>;
66
+ /**
67
+ * Get total stake for a coldkey
68
+ */
69
+ getTotalColdkeyStake(coldkey: string): Promise<bigint>;
70
+ /**
71
+ * Get total stake for a hotkey
72
+ */
73
+ getTotalHotkeyStake(hotkey: string): Promise<bigint>;
74
+ /**
75
+ * Get current block number
76
+ */
77
+ getBlockNumber(): Promise<number>;
78
+ /**
79
+ * Get block hash by number
80
+ */
81
+ getBlockHash(blockNumber: number): Promise<string>;
82
+ /**
83
+ * Get total networks count
84
+ */
85
+ getTotalNetworks(): Promise<number>;
86
+ /**
87
+ * Get subnet info
88
+ */
89
+ getSubnetInfo(netuid: number): Promise<Record<string, unknown>>;
90
+ /**
91
+ * Get neuron info
92
+ */
93
+ getNeuronInfo(netuid: number, uid: number): Promise<Record<string, unknown>>;
94
+ /**
95
+ * Get all delegates
96
+ */
97
+ getDelegates(): Promise<string[]>;
98
+ /**
99
+ * Get delegate take rate
100
+ */
101
+ getDelegateTake(hotkey: string): Promise<number>;
102
+ /**
103
+ * Get registration cost (burn amount)
104
+ */
105
+ getRegistrationCost(netuid: number): Promise<bigint>;
106
+ /**
107
+ * Transfer TAO
108
+ */
109
+ transfer(to: string, amount: number): Promise<TransactionResult>;
110
+ /**
111
+ * Add stake
112
+ */
113
+ addStake(hotkey: string, amount: number): Promise<TransactionResult>;
114
+ /**
115
+ * Remove stake
116
+ */
117
+ removeStake(hotkey: string, amount: number): Promise<TransactionResult>;
118
+ /**
119
+ * Set weights (validator only)
120
+ */
121
+ setWeights(netuid: number, uids: number[], weights: number[], versionKey: number): Promise<TransactionResult>;
122
+ /**
123
+ * Burned register on subnet
124
+ */
125
+ burnedRegister(netuid: number): Promise<TransactionResult>;
126
+ /**
127
+ * Subscribe to new blocks
128
+ */
129
+ subscribeToBlocks(callback: (blockNumber: number) => void): Promise<() => void>;
130
+ /**
131
+ * Subscribe to events
132
+ */
133
+ subscribeToEvents(callback: (events: unknown[]) => void): Promise<() => void>;
134
+ }
135
+ /**
136
+ * Create and connect a new client
137
+ */
138
+ export declare function createSubtensorClient(options: SubtensorConnectionOptions): Promise<SubtensorClient>;