solvoid 1.2.0 → 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 (97) hide show
  1. package/README.md +116 -258
  2. package/SECURITY.md +27 -24
  3. package/dist/cli/commands/ghost.d.ts +3 -3
  4. package/dist/cli/commands/ghost.d.ts.map +1 -1
  5. package/dist/cli/commands/ghost.js +67 -91
  6. package/dist/cli/commands/ghost.js.map +1 -1
  7. package/dist/cli/commands/rescue.d.ts +4 -0
  8. package/dist/cli/commands/rescue.d.ts.map +1 -1
  9. package/dist/cli/commands/rescue.js +102 -199
  10. package/dist/cli/commands/rescue.js.map +1 -1
  11. package/dist/cli/demo-scan.js +48 -130
  12. package/dist/cli/demo-scan.js.map +1 -1
  13. package/dist/cli/solvoid-scan.d.ts +4 -3
  14. package/dist/cli/solvoid-scan.d.ts.map +1 -1
  15. package/dist/cli/solvoid-scan.js +55 -46
  16. package/dist/cli/solvoid-scan.js.map +1 -1
  17. package/dist/cli/utils/asset-scanner.d.ts.map +1 -1
  18. package/dist/cli/utils/asset-scanner.js +7 -5
  19. package/dist/cli/utils/asset-scanner.js.map +1 -1
  20. package/dist/cli/utils/badge-generator.d.ts.map +1 -1
  21. package/dist/cli/utils/badge-generator.js +11 -9
  22. package/dist/cli/utils/badge-generator.js.map +1 -1
  23. package/dist/cli/utils/enhanced-monitoring.d.ts +13 -0
  24. package/dist/cli/utils/enhanced-monitoring.d.ts.map +1 -0
  25. package/dist/cli/utils/enhanced-monitoring.js +46 -0
  26. package/dist/cli/utils/enhanced-monitoring.js.map +1 -0
  27. package/dist/cli/utils/enhanced-pyth-feed.d.ts +20 -0
  28. package/dist/cli/utils/enhanced-pyth-feed.d.ts.map +1 -0
  29. package/dist/cli/utils/enhanced-pyth-feed.js +64 -0
  30. package/dist/cli/utils/enhanced-pyth-feed.js.map +1 -0
  31. package/dist/cli/utils/enhanced-threat-intel.d.ts +20 -0
  32. package/dist/cli/utils/enhanced-threat-intel.d.ts.map +1 -0
  33. package/dist/cli/utils/enhanced-threat-intel.js +57 -0
  34. package/dist/cli/utils/enhanced-threat-intel.js.map +1 -0
  35. package/dist/cli/utils/env-validator.d.ts.map +1 -1
  36. package/dist/cli/utils/env-validator.js +6 -3
  37. package/dist/cli/utils/env-validator.js.map +1 -1
  38. package/dist/cli/utils/jito-mev-bundle.d.ts +9 -0
  39. package/dist/cli/utils/jito-mev-bundle.d.ts.map +1 -0
  40. package/dist/cli/utils/jito-mev-bundle.js +40 -0
  41. package/dist/cli/utils/jito-mev-bundle.js.map +1 -0
  42. package/dist/cli/utils/rescue-engine.d.ts +0 -4
  43. package/dist/cli/utils/rescue-engine.d.ts.map +1 -1
  44. package/dist/cli/utils/rescue-engine.js +28 -46
  45. package/dist/cli/utils/rescue-engine.js.map +1 -1
  46. package/dist/cli/utils/shadow-bridge.d.ts +20 -0
  47. package/dist/cli/utils/shadow-bridge.d.ts.map +1 -0
  48. package/dist/cli/utils/shadow-bridge.js +33 -0
  49. package/dist/cli/utils/shadow-bridge.js.map +1 -0
  50. package/dist/relayer/key-manager.d.ts +52 -0
  51. package/dist/relayer/key-manager.d.ts.map +1 -0
  52. package/dist/relayer/key-manager.js +356 -0
  53. package/dist/relayer/key-manager.js.map +1 -0
  54. package/dist/relayer/replay-protection.d.ts +94 -0
  55. package/dist/relayer/replay-protection.d.ts.map +1 -0
  56. package/dist/relayer/replay-protection.js +189 -0
  57. package/dist/relayer/replay-protection.js.map +1 -0
  58. package/dist/relayer/secure-service.d.ts +46 -0
  59. package/dist/relayer/secure-service.d.ts.map +1 -0
  60. package/dist/relayer/secure-service.js +538 -0
  61. package/dist/relayer/secure-service.js.map +1 -0
  62. package/dist/relayer/service.d.ts +25 -0
  63. package/dist/relayer/service.d.ts.map +1 -0
  64. package/dist/relayer/service.js +380 -0
  65. package/dist/relayer/service.js.map +1 -0
  66. package/dist/sdk/client.d.ts +42 -8
  67. package/dist/sdk/client.d.ts.map +1 -1
  68. package/dist/sdk/client.js +115 -242
  69. package/dist/sdk/client.js.map +1 -1
  70. package/dist/sdk/crypto/poseidon.d.ts +4 -4
  71. package/dist/sdk/crypto/poseidon.d.ts.map +1 -1
  72. package/dist/sdk/crypto/poseidon.js +34 -17
  73. package/dist/sdk/crypto/poseidon.js.map +1 -1
  74. package/dist/sdk/integrity.d.ts +3 -3
  75. package/dist/sdk/integrity.d.ts.map +1 -1
  76. package/dist/sdk/integrity.js +2 -2
  77. package/dist/sdk/integrity.js.map +1 -1
  78. package/dist/sdk/passport/manager.d.ts +15 -3
  79. package/dist/sdk/passport/manager.d.ts.map +1 -1
  80. package/dist/sdk/passport/manager.js +30 -17
  81. package/dist/sdk/passport/manager.js.map +1 -1
  82. package/dist/sdk/pipeline.d.ts.map +1 -1
  83. package/dist/sdk/pipeline.js +69 -12
  84. package/dist/sdk/pipeline.js.map +1 -1
  85. package/dist/sdk/polyfill.d.ts +8 -0
  86. package/dist/sdk/polyfill.d.ts.map +1 -0
  87. package/dist/sdk/polyfill.js +21 -0
  88. package/dist/sdk/polyfill.js.map +1 -0
  89. package/dist/sdk/privacy/shield.d.ts +46 -0
  90. package/dist/sdk/privacy/shield.d.ts.map +1 -1
  91. package/dist/sdk/privacy/shield.js +117 -35
  92. package/dist/sdk/privacy/shield.js.map +1 -1
  93. package/dist/sdk/privacy-engine.d.ts +17 -3
  94. package/dist/sdk/privacy-engine.d.ts.map +1 -1
  95. package/dist/sdk/privacy-engine.js +46 -20
  96. package/dist/sdk/privacy-engine.js.map +1 -1
  97. package/package.json +2 -2
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReplayProtection = void 0;
4
+ class ReplayProtection {
5
+ constructor() {
6
+ this.nonceCache = new Map(); // publicKey -> current nonce
7
+ this.replayCache = new Map(); // (publicKey:nonce:txHash) -> entry
8
+ this.expirationWindow = 10 * 60 * 1000; // 10 minutes in milliseconds
9
+ this.cleanupInterval = null;
10
+ this.startCleanupTask();
11
+ }
12
+ /**
13
+ * Initialize nonce for a user (called during registration)
14
+ */
15
+ initializeNonce(publicKey) {
16
+ const nonce = 1;
17
+ this.nonceCache.set(publicKey, nonce);
18
+ console.log(`Initialized nonce ${nonce} for user ${publicKey}`);
19
+ return nonce;
20
+ }
21
+ /**
22
+ * Get current nonce for a user
23
+ */
24
+ getCurrentNonce(publicKey) {
25
+ return this.nonceCache.get(publicKey) || 0;
26
+ }
27
+ /**
28
+ * Validate and increment nonce for transaction
29
+ */
30
+ validateAndIncrementNonce(publicKey, expectedNonce) {
31
+ const currentNonce = this.nonceCache.get(publicKey) || 0;
32
+ if (expectedNonce !== currentNonce + 1) {
33
+ console.log(`Invalid nonce for user ${publicKey}: expected ${currentNonce + 1}, got ${expectedNonce}`);
34
+ return false;
35
+ }
36
+ this.nonceCache.set(publicKey, expectedNonce);
37
+ console.log(`Incremented nonce to ${expectedNonce} for user ${publicKey}`);
38
+ return true;
39
+ }
40
+ /**
41
+ * Check if transaction is expired
42
+ */
43
+ isTransactionExpired(timestamp) {
44
+ const now = Date.now();
45
+ const age = now - timestamp;
46
+ return age > this.expirationWindow;
47
+ }
48
+ /**
49
+ * Create cache key for replay protection
50
+ */
51
+ createCacheKey(publicKey, nonce, txHash) {
52
+ return `${publicKey}:${nonce}:${txHash}`;
53
+ }
54
+ /**
55
+ * Check if transaction is in replay cache
56
+ */
57
+ isTransactionReplayed(publicKey, nonce, txHash) {
58
+ const cacheKey = this.createCacheKey(publicKey, nonce, txHash);
59
+ const entry = this.replayCache.get(cacheKey);
60
+ if (!entry) {
61
+ return false;
62
+ }
63
+ // Check if transaction is expired
64
+ if (this.isTransactionExpired(entry.timestamp)) {
65
+ this.replayCache.delete(cacheKey);
66
+ return false;
67
+ }
68
+ return true;
69
+ }
70
+ /**
71
+ * Add transaction to replay cache
72
+ */
73
+ addTransactionToCache(publicKey, nonce, txHash) {
74
+ const cacheKey = this.createCacheKey(publicKey, nonce, txHash);
75
+ const entry = {
76
+ publicKey,
77
+ nonce,
78
+ txHash,
79
+ timestamp: Date.now()
80
+ };
81
+ this.replayCache.set(cacheKey, entry);
82
+ console.log(`Added transaction to replay cache: ${cacheKey}`);
83
+ }
84
+ /**
85
+ * Validate complete transaction data
86
+ */
87
+ validateTransaction(txData) {
88
+ // Check timestamp expiration
89
+ if (this.isTransactionExpired(txData.timestamp)) {
90
+ return {
91
+ isValid: false,
92
+ error: 'Transaction has expired'
93
+ };
94
+ }
95
+ // Check nonce sequence
96
+ if (!this.validateAndIncrementNonce(txData.publicKey, txData.nonce)) {
97
+ return {
98
+ isValid: false,
99
+ error: `Invalid nonce sequence. Expected ${this.getCurrentNonce(txData.publicKey) + 1}, got ${txData.nonce}`
100
+ };
101
+ }
102
+ // Check replay cache
103
+ if (this.isTransactionReplayed(txData.publicKey, txData.nonce, txData.txHash)) {
104
+ return {
105
+ isValid: false,
106
+ error: 'Transaction has already been processed'
107
+ };
108
+ }
109
+ // Add to replay cache
110
+ this.addTransactionToCache(txData.publicKey, txData.nonce, txData.txHash);
111
+ return {
112
+ isValid: true,
113
+ error: ''
114
+ };
115
+ }
116
+ /**
117
+ * Get nonce statistics for a user
118
+ */
119
+ getNonceStats(publicKey) {
120
+ const currentNonce = this.getCurrentNonce(publicKey);
121
+ let totalTransactions = 0;
122
+ // Count transactions in cache for this user
123
+ for (const [key, entry] of this.replayCache.entries()) {
124
+ if (key.startsWith(`${publicKey}:`)) {
125
+ totalTransactions++;
126
+ }
127
+ }
128
+ return {
129
+ currentNonce,
130
+ totalTransactions
131
+ };
132
+ }
133
+ /**
134
+ * Clean up old entries from replay cache
135
+ */
136
+ cleanupExpiredEntries() {
137
+ const now = Date.now();
138
+ const expiredKeys = [];
139
+ for (const [key, entry] of this.replayCache.entries()) {
140
+ if (this.isTransactionExpired(entry.timestamp)) {
141
+ expiredKeys.push(key);
142
+ }
143
+ }
144
+ for (const key of expiredKeys) {
145
+ this.replayCache.delete(key);
146
+ }
147
+ if (expiredKeys.length > 0) {
148
+ console.log(`Cleaned up ${expiredKeys.length} expired replay cache entries`);
149
+ }
150
+ }
151
+ /**
152
+ * Start cleanup task
153
+ */
154
+ startCleanupTask() {
155
+ // Run cleanup every 5 minutes
156
+ this.cleanupInterval = setInterval(() => {
157
+ this.cleanupExpiredEntries();
158
+ }, 5 * 60 * 1000);
159
+ }
160
+ /**
161
+ * Stop cleanup task
162
+ */
163
+ stopCleanupTask() {
164
+ if (this.cleanupInterval) {
165
+ clearInterval(this.cleanupInterval);
166
+ this.cleanupInterval = null;
167
+ }
168
+ }
169
+ /**
170
+ * Get cache statistics
171
+ */
172
+ getCacheStats() {
173
+ return {
174
+ totalEntries: this.replayCache.size,
175
+ nonceCacheSize: this.nonceCache.size,
176
+ expirationWindow: this.expirationWindow
177
+ };
178
+ }
179
+ /**
180
+ * Clear all cache data (for testing)
181
+ */
182
+ clearCache() {
183
+ this.nonceCache.clear();
184
+ this.replayCache.clear();
185
+ console.log('Cleared all replay protection cache data');
186
+ }
187
+ }
188
+ exports.ReplayProtection = ReplayProtection;
189
+ //# sourceMappingURL=replay-protection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay-protection.js","sourceRoot":"","sources":["../../relayer/replay-protection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * SolVoid Secure Relayer Service
4
+ *
5
+ * This is a production-grade relayer with proper security controls:
6
+ * - Authentication with registered public keys
7
+ * - Rate limiting and DOS protection
8
+ * - Transaction validation and replay protection
9
+ * - Economic incentives with slashing conditions
10
+ * - Comprehensive logging and monitoring
11
+ */
12
+ declare class SecureRelayerService {
13
+ private app;
14
+ private connection;
15
+ private registeredRelayers;
16
+ private rateLimits;
17
+ private processedTransactions;
18
+ private metrics;
19
+ private keyManager;
20
+ private replayProtection;
21
+ private usedSignatures;
22
+ constructor();
23
+ private generatePrivateKey;
24
+ private setupMiddleware;
25
+ private setupRoutes;
26
+ private healthCheck;
27
+ private getNetworkStatus;
28
+ private registerRelayer;
29
+ private authenticate;
30
+ private relayTransaction;
31
+ private validateTransaction;
32
+ private broadcastTransaction;
33
+ private verifySignature;
34
+ private cleanupSignatures;
35
+ private checkRateLimit;
36
+ private measureLatency;
37
+ private updateMetrics;
38
+ private getRelayerStatus;
39
+ private getMetrics;
40
+ private slashRelayer;
41
+ private errorHandler;
42
+ private startCleanupTasks;
43
+ start(): void;
44
+ }
45
+ export { SecureRelayerService };
46
+ //# sourceMappingURL=secure-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secure-service.d.ts","sourceRoot":"","sources":["../../relayer/secure-service.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG;AAiEH,cAAM,oBAAoB;IACtB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,kBAAkB,CAA6C;IACvE,OAAO,CAAC,UAAU,CAA0C;IAC5D,OAAO,CAAC,qBAAqB,CAA0B;IACvD,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,cAAc,CAAkC;;IAsBxD,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,WAAW;YAwBL,WAAW;YAeX,gBAAgB;YAqBhB,eAAe;IA2C7B,OAAO,CAAC,YAAY;YA0DN,gBAAgB;YA8FhB,mBAAmB;YAiCnB,oBAAoB;IAgClC,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,cAAc;YAoBR,cAAc;IAU5B,OAAO,CAAC,aAAa;YAkBP,gBAAgB;YAoBhB,UAAU;YASV,YAAY;IAwB1B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,iBAAiB;IA+BlB,KAAK;CAQf;AAMD,OAAO,EAAE,oBAAoB,EAAE,CAAC"}