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.
- package/README.md +116 -258
- package/SECURITY.md +27 -24
- package/dist/cli/commands/ghost.d.ts +3 -3
- package/dist/cli/commands/ghost.d.ts.map +1 -1
- package/dist/cli/commands/ghost.js +67 -91
- package/dist/cli/commands/ghost.js.map +1 -1
- package/dist/cli/commands/rescue.d.ts +4 -0
- package/dist/cli/commands/rescue.d.ts.map +1 -1
- package/dist/cli/commands/rescue.js +102 -199
- package/dist/cli/commands/rescue.js.map +1 -1
- package/dist/cli/demo-scan.js +48 -130
- package/dist/cli/demo-scan.js.map +1 -1
- package/dist/cli/solvoid-scan.d.ts +4 -3
- package/dist/cli/solvoid-scan.d.ts.map +1 -1
- package/dist/cli/solvoid-scan.js +55 -46
- package/dist/cli/solvoid-scan.js.map +1 -1
- package/dist/cli/utils/asset-scanner.d.ts.map +1 -1
- package/dist/cli/utils/asset-scanner.js +7 -5
- package/dist/cli/utils/asset-scanner.js.map +1 -1
- package/dist/cli/utils/badge-generator.d.ts.map +1 -1
- package/dist/cli/utils/badge-generator.js +11 -9
- package/dist/cli/utils/badge-generator.js.map +1 -1
- package/dist/cli/utils/enhanced-monitoring.d.ts +13 -0
- package/dist/cli/utils/enhanced-monitoring.d.ts.map +1 -0
- package/dist/cli/utils/enhanced-monitoring.js +46 -0
- package/dist/cli/utils/enhanced-monitoring.js.map +1 -0
- package/dist/cli/utils/enhanced-pyth-feed.d.ts +20 -0
- package/dist/cli/utils/enhanced-pyth-feed.d.ts.map +1 -0
- package/dist/cli/utils/enhanced-pyth-feed.js +64 -0
- package/dist/cli/utils/enhanced-pyth-feed.js.map +1 -0
- package/dist/cli/utils/enhanced-threat-intel.d.ts +20 -0
- package/dist/cli/utils/enhanced-threat-intel.d.ts.map +1 -0
- package/dist/cli/utils/enhanced-threat-intel.js +57 -0
- package/dist/cli/utils/enhanced-threat-intel.js.map +1 -0
- package/dist/cli/utils/env-validator.d.ts.map +1 -1
- package/dist/cli/utils/env-validator.js +6 -3
- package/dist/cli/utils/env-validator.js.map +1 -1
- package/dist/cli/utils/jito-mev-bundle.d.ts +9 -0
- package/dist/cli/utils/jito-mev-bundle.d.ts.map +1 -0
- package/dist/cli/utils/jito-mev-bundle.js +40 -0
- package/dist/cli/utils/jito-mev-bundle.js.map +1 -0
- package/dist/cli/utils/rescue-engine.d.ts +0 -4
- package/dist/cli/utils/rescue-engine.d.ts.map +1 -1
- package/dist/cli/utils/rescue-engine.js +28 -46
- package/dist/cli/utils/rescue-engine.js.map +1 -1
- package/dist/cli/utils/shadow-bridge.d.ts +20 -0
- package/dist/cli/utils/shadow-bridge.d.ts.map +1 -0
- package/dist/cli/utils/shadow-bridge.js +33 -0
- package/dist/cli/utils/shadow-bridge.js.map +1 -0
- package/dist/relayer/key-manager.d.ts +52 -0
- package/dist/relayer/key-manager.d.ts.map +1 -0
- package/dist/relayer/key-manager.js +356 -0
- package/dist/relayer/key-manager.js.map +1 -0
- package/dist/relayer/replay-protection.d.ts +94 -0
- package/dist/relayer/replay-protection.d.ts.map +1 -0
- package/dist/relayer/replay-protection.js +189 -0
- package/dist/relayer/replay-protection.js.map +1 -0
- package/dist/relayer/secure-service.d.ts +46 -0
- package/dist/relayer/secure-service.d.ts.map +1 -0
- package/dist/relayer/secure-service.js +538 -0
- package/dist/relayer/secure-service.js.map +1 -0
- package/dist/relayer/service.d.ts +25 -0
- package/dist/relayer/service.d.ts.map +1 -0
- package/dist/relayer/service.js +380 -0
- package/dist/relayer/service.js.map +1 -0
- package/dist/sdk/client.d.ts +42 -8
- package/dist/sdk/client.d.ts.map +1 -1
- package/dist/sdk/client.js +115 -242
- package/dist/sdk/client.js.map +1 -1
- package/dist/sdk/crypto/poseidon.d.ts +4 -4
- package/dist/sdk/crypto/poseidon.d.ts.map +1 -1
- package/dist/sdk/crypto/poseidon.js +34 -17
- package/dist/sdk/crypto/poseidon.js.map +1 -1
- package/dist/sdk/integrity.d.ts +3 -3
- package/dist/sdk/integrity.d.ts.map +1 -1
- package/dist/sdk/integrity.js +2 -2
- package/dist/sdk/integrity.js.map +1 -1
- package/dist/sdk/passport/manager.d.ts +15 -3
- package/dist/sdk/passport/manager.d.ts.map +1 -1
- package/dist/sdk/passport/manager.js +30 -17
- package/dist/sdk/passport/manager.js.map +1 -1
- package/dist/sdk/pipeline.d.ts.map +1 -1
- package/dist/sdk/pipeline.js +69 -12
- package/dist/sdk/pipeline.js.map +1 -1
- package/dist/sdk/polyfill.d.ts +8 -0
- package/dist/sdk/polyfill.d.ts.map +1 -0
- package/dist/sdk/polyfill.js +21 -0
- package/dist/sdk/polyfill.js.map +1 -0
- package/dist/sdk/privacy/shield.d.ts +46 -0
- package/dist/sdk/privacy/shield.d.ts.map +1 -1
- package/dist/sdk/privacy/shield.js +117 -35
- package/dist/sdk/privacy/shield.js.map +1 -1
- package/dist/sdk/privacy-engine.d.ts +17 -3
- package/dist/sdk/privacy-engine.d.ts.map +1 -1
- package/dist/sdk/privacy-engine.js +46 -20
- package/dist/sdk/privacy-engine.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge-generator.d.ts","sourceRoot":"","sources":["../../../cli/utils/badge-generator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"badge-generator.d.ts","sourceRoot":"","sources":["../../../cli/utils/badge-generator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAI9D,qBAAa,cAAc;IACzB;;OAEG;WACU,QAAQ,CACnB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,YAAY,CAAC;IA0BxB,OAAO,CAAC,MAAM,CAAC,YAAY;IAO3B,OAAO,CAAC,MAAM,CAAC,WAAW;mBASL,aAAa;IA+BlC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAiBlC,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAe/B,OAAO,CAAC,MAAM,CAAC,YAAY;IAY3B,OAAO,CAAC,MAAM,CAAC,aAAa;IAqB5B,OAAO,CAAC,MAAM,CAAC,eAAe;IAmB9B;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM;IAkB5D;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG;QACrC,KAAK,EAAE,OAAO,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd;IAoED,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAQ3C,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAsBnE,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAM9C,OAAO,CAAC,MAAM,CAAC,gBAAgB;CAOhC"}
|
|
@@ -7,14 +7,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.BadgeGenerator = void 0;
|
|
9
9
|
const crypto_1 = __importDefault(require("crypto"));
|
|
10
|
+
const poseidon_1 = require("../../sdk/crypto/poseidon");
|
|
10
11
|
class BadgeGenerator {
|
|
11
12
|
/**
|
|
12
13
|
* Generate verifiable privacy badge
|
|
13
14
|
*/
|
|
14
15
|
static async generate(address, ghostScore) {
|
|
15
16
|
const badgeType = this.getBadgeType(ghostScore.score);
|
|
16
|
-
// Generate
|
|
17
|
-
const proofData = this.generateProof({
|
|
17
|
+
// Generate real Poseidon-based commitment (ZK-ready)
|
|
18
|
+
const proofData = await this.generateProof({
|
|
18
19
|
score: ghostScore.score,
|
|
19
20
|
grade: ghostScore.grade,
|
|
20
21
|
timestamp: Date.now(),
|
|
@@ -50,19 +51,20 @@ class BadgeGenerator {
|
|
|
50
51
|
.digest('hex')
|
|
51
52
|
.slice(0, 16);
|
|
52
53
|
}
|
|
53
|
-
static generateProof(input) {
|
|
54
|
-
//
|
|
54
|
+
static async generateProof(input) {
|
|
55
|
+
// REAL: Use Poseidon commitment for privacy-preserving proof
|
|
56
|
+
const timestampBuffer = Buffer.alloc(32);
|
|
57
|
+
timestampBuffer.writeBigUInt64BE(BigInt(input.timestamp), 0);
|
|
58
|
+
const addressHashBuffer = Buffer.from(input.addressHash, 'hex');
|
|
59
|
+
// Compute Poseidon(addressHash, timestamp, score)
|
|
60
|
+
const commitment = await poseidon_1.PoseidonHasher.computeCommitment(addressHashBuffer, timestampBuffer, BigInt(input.score));
|
|
55
61
|
const proofData = {
|
|
56
|
-
commitment:
|
|
57
|
-
.createHash('sha256')
|
|
58
|
-
.update(JSON.stringify(input))
|
|
59
|
-
.digest('hex'),
|
|
62
|
+
commitment: commitment.toString('hex'),
|
|
60
63
|
timestamp: input.timestamp,
|
|
61
64
|
scoreThreshold: input.score >= 90 ? 'ELITE' :
|
|
62
65
|
input.score >= 70 ? 'HIGH' :
|
|
63
66
|
input.score >= 50 ? 'MEDIUM' : 'LOW',
|
|
64
67
|
verified: true,
|
|
65
|
-
// Don't include actual score or address!
|
|
66
68
|
};
|
|
67
69
|
return Buffer.from(JSON.stringify(proofData)).toString('base64');
|
|
68
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge-generator.js","sourceRoot":"","sources":["../../../cli/utils/badge-generator.ts"],"names":[],"mappings":";AAAA,+BAA+B;AAC/B,mDAAmD;;;;;;AAGnD,oDAA4B;
|
|
1
|
+
{"version":3,"file":"badge-generator.js","sourceRoot":"","sources":["../../../cli/utils/badge-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PublicKey } from '@solana/web3.js';
|
|
2
|
+
import { EventEmitter } from 'events';
|
|
3
|
+
export declare class EnhancedMonitoringSystem extends EventEmitter {
|
|
4
|
+
private monitoringSessions;
|
|
5
|
+
private alertHistory;
|
|
6
|
+
private webhookEndpoints;
|
|
7
|
+
private dashboardData;
|
|
8
|
+
private config;
|
|
9
|
+
constructor();
|
|
10
|
+
startMonitoring(address: PublicKey | string, options?: any): Promise<any>;
|
|
11
|
+
private _initializeWebhooks;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=enhanced-monitoring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced-monitoring.d.ts","sourceRoot":"","sources":["../../../cli/utils/enhanced-monitoring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,qBAAa,wBAAyB,SAAQ,YAAY;IACtD,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,MAAM,CAAM;;IAiBd,eAAe,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,EAAE,OAAO,GAAE,GAAQ;IAkBpE,OAAO,CAAC,mBAAmB;CAG9B"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EnhancedMonitoringSystem = void 0;
|
|
4
|
+
const events_1 = require("events");
|
|
5
|
+
class EnhancedMonitoringSystem extends events_1.EventEmitter {
|
|
6
|
+
constructor() {
|
|
7
|
+
super();
|
|
8
|
+
this.monitoringSessions = new Map();
|
|
9
|
+
this.alertHistory = [];
|
|
10
|
+
this.webhookEndpoints = [];
|
|
11
|
+
this.dashboardData = new Map();
|
|
12
|
+
this.config = {
|
|
13
|
+
checkInterval: 30000,
|
|
14
|
+
alertThresholds: {
|
|
15
|
+
transactionCount: 5,
|
|
16
|
+
valueChange: 1000,
|
|
17
|
+
failedTransactions: 3
|
|
18
|
+
},
|
|
19
|
+
retentionPeriod: 86400000,
|
|
20
|
+
maxAlerts: 1000
|
|
21
|
+
};
|
|
22
|
+
this._initializeWebhooks();
|
|
23
|
+
}
|
|
24
|
+
async startMonitoring(address, options = {}) {
|
|
25
|
+
const addressStr = address.toString();
|
|
26
|
+
if (this.monitoringSessions.has(addressStr))
|
|
27
|
+
return this.monitoringSessions.get(addressStr);
|
|
28
|
+
const session = {
|
|
29
|
+
address: addressStr,
|
|
30
|
+
startTime: Date.now(),
|
|
31
|
+
lastCheck: Date.now(),
|
|
32
|
+
transactionCount: 0,
|
|
33
|
+
alerts: [],
|
|
34
|
+
status: 'active',
|
|
35
|
+
options
|
|
36
|
+
};
|
|
37
|
+
this.monitoringSessions.set(addressStr, session);
|
|
38
|
+
return session;
|
|
39
|
+
}
|
|
40
|
+
_initializeWebhooks() {
|
|
41
|
+
if (process.env.SLACK_WEBHOOK_URL)
|
|
42
|
+
this.webhookEndpoints.push({ url: process.env.SLACK_WEBHOOK_URL });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.EnhancedMonitoringSystem = EnhancedMonitoringSystem;
|
|
46
|
+
//# sourceMappingURL=enhanced-monitoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced-monitoring.js","sourceRoot":"","sources":["../../../cli/utils/enhanced-monitoring.ts"],"names":[],"mappings":";;;AAEA,mCAAsC;AAEtC,MAAa,wBAAyB,SAAQ,qBAAY;IAOtD;QACI,KAAK,EAAE,CAAC;QAPJ,uBAAkB,GAAqB,IAAI,GAAG,EAAE,CAAC;QACjD,iBAAY,GAAU,EAAE,CAAC;QACzB,qBAAgB,GAAU,EAAE,CAAC;QAC7B,kBAAa,GAAqB,IAAI,GAAG,EAAE,CAAC;QAKhD,IAAI,CAAC,MAAM,GAAG;YACV,aAAa,EAAE,KAAK;YACpB,eAAe,EAAE;gBACb,gBAAgB,EAAE,CAAC;gBACnB,WAAW,EAAE,IAAI;gBACjB,kBAAkB,EAAE,CAAC;aACxB;YACD,eAAe,EAAE,QAAQ;YACzB,SAAS,EAAE,IAAI;SAClB,CAAC;QACF,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAA2B,EAAE,UAAe,EAAE;QAChE,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE5F,MAAM,OAAO,GAAG;YACZ,OAAO,EAAE,UAAU;YACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,gBAAgB,EAAE,CAAC;YACnB,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,QAAQ;YAChB,OAAO;SACV,CAAC;QAEF,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACjD,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,mBAAmB;QACvB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB;YAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC1G,CAAC;CACJ;AA3CD,4DA2CC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Connection, PublicKey } from '@solana/web3.js';
|
|
2
|
+
export interface PriceData {
|
|
3
|
+
usd: number;
|
|
4
|
+
source: string;
|
|
5
|
+
timestamp: number;
|
|
6
|
+
confidence: number;
|
|
7
|
+
priceFeed?: string;
|
|
8
|
+
publishTime?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare class EnhancedPythPriceFeed {
|
|
11
|
+
private connection;
|
|
12
|
+
private pythConnection;
|
|
13
|
+
private priceCache;
|
|
14
|
+
private cacheExpiry;
|
|
15
|
+
private priceFeedMappings;
|
|
16
|
+
constructor(connection: Connection);
|
|
17
|
+
private initializePyth;
|
|
18
|
+
getPrice(mintAddress: PublicKey): Promise<PriceData>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=enhanced-pyth-feed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced-pyth-feed.d.ts","sourceRoot":"","sources":["../../../cli/utils/enhanced-pyth-feed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGxD,MAAM,WAAW,SAAS;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,UAAU,CAAmE;IACrF,OAAO,CAAC,WAAW,CAAS;IAE5B,OAAO,CAAC,iBAAiB,CAStB;gBAES,UAAU,EAAE,UAAU;YAIpB,cAAc;IAStB,QAAQ,CAAC,WAAW,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;CAgC7D"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EnhancedPythPriceFeed = void 0;
|
|
4
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
5
|
+
const { PythHttpClient, getPythProgramKeyForCluster } = require('@pythnetwork/client');
|
|
6
|
+
class EnhancedPythPriceFeed {
|
|
7
|
+
constructor(connection) {
|
|
8
|
+
this.pythConnection = null;
|
|
9
|
+
this.priceCache = new Map();
|
|
10
|
+
this.cacheExpiry = 30000; // 30 seconds
|
|
11
|
+
this.priceFeedMappings = new Map([
|
|
12
|
+
// SOL
|
|
13
|
+
['So11111111111111111111111111111111111111112', '0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c27bcde8'],
|
|
14
|
+
// USDC
|
|
15
|
+
['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', '0xeaa020c61cc479712813461ce153894a96a6c003b1a9d3b8bd7c9070d06068e30'],
|
|
16
|
+
// USDT
|
|
17
|
+
['Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB', '0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43'],
|
|
18
|
+
// BONK
|
|
19
|
+
['DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263', '0xd2aeea1b1016cd6453782546b7c0de2af3ebba6d5a2a0ecb12baa1b6bd3a5d5'],
|
|
20
|
+
]);
|
|
21
|
+
this.connection = connection;
|
|
22
|
+
}
|
|
23
|
+
async initializePyth() {
|
|
24
|
+
try {
|
|
25
|
+
const pythPublicKey = getPythProgramKeyForCluster('mainnet-beta');
|
|
26
|
+
this.pythConnection = new PythHttpClient(this.connection, pythPublicKey);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
console.warn('Failed to initialize Pyth:', error.message);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async getPrice(mintAddress) {
|
|
33
|
+
const cacheKey = mintAddress.toString();
|
|
34
|
+
const cached = this.priceCache.get(cacheKey);
|
|
35
|
+
if (cached && Date.now() - cached.timestamp < this.cacheExpiry) {
|
|
36
|
+
return cached.price;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
if (!this.pythConnection)
|
|
40
|
+
await this.initializePyth();
|
|
41
|
+
const feedAddress = this.priceFeedMappings.get(cacheKey);
|
|
42
|
+
if (!feedAddress)
|
|
43
|
+
throw new Error(`No mapping for ${cacheKey}`);
|
|
44
|
+
const data = await this.pythConnection.getAssetPrices([new web3_js_1.PublicKey(feedAddress)]);
|
|
45
|
+
const price = data[0];
|
|
46
|
+
const result = {
|
|
47
|
+
usd: price.price,
|
|
48
|
+
source: 'pyth',
|
|
49
|
+
timestamp: Date.now(),
|
|
50
|
+
confidence: 1.0,
|
|
51
|
+
publishTime: Date.now()
|
|
52
|
+
};
|
|
53
|
+
this.priceCache.set(cacheKey, { price: result, timestamp: Date.now() });
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
if (cached)
|
|
58
|
+
return cached.price;
|
|
59
|
+
return { usd: 0, source: 'error', timestamp: Date.now(), confidence: 0 };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.EnhancedPythPriceFeed = EnhancedPythPriceFeed;
|
|
64
|
+
//# sourceMappingURL=enhanced-pyth-feed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced-pyth-feed.js","sourceRoot":"","sources":["../../../cli/utils/enhanced-pyth-feed.ts"],"names":[],"mappings":";;;AAAA,6CAAwD;AACxD,MAAM,EAAE,cAAc,EAAE,2BAA2B,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAWvF,MAAa,qBAAqB;IAiB9B,YAAY,UAAsB;QAf1B,mBAAc,GAAQ,IAAI,CAAC;QAC3B,eAAU,GAAyD,IAAI,GAAG,EAAE,CAAC;QAC7E,gBAAW,GAAG,KAAK,CAAC,CAAC,aAAa;QAElC,sBAAiB,GAAwB,IAAI,GAAG,CAAC;YACrD,MAAM;YACN,CAAC,6CAA6C,EAAE,oEAAoE,CAAC;YACrH,OAAO;YACP,CAAC,8CAA8C,EAAE,qEAAqE,CAAC;YACvH,OAAO;YACP,CAAC,8CAA8C,EAAE,oEAAoE,CAAC;YACtH,OAAO;YACP,CAAC,8CAA8C,EAAE,mEAAmE,CAAC;SACxH,CAAC,CAAC;QAGC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,cAAc;QACxB,IAAI,CAAC;YACD,MAAM,aAAa,GAAG,2BAA2B,CAAC,cAAc,CAAC,CAAC;YAClE,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,WAAsB;QACjC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE7C,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7D,OAAO,MAAM,CAAC,KAAK,CAAC;QACxB,CAAC;QAED,IAAI,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,cAAc;gBAAE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAEtD,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzD,IAAI,CAAC,WAAW;gBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,EAAE,CAAC,CAAC;YAEhE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,IAAI,mBAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpF,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAEtB,MAAM,MAAM,GAAc;gBACtB,GAAG,EAAE,KAAK,CAAC,KAAK;gBAChB,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,UAAU,EAAE,GAAG;gBACf,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;aAC1B,CAAC;YAEF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxE,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC,KAAK,CAAC;YAChC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QAC7E,CAAC;IACL,CAAC;CACJ;AA9DD,sDA8DC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Connection, PublicKey } from '@solana/web3.js';
|
|
2
|
+
export interface ThreatReport {
|
|
3
|
+
type: string;
|
|
4
|
+
severity: 'HIGH' | 'MEDIUM' | 'LOW';
|
|
5
|
+
description: string;
|
|
6
|
+
source: string;
|
|
7
|
+
timestamp: number;
|
|
8
|
+
}
|
|
9
|
+
export declare class EnhancedThreatIntelligence {
|
|
10
|
+
private localDatabase;
|
|
11
|
+
private cache;
|
|
12
|
+
private CACHE_EXPIRY;
|
|
13
|
+
isThreatDetected(address: PublicKey | string): Promise<boolean>;
|
|
14
|
+
getThreatReports(address: PublicKey | string): Promise<ThreatReport[]>;
|
|
15
|
+
/**
|
|
16
|
+
* Identifies if a transaction is part of a sandwich attack or known drainer pattern
|
|
17
|
+
*/
|
|
18
|
+
analyzeTransactionPattern(txHash: string, connection: Connection): Promise<boolean>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=enhanced-threat-intel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced-threat-intel.d.ts","sourceRoot":"","sources":["../../../cli/utils/enhanced-threat-intel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,0BAA0B;IACnC,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,KAAK,CAA4D;IACzE,OAAO,CAAC,YAAY,CAAU;IAExB,gBAAgB,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB/D,gBAAgB,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAK5E;;OAEG;IACG,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;CAc5F"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.EnhancedThreatIntelligence = void 0;
|
|
7
|
+
const cross_fetch_1 = __importDefault(require("cross-fetch"));
|
|
8
|
+
class EnhancedThreatIntelligence {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.localDatabase = new Map();
|
|
11
|
+
this.cache = new Map();
|
|
12
|
+
this.CACHE_EXPIRY = 600000; // 10 minutes
|
|
13
|
+
}
|
|
14
|
+
async isThreatDetected(address) {
|
|
15
|
+
const addressStr = address.toString();
|
|
16
|
+
// Check local database (Community reports)
|
|
17
|
+
if (this.localDatabase.has(addressStr)) {
|
|
18
|
+
const reports = this.localDatabase.get(addressStr);
|
|
19
|
+
if (reports.some(r => r.severity === 'HIGH'))
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
// Check external APIs (Solscan Risk API)
|
|
23
|
+
try {
|
|
24
|
+
const response = await (0, cross_fetch_1.default)(`https://api.solscan.io/v2/address/risk?address=${addressStr}`);
|
|
25
|
+
const data = await response.json();
|
|
26
|
+
if (data?.data?.risk_score > 70)
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// Ignore API errors and fallback to local analysis
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
async getThreatReports(address) {
|
|
35
|
+
const addressStr = address.toString();
|
|
36
|
+
return this.localDatabase.get(addressStr) || [];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Identifies if a transaction is part of a sandwich attack or known drainer pattern
|
|
40
|
+
*/
|
|
41
|
+
async analyzeTransactionPattern(txHash, connection) {
|
|
42
|
+
try {
|
|
43
|
+
const tx = await connection.getTransaction(txHash, { maxSupportedTransactionVersion: 0 });
|
|
44
|
+
if (!tx)
|
|
45
|
+
return false;
|
|
46
|
+
// Look for standard drainer instruction patterns
|
|
47
|
+
const logs = tx.meta?.logMessages || [];
|
|
48
|
+
const isDrainer = logs.some(log => log.includes('Program log: Instruction: Transfer') && logs.length < 5);
|
|
49
|
+
return isDrainer;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.EnhancedThreatIntelligence = EnhancedThreatIntelligence;
|
|
57
|
+
//# sourceMappingURL=enhanced-threat-intel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced-threat-intel.js","sourceRoot":"","sources":["../../../cli/utils/enhanced-threat-intel.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAgC;AAWhC,MAAa,0BAA0B;IAAvC;QACY,kBAAa,GAAgC,IAAI,GAAG,EAAE,CAAC;QACvD,UAAK,GAAkD,IAAI,GAAG,EAAE,CAAC;QACjE,iBAAY,GAAG,MAAM,CAAC,CAAC,aAAa;IA6ChD,CAAC;IA3CG,KAAK,CAAC,gBAAgB,CAAC,OAA2B;QAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAEtC,2CAA2C;QAC3C,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC;YACpD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC9D,CAAC;QAED,yCAAyC;QACzC,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAA,qBAAK,EAAC,kDAAkD,UAAU,EAAE,CAAC,CAAC;YAC7F,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,IAAI,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE;gBAAE,OAAO,IAAI,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACL,mDAAmD;QACvD,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAA2B;QAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,yBAAyB,CAAC,MAAc,EAAE,UAAsB;QAClE,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,8BAA8B,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1F,IAAI,CAAC,EAAE;gBAAE,OAAO,KAAK,CAAC;YAEtB,iDAAiD;YACjD,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,oCAAoC,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAE1G,OAAO,SAAS,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;CACJ;AAhDD,gEAgDC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-validator.d.ts","sourceRoot":"","sources":["../../../cli/utils/env-validator.ts"],"names":[],"mappings":"AAeA,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,cAAM,oBAAoB;IACxB,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,gBAAgB,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAW;;IA6I3B,QAAQ,IAAI,gBAAgB;
|
|
1
|
+
{"version":3,"file":"env-validator.d.ts","sourceRoot":"","sources":["../../../cli/utils/env-validator.ts"],"names":[],"mappings":"AAeA,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,cAAM,oBAAoB;IACxB,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,gBAAgB,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAW;;IA6I3B,QAAQ,IAAI,gBAAgB;IAgD5B,eAAe,IAAI,gBAAgB;CA+BpC;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -72,11 +72,11 @@ class EnvironmentValidator {
|
|
|
72
72
|
description: 'Third backup RPC endpoint (Alchemy)'
|
|
73
73
|
},
|
|
74
74
|
'MERKLE_TREE_LEVELS': {
|
|
75
|
-
default: '
|
|
75
|
+
default: '8',
|
|
76
76
|
description: 'Merkle tree levels for ZK commitments',
|
|
77
77
|
validator: (value) => {
|
|
78
78
|
const num = parseInt(value);
|
|
79
|
-
return num >=
|
|
79
|
+
return num >= 8 && num <= 30;
|
|
80
80
|
}
|
|
81
81
|
},
|
|
82
82
|
'MAX_RETRY_ATTEMPTS': {
|
|
@@ -182,14 +182,17 @@ class EnvironmentValidator {
|
|
|
182
182
|
this.validationErrors = [];
|
|
183
183
|
this.warnings = [];
|
|
184
184
|
// Check required variables
|
|
185
|
+
const validatedConfig = {};
|
|
185
186
|
for (const varName of this.requiredVars) {
|
|
186
187
|
const value = process.env[varName];
|
|
187
188
|
if (!value || value.trim() === '') {
|
|
188
189
|
this.validationErrors.push(`Required environment variable ${varName} is missing or empty`);
|
|
189
190
|
}
|
|
191
|
+
else {
|
|
192
|
+
validatedConfig[varName] = value;
|
|
193
|
+
}
|
|
190
194
|
}
|
|
191
195
|
// Check optional variables and apply defaults
|
|
192
|
-
const validatedConfig = {};
|
|
193
196
|
for (const [varName, config] of Object.entries(this.optionalVars)) {
|
|
194
197
|
const value = process.env[varName];
|
|
195
198
|
if (!value || value.trim() === '') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-validator.js","sourceRoot":"","sources":["../../../cli/utils/env-validator.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,iCAAiC;AACjC,iEAAiE;AACjE,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE/E,+CAAiC;AAEjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAehB,MAAM,oBAAoB;IAMxB;QACE,IAAI,CAAC,YAAY,GAAG;YAClB,oBAAoB;YACpB,eAAe;SAChB,CAAC;QAEF,IAAI,CAAC,YAAY,GAAG;YAClB,iBAAiB,EAAE;gBACjB,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,wCAAwC;aACtD;YACD,sBAAsB,EAAE;gBACtB,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,6BAA6B;aAC3C;YACD,iBAAiB,EAAE;gBACjB,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,kCAAkC;aAChD;YACD,qBAAqB,EAAE;gBACrB,OAAO,EAAE,qCAAqC;gBAC9C,WAAW,EAAE,2BAA2B;aACzC;YACD,qBAAqB,EAAE;gBACrB,OAAO,EAAE,6BAA6B;gBACtC,WAAW,EAAE,4BAA4B;aAC1C;YACD,qBAAqB,EAAE;gBACrB,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,qCAAqC;aACnD;YACD,oBAAoB,EAAE;gBACpB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"env-validator.js","sourceRoot":"","sources":["../../../cli/utils/env-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Transaction, Keypair } from '@solana/web3.js';
|
|
2
|
+
export declare class JitoMEVBundle {
|
|
3
|
+
private endpoints;
|
|
4
|
+
private currentEndpoint;
|
|
5
|
+
private bundleTip;
|
|
6
|
+
constructor();
|
|
7
|
+
executeRescueBundle(transactions: Transaction[], keypair: Keypair): Promise<any>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=jito-mev-bundle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jito-mev-bundle.d.ts","sourceRoot":"","sources":["../../../cli/utils/jito-mev-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,WAAW,EAAE,OAAO,EAAiB,MAAM,iBAAiB,CAAC;AAG7F,qBAAa,aAAa;IACtB,OAAO,CAAC,SAAS,CAMf;IAEF,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,SAAS,CAAkB;;IAM7B,mBAAmB,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO;CAoB1E"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.JitoMEVBundle = void 0;
|
|
7
|
+
const cross_fetch_1 = __importDefault(require("cross-fetch"));
|
|
8
|
+
class JitoMEVBundle {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.endpoints = {
|
|
11
|
+
mainnet: 'https://mainnet.block-engine.jito.wtf',
|
|
12
|
+
amsterdam: 'https://amsterdam.block-engine.jito.wtf',
|
|
13
|
+
frankfurt: 'https://frankfurt.block-engine.jito.wtf',
|
|
14
|
+
ny: 'https://ny.block-engine.jito.wtf',
|
|
15
|
+
tokyo: 'https://tokyo.block-engine.jito.wtf'
|
|
16
|
+
};
|
|
17
|
+
this.bundleTip = 100000; // 0.0001 SOL
|
|
18
|
+
this.currentEndpoint = this.endpoints.mainnet;
|
|
19
|
+
}
|
|
20
|
+
async executeRescueBundle(transactions, keypair) {
|
|
21
|
+
const encodedTransactions = transactions.map(tx => tx.serialize().toString('base64'));
|
|
22
|
+
const payload = {
|
|
23
|
+
jsonrpc: '2.0',
|
|
24
|
+
id: 1,
|
|
25
|
+
method: 'sendBundle',
|
|
26
|
+
params: [encodedTransactions]
|
|
27
|
+
};
|
|
28
|
+
const response = await (0, cross_fetch_1.default)(`${this.currentEndpoint}/api/v1/bundles`, {
|
|
29
|
+
method: 'POST',
|
|
30
|
+
headers: { 'Content-Type': 'application/json' },
|
|
31
|
+
body: JSON.stringify(payload)
|
|
32
|
+
});
|
|
33
|
+
const result = await response.json();
|
|
34
|
+
if (result.error)
|
|
35
|
+
throw new Error(result.error.message);
|
|
36
|
+
return result.result;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.JitoMEVBundle = JitoMEVBundle;
|
|
40
|
+
//# sourceMappingURL=jito-mev-bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jito-mev-bundle.js","sourceRoot":"","sources":["../../../cli/utils/jito-mev-bundle.ts"],"names":[],"mappings":";;;;;;AACA,8DAAgC;AAEhC,MAAa,aAAa;IAYtB;QAXQ,cAAS,GAAG;YAChB,OAAO,EAAE,uCAAuC;YAChD,SAAS,EAAE,yCAAyC;YACpD,SAAS,EAAE,yCAAyC;YACpD,EAAE,EAAE,kCAAkC;YACtC,KAAK,EAAE,qCAAqC;SAC/C,CAAC;QAGM,cAAS,GAAW,MAAM,CAAC,CAAC,aAAa;QAG7C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,YAA2B,EAAE,OAAgB;QACnE,MAAM,mBAAmB,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEtF,MAAM,OAAO,GAAG;YACZ,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,CAAC;YACL,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,CAAC,mBAAmB,CAAC;SAChC,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAA,qBAAK,EAAC,GAAG,IAAI,CAAC,eAAe,iBAAiB,EAAE;YACnE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAChC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,MAAM,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxD,OAAO,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC;CACJ;AApCD,sCAoCC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rescue-engine.d.ts","sourceRoot":"","sources":["../../../cli/utils/rescue-engine.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,UAAU,EACV,SAAS,EAGT,OAAO,EAIR,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"rescue-engine.d.ts","sourceRoot":"","sources":["../../../cli/utils/rescue-engine.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,UAAU,EACV,SAAS,EAGT,OAAO,EAIR,MAAM,iBAAiB,CAAC;AAKzB,UAAU,YAAY;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,SAAS,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC;IACZ,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAAY;gBAEjB,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM;IAKrD;;OAEG;IACG,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAmFtE;;OAEG;YACW,2BAA2B;IAiBzC;;OAEG;YACW,sBAAsB;IAoCpC;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAWtC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAWpC;;OAEG;YACW,kBAAkB;IAsChC;;OAEG;IACG,YAAY,CAChB,MAAM,EAAE,GAAG,EACX,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,GAAG,CAAA;KAAE,CAAC;CAqB7C"}
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.RescueEngine = void 0;
|
|
7
7
|
const web3_js_1 = require("@solana/web3.js");
|
|
8
|
+
const shield_1 = require("../../sdk/privacy/shield");
|
|
9
|
+
const jito_mev_bundle_1 = require("./jito-mev-bundle");
|
|
8
10
|
class RescueEngine {
|
|
9
11
|
constructor(connection, programId) {
|
|
10
12
|
this.connection = connection;
|
|
@@ -28,7 +30,7 @@ class RescueEngine {
|
|
|
28
30
|
const solInstruction = await this.buildSOLTransferInstruction(params.sourceKeypair.publicKey, params.destination, params.assets.sol.lamports, params.emergencyMode);
|
|
29
31
|
transaction.add(solInstruction);
|
|
30
32
|
// Step 3: Add shield instruction (ZK commitment)
|
|
31
|
-
const shieldInstruction = await this.buildShieldInstruction(params.destination, params.assets.
|
|
33
|
+
const shieldInstruction = await this.buildShieldInstruction(params.sourceKeypair, params.destination, params.assets.sol.lamports);
|
|
32
34
|
transaction.add(shieldInstruction);
|
|
33
35
|
// Get recent blockhash with commitment
|
|
34
36
|
const { blockhash, lastValidBlockHeight } = await this.connection.getLatestBlockhash('finalized');
|
|
@@ -40,7 +42,8 @@ class RescueEngine {
|
|
|
40
42
|
let signature;
|
|
41
43
|
if (params.useJitoBundle) {
|
|
42
44
|
// Use Jito MEV to front-run attackers
|
|
43
|
-
|
|
45
|
+
const jito = new jito_mev_bundle_1.JitoMEVBundle();
|
|
46
|
+
signature = await jito.executeRescueBundle([transaction], params.sourceKeypair);
|
|
44
47
|
}
|
|
45
48
|
else {
|
|
46
49
|
// Standard execution with max retries
|
|
@@ -84,20 +87,33 @@ class RescueEngine {
|
|
|
84
87
|
/**
|
|
85
88
|
* Build shield instruction for privacy
|
|
86
89
|
*/
|
|
87
|
-
async buildShieldInstruction(recipient,
|
|
88
|
-
//
|
|
89
|
-
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
const
|
|
90
|
+
async buildShieldInstruction(sourceKeypair, recipient, amount) {
|
|
91
|
+
// REAL: Generate real Poseidon commitment
|
|
92
|
+
const shield = new shield_1.PrivacyShield(this.connection, { version: "0.1.0", name: "solvoid", instructions: [] }, {}, this.programId.toString());
|
|
93
|
+
const commitmentData = await shield.generateCommitment(amount);
|
|
94
|
+
// Anchor discriminator for 'deposit'
|
|
95
|
+
const discriminator = Buffer.from([0xf2, 0x23, 0xc6, 0x89, 0x52, 0xe9, 0x2c, 0x46]);
|
|
96
|
+
const amountBuffer = Buffer.alloc(8);
|
|
97
|
+
amountBuffer.writeBigUInt64LE(BigInt(amount), 0);
|
|
98
|
+
// Find PDAs
|
|
99
|
+
const [statePda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("state")], this.programId);
|
|
100
|
+
const [vaultPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("vault")], this.programId);
|
|
101
|
+
const [rootHistoryPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("root_history")], this.programId);
|
|
102
|
+
return new web3_js_1.TransactionInstruction({
|
|
93
103
|
programId: this.programId,
|
|
94
104
|
keys: [
|
|
95
|
-
{ pubkey:
|
|
96
|
-
{ pubkey:
|
|
105
|
+
{ pubkey: statePda, isSigner: false, isWritable: true },
|
|
106
|
+
{ pubkey: rootHistoryPda, isSigner: false, isWritable: true },
|
|
107
|
+
{ pubkey: sourceKeypair.publicKey, isSigner: true, isWritable: true },
|
|
108
|
+
{ pubkey: vaultPda, isSigner: false, isWritable: true },
|
|
109
|
+
{ pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false },
|
|
97
110
|
],
|
|
98
|
-
data: Buffer.concat([
|
|
111
|
+
data: Buffer.concat([
|
|
112
|
+
discriminator,
|
|
113
|
+
Buffer.from(commitmentData.commitment, 'hex'),
|
|
114
|
+
amountBuffer
|
|
115
|
+
])
|
|
99
116
|
});
|
|
100
|
-
return instruction;
|
|
101
117
|
}
|
|
102
118
|
/**
|
|
103
119
|
* Create compute budget instruction
|
|
@@ -150,40 +166,6 @@ class RescueEngine {
|
|
|
150
166
|
}
|
|
151
167
|
throw lastError || new Error('Transaction failed after retries');
|
|
152
168
|
}
|
|
153
|
-
/**
|
|
154
|
-
* Execute via Jito MEV bundle (front-running)
|
|
155
|
-
*/
|
|
156
|
-
async executeViaJitoBundle(transaction, signer) {
|
|
157
|
-
// Jito bundle execution
|
|
158
|
-
// This would integrate with Jito's MEV service
|
|
159
|
-
// For now, fallback to regular execution with high priority
|
|
160
|
-
const jitoUrl = 'https://mainnet.block-engine.jito.wtf/api/v1/bundles';
|
|
161
|
-
try {
|
|
162
|
-
// Serialize and encode transaction
|
|
163
|
-
const serialized = transaction.serialize();
|
|
164
|
-
const encoded = Buffer.from(serialized).toString('base64');
|
|
165
|
-
// Submit bundle to Jito
|
|
166
|
-
const response = await fetch(jitoUrl, {
|
|
167
|
-
method: 'POST',
|
|
168
|
-
headers: { 'Content-Type': 'application/json' },
|
|
169
|
-
body: JSON.stringify({
|
|
170
|
-
jsonrpc: '2.0',
|
|
171
|
-
id: 1,
|
|
172
|
-
method: 'sendBundle',
|
|
173
|
-
params: [[encoded]]
|
|
174
|
-
})
|
|
175
|
-
});
|
|
176
|
-
const result = await response.json();
|
|
177
|
-
if (result.error) {
|
|
178
|
-
throw new Error(result.error.message);
|
|
179
|
-
}
|
|
180
|
-
return result.result;
|
|
181
|
-
}
|
|
182
|
-
catch (error) {
|
|
183
|
-
console.warn('Jito bundle failed, falling back to regular execution');
|
|
184
|
-
return this.executeWithRetries(transaction, signer, 5);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
169
|
/**
|
|
188
170
|
* Estimate rescue fees
|
|
189
171
|
*/
|