solvoid 1.1.7 → 1.3.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 (256) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +110 -90
  3. package/SECURITY.md +42 -0
  4. package/bin/solvoid-scan +2 -0
  5. package/dist/cli/commands/ghost.d.ts +11 -0
  6. package/dist/cli/commands/ghost.d.ts.map +1 -0
  7. package/dist/cli/commands/ghost.js +161 -0
  8. package/dist/cli/commands/ghost.js.map +1 -0
  9. package/dist/cli/commands/rescue.d.ts +7 -0
  10. package/dist/cli/commands/rescue.d.ts.map +1 -0
  11. package/dist/cli/commands/rescue.js +203 -0
  12. package/dist/cli/commands/rescue.js.map +1 -0
  13. package/dist/cli/comprehensive-rpc-list.d.ts +31 -0
  14. package/dist/cli/comprehensive-rpc-list.d.ts.map +1 -0
  15. package/dist/cli/comprehensive-rpc-list.js +341 -0
  16. package/dist/cli/comprehensive-rpc-list.js.map +1 -0
  17. package/dist/cli/demo-scan.d.ts +6 -0
  18. package/dist/cli/demo-scan.d.ts.map +1 -0
  19. package/dist/cli/demo-scan.js +178 -0
  20. package/dist/cli/demo-scan.js.map +1 -0
  21. package/dist/cli/enhanced-privacy-scan.d.ts +46 -0
  22. package/dist/cli/enhanced-privacy-scan.d.ts.map +1 -0
  23. package/dist/cli/enhanced-privacy-scan.js +422 -0
  24. package/dist/cli/enhanced-privacy-scan.js.map +1 -0
  25. package/dist/cli/ghost-test.d.ts +7 -0
  26. package/dist/cli/ghost-test.d.ts.map +1 -0
  27. package/dist/cli/ghost-test.js +192 -0
  28. package/dist/cli/ghost-test.js.map +1 -0
  29. package/dist/cli/simple-scan.d.ts +6 -0
  30. package/dist/cli/simple-scan.d.ts.map +1 -0
  31. package/dist/cli/simple-scan.js +250 -0
  32. package/dist/cli/simple-scan.js.map +1 -0
  33. package/dist/cli/solvoid-scan.d.ts +7 -0
  34. package/dist/cli/solvoid-scan.d.ts.map +1 -0
  35. package/dist/cli/solvoid-scan.js +263 -0
  36. package/dist/cli/solvoid-scan.js.map +1 -0
  37. package/dist/cli/ultimate-privacy-scan.d.ts +54 -0
  38. package/dist/cli/ultimate-privacy-scan.d.ts.map +1 -0
  39. package/dist/cli/ultimate-privacy-scan.js +543 -0
  40. package/dist/cli/ultimate-privacy-scan.js.map +1 -0
  41. package/dist/cli/utils/asset-scanner.d.ts +76 -0
  42. package/dist/cli/utils/asset-scanner.d.ts.map +1 -0
  43. package/dist/cli/utils/asset-scanner.js +224 -0
  44. package/dist/cli/utils/asset-scanner.js.map +1 -0
  45. package/dist/cli/utils/badge-generator.d.ts +33 -0
  46. package/dist/cli/utils/badge-generator.d.ts.map +1 -0
  47. package/dist/cli/utils/badge-generator.js +263 -0
  48. package/dist/cli/utils/badge-generator.js.map +1 -0
  49. package/dist/cli/utils/enhanced-monitoring.d.ts +13 -0
  50. package/dist/cli/utils/enhanced-monitoring.d.ts.map +1 -0
  51. package/dist/cli/utils/enhanced-monitoring.js +46 -0
  52. package/dist/cli/utils/enhanced-monitoring.js.map +1 -0
  53. package/dist/cli/utils/enhanced-pyth-feed.d.ts +20 -0
  54. package/dist/cli/utils/enhanced-pyth-feed.d.ts.map +1 -0
  55. package/dist/cli/utils/enhanced-pyth-feed.js +64 -0
  56. package/dist/cli/utils/enhanced-pyth-feed.js.map +1 -0
  57. package/dist/cli/utils/enhanced-threat-intel.d.ts +20 -0
  58. package/dist/cli/utils/enhanced-threat-intel.d.ts.map +1 -0
  59. package/dist/cli/utils/enhanced-threat-intel.js +57 -0
  60. package/dist/cli/utils/enhanced-threat-intel.js.map +1 -0
  61. package/dist/cli/utils/env-validator.d.ts +17 -0
  62. package/dist/cli/utils/env-validator.d.ts.map +1 -0
  63. package/dist/cli/utils/env-validator.js +257 -0
  64. package/dist/cli/utils/env-validator.js.map +1 -0
  65. package/dist/cli/utils/ghost-art.d.ts +14 -0
  66. package/dist/cli/utils/ghost-art.d.ts.map +1 -0
  67. package/dist/cli/utils/ghost-art.js +285 -0
  68. package/dist/cli/utils/ghost-art.js.map +1 -0
  69. package/dist/cli/utils/ghost-calculator.d.ts +52 -0
  70. package/dist/cli/utils/ghost-calculator.d.ts.map +1 -0
  71. package/dist/cli/utils/ghost-calculator.js +207 -0
  72. package/dist/cli/utils/ghost-calculator.js.map +1 -0
  73. package/dist/cli/utils/jito-mev-bundle.d.ts +9 -0
  74. package/dist/cli/utils/jito-mev-bundle.d.ts.map +1 -0
  75. package/dist/cli/utils/jito-mev-bundle.js +40 -0
  76. package/dist/cli/utils/jito-mev-bundle.js.map +1 -0
  77. package/dist/cli/utils/rescue-engine.d.ts +57 -0
  78. package/dist/cli/utils/rescue-engine.d.ts.map +1 -0
  79. package/dist/cli/utils/rescue-engine.js +192 -0
  80. package/dist/cli/utils/rescue-engine.js.map +1 -0
  81. package/dist/cli/utils/shadow-bridge.d.ts +20 -0
  82. package/dist/cli/utils/shadow-bridge.d.ts.map +1 -0
  83. package/dist/cli/utils/shadow-bridge.js +33 -0
  84. package/dist/cli/utils/shadow-bridge.js.map +1 -0
  85. package/dist/cli/utils/threat-detector.d.ts +48 -0
  86. package/dist/cli/utils/threat-detector.d.ts.map +1 -0
  87. package/dist/cli/utils/threat-detector.js +304 -0
  88. package/dist/cli/utils/threat-detector.js.map +1 -0
  89. package/dist/relayer/key-manager.d.ts +52 -0
  90. package/dist/relayer/key-manager.d.ts.map +1 -0
  91. package/dist/relayer/key-manager.js +356 -0
  92. package/dist/relayer/key-manager.js.map +1 -0
  93. package/dist/relayer/replay-protection.d.ts +94 -0
  94. package/dist/relayer/replay-protection.d.ts.map +1 -0
  95. package/dist/relayer/replay-protection.js +189 -0
  96. package/dist/relayer/replay-protection.js.map +1 -0
  97. package/dist/relayer/secure-service.d.ts +46 -0
  98. package/dist/relayer/secure-service.d.ts.map +1 -0
  99. package/dist/relayer/secure-service.js +538 -0
  100. package/dist/relayer/secure-service.js.map +1 -0
  101. package/dist/relayer/service.d.ts +25 -0
  102. package/dist/relayer/service.d.ts.map +1 -0
  103. package/dist/relayer/service.js +380 -0
  104. package/dist/relayer/service.js.map +1 -0
  105. package/dist/{client.d.ts → sdk/client.d.ts} +17 -0
  106. package/dist/sdk/client.d.ts.map +1 -0
  107. package/dist/{client.js → sdk/client.js} +69 -2
  108. package/dist/sdk/client.js.map +1 -0
  109. package/dist/sdk/crypto/poseidon.d.ts.map +1 -0
  110. package/dist/sdk/crypto/poseidon.js.map +1 -0
  111. package/dist/sdk/events/bus.d.ts.map +1 -0
  112. package/dist/sdk/events/bus.js.map +1 -0
  113. package/dist/sdk/index.d.ts.map +1 -0
  114. package/dist/sdk/index.js.map +1 -0
  115. package/dist/sdk/integrity.d.ts.map +1 -0
  116. package/dist/sdk/integrity.js.map +1 -0
  117. package/dist/sdk/network/shadow-rpc.d.ts.map +1 -0
  118. package/dist/sdk/network/shadow-rpc.js.map +1 -0
  119. package/dist/sdk/passport/manager.d.ts.map +1 -0
  120. package/dist/sdk/passport/manager.js.map +1 -0
  121. package/dist/sdk/pipeline.d.ts.map +1 -0
  122. package/dist/{pipeline.js → sdk/pipeline.js} +69 -12
  123. package/dist/sdk/pipeline.js.map +1 -0
  124. package/dist/sdk/polyfill.d.ts +8 -0
  125. package/dist/sdk/polyfill.d.ts.map +1 -0
  126. package/dist/sdk/polyfill.js +21 -0
  127. package/dist/sdk/polyfill.js.map +1 -0
  128. package/dist/sdk/privacy/relayer.d.ts.map +1 -0
  129. package/dist/sdk/privacy/relayer.js.map +1 -0
  130. package/dist/sdk/privacy/shield.d.ts.map +1 -0
  131. package/dist/sdk/privacy/shield.js.map +1 -0
  132. package/dist/sdk/privacy-engine.d.ts.map +1 -0
  133. package/dist/sdk/privacy-engine.js.map +1 -0
  134. package/dist/sdk/registry/idl-fetcher.d.ts.map +1 -0
  135. package/dist/sdk/registry/idl-fetcher.js.map +1 -0
  136. package/dist/sdk/registry/programs.d.ts.map +1 -0
  137. package/dist/sdk/registry/programs.js.map +1 -0
  138. package/dist/sdk/rescue/analyzer.d.ts.map +1 -0
  139. package/dist/sdk/rescue/analyzer.js.map +1 -0
  140. package/dist/sdk/rescue/builder.d.ts.map +1 -0
  141. package/dist/sdk/rescue/builder.js.map +1 -0
  142. package/dist/sdk/security/key-rotation.d.ts.map +1 -0
  143. package/dist/sdk/security/key-rotation.js.map +1 -0
  144. package/dist/{semantics → sdk/semantics}/analyzer.d.ts.map +1 -1
  145. package/dist/{semantics → sdk/semantics}/analyzer.js.map +1 -1
  146. package/dist/sdk/semantics/decoder.d.ts.map +1 -0
  147. package/dist/sdk/semantics/decoder.js.map +1 -0
  148. package/dist/{semantics → sdk/semantics}/graph.d.ts.map +1 -1
  149. package/dist/{semantics → sdk/semantics}/graph.js.map +1 -1
  150. package/dist/sdk/semantics/idl-registry.d.ts.map +1 -0
  151. package/dist/sdk/semantics/idl-registry.js.map +1 -0
  152. package/dist/sdk/semantics/types.d.ts.map +1 -0
  153. package/dist/sdk/semantics/types.js.map +1 -0
  154. package/dist/sdk/types.d.ts.map +1 -0
  155. package/dist/{semantics → sdk}/types.js.map +1 -1
  156. package/dist/sdk/utils/address.d.ts.map +1 -0
  157. package/dist/sdk/utils/address.js.map +1 -0
  158. package/dist/sdk/utils/config.d.ts.map +1 -0
  159. package/dist/sdk/utils/config.js.map +1 -0
  160. package/dist/sdk/utils/logger.d.ts.map +1 -0
  161. package/dist/sdk/utils/logger.js.map +1 -0
  162. package/dist/simple-scan.js +249 -0
  163. package/package.json +103 -36
  164. package/CHANGELOG.md +0 -33
  165. package/dist/client.d.ts.map +0 -1
  166. package/dist/client.js.map +0 -1
  167. package/dist/crypto/poseidon.d.ts.map +0 -1
  168. package/dist/crypto/poseidon.js.map +0 -1
  169. package/dist/events/bus.d.ts.map +0 -1
  170. package/dist/events/bus.js.map +0 -1
  171. package/dist/index.d.ts.map +0 -1
  172. package/dist/index.js.map +0 -1
  173. package/dist/integrity.d.ts.map +0 -1
  174. package/dist/integrity.js.map +0 -1
  175. package/dist/network/shadow-rpc.d.ts.map +0 -1
  176. package/dist/network/shadow-rpc.js.map +0 -1
  177. package/dist/passport/manager.d.ts.map +0 -1
  178. package/dist/passport/manager.js.map +0 -1
  179. package/dist/pipeline.d.ts.map +0 -1
  180. package/dist/pipeline.js.map +0 -1
  181. package/dist/privacy/relayer.d.ts.map +0 -1
  182. package/dist/privacy/relayer.js.map +0 -1
  183. package/dist/privacy/shield.d.ts.map +0 -1
  184. package/dist/privacy/shield.js.map +0 -1
  185. package/dist/privacy-engine.d.ts.map +0 -1
  186. package/dist/privacy-engine.js.map +0 -1
  187. package/dist/registry/idl-fetcher.d.ts.map +0 -1
  188. package/dist/registry/idl-fetcher.js.map +0 -1
  189. package/dist/registry/programs.d.ts.map +0 -1
  190. package/dist/registry/programs.js.map +0 -1
  191. package/dist/rescue/analyzer.d.ts.map +0 -1
  192. package/dist/rescue/analyzer.js.map +0 -1
  193. package/dist/rescue/builder.d.ts.map +0 -1
  194. package/dist/rescue/builder.js.map +0 -1
  195. package/dist/security/key-rotation.d.ts.map +0 -1
  196. package/dist/security/key-rotation.js.map +0 -1
  197. package/dist/semantics/decoder.d.ts.map +0 -1
  198. package/dist/semantics/decoder.js.map +0 -1
  199. package/dist/semantics/idl-registry.d.ts.map +0 -1
  200. package/dist/semantics/idl-registry.js.map +0 -1
  201. package/dist/semantics/types.d.ts.map +0 -1
  202. package/dist/types.d.ts.map +0 -1
  203. package/dist/types.js.map +0 -1
  204. package/dist/utils/address.d.ts.map +0 -1
  205. package/dist/utils/address.js.map +0 -1
  206. package/dist/utils/config.d.ts.map +0 -1
  207. package/dist/utils/config.js.map +0 -1
  208. package/dist/utils/logger.d.ts.map +0 -1
  209. package/dist/utils/logger.js.map +0 -1
  210. /package/dist/{crypto → sdk/crypto}/poseidon.d.ts +0 -0
  211. /package/dist/{crypto → sdk/crypto}/poseidon.js +0 -0
  212. /package/dist/{events → sdk/events}/bus.d.ts +0 -0
  213. /package/dist/{events → sdk/events}/bus.js +0 -0
  214. /package/dist/{index.d.ts → sdk/index.d.ts} +0 -0
  215. /package/dist/{index.js → sdk/index.js} +0 -0
  216. /package/dist/{integrity.d.ts → sdk/integrity.d.ts} +0 -0
  217. /package/dist/{integrity.js → sdk/integrity.js} +0 -0
  218. /package/dist/{network → sdk/network}/shadow-rpc.d.ts +0 -0
  219. /package/dist/{network → sdk/network}/shadow-rpc.js +0 -0
  220. /package/dist/{passport → sdk/passport}/manager.d.ts +0 -0
  221. /package/dist/{passport → sdk/passport}/manager.js +0 -0
  222. /package/dist/{pipeline.d.ts → sdk/pipeline.d.ts} +0 -0
  223. /package/dist/{privacy → sdk/privacy}/relayer.d.ts +0 -0
  224. /package/dist/{privacy → sdk/privacy}/relayer.js +0 -0
  225. /package/dist/{privacy → sdk/privacy}/shield.d.ts +0 -0
  226. /package/dist/{privacy → sdk/privacy}/shield.js +0 -0
  227. /package/dist/{privacy-engine.d.ts → sdk/privacy-engine.d.ts} +0 -0
  228. /package/dist/{privacy-engine.js → sdk/privacy-engine.js} +0 -0
  229. /package/dist/{registry → sdk/registry}/idl-fetcher.d.ts +0 -0
  230. /package/dist/{registry → sdk/registry}/idl-fetcher.js +0 -0
  231. /package/dist/{registry → sdk/registry}/programs.d.ts +0 -0
  232. /package/dist/{registry → sdk/registry}/programs.js +0 -0
  233. /package/dist/{rescue → sdk/rescue}/analyzer.d.ts +0 -0
  234. /package/dist/{rescue → sdk/rescue}/analyzer.js +0 -0
  235. /package/dist/{rescue → sdk/rescue}/builder.d.ts +0 -0
  236. /package/dist/{rescue → sdk/rescue}/builder.js +0 -0
  237. /package/dist/{security → sdk/security}/key-rotation.d.ts +0 -0
  238. /package/dist/{security → sdk/security}/key-rotation.js +0 -0
  239. /package/dist/{semantics → sdk/semantics}/analyzer.d.ts +0 -0
  240. /package/dist/{semantics → sdk/semantics}/analyzer.js +0 -0
  241. /package/dist/{semantics → sdk/semantics}/decoder.d.ts +0 -0
  242. /package/dist/{semantics → sdk/semantics}/decoder.js +0 -0
  243. /package/dist/{semantics → sdk/semantics}/graph.d.ts +0 -0
  244. /package/dist/{semantics → sdk/semantics}/graph.js +0 -0
  245. /package/dist/{semantics → sdk/semantics}/idl-registry.d.ts +0 -0
  246. /package/dist/{semantics → sdk/semantics}/idl-registry.js +0 -0
  247. /package/dist/{semantics → sdk/semantics}/types.d.ts +0 -0
  248. /package/dist/{semantics → sdk/semantics}/types.js +0 -0
  249. /package/dist/{types.d.ts → sdk/types.d.ts} +0 -0
  250. /package/dist/{types.js → sdk/types.js} +0 -0
  251. /package/dist/{utils → sdk/utils}/address.d.ts +0 -0
  252. /package/dist/{utils → sdk/utils}/address.js +0 -0
  253. /package/dist/{utils → sdk/utils}/config.d.ts +0 -0
  254. /package/dist/{utils → sdk/utils}/config.js +0 -0
  255. /package/dist/{utils → sdk/utils}/logger.d.ts +0 -0
  256. /package/dist/{utils → sdk/utils}/logger.js +0 -0
@@ -0,0 +1,304 @@
1
+ "use strict";
2
+ // cli/utils/threat-detector.ts
3
+ // Threat Detection System
4
+ // Detects active threats: drainers, MEV bots, key leaks, etc.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ThreatDetector = void 0;
7
+ class ThreatDetector {
8
+ constructor(connection) {
9
+ this.connection = connection;
10
+ // Known malicious addresses (would be loaded from database in production)
11
+ this.knownDrainers = new Set([
12
+ // Add known drainer addresses
13
+ '2g7FcZyM8QvPtkVHw7KXs3h9Y9mNv9WKXqBvE4h8pump', // Example
14
+ ]);
15
+ this.knownMEVBots = new Set([
16
+ // Add known MEV bot addresses
17
+ // These would be updated regularly
18
+ ]);
19
+ }
20
+ /**
21
+ * Scan for active threats
22
+ */
23
+ async scan(address) {
24
+ const threats = [];
25
+ // Run all detection methods in parallel
26
+ const [drainerThreats, mevThreats, keyLeakThreats, trackingThreats, patternThreats] = await Promise.all([
27
+ this.detectDrainer(address),
28
+ this.detectMEVBot(address),
29
+ this.detectKeyLeak(address),
30
+ this.detectTracking(address),
31
+ this.detectSuspiciousPatterns(address)
32
+ ]);
33
+ threats.push(...drainerThreats, ...mevThreats, ...keyLeakThreats, ...trackingThreats, ...patternThreats);
34
+ // Sort by severity
35
+ return threats.sort((a, b) => {
36
+ const severityOrder = { CRITICAL: 0, HIGH: 1, MEDIUM: 2, LOW: 3 };
37
+ return severityOrder[a.severity] - severityOrder[b.severity];
38
+ });
39
+ }
40
+ /**
41
+ * Detect active drainer
42
+ */
43
+ async detectDrainer(address) {
44
+ const threats = [];
45
+ try {
46
+ // Get recent transactions
47
+ const signatures = await this.connection.getSignaturesForAddress(address, { limit: 10 });
48
+ for (const sig of signatures) {
49
+ const tx = await this.connection.getTransaction(sig.signature, {
50
+ maxSupportedTransactionVersion: 0
51
+ });
52
+ if (!tx)
53
+ continue;
54
+ // Check for interactions with known drainers
55
+ const accounts = tx.transaction.message.getAccountKeys().staticAccountKeys;
56
+ for (const account of accounts) {
57
+ const accountStr = account.toBase58();
58
+ if (this.knownDrainers.has(accountStr)) {
59
+ threats.push({
60
+ type: 'DRAINER',
61
+ severity: 'CRITICAL',
62
+ description: `Active drainer detected: ${accountStr.slice(0, 8)}...`,
63
+ confidence: 95,
64
+ evidence: [{
65
+ transaction: sig.signature,
66
+ drainerAddress: accountStr,
67
+ timestamp: sig.blockTime
68
+ }],
69
+ timestamp: Date.now()
70
+ });
71
+ }
72
+ }
73
+ // Check for suspicious approval patterns
74
+ if (this.isSuspiciousApproval(tx)) {
75
+ threats.push({
76
+ type: 'DRAINER',
77
+ severity: 'HIGH',
78
+ description: 'Suspicious token approval detected',
79
+ confidence: 75,
80
+ evidence: [{ transaction: sig.signature }],
81
+ timestamp: Date.now()
82
+ });
83
+ }
84
+ }
85
+ }
86
+ catch (error) {
87
+ console.error('Error detecting drainer:', error);
88
+ }
89
+ return threats;
90
+ }
91
+ /**
92
+ * Detect MEV bot activity
93
+ */
94
+ async detectMEVBot(address) {
95
+ const threats = [];
96
+ try {
97
+ const signatures = await this.connection.getSignaturesForAddress(address, { limit: 20 });
98
+ // Look for sandwich attack patterns
99
+ const recentTxs = signatures.slice(0, 10);
100
+ let sandwichCount = 0;
101
+ for (let i = 0; i < recentTxs.length - 2; i++) {
102
+ const tx1 = recentTxs[i];
103
+ const tx2 = recentTxs[i + 1];
104
+ const tx3 = recentTxs[i + 2];
105
+ // Check if transactions are in same block (potential sandwich)
106
+ if (tx1.slot === tx2.slot && tx2.slot === tx3.slot) {
107
+ sandwichCount++;
108
+ }
109
+ }
110
+ if (sandwichCount > 2) {
111
+ threats.push({
112
+ type: 'SANDWICH_ATTACK',
113
+ severity: 'HIGH',
114
+ description: `Detected ${sandwichCount} potential sandwich attacks`,
115
+ confidence: 80,
116
+ evidence: [{ pattern: 'same-block-transactions', count: sandwichCount }],
117
+ timestamp: Date.now()
118
+ });
119
+ }
120
+ // Check for known MEV bot interactions
121
+ for (const sig of signatures.slice(0, 5)) {
122
+ const tx = await this.connection.getTransaction(sig.signature, {
123
+ maxSupportedTransactionVersion: 0
124
+ });
125
+ if (!tx)
126
+ continue;
127
+ const accounts = tx.transaction.message.getAccountKeys().staticAccountKeys;
128
+ for (const account of accounts) {
129
+ if (this.knownMEVBots.has(account.toBase58())) {
130
+ threats.push({
131
+ type: 'MEV_BOT',
132
+ severity: 'HIGH',
133
+ description: 'MEV bot interaction detected',
134
+ confidence: 90,
135
+ evidence: [{ transaction: sig.signature }],
136
+ timestamp: Date.now()
137
+ });
138
+ }
139
+ }
140
+ }
141
+ }
142
+ catch (error) {
143
+ console.error('Error detecting MEV bot:', error);
144
+ }
145
+ return threats;
146
+ }
147
+ /**
148
+ * Detect potential key leak
149
+ */
150
+ async detectKeyLeak(address) {
151
+ const threats = [];
152
+ try {
153
+ // Check for unusual transaction patterns that might indicate key compromise
154
+ const signatures = await this.connection.getSignaturesForAddress(address, { limit: 50 });
155
+ if (signatures.length === 0)
156
+ return threats;
157
+ // Analyze transaction frequency
158
+ const recentSigs = signatures.slice(0, 10);
159
+ const timestamps = recentSigs
160
+ .filter(sig => sig.blockTime)
161
+ .map(sig => sig.blockTime);
162
+ if (timestamps.length >= 3) {
163
+ // Check for sudden burst of activity
164
+ const timeDiffs = timestamps.slice(0, -1).map((t, i) => t - timestamps[i + 1]);
165
+ const avgDiff = timeDiffs.reduce((a, b) => a + b, 0) / timeDiffs.length;
166
+ // If recent transactions are happening very quickly (< 5 seconds apart)
167
+ if (avgDiff < 5) {
168
+ threats.push({
169
+ type: 'KEY_LEAK',
170
+ severity: 'CRITICAL',
171
+ description: 'Unusual burst of rapid transactions detected (potential key compromise)',
172
+ confidence: 70,
173
+ evidence: [{
174
+ pattern: 'rapid-transactions',
175
+ averageTimeDiff: avgDiff,
176
+ recentCount: recentSigs.length
177
+ }],
178
+ timestamp: Date.now()
179
+ });
180
+ }
181
+ }
182
+ // Check for transactions to many different addresses (potential draining)
183
+ const uniqueRecipients = new Set();
184
+ for (const sig of recentSigs) {
185
+ const tx = await this.connection.getTransaction(sig.signature, {
186
+ maxSupportedTransactionVersion: 0
187
+ });
188
+ if (tx) {
189
+ const accounts = tx.transaction.message.getAccountKeys().staticAccountKeys;
190
+ accounts.forEach(acc => uniqueRecipients.add(acc.toBase58()));
191
+ }
192
+ }
193
+ if (uniqueRecipients.size > 8) {
194
+ threats.push({
195
+ type: 'KEY_LEAK',
196
+ severity: 'HIGH',
197
+ description: 'Transactions to many different addresses (potential automated draining)',
198
+ confidence: 65,
199
+ evidence: [{
200
+ pattern: 'multiple-recipients',
201
+ count: uniqueRecipients.size
202
+ }],
203
+ timestamp: Date.now()
204
+ });
205
+ }
206
+ }
207
+ catch (error) {
208
+ console.error('Error detecting key leak:', error);
209
+ }
210
+ return threats;
211
+ }
212
+ /**
213
+ * Detect tracking/surveillance
214
+ */
215
+ async detectTracking(address) {
216
+ const threats = [];
217
+ try {
218
+ // Check for known surveillance/tracking addresses
219
+ const signatures = await this.connection.getSignaturesForAddress(address, { limit: 10 });
220
+ // In production, this would check against a database of known
221
+ // tracking services, chain analysis firms, etc.
222
+ // For now, we can detect patterns like:
223
+ // - Frequent small "dust" transactions (tracking markers)
224
+ // - Interactions with known chain analysis addresses
225
+ let dustCount = 0;
226
+ for (const sig of signatures) {
227
+ const tx = await this.connection.getTransaction(sig.signature, {
228
+ maxSupportedTransactionVersion: 0
229
+ });
230
+ if (!tx)
231
+ continue;
232
+ // Check for dust transactions (< 0.001 SOL)
233
+ if (tx.meta?.postBalances && tx.meta?.preBalances) {
234
+ const balanceChanges = tx.meta.postBalances.map((post, i) => Math.abs(post - tx.meta.preBalances[i]));
235
+ if (balanceChanges.some(change => change < 1000000 && change > 0)) {
236
+ dustCount++;
237
+ }
238
+ }
239
+ }
240
+ if (dustCount > 3) {
241
+ threats.push({
242
+ type: 'TRACKING',
243
+ severity: 'MEDIUM',
244
+ description: 'Multiple dust transactions detected (potential tracking markers)',
245
+ confidence: 60,
246
+ evidence: [{ pattern: 'dust-transactions', count: dustCount }],
247
+ timestamp: Date.now()
248
+ });
249
+ }
250
+ }
251
+ catch (error) {
252
+ console.error('Error detecting tracking:', error);
253
+ }
254
+ return threats;
255
+ }
256
+ /**
257
+ * Detect suspicious transaction patterns
258
+ */
259
+ async detectSuspiciousPatterns(address) {
260
+ const threats = [];
261
+ try {
262
+ const signatures = await this.connection.getSignaturesForAddress(address, { limit: 20 });
263
+ // Check for failed transactions (might indicate attempted exploits)
264
+ const failedTxs = signatures.filter(sig => sig.err !== null);
265
+ if (failedTxs.length > 5) {
266
+ threats.push({
267
+ type: 'UNKNOWN',
268
+ severity: 'MEDIUM',
269
+ description: `${failedTxs.length} failed transactions detected (potential exploit attempts)`,
270
+ confidence: 50,
271
+ evidence: [{ pattern: 'failed-transactions', count: failedTxs.length }],
272
+ timestamp: Date.now()
273
+ });
274
+ }
275
+ }
276
+ catch (error) {
277
+ console.error('Error detecting suspicious patterns:', error);
278
+ }
279
+ return threats;
280
+ }
281
+ /**
282
+ * Check if transaction has suspicious approval
283
+ */
284
+ isSuspiciousApproval(tx) {
285
+ // Check transaction instructions for suspicious patterns
286
+ // In production, this would analyze the instruction data
287
+ // Common drainer pattern: Approve max amount then transfer
288
+ // This is a simplified check
289
+ return false; // Placeholder
290
+ }
291
+ /**
292
+ * Get threat severity color
293
+ */
294
+ static getSeverityColor(severity) {
295
+ switch (severity) {
296
+ case 'CRITICAL': return 'red';
297
+ case 'HIGH': return 'red';
298
+ case 'MEDIUM': return 'yellow';
299
+ case 'LOW': return 'gray';
300
+ }
301
+ }
302
+ }
303
+ exports.ThreatDetector = ThreatDetector;
304
+ //# sourceMappingURL=threat-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threat-detector.js","sourceRoot":"","sources":["../../../cli/utils/threat-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ export interface KeyPairData {
2
+ publicKey: string;
3
+ privateKey: string;
4
+ createdAt: number;
5
+ lastRotated?: number;
6
+ rotationSignature?: string;
7
+ previousPublicKey?: string;
8
+ }
9
+ export interface KeyRotationData {
10
+ oldPublicKey: string;
11
+ newPublicKey: string;
12
+ rotationSignature: string;
13
+ timestamp: number;
14
+ transitionPeriod: number;
15
+ }
16
+ export declare class KeyManager {
17
+ private keypair;
18
+ private keyFilePath;
19
+ private storageType;
20
+ private encryptionKey;
21
+ constructor(storageType?: 'file' | 'env' | 'aws' | 'gcp' | 'hsm');
22
+ private loadOrGenerateKeysSync;
23
+ private loadFromFileSync;
24
+ private loadFromEnvSync;
25
+ private generateNewKeysSync;
26
+ private saveKeysSync;
27
+ private saveToFileSync;
28
+ private saveToEnvSync;
29
+ private loadFromFile;
30
+ private loadFromEnv;
31
+ private loadFromAWS;
32
+ private loadFromGCP;
33
+ private loadFromHSM;
34
+ private generateNewKeys;
35
+ private saveKeys;
36
+ private saveToFile;
37
+ private saveToEnv;
38
+ private saveToAWS;
39
+ private saveToGCP;
40
+ private saveToHSM;
41
+ private encryptData;
42
+ private decryptData;
43
+ rotateKeys(): Promise<KeyRotationData>;
44
+ private signMessage;
45
+ verifyRotationSignature(rotationData: KeyRotationData): boolean;
46
+ getCurrentKeys(): KeyPairData;
47
+ getPublicKey(): string;
48
+ getPrivateKey(): string;
49
+ isKeyInTransitionPeriod(): boolean;
50
+ getPreviousPublicKey(): string | null;
51
+ }
52
+ //# sourceMappingURL=key-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-manager.d.ts","sourceRoot":"","sources":["../../relayer/key-manager.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,UAAU;IACnB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,aAAa,CAAS;gBAElB,WAAW,GAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAc;IAOxE,OAAO,CAAC,sBAAsB;IA0B9B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,aAAa;YAMP,YAAY;YAUZ,WAAW;YAeX,WAAW;YAiBX,WAAW;YAiBX,WAAW;YAMX,eAAe;YAaf,QAAQ;YAoBR,UAAU;YAMV,SAAS;YAMT,SAAS;YAcT,SAAS;YAwBT,SAAS;IAIvB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,WAAW;IAkBN,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC;IAmCnD,OAAO,CAAC,WAAW;IAOZ,uBAAuB,CAAC,YAAY,EAAE,eAAe,GAAG,OAAO;IAoB/D,cAAc,IAAI,WAAW;IAI7B,YAAY,IAAI,MAAM;IAItB,aAAa,IAAI,MAAM;IAIvB,uBAAuB,IAAI,OAAO;IAUlC,oBAAoB,IAAI,MAAM,GAAG,IAAI;CAG/C"}