solvoid 1.0.0 → 1.1.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/dist/client.d.ts +73 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +281 -0
- package/dist/client.js.map +1 -0
- package/dist/crypto/poseidon.d.ts +124 -0
- package/dist/crypto/poseidon.d.ts.map +1 -0
- package/dist/crypto/poseidon.js +293 -0
- package/dist/crypto/poseidon.js.map +1 -0
- package/dist/events/bus.d.ts +44 -0
- package/dist/events/bus.d.ts.map +1 -0
- package/dist/events/bus.js +83 -0
- package/dist/events/bus.js.map +1 -0
- package/dist/{sdk/index.d.ts → index.d.ts} +2 -3
- package/dist/index.d.ts.map +1 -0
- package/dist/{sdk/index.js → index.js} +21 -11
- package/dist/index.js.map +1 -0
- package/dist/integrity.d.ts +371 -0
- package/dist/integrity.d.ts.map +1 -0
- package/dist/integrity.js +260 -0
- package/dist/integrity.js.map +1 -0
- package/dist/network/shadow-rpc.d.ts +36 -0
- package/dist/network/shadow-rpc.d.ts.map +1 -0
- package/dist/network/shadow-rpc.js +163 -0
- package/dist/network/shadow-rpc.js.map +1 -0
- package/dist/{sdk/passport → passport}/manager.d.ts +9 -18
- package/dist/passport/manager.d.ts.map +1 -0
- package/dist/passport/manager.js +148 -0
- package/dist/passport/manager.js.map +1 -0
- package/dist/pipeline.d.ts +25 -0
- package/dist/pipeline.d.ts.map +1 -0
- package/dist/pipeline.js +127 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/privacy/relayer.d.ts.map +1 -0
- package/dist/privacy/relayer.js.map +1 -0
- package/dist/privacy/shield.d.ts +27 -0
- package/dist/privacy/shield.d.ts.map +1 -0
- package/dist/privacy/shield.js +289 -0
- package/dist/privacy/shield.js.map +1 -0
- package/dist/{sdk/privacy-engine.d.ts → privacy-engine.d.ts} +2 -1
- package/dist/privacy-engine.d.ts.map +1 -0
- package/dist/{sdk/privacy-engine.js → privacy-engine.js} +24 -15
- package/dist/privacy-engine.js.map +1 -0
- package/dist/registry/idl-fetcher.d.ts +10 -0
- package/dist/registry/idl-fetcher.d.ts.map +1 -0
- package/dist/{sdk/registry → registry}/idl-fetcher.js +19 -16
- package/dist/registry/idl-fetcher.js.map +1 -0
- package/dist/registry/programs.d.ts.map +1 -0
- package/dist/registry/programs.js.map +1 -0
- package/dist/rescue/analyzer.d.ts +20 -0
- package/dist/rescue/analyzer.d.ts.map +1 -0
- package/dist/rescue/analyzer.js +137 -0
- package/dist/rescue/analyzer.js.map +1 -0
- package/dist/rescue/builder.d.ts +23 -0
- package/dist/rescue/builder.d.ts.map +1 -0
- package/dist/rescue/builder.js +164 -0
- package/dist/rescue/builder.js.map +1 -0
- package/dist/security/key-rotation.d.ts +153 -0
- package/dist/security/key-rotation.d.ts.map +1 -0
- package/dist/security/key-rotation.js +354 -0
- package/dist/security/key-rotation.js.map +1 -0
- package/dist/{sdk/semantics → semantics}/analyzer.d.ts.map +1 -1
- package/dist/{sdk/semantics → semantics}/analyzer.js.map +1 -1
- package/dist/semantics/decoder.d.ts.map +1 -0
- package/dist/semantics/decoder.js.map +1 -0
- package/dist/{sdk/semantics → semantics}/graph.d.ts.map +1 -1
- package/dist/{sdk/semantics → semantics}/graph.js.map +1 -1
- package/dist/semantics/idl-registry.d.ts +8 -0
- package/dist/semantics/idl-registry.d.ts.map +1 -0
- package/dist/{sdk/semantics → semantics}/idl-registry.js +23 -7
- package/dist/semantics/idl-registry.js.map +1 -0
- package/dist/semantics/types.d.ts +10 -0
- package/dist/semantics/types.d.ts.map +1 -0
- package/dist/{sdk → semantics}/types.js.map +1 -1
- package/dist/types.d.ts +23 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/address.d.ts +10 -0
- package/dist/utils/address.d.ts.map +1 -0
- package/dist/utils/address.js +45 -0
- package/dist/utils/address.js.map +1 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +38 -76
- package/LICENSE +0 -21
- package/README.md +0 -123
- package/SECURITY.md +0 -174
- package/bin/solvoid-scan +0 -2
- package/dist/cli/privacy-scan.d.ts +0 -11
- package/dist/cli/privacy-scan.d.ts.map +0 -1
- package/dist/cli/privacy-scan.js +0 -112
- package/dist/cli/privacy-scan.js.map +0 -1
- package/dist/cli/solvoid-scan.d.ts +0 -13
- package/dist/cli/solvoid-scan.d.ts.map +0 -1
- package/dist/cli/solvoid-scan.js +0 -174
- package/dist/cli/solvoid-scan.js.map +0 -1
- package/dist/cli/test-forensics.d.ts +0 -2
- package/dist/cli/test-forensics.d.ts.map +0 -1
- package/dist/cli/test-forensics.js +0 -90
- package/dist/cli/test-forensics.js.map +0 -1
- package/dist/cli/test-scenarios.d.ts +0 -2
- package/dist/cli/test-scenarios.d.ts.map +0 -1
- package/dist/cli/test-scenarios.js +0 -96
- package/dist/cli/test-scenarios.js.map +0 -1
- package/dist/examples/enterprise-demo.js +0 -65
- package/dist/sdk/client.d.ts +0 -77
- package/dist/sdk/client.d.ts.map +0 -1
- package/dist/sdk/client.js +0 -180
- package/dist/sdk/client.js.map +0 -1
- package/dist/sdk/compliance/identity.d.ts +0 -34
- package/dist/sdk/compliance/identity.d.ts.map +0 -1
- package/dist/sdk/compliance/identity.js +0 -55
- package/dist/sdk/compliance/identity.js.map +0 -1
- package/dist/sdk/compliance/threat-model.d.ts +0 -14
- package/dist/sdk/compliance/threat-model.d.ts.map +0 -1
- package/dist/sdk/compliance/threat-model.js +0 -101
- package/dist/sdk/compliance/threat-model.js.map +0 -1
- package/dist/sdk/forensics/mev.js +0 -50
- package/dist/sdk/forensics/order-flow.d.ts +0 -20
- package/dist/sdk/forensics/order-flow.d.ts.map +0 -1
- package/dist/sdk/forensics/order-flow.js +0 -104
- package/dist/sdk/forensics/order-flow.js.map +0 -1
- package/dist/sdk/forensics/simulation.d.ts +0 -14
- package/dist/sdk/forensics/simulation.d.ts.map +0 -1
- package/dist/sdk/forensics/simulation.js +0 -45
- package/dist/sdk/forensics/simulation.js.map +0 -1
- package/dist/sdk/index.d.ts.map +0 -1
- package/dist/sdk/index.js.map +0 -1
- package/dist/sdk/network/shadow-rpc.d.ts +0 -18
- package/dist/sdk/network/shadow-rpc.d.ts.map +0 -1
- package/dist/sdk/network/shadow-rpc.js +0 -32
- package/dist/sdk/network/shadow-rpc.js.map +0 -1
- package/dist/sdk/obfuscator.d.ts +0 -36
- package/dist/sdk/obfuscator.d.ts.map +0 -1
- package/dist/sdk/obfuscator.js +0 -77
- package/dist/sdk/obfuscator.js.map +0 -1
- package/dist/sdk/passport/manager.d.ts.map +0 -1
- package/dist/sdk/passport/manager.js +0 -107
- package/dist/sdk/passport/manager.js.map +0 -1
- package/dist/sdk/pipeline.d.ts +0 -34
- package/dist/sdk/pipeline.d.ts.map +0 -1
- package/dist/sdk/pipeline.js +0 -81
- package/dist/sdk/pipeline.js.map +0 -1
- package/dist/sdk/privacy/confidential-transfer.d.ts +0 -81
- package/dist/sdk/privacy/confidential-transfer.d.ts.map +0 -1
- package/dist/sdk/privacy/confidential-transfer.js +0 -158
- package/dist/sdk/privacy/confidential-transfer.js.map +0 -1
- package/dist/sdk/privacy/history.d.ts +0 -11
- package/dist/sdk/privacy/history.d.ts.map +0 -1
- package/dist/sdk/privacy/history.js +0 -110
- package/dist/sdk/privacy/history.js.map +0 -1
- package/dist/sdk/privacy/light-protocol.d.ts +0 -42
- package/dist/sdk/privacy/light-protocol.d.ts.map +0 -1
- package/dist/sdk/privacy/light-protocol.js +0 -83
- package/dist/sdk/privacy/light-protocol.js.map +0 -1
- package/dist/sdk/privacy/relayer.d.ts.map +0 -1
- package/dist/sdk/privacy/relayer.js.map +0 -1
- package/dist/sdk/privacy/safe-obfuscator.d.ts +0 -38
- package/dist/sdk/privacy/safe-obfuscator.d.ts.map +0 -1
- package/dist/sdk/privacy/safe-obfuscator.js +0 -101
- package/dist/sdk/privacy/safe-obfuscator.js.map +0 -1
- package/dist/sdk/privacy/shield.d.ts +0 -34
- package/dist/sdk/privacy/shield.d.ts.map +0 -1
- package/dist/sdk/privacy/shield.js +0 -174
- package/dist/sdk/privacy/shield.js.map +0 -1
- package/dist/sdk/privacy/zk.js +0 -43
- package/dist/sdk/privacy-engine.d.ts.map +0 -1
- package/dist/sdk/privacy-engine.js.map +0 -1
- package/dist/sdk/registry/idl-fetcher.d.ts +0 -17
- package/dist/sdk/registry/idl-fetcher.d.ts.map +0 -1
- package/dist/sdk/registry/idl-fetcher.js.map +0 -1
- package/dist/sdk/registry/programs.d.ts.map +0 -1
- package/dist/sdk/registry/programs.js.map +0 -1
- package/dist/sdk/rescue/analyzer.d.ts +0 -22
- package/dist/sdk/rescue/analyzer.d.ts.map +0 -1
- package/dist/sdk/rescue/analyzer.js +0 -46
- package/dist/sdk/rescue/analyzer.js.map +0 -1
- package/dist/sdk/rescue/builder.d.ts +0 -16
- package/dist/sdk/rescue/builder.d.ts.map +0 -1
- package/dist/sdk/rescue/builder.js +0 -33
- package/dist/sdk/rescue/builder.js.map +0 -1
- package/dist/sdk/semantics/decoder.d.ts.map +0 -1
- package/dist/sdk/semantics/decoder.js.map +0 -1
- package/dist/sdk/semantics/idl-registry.d.ts +0 -7
- package/dist/sdk/semantics/idl-registry.d.ts.map +0 -1
- package/dist/sdk/semantics/idl-registry.js.map +0 -1
- package/dist/sdk/semantics/types.d.ts +0 -44
- package/dist/sdk/semantics/types.d.ts.map +0 -1
- package/dist/sdk/semantics/types.js.map +0 -1
- package/dist/sdk/simulator.d.ts +0 -15
- package/dist/sdk/simulator.d.ts.map +0 -1
- package/dist/sdk/simulator.js +0 -133
- package/dist/sdk/simulator.js.map +0 -1
- package/dist/sdk/types.d.ts +0 -53
- package/dist/sdk/types.d.ts.map +0 -1
- package/dist/sdk/utils/config.d.ts.map +0 -1
- package/dist/sdk/utils/config.js.map +0 -1
- package/dist/sdk/utils/logger.d.ts.map +0 -1
- package/dist/sdk/utils/logger.js.map +0 -1
- package/dist/tests/unit/idl-registry.test.d.ts +0 -2
- package/dist/tests/unit/idl-registry.test.d.ts.map +0 -1
- package/dist/tests/unit/idl-registry.test.js +0 -35
- package/dist/tests/unit/idl-registry.test.js.map +0 -1
- package/dist/tools/exploit_demonstration.js +0 -99
- package/dist/tools/gen-tx.js +0 -29
- package/dist/tools/get-recent-tx.js +0 -18
- /package/dist/{sdk/privacy → privacy}/relayer.d.ts +0 -0
- /package/dist/{sdk/privacy → privacy}/relayer.js +0 -0
- /package/dist/{sdk/registry → registry}/programs.d.ts +0 -0
- /package/dist/{sdk/registry → registry}/programs.js +0 -0
- /package/dist/{sdk/semantics → semantics}/analyzer.d.ts +0 -0
- /package/dist/{sdk/semantics → semantics}/analyzer.js +0 -0
- /package/dist/{sdk/semantics → semantics}/decoder.d.ts +0 -0
- /package/dist/{sdk/semantics → semantics}/decoder.js +0 -0
- /package/dist/{sdk/semantics → semantics}/graph.d.ts +0 -0
- /package/dist/{sdk/semantics → semantics}/graph.js +0 -0
- /package/dist/{sdk/semantics → semantics}/types.js +0 -0
- /package/dist/{sdk/types.js → types.js} +0 -0
- /package/dist/{sdk/utils → utils}/config.d.ts +0 -0
- /package/dist/{sdk/utils → utils}/config.js +0 -0
- /package/dist/{sdk/utils → utils}/logger.d.ts +0 -0
- /package/dist/{sdk/utils → utils}/logger.js +0 -0
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SimulationEngine = void 0;
|
|
4
|
-
class SimulationEngine {
|
|
5
|
-
constructor(_rpcUrl) {
|
|
6
|
-
// RPC URL stored for future use
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Placeholder for transaction simulation
|
|
10
|
-
*/
|
|
11
|
-
async simulate(_txJson) {
|
|
12
|
-
// Simulating historical transactions requires the original state
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Parses simulation logs to find PII or logic leaks.
|
|
17
|
-
*/
|
|
18
|
-
analyzeLogs(logs) {
|
|
19
|
-
const leaks = [];
|
|
20
|
-
const PII_PATTERNS = [
|
|
21
|
-
{ regex: /User: ([a-zA-Z0-9]{32,44})/i, desc: "Log explicitly prints User Address" },
|
|
22
|
-
{ regex: /Amount: (\d+)/i, desc: "Log leaks Exact Amount" },
|
|
23
|
-
{ regex: /Email: ([\w.@]+)/i, desc: "Log contains email-like pattern" }
|
|
24
|
-
];
|
|
25
|
-
logs.forEach((log, index) => {
|
|
26
|
-
if (log.includes("Program log:")) {
|
|
27
|
-
PII_PATTERNS.forEach(pat => {
|
|
28
|
-
const match = log.match(pat.regex);
|
|
29
|
-
if (match) {
|
|
30
|
-
leaks.push({
|
|
31
|
-
type: "log-trace",
|
|
32
|
-
scope: `log:${index}`,
|
|
33
|
-
description: `${pat.desc} ('${match[1]}').`,
|
|
34
|
-
remediation: "Remove `msg!` calls dumping PII in production programs.",
|
|
35
|
-
severity: "MEDIUM"
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
return leaks;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
exports.SimulationEngine = SimulationEngine;
|
|
45
|
-
//# sourceMappingURL=simulation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"simulation.js","sourceRoot":"","sources":["../../../sdk/forensics/simulation.ts"],"names":[],"mappings":";;;AAGA,MAAa,gBAAgB;IACzB,YAAY,OAAe;QACvB,gCAAgC;IACpC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,OAAwB;QAC1C,iEAAiE;QACjE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,IAAc;QAC7B,MAAM,KAAK,GAAW,EAAE,CAAC;QAEzB,MAAM,YAAY,GAAG;YACjB,EAAE,KAAK,EAAE,6BAA6B,EAAE,IAAI,EAAE,oCAAoC,EAAE;YACpF,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,wBAAwB,EAAE;YAC3D,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,iCAAiC,EAAE;SAC1E,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACxB,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC/B,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACvB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACnC,IAAI,KAAK,EAAE,CAAC;wBACR,KAAK,CAAC,IAAI,CAAC;4BACP,IAAI,EAAE,WAAW;4BACjB,KAAK,EAAE,OAAO,KAAK,EAAE;4BACrB,WAAW,EAAE,GAAG,GAAG,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK;4BAC3C,WAAW,EAAE,yDAAyD;4BACtE,QAAQ,EAAE,QAAQ;yBACrB,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AA5CD,4CA4CC"}
|
package/dist/sdk/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../sdk/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGrF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/sdk/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../sdk/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0BAA0B;AAC1B,0CAAwB;AAExB,gEAAgE;AAChE,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,uCAA6C;AAApC,2GAAA,eAAe,OAAA;AAExB,mCAAmC;AACnC,2CAAiD;AAAxC,uGAAA,aAAa,OAAA;AACtB,6CAAmD;AAA1C,yGAAA,cAAc,OAAA;AAEvB,mCAAmC;AACnC,mCAAwD;AAA/C,uGAAA,aAAa,OAAA;AAEtB,mEAAmE;AACnE,sDAA2D;AAAlD,gHAAA,iBAAiB,OAAA;AAC1B,gDAAqF;AAA5E,0GAAA,cAAc,OAAA;AAAE,2GAAA,eAAe,OAAA;AAAE,yGAAA,aAAa,OAAA;AAEvD,iCAAiC;AACjC,yCAAyD;AAAhD,sGAAA,YAAY,OAAA"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Connection, VersionedTransaction, Transaction } from '@solana/web3.js';
|
|
2
|
-
import winston from 'winston';
|
|
3
|
-
/**
|
|
4
|
-
* Mask tx metadata from RPC providers by routing through multiple hops.
|
|
5
|
-
*/
|
|
6
|
-
export declare class ShadowRPC {
|
|
7
|
-
private connection;
|
|
8
|
-
private logger;
|
|
9
|
-
constructor(connection: Connection, logger: winston.Logger);
|
|
10
|
-
/**
|
|
11
|
-
* Randomized relay routing to hide original broadcast IP.
|
|
12
|
-
*/
|
|
13
|
-
broadcastPrivately(tx: VersionedTransaction | Transaction, options?: {
|
|
14
|
-
hops: number;
|
|
15
|
-
stealthMode: boolean;
|
|
16
|
-
}): Promise<string>;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=shadow-rpc.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shadow-rpc.d.ts","sourceRoot":"","sources":["../../../sdk/network/shadow-rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,oBAAoB,EACpB,WAAW,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B;;GAEG;AACH,qBAAa,SAAS;IAClB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAAiB;gBAEnB,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM;IAK1D;;OAEG;IACU,kBAAkB,CAC3B,EAAE,EAAE,oBAAoB,GAAG,WAAW,EACtC,OAAO,GAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAmC,GACjF,OAAO,CAAC,MAAM,CAAC;CAsBrB"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ShadowRPC = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Mask tx metadata from RPC providers by routing through multiple hops.
|
|
6
|
-
*/
|
|
7
|
-
class ShadowRPC {
|
|
8
|
-
constructor(connection, logger) {
|
|
9
|
-
this.connection = connection;
|
|
10
|
-
this.logger = logger;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Randomized relay routing to hide original broadcast IP.
|
|
14
|
-
*/
|
|
15
|
-
async broadcastPrivately(tx, options = { hops: 3, stealthMode: true }) {
|
|
16
|
-
this.logger.info(`ShadowRPC: Initiating ${options.hops}-hop broadcast...`);
|
|
17
|
-
// Use Noise protocol for the encrypted relay tunnel
|
|
18
|
-
this.logger.info("ShadowRPC: Establishing encrypted tunnel...");
|
|
19
|
-
// Simulate a dynamic relay chain
|
|
20
|
-
const relayIps = Array.from({ length: options.hops }, () => `${Math.floor(Math.random() * 255)}.${Math.floor(Math.random() * 255)}.${Math.floor(Math.random() * 255)}.${Math.floor(Math.random() * 255)}`);
|
|
21
|
-
this.logger.info(`ShadowRPC: Routing chain: ${relayIps.join(' -> ')}`);
|
|
22
|
-
const rawTransaction = tx.serialize();
|
|
23
|
-
const txid = await this.connection.sendRawTransaction(rawTransaction, {
|
|
24
|
-
skipPreflight: true,
|
|
25
|
-
maxRetries: 2
|
|
26
|
-
});
|
|
27
|
-
this.logger.info(`ShadowRPC: Broadcast success. TX: ${txid}`);
|
|
28
|
-
return txid;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.ShadowRPC = ShadowRPC;
|
|
32
|
-
//# sourceMappingURL=shadow-rpc.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shadow-rpc.js","sourceRoot":"","sources":["../../../sdk/network/shadow-rpc.ts"],"names":[],"mappings":";;;AAOA;;GAEG;AACH,MAAa,SAAS;IAIlB,YAAY,UAAsB,EAAE,MAAsB;QACtD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,kBAAkB,CAC3B,EAAsC,EACtC,UAAkD,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;QAEhF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,OAAO,CAAC,IAAI,mBAAmB,CAAC,CAAC;QAE3E,oDAAoD;QACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAEhE,iCAAiC;QACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CACvD,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,CAChJ,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEvE,MAAM,cAAc,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,cAAc,EAAE;YAClE,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,CAAC;SAChB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,IAAI,EAAE,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AArCD,8BAqCC"}
|
package/dist/sdk/obfuscator.d.ts
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ⚠️ DEPRECATED - DO NOT USE FOR PRIVACY ⚠️
|
|
3
|
-
*
|
|
4
|
-
* This module is DEPRECATED and exists only for backwards compatibility.
|
|
5
|
-
* See module documentation for why this was deprecated.
|
|
6
|
-
*/
|
|
7
|
-
import { Keypair, VersionedTransaction, PublicKey } from '@solana/web3.js';
|
|
8
|
-
/**
|
|
9
|
-
* @deprecated This interface is for a deprecated feature
|
|
10
|
-
*/
|
|
11
|
-
export interface ObfuscationConfig {
|
|
12
|
-
userMainWallet: PublicKey;
|
|
13
|
-
relayerFeePayer?: PublicKey;
|
|
14
|
-
iUnderstandThisIsNotPrivate: boolean;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* @deprecated This class provides NO privacy. Use for educational purposes only.
|
|
18
|
-
*/
|
|
19
|
-
export declare class TransactionObfuscator {
|
|
20
|
-
private static MEMO_PROGRAM_ID;
|
|
21
|
-
/**
|
|
22
|
-
* @deprecated This method provides NO privacy guarantee.
|
|
23
|
-
* @throws Error if iUnderstandThisIsNotPrivate is not set to true
|
|
24
|
-
*/
|
|
25
|
-
obfuscateTransaction(tx: VersionedTransaction, config: ObfuscationConfig): Promise<{
|
|
26
|
-
obfuscatedTx: VersionedTransaction;
|
|
27
|
-
sessionKey: Keypair;
|
|
28
|
-
removedInstructions: number[];
|
|
29
|
-
securityWarning: string;
|
|
30
|
-
}>;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Get privacy recommendation based on use case
|
|
34
|
-
*/
|
|
35
|
-
export declare function getPrivacyRecommendation(useCase: 'mev' | 'amounts' | 'full'): string;
|
|
36
|
-
//# sourceMappingURL=obfuscator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"obfuscator.d.ts","sourceRoot":"","sources":["../../sdk/obfuscator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACH,OAAO,EAEP,oBAAoB,EACpB,SAAS,EAGZ,MAAM,iBAAiB,CAAC;AAGzB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,cAAc,EAAE,SAAS,CAAC;IAC1B,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,2BAA2B,EAAE,OAAO,CAAC;CACxC;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,MAAM,CAAC,eAAe,CAAiD;IAE/E;;;OAGG;IACU,oBAAoB,CAC7B,EAAE,EAAE,oBAAoB,EACxB,MAAM,EAAE,iBAAiB,GAC1B,OAAO,CAAC;QACP,YAAY,EAAE,oBAAoB,CAAC;QACnC,UAAU,EAAE,OAAO,CAAC;QACpB,mBAAmB,EAAE,MAAM,EAAE,CAAC;QAC9B,eAAe,EAAE,MAAM,CAAC;KAC3B,CAAC;CAiDL;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAWpF"}
|
package/dist/sdk/obfuscator.js
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* ⚠️ DEPRECATED - DO NOT USE FOR PRIVACY ⚠️
|
|
4
|
-
*
|
|
5
|
-
* This module is DEPRECATED and exists only for backwards compatibility.
|
|
6
|
-
* See module documentation for why this was deprecated.
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.TransactionObfuscator = void 0;
|
|
10
|
-
exports.getPrivacyRecommendation = getPrivacyRecommendation;
|
|
11
|
-
const web3_js_1 = require("@solana/web3.js");
|
|
12
|
-
const logger_1 = require("./utils/logger");
|
|
13
|
-
/**
|
|
14
|
-
* @deprecated This class provides NO privacy. Use for educational purposes only.
|
|
15
|
-
*/
|
|
16
|
-
class TransactionObfuscator {
|
|
17
|
-
/**
|
|
18
|
-
* @deprecated This method provides NO privacy guarantee.
|
|
19
|
-
* @throws Error if iUnderstandThisIsNotPrivate is not set to true
|
|
20
|
-
*/
|
|
21
|
-
async obfuscateTransaction(tx, config) {
|
|
22
|
-
if (!config.iUnderstandThisIsNotPrivate) {
|
|
23
|
-
throw new Error("SECURITY ERROR: You must set 'iUnderstandThisIsNotPrivate: true'. " +
|
|
24
|
-
"This acknowledges that this method provides NO PRIVACY.");
|
|
25
|
-
}
|
|
26
|
-
logger_1.logger.warn("\n" + "=".repeat(80));
|
|
27
|
-
logger_1.logger.warn("⚠️ CRITICAL PRIVACY WARNING ⚠️");
|
|
28
|
-
logger_1.logger.warn("You are using DEPRECATED obfuscation that provides NO PRIVACY.");
|
|
29
|
-
logger_1.logger.warn("=".repeat(80) + "\n");
|
|
30
|
-
const addressLookupTables = [];
|
|
31
|
-
const message = web3_js_1.TransactionMessage.decompile(tx.message, { addressLookupTableAccounts: addressLookupTables });
|
|
32
|
-
const sanitizedInstructions = [];
|
|
33
|
-
const removedIndices = [];
|
|
34
|
-
message.instructions.forEach((ix, index) => {
|
|
35
|
-
const progId = ix.programId.toBase58();
|
|
36
|
-
if (progId === TransactionObfuscator.MEMO_PROGRAM_ID ||
|
|
37
|
-
progId === "Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo") {
|
|
38
|
-
removedIndices.push(index);
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
sanitizedInstructions.push(ix);
|
|
42
|
-
});
|
|
43
|
-
const sessionKey = web3_js_1.Keypair.generate();
|
|
44
|
-
const newMessage = new web3_js_1.TransactionMessage({
|
|
45
|
-
payerKey: sessionKey.publicKey,
|
|
46
|
-
recentBlockhash: message.recentBlockhash,
|
|
47
|
-
instructions: sanitizedInstructions
|
|
48
|
-
}).compileToV0Message(addressLookupTables);
|
|
49
|
-
const newTx = new web3_js_1.VersionedTransaction(newMessage);
|
|
50
|
-
newTx.sign([sessionKey]);
|
|
51
|
-
return {
|
|
52
|
-
obfuscatedTx: newTx,
|
|
53
|
-
sessionKey: sessionKey,
|
|
54
|
-
removedInstructions: removedIndices,
|
|
55
|
-
securityWarning: "THIS TRANSACTION IS NOT PRIVATE. " +
|
|
56
|
-
"The SessionKey must be funded from your wallet, creating a direct on-chain link."
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
exports.TransactionObfuscator = TransactionObfuscator;
|
|
61
|
-
TransactionObfuscator.MEMO_PROGRAM_ID = "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr";
|
|
62
|
-
/**
|
|
63
|
-
* Get privacy recommendation based on use case
|
|
64
|
-
*/
|
|
65
|
-
function getPrivacyRecommendation(useCase) {
|
|
66
|
-
switch (useCase) {
|
|
67
|
-
case 'mev':
|
|
68
|
-
return "For MEV protection, use Jito bundles via @jito-foundation/jito-ts.";
|
|
69
|
-
case 'amounts':
|
|
70
|
-
return "For hiding transaction amounts, use Token-2022 Confidential Transfers.";
|
|
71
|
-
case 'full':
|
|
72
|
-
return "For full privacy, use Light Protocol via @lightprotocol/stateless.js.";
|
|
73
|
-
default:
|
|
74
|
-
return "No privacy solution can be recommended without understanding your threat model.";
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=obfuscator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"obfuscator.js","sourceRoot":"","sources":["../../sdk/obfuscator.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA6FH,4DAWC;AAtGD,6CAOyB;AACzB,2CAAwC;AAWxC;;GAEG;AACH,MAAa,qBAAqB;IAG9B;;;OAGG;IACI,KAAK,CAAC,oBAAoB,CAC7B,EAAwB,EACxB,MAAyB;QAOzB,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CACX,oEAAoE;gBACpE,yDAAyD,CAC5D,CAAC;QACN,CAAC;QAED,eAAM,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,eAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,eAAM,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAC9E,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAEnC,MAAM,mBAAmB,GAAgC,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,4BAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAE9G,MAAM,qBAAqB,GAA6B,EAAE,CAAC;QAC3D,MAAM,cAAc,GAAa,EAAE,CAAC;QAEpC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;YACvC,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvC,IAAI,MAAM,KAAK,qBAAqB,CAAC,eAAe;gBAChD,MAAM,KAAK,6CAA6C,EAAE,CAAC;gBAC3D,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3B,OAAO;YACX,CAAC;YACD,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,iBAAO,CAAC,QAAQ,EAAE,CAAC;QAEtC,MAAM,UAAU,GAAG,IAAI,4BAAkB,CAAC;YACtC,QAAQ,EAAE,UAAU,CAAC,SAAS;YAC9B,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,YAAY,EAAE,qBAAqB;SACtC,CAAC,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;QAE3C,MAAM,KAAK,GAAG,IAAI,8BAAoB,CAAC,UAAU,CAAC,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAEzB,OAAO;YACH,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,UAAU;YACtB,mBAAmB,EAAE,cAAc;YACnC,eAAe,EACX,mCAAmC;gBACnC,kFAAkF;SACzF,CAAC;IACN,CAAC;;AA/DL,sDAgEC;AA/DkB,qCAAe,GAAG,6CAA6C,CAAC;AAiEnF;;GAEG;AACH,SAAgB,wBAAwB,CAAC,OAAmC;IACxE,QAAQ,OAAO,EAAE,CAAC;QACd,KAAK,KAAK;YACN,OAAO,oEAAoE,CAAC;QAChF,KAAK,SAAS;YACV,OAAO,wEAAwE,CAAC;QACpF,KAAK,MAAM;YACP,OAAO,uEAAuE,CAAC;QACnF;YACI,OAAO,iFAAiF,CAAC;IACjG,CAAC;AACL,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../sdk/passport/manager.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,qBAAa,eAAe;IACxB,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,GAAE,MAAkC;IAI3D;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe;IAQpD;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAYpD,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,YAAY;CAQvB"}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.PassportManager = void 0;
|
|
37
|
-
const fs = __importStar(require("fs"));
|
|
38
|
-
class PassportManager {
|
|
39
|
-
constructor(storagePath = './privacy-passport.json') {
|
|
40
|
-
this.storagePath = storagePath;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Load or create a new privacy passport for the given wallet.
|
|
44
|
-
*/
|
|
45
|
-
getPassport(address) {
|
|
46
|
-
if (!fs.existsSync(this.storagePath)) {
|
|
47
|
-
return this.initializePassport(address);
|
|
48
|
-
}
|
|
49
|
-
const data = JSON.parse(fs.readFileSync(this.storagePath, 'utf8'));
|
|
50
|
-
return data[address] || this.initializePassport(address);
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Update history and trigger badge checks based on latest audit.
|
|
54
|
-
*/
|
|
55
|
-
updateScore(address, newScore) {
|
|
56
|
-
const passport = this.getPassport(address);
|
|
57
|
-
passport.overallScore = newScore;
|
|
58
|
-
passport.scoreHistory.push({
|
|
59
|
-
timestamp: Date.now(),
|
|
60
|
-
score: newScore
|
|
61
|
-
});
|
|
62
|
-
this.checkBadges(passport);
|
|
63
|
-
this.savePassport(address, passport);
|
|
64
|
-
}
|
|
65
|
-
initializePassport(address) {
|
|
66
|
-
return {
|
|
67
|
-
walletAddress: address,
|
|
68
|
-
overallScore: 100,
|
|
69
|
-
scoreHistory: [],
|
|
70
|
-
badges: [],
|
|
71
|
-
recommendations: ["Perform your first privacy scan to earn the 'First Contact' badge."]
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Milestone-based badge logic.
|
|
76
|
-
*/
|
|
77
|
-
checkBadges(passport) {
|
|
78
|
-
const badgesToAdd = [];
|
|
79
|
-
if (passport.overallScore >= 95 && !passport.badges.some(b => b.name === "Zero-Trace Master")) {
|
|
80
|
-
badgesToAdd.push({
|
|
81
|
-
name: "Zero-Trace Master",
|
|
82
|
-
icon: "🛡️",
|
|
83
|
-
description: "Maintained a privacy score above 95.",
|
|
84
|
-
dateEarned: Date.now()
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
if (passport.scoreHistory.length > 5 && !passport.badges.some(b => b.name === "Consistent Ghost")) {
|
|
88
|
-
badgesToAdd.push({
|
|
89
|
-
name: "Consistent Ghost",
|
|
90
|
-
icon: "👻",
|
|
91
|
-
description: "Performed more than 5 successful privacy audits.",
|
|
92
|
-
dateEarned: Date.now()
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
passport.badges.push(...badgesToAdd);
|
|
96
|
-
}
|
|
97
|
-
savePassport(address, passport) {
|
|
98
|
-
let allData = {};
|
|
99
|
-
if (fs.existsSync(this.storagePath)) {
|
|
100
|
-
allData = JSON.parse(fs.readFileSync(this.storagePath, 'utf8'));
|
|
101
|
-
}
|
|
102
|
-
allData[address] = passport;
|
|
103
|
-
fs.writeFileSync(this.storagePath, JSON.stringify(allData, null, 2));
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
exports.PassportManager = PassportManager;
|
|
107
|
-
//# sourceMappingURL=manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../sdk/passport/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/pipeline.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Connection, PublicKey } from '@solana/web3.js';
|
|
2
|
-
import { PrivacyShield } from './privacy/shield';
|
|
3
|
-
export declare class PrivacyPipeline {
|
|
4
|
-
private connection;
|
|
5
|
-
private engine;
|
|
6
|
-
private shield;
|
|
7
|
-
constructor(connection: Connection, shield: PrivacyShield);
|
|
8
|
-
/**
|
|
9
|
-
* Map web3.js signatures to privacy results by analyzing the last 10 txs.
|
|
10
|
-
*/
|
|
11
|
-
processAddress(address: PublicKey): Promise<({
|
|
12
|
-
signature: string;
|
|
13
|
-
leaks: import("./types").Leak[];
|
|
14
|
-
remediation: {
|
|
15
|
-
action: string;
|
|
16
|
-
data: {
|
|
17
|
-
commitment: string;
|
|
18
|
-
nullifierHash: string;
|
|
19
|
-
};
|
|
20
|
-
description: string;
|
|
21
|
-
} | null;
|
|
22
|
-
privacyScore: number;
|
|
23
|
-
} | {
|
|
24
|
-
signature: string;
|
|
25
|
-
leaks: never[];
|
|
26
|
-
privacyScore: number;
|
|
27
|
-
remediation?: undefined;
|
|
28
|
-
})[]>;
|
|
29
|
-
/**
|
|
30
|
-
* Suggest specific fixes like shielding if we hit critical leak thresholds.
|
|
31
|
-
*/
|
|
32
|
-
private generateRemediation;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../sdk/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,eAAe;IACxB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAgB;gBAElB,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa;IAMzD;;OAEG;IACU,cAAc,CAAC,OAAO,EAAE,SAAS;;;;;;;;;;;;;;;;;;IAoD9C;;OAEG;YACW,mBAAmB;CAkBpC"}
|
package/dist/sdk/pipeline.js
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PrivacyPipeline = void 0;
|
|
4
|
-
const privacy_engine_1 = require("./privacy-engine");
|
|
5
|
-
class PrivacyPipeline {
|
|
6
|
-
constructor(connection, shield) {
|
|
7
|
-
this.connection = connection;
|
|
8
|
-
this.engine = new privacy_engine_1.PrivacyEngine();
|
|
9
|
-
this.shield = shield;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Map web3.js signatures to privacy results by analyzing the last 10 txs.
|
|
13
|
-
*/
|
|
14
|
-
async processAddress(address) {
|
|
15
|
-
const signatures = await this.connection.getSignaturesForAddress(address);
|
|
16
|
-
const results = [];
|
|
17
|
-
for (const sig of signatures.slice(0, 10)) {
|
|
18
|
-
const tx = await this.connection.getTransaction(sig.signature, {
|
|
19
|
-
maxSupportedTransactionVersion: 0,
|
|
20
|
-
});
|
|
21
|
-
if (tx) {
|
|
22
|
-
// Parse standard Solana tx structure into ours
|
|
23
|
-
const txData = {
|
|
24
|
-
message: {
|
|
25
|
-
accountKeys: tx.transaction.message.staticAccountKeys.map((k) => k.toBase58()),
|
|
26
|
-
header: tx.transaction.message.header,
|
|
27
|
-
instructions: tx.transaction.message.compiledInstructions.map((ix) => ({
|
|
28
|
-
programIdIndex: ix.programIdIndex,
|
|
29
|
-
accounts: ix.accountKeyIndexes,
|
|
30
|
-
data: Buffer.from(ix.data).toString('base64')
|
|
31
|
-
}))
|
|
32
|
-
},
|
|
33
|
-
meta: {
|
|
34
|
-
innerInstructions: tx.meta?.innerInstructions || [],
|
|
35
|
-
logMessages: tx.meta?.logMessages || []
|
|
36
|
-
},
|
|
37
|
-
signatures: [sig.signature]
|
|
38
|
-
};
|
|
39
|
-
const leaks = this.engine.analyzeTransaction(txData);
|
|
40
|
-
const privacyScore = this.engine.calculateScore(leaks);
|
|
41
|
-
if (leaks.length > 0) {
|
|
42
|
-
const remediation = await this.generateRemediation(address, leaks);
|
|
43
|
-
results.push({
|
|
44
|
-
signature: sig.signature,
|
|
45
|
-
leaks,
|
|
46
|
-
remediation,
|
|
47
|
-
privacyScore
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
results.push({
|
|
52
|
-
signature: sig.signature,
|
|
53
|
-
leaks: [],
|
|
54
|
-
privacyScore: 100
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return results;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Suggest specific fixes like shielding if we hit critical leak thresholds.
|
|
63
|
-
*/
|
|
64
|
-
async generateRemediation(_user, leaks) {
|
|
65
|
-
const criticalLeaks = leaks.filter(l => l.severity === 'CRITICAL' || l.severity === 'HIGH');
|
|
66
|
-
if (criticalLeaks.length > 0) {
|
|
67
|
-
const commitmentData = this.shield.generateCommitment();
|
|
68
|
-
return {
|
|
69
|
-
action: 'SHIELD_BALANCE',
|
|
70
|
-
data: {
|
|
71
|
-
commitment: commitmentData.commitmentHex,
|
|
72
|
-
nullifierHash: commitmentData.nullifierHash.toString('hex'),
|
|
73
|
-
},
|
|
74
|
-
description: `High risk leaks found. Shielding recommended to break clear identity links.`,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
return null;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
exports.PrivacyPipeline = PrivacyPipeline;
|
|
81
|
-
//# sourceMappingURL=pipeline.js.map
|
package/dist/sdk/pipeline.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../sdk/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Token-2022 Confidential Transfers Manager
|
|
3
|
-
*
|
|
4
|
-
* IMPORTANT: This module provides interfaces for Token-2022's Confidential Transfer extension.
|
|
5
|
-
*
|
|
6
|
-
* CURRENT STATUS:
|
|
7
|
-
* - ✅ supportsConfidentiality(): Check if a mint supports confidential transfers
|
|
8
|
-
* - ⚠️ Other methods require the full @solana/spl-token-confidential package
|
|
9
|
-
*
|
|
10
|
-
* PRIVACY GUARANTEES:
|
|
11
|
-
* - Encrypted balances hide the AMOUNT from chain observers
|
|
12
|
-
* - Sender and receiver addresses are STILL VISIBLE
|
|
13
|
-
* - Transaction timing is STILL VISIBLE
|
|
14
|
-
* - This is AMOUNT privacy, not identity privacy
|
|
15
|
-
*
|
|
16
|
-
* FOR FULL PRIVACY: Use Light Protocol (LightProtocolManager) which provides
|
|
17
|
-
* identity privacy through ZK state compression.
|
|
18
|
-
*/
|
|
19
|
-
import { Connection, PublicKey, TransactionInstruction } from '@solana/web3.js';
|
|
20
|
-
/**
|
|
21
|
-
* Error thrown when ZK proof generation is required but not available
|
|
22
|
-
*/
|
|
23
|
-
export declare class ZkProofRequiredError extends Error {
|
|
24
|
-
constructor(operation: string);
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Manager for Token2022 Confidential Transfers.
|
|
28
|
-
* Provides safe wrappers around encrypted balance operations.
|
|
29
|
-
*
|
|
30
|
-
* NOTE: This is a simplified interface. For full functionality,
|
|
31
|
-
* use @solana/spl-token-confidential which includes WASM modules
|
|
32
|
-
* for ZK proof generation.
|
|
33
|
-
*/
|
|
34
|
-
export declare class ConfidentialTokenManager {
|
|
35
|
-
private connection;
|
|
36
|
-
constructor(connection: Connection);
|
|
37
|
-
/**
|
|
38
|
-
* Checks if a Mint supports Confidential Transfers.
|
|
39
|
-
*
|
|
40
|
-
* @param mint - The mint public key to check
|
|
41
|
-
* @returns true if the mint has the ConfidentialTransferMint extension
|
|
42
|
-
*/
|
|
43
|
-
supportsConfidentiality(mint: PublicKey): Promise<boolean>;
|
|
44
|
-
/**
|
|
45
|
-
* Creates instructions to Initialize a User's Confidential Token Account.
|
|
46
|
-
*
|
|
47
|
-
* ⚠️ REQUIRES @solana/spl-token-confidential package
|
|
48
|
-
*
|
|
49
|
-
* This is a placeholder that throws an error with guidance.
|
|
50
|
-
*/
|
|
51
|
-
createEnableConfidentialAccountInstructions(mint: PublicKey, _owner: PublicKey, _tokenAccount: PublicKey): Promise<TransactionInstruction[]>;
|
|
52
|
-
/**
|
|
53
|
-
* Creates an instruction to DEPOSIT (Public -> Private).
|
|
54
|
-
*
|
|
55
|
-
* ⚠️ REQUIRES @solana/spl-token-confidential package
|
|
56
|
-
*/
|
|
57
|
-
createDepositPublicToPrivate(_mint: PublicKey, _tokenAccount: PublicKey, _owner: PublicKey, _amount: number | bigint, _decimals?: number): Promise<TransactionInstruction>;
|
|
58
|
-
/**
|
|
59
|
-
* Creates an ENCRYPTED TRANSFER instruction (Private -> Private).
|
|
60
|
-
*
|
|
61
|
-
* ⚠️ NOT IMPLEMENTED - REQUIRES ZK PROOF GENERATION ⚠️
|
|
62
|
-
*
|
|
63
|
-
* @throws ZkProofRequiredError Always - this operation requires external ZK tooling
|
|
64
|
-
*/
|
|
65
|
-
createEncryptedTransfer(_mint: PublicKey, _sourceTokenAccount: PublicKey, _destTokenAccount: PublicKey, _owner: PublicKey, _amount: number | bigint, _sourceElGamalKey: PublicKey): Promise<TransactionInstruction>;
|
|
66
|
-
/**
|
|
67
|
-
* Creates an instruction to WITHDRAW (Private -> Public).
|
|
68
|
-
*
|
|
69
|
-
* ⚠️ REQUIRES @solana/spl-token-confidential package
|
|
70
|
-
*/
|
|
71
|
-
createWithdrawPrivateToPublic(_mint: PublicKey, _tokenAccount: PublicKey, _owner: PublicKey, _amount: number | bigint, _decimals?: number): Promise<TransactionInstruction>;
|
|
72
|
-
/**
|
|
73
|
-
* Get privacy capabilities summary for this manager
|
|
74
|
-
*/
|
|
75
|
-
static getPrivacyCapabilities(): {
|
|
76
|
-
hides: string[];
|
|
77
|
-
exposes: string[];
|
|
78
|
-
recommendation: string;
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=confidential-transfer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"confidential-transfer.d.ts","sourceRoot":"","sources":["../../../sdk/privacy/confidential-transfer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACH,UAAU,EACV,SAAS,EACT,sBAAsB,EACzB,MAAM,iBAAiB,CAAC;AAKzB;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBAC/B,SAAS,EAAE,MAAM;CAahC;AAED;;;;;;;GAOG;AACH,qBAAa,wBAAwB;IACjC,OAAO,CAAC,UAAU,CAAa;gBAEnB,UAAU,EAAE,UAAU;IAIlC;;;;;OAKG;IACU,uBAAuB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IA4CvE;;;;;;OAMG;IACU,2CAA2C,CACpD,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,SAAS,GACzB,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAWpC;;;;OAIG;IACU,4BAA4B,CACrC,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,SAAS,EACxB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,sBAAsB,CAAC;IAIlC;;;;;;OAMG;IACU,uBAAuB,CAChC,KAAK,EAAE,SAAS,EAChB,mBAAmB,EAAE,SAAS,EAC9B,iBAAiB,EAAE,SAAS,EAC5B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,iBAAiB,EAAE,SAAS,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IAIlC;;;;OAIG;IACU,6BAA6B,CACtC,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,SAAS,EACxB,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,SAAS,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,sBAAsB,CAAC;IAIlC;;OAEG;WACW,sBAAsB,IAAI;QACpC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;KAC1B;CAkBJ"}
|