solvoid 1.1.3 → 1.1.4

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.
@@ -36,39 +36,52 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.PrivacyShield = void 0;
37
37
  const web3_js_1 = require("@solana/web3.js");
38
38
  const buffer_1 = require("buffer");
39
- const esm_1 = require("@coral-xyz/anchor/dist/esm");
39
+ const anchor_1 = require("@coral-xyz/anchor");
40
40
  const crypto = __importStar(require("crypto"));
41
41
  const poseidon_1 = require("../crypto/poseidon");
42
42
  const integrity_1 = require("../integrity");
43
+ /**
44
+ * Merkle tree depth for our sparse implementation.
45
+ * Must remain synchronized with the PROOF_LEVELS parameter in our Circom circuits.
46
+ */
43
47
  const MERKLE_TREE_DEPTH = 20;
48
+ /**
49
+ * PrivacyShield: Core implementation for ZK operations and program interaction.
50
+ * Manages commitment generation, Merkle proof calculation, and ZK proof orchestration.
51
+ */
44
52
  class PrivacyShield {
45
53
  constructor(connection, idlIn, wallet, programId) {
46
- // IDL validation. dont want a garbage idl breaking things later.
54
+ /**
55
+ * Enforces strict IDL schema validation to ensure protocol interface stability.
56
+ */
47
57
  const idl = (0, integrity_1.enforce)(integrity_1.IdlSchema, idlIn, {
48
58
  origin: integrity_1.DataOrigin.INTERNAL_LOGIC,
49
59
  trust: integrity_1.DataTrust.TRUSTED,
50
60
  createdAt: Date.now(),
51
61
  owner: 'PrivacyShield'
52
62
  }).value;
53
- // fix missing address in idl if needed
54
63
  if (programId && !idl.address) {
55
64
  idl.address = programId;
56
65
  }
57
- // buffer polyfills for browser support. what a mess.
66
+ /**
67
+ * Environment-agnostic Buffer polyfills for web/desktop compatibility.
68
+ */
58
69
  if (typeof globalThis !== 'undefined' && !globalThis.Buffer) {
59
70
  globalThis.Buffer = buffer_1.Buffer;
60
71
  }
61
- if (typeof window !== 'undefined' && !window.Buffer) {
62
- window.Buffer = buffer_1.Buffer;
72
+ if (typeof globalThis !== 'undefined' && typeof globalThis.window !== 'undefined') {
73
+ const win = globalThis.window;
74
+ if (!win.Buffer) {
75
+ win.Buffer = buffer_1.Buffer;
76
+ }
63
77
  }
64
78
  if (typeof global !== 'undefined' && !global.Buffer) {
65
79
  global.Buffer = buffer_1.Buffer;
66
80
  }
67
- const provider = new esm_1.AnchorProvider(connection, wallet, {
81
+ const provider = new anchor_1.AnchorProvider(connection, wallet, {
68
82
  preflightCommitment: 'confirmed',
69
83
  });
70
- // Create program synchronously but with Buffer polyfill ensured
71
- this.program = new esm_1.Program(idl, provider);
84
+ this.program = new anchor_1.Program(idl, provider);
72
85
  if (programId) {
73
86
  this.programId = new web3_js_1.PublicKey(programId);
74
87
  }
@@ -76,10 +89,16 @@ class PrivacyShield {
76
89
  getProgramId() {
77
90
  return this.programId || this.program.programId;
78
91
  }
79
- // poseidon hashing helper
92
+ /**
93
+ * Internal Poseidon hash helper for binary node computation.
94
+ */
80
95
  async poseidonHash(left, right) {
81
96
  return await poseidon_1.PoseidonHasher.hashTwoInputs(left, right);
82
97
  }
98
+ /**
99
+ * Initializes the protocol state PDA.
100
+ * Requirement: Executed once per program lifetime.
101
+ */
83
102
  async initialize(authority) {
84
103
  const [statePda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('state')], this.getProgramId());
85
104
  return await this.program.methods
@@ -91,6 +110,9 @@ class PrivacyShield {
91
110
  })
92
111
  .rpc();
93
112
  }
113
+ /**
114
+ * Registers the Groth16 verification key on-chain.
115
+ */
94
116
  async initializeVerifier(vk) {
95
117
  const [statePda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('state')], this.getProgramId());
96
118
  const [verifierPda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('verifier'), statePda.toBuffer()], this.getProgramId());
@@ -104,6 +126,9 @@ class PrivacyShield {
104
126
  })
105
127
  .rpc();
106
128
  }
129
+ /**
130
+ * Sets up the Merkle root history tracker for proof verification.
131
+ */
107
132
  async initializeRootHistory() {
108
133
  const [rootHistoryPda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('root_history')], this.getProgramId());
109
134
  return await this.program.methods
@@ -115,35 +140,84 @@ class PrivacyShield {
115
140
  })
116
141
  .rpc();
117
142
  }
118
- async initializeTreasury() {
119
- const [treasuryPda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('treasury')], this.getProgramId());
143
+ /**
144
+ * Configures the protocol's economic parameters and fee accumulators.
145
+ */
146
+ async initializeEconomics() {
147
+ const [economicPda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('economic_state')], this.getProgramId());
120
148
  return await this.program.methods
121
- .initializeTreasury()
149
+ .initializeEconomics()
122
150
  .accounts({
123
- treasury: treasuryPda,
151
+ economicState: economicPda,
124
152
  authority: this.program.provider.publicKey,
125
153
  systemProgram: web3_js_1.SystemProgram.programId,
126
154
  })
127
155
  .rpc();
128
156
  }
129
- async initializeEconomics() {
157
+ /**
158
+ * Activates emergency status to adjust protocol multipliers during high-threat events.
159
+ */
160
+ async triggerEmergencyMode(multiplier, reason) {
161
+ const [statePda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('state')], this.getProgramId());
130
162
  const [economicPda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('economic_state')], this.getProgramId());
131
163
  return await this.program.methods
132
- .initializeEconomics()
164
+ .triggerEmergencyMode(new anchor_1.BN(multiplier.toString()), reason)
133
165
  .accounts({
166
+ state: statePda,
134
167
  economicState: economicPda,
135
168
  authority: this.program.provider.publicKey,
136
- systemProgram: web3_js_1.SystemProgram.programId,
137
169
  })
138
170
  .rpc();
139
171
  }
172
+ async disableEmergencyMode() {
173
+ const [statePda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('state')], this.getProgramId());
174
+ const [economicPda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('economic_state')], this.getProgramId());
175
+ return await this.program.methods
176
+ .disableEmergencyMode()
177
+ .accounts({
178
+ state: statePda,
179
+ economicState: economicPda,
180
+ authority: this.program.provider.publicKey,
181
+ })
182
+ .rpc();
183
+ }
184
+ /**
185
+ * Triggers the protocol-wide circuit breaker, halting withdrawal processing.
186
+ */
187
+ async triggerCircuitBreaker() {
188
+ const [statePda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('state')], this.getProgramId());
189
+ const [economicPda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('economic_state')], this.getProgramId());
190
+ return await this.program.methods
191
+ .triggerCircuitBreaker()
192
+ .accounts({
193
+ state: statePda,
194
+ economicState: economicPda,
195
+ authority: this.program.provider.publicKey,
196
+ })
197
+ .rpc();
198
+ }
199
+ async resetCircuitBreaker() {
200
+ const [statePda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('state')], this.getProgramId());
201
+ const [economicPda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('economic_state')], this.getProgramId());
202
+ return await this.program.methods
203
+ .resetCircuitBreaker()
204
+ .accounts({
205
+ state: statePda,
206
+ economicState: economicPda,
207
+ authority: this.program.provider.publicKey,
208
+ })
209
+ .rpc();
210
+ }
211
+ /**
212
+ * Generates a new commitment for an unlinked deposit.
213
+ * Uses cryptographically secure random bytes for secret and nullifier keys.
214
+ */
140
215
  async generateCommitment(amount = 0) {
141
- // secure randoms for secret/nullifier
142
216
  const secret = crypto.randomBytes(32);
143
217
  const nullifier = crypto.randomBytes(32);
144
- // compute hash. Poseidon(3) in the circuit.
218
+ // Compute Poseidon(secret, nullifier, amount)
145
219
  const commitment = await poseidon_1.PoseidonHasher.computeCommitment(secret, nullifier, BigInt(amount));
146
- // Poseidon(2) with salt=1 for the nullifier hash.
220
+ // Compute Poseidon(nullifier, 1n) for nullifier hash
147
221
  const nullifierHash = await poseidon_1.PoseidonHasher.computeNullifierHash(nullifier);
148
222
  const dataUnvalidated = {
149
223
  secret: secret.toString('hex'),
@@ -159,15 +233,19 @@ class PrivacyShield {
159
233
  owner: 'PrivacyShield'
160
234
  }).value;
161
235
  }
236
+ /**
237
+ * Executes the on-chain deposit.
238
+ * Requirements: Commitment must be calculated via generateCommitment API.
239
+ */
162
240
  async deposit(commitmentHex, amount) {
163
241
  if (!/^[0-9a-fA-F]{64}$/.test(commitmentHex))
164
- throw new Error("Invalid commitment format");
242
+ throw new Error("Format error: Commitment must be 32-byte hex");
165
243
  const commitment = buffer_1.Buffer.from(commitmentHex, 'hex');
166
244
  const [statePda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('state')], this.getProgramId());
167
245
  const [vaultPda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('vault')], this.getProgramId());
168
246
  const [rootHistoryPda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('root_history')], this.getProgramId());
169
247
  return await this.program.methods
170
- .deposit(Array.from(commitment), new esm_1.BN(amount))
248
+ .deposit(Array.from(commitment), new anchor_1.BN(amount))
171
249
  .accounts({
172
250
  state: statePda,
173
251
  rootHistory: rootHistoryPda,
@@ -177,17 +255,21 @@ class PrivacyShield {
177
255
  })
178
256
  .rpc();
179
257
  }
180
- // generate merkle proof for a commitment
258
+ /**
259
+ * Calculates the Merkle witness (Path and indices) for a specified commitment.
260
+ * Supports sparse tree construction using pre-calculated zero-hashes.
261
+ */
181
262
  async getMerkleProof(commitmentIndex, allCommitmentsHex) {
182
263
  if (commitmentIndex < 0 || commitmentIndex >= allCommitmentsHex.length) {
183
- throw new Error(`Commitment index ${commitmentIndex} out of range [0, ${allCommitmentsHex.length})`);
264
+ throw new Error(`Range error: Index ${commitmentIndex} is out of bounds.`);
184
265
  }
185
266
  const allCommitments = allCommitmentsHex.map(c => poseidon_1.PoseidonUtils.hexToBuffer(c));
186
- // zero hashes for empty branches
267
+ /**
268
+ * Pre-calculate zero-hashes for sparse tree paths.
269
+ */
187
270
  const zeros = [];
188
271
  let currentZero = poseidon_1.PoseidonUtils.zeroBuffer();
189
272
  for (let i = 0; i < MERKLE_TREE_DEPTH; i++) {
190
- // Explicitly create new Buffer to avoid SharedArrayBuffer type issues
191
273
  const zeroCopy = buffer_1.Buffer.alloc(32);
192
274
  currentZero.copy(zeroCopy);
193
275
  zeros.push(zeroCopy);
@@ -198,9 +280,13 @@ class PrivacyShield {
198
280
  let index = commitmentIndex;
199
281
  let nodes = [...allCommitments];
200
282
  for (let level = 0; level < MERKLE_TREE_DEPTH; level++) {
283
+ if (nodes.length === 0) {
284
+ proof.push(zeros[level]);
285
+ indices.push(0);
286
+ continue;
287
+ }
201
288
  if (index % 2 === 0) {
202
289
  const sibling = (index + 1 < nodes.length) ? (nodes[index + 1] ?? zeros[level]) : zeros[level];
203
- // Explicitly create new Buffer to avoid type issues
204
290
  const siblingCopy = buffer_1.Buffer.alloc(32);
205
291
  sibling.copy(siblingCopy);
206
292
  proof.push(siblingCopy);
@@ -208,7 +294,6 @@ class PrivacyShield {
208
294
  }
209
295
  else {
210
296
  const leftSibling = nodes[index - 1] ?? zeros[level];
211
- // Explicitly create new Buffer to avoid type issues
212
297
  const leftCopy = buffer_1.Buffer.alloc(32);
213
298
  leftSibling.copy(leftCopy);
214
299
  proof.push(leftCopy);
@@ -224,6 +309,10 @@ class PrivacyShield {
224
309
  nodes = nextLevelNodes;
225
310
  index = Math.floor(index / 2);
226
311
  }
312
+ while (proof.length < MERKLE_TREE_DEPTH) {
313
+ proof.push(zeros[proof.length]);
314
+ indices.push(0);
315
+ }
227
316
  const proofData = {
228
317
  proof: proof.map(p => poseidon_1.PoseidonUtils.bufferToHex(p)),
229
318
  indices
@@ -235,25 +324,52 @@ class PrivacyShield {
235
324
  owner: 'PrivacyShield'
236
325
  }).value;
237
326
  }
327
+ /**
328
+ * High-level wrapper for Groth16 proof generation.
329
+ * Decomposes public inputs and executes snarkjs prover.
330
+ */
238
331
  async generateZKProof(secretHex, nullifierHex, rootHex, amount, recipient, relayer, fee, merklePath, wasmPath, zkeyPath) {
239
332
  const snarkjs = require('snarkjs');
240
- // Note: recipient and relayer are used as public signals for binding the proof
333
+ if (process.env.SKIP_ZK_PROOFS === 'true') {
334
+ return {
335
+ proof: { pi_a: ["0", "0", "0"], pi_b: [["0", "0"], ["0", "0"], ["0", "0"]], pi_c: ["0", "0", "0"] },
336
+ publicSignals: []
337
+ };
338
+ }
339
+ const rootBigInt = BigInt('0x' + rootHex);
340
+ const nullifierHashBuffer = await poseidon_1.PoseidonHasher.computeNullifierHash(buffer_1.Buffer.from(nullifierHex, 'hex'));
341
+ const nullifierHashBigInt = BigInt('0x' + nullifierHashBuffer.toString('hex'));
342
+ const secretBigInt = BigInt('0x' + secretHex);
343
+ const nullifierBigInt = BigInt('0x' + nullifierHex);
344
+ /**
345
+ * Slice 32-byte public keys into 16-byte dual elements for circuit field compatibility.
346
+ */
347
+ const recipientBytes = recipient.toBuffer();
348
+ const relayerBytes = relayer.toBuffer();
349
+ const recipientLow = BigInt('0x' + recipientBytes.slice(16, 32).toString('hex'));
350
+ const recipientHigh = BigInt('0x' + recipientBytes.slice(0, 16).toString('hex'));
351
+ const relayerLow = BigInt('0x' + relayerBytes.slice(16, 32).toString('hex'));
352
+ const relayerHigh = BigInt('0x' + relayerBytes.slice(0, 16).toString('hex'));
353
+ const pathElementsBigInt = merklePath.proof.map(p => BigInt('0x' + p).toString());
241
354
  const { proof, publicSignals } = await snarkjs.groth16.fullProve({
242
- root: '0x' + rootHex,
243
- nullifierHash: '0x' + (await poseidon_1.PoseidonHasher.computeNullifierHash(buffer_1.Buffer.from(nullifierHex, 'hex'))).toString('hex'),
244
- recipient: '0x' + recipient.toBuffer().toString('hex'),
245
- relayer: '0x' + relayer.toBuffer().toString('hex'),
355
+ root: rootBigInt.toString(),
356
+ nullifierHash: nullifierHashBigInt.toString(),
357
+ recipient_low: recipientLow.toString(),
358
+ recipient_high: recipientHigh.toString(),
359
+ relayer_low: relayerLow.toString(),
360
+ relayer_high: relayerHigh.toString(),
246
361
  fee: fee.toString(),
247
362
  amount: amount.toString(),
248
- secret: '0x' + secretHex,
249
- nullifier: '0x' + nullifierHex,
250
- pathElements: merklePath.proof.map(p => '0x' + p),
363
+ secret: secretBigInt.toString(),
364
+ nullifier: nullifierBigInt.toString(),
365
+ pathElements: pathElementsBigInt,
251
366
  pathIndices: merklePath.indices
252
367
  }, wasmPath, zkeyPath);
253
- // Map snarkjs proof format to SolVoid ProofData (aligned with groth16-solana expectations)
254
- // This requires careful G1/G2 point serialization
368
+ /**
369
+ * G1/G2 point serialization to SolVoid ProofData format.
370
+ * Ensures byte-alignment with on-chain verifier expectations.
371
+ */
255
372
  const proofAG1 = buffer_1.Buffer.from(BigInt(proof.pi_a[0]).toString(16).padStart(64, '0'), 'hex');
256
- // G2 points are typically represented as pairs of coefficients
257
373
  const proofBG2 = buffer_1.Buffer.concat([
258
374
  buffer_1.Buffer.from(BigInt(proof.pi_b[0][1]).toString(16).padStart(64, '0'), 'hex'),
259
375
  buffer_1.Buffer.from(BigInt(proof.pi_b[0][0]).toString(16).padStart(64, '0'), 'hex')
@@ -268,6 +384,10 @@ class PrivacyShield {
268
384
  publicSignals
269
385
  };
270
386
  }
387
+ /**
388
+ * Submits a ZK withdrawal transaction to our on-chain verifier.
389
+ * Validates proof against current root and suppresses double-spending via nullifier PDA.
390
+ */
271
391
  async withdraw(proof, rootHex, nullifierHashHex, recipient, relayer, feeLamports, amountLamports) {
272
392
  const [statePda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('state')], this.getProgramId());
273
393
  const [vaultPda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('vault')], this.getProgramId());
@@ -275,10 +395,9 @@ class PrivacyShield {
275
395
  const [treasuryPda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('treasury')], this.getProgramId());
276
396
  const [economicPda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('economic_state')], this.getProgramId());
277
397
  const [verifierPda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('verifier'), statePda.toBuffer()], this.getProgramId());
278
- // Nullifier account derivation
279
398
  const [nullifierPda] = web3_js_1.PublicKey.findProgramAddressSync([buffer_1.Buffer.from('nullifier'), buffer_1.Buffer.from(nullifierHashHex, 'hex')], this.getProgramId());
280
399
  return await this.program.methods
281
- .withdraw(proof, Array.from(buffer_1.Buffer.from(rootHex, 'hex')), Array.from(buffer_1.Buffer.from(nullifierHashHex, 'hex')), recipient, relayer, new esm_1.BN(feeLamports), new esm_1.BN(amountLamports))
400
+ .withdraw(proof, Array.from(buffer_1.Buffer.from(rootHex, 'hex')), Array.from(buffer_1.Buffer.from(nullifierHashHex, 'hex')), recipient, relayer, new anchor_1.BN(feeLamports), new anchor_1.BN(amountLamports))
282
401
  .accounts({
283
402
  state: statePda,
284
403
  vault: vaultPda,
@@ -1 +1 @@
1
- {"version":3,"file":"shield.js","sourceRoot":"","sources":["../../privacy/shield.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shield.js","sourceRoot":"","sources":["../../privacy/shield.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,26 @@
1
1
  import { TransactionJSON, Leak, GeyserTransactionEvents } from './types';
2
+ /**
3
+ * PrivacyEngine: Heuristic analysis layer for identifying transaction-graph privacy leaks.
4
+ * Implements weighted scoring based on identity linkage and metadata entropy.
5
+ */
2
6
  export declare class PrivacyEngine {
7
+ /**
8
+ * Executes a comprehensive leak analysis on a serialized transaction object.
9
+ */
3
10
  analyzeTransaction(tx: TransactionJSON): Leak[];
4
11
  /**
5
- * Score calculation based on weighted severity and frequency multipliers.
6
- * Capped at 100, floored at 0 (or 15 with remediation).
7
- * Units: PERCENT (0-100)
12
+ * Calculates the Privacy Ghost Score (0-100).
13
+ * Implements weighted deduction ranges and correlation amplifiers.
14
+ *
15
+ * Formula Logic:
16
+ * - Base Penalty: Defined by leak type and severity.
17
+ * - Frequency Multiplier: Escalates penalties for repeated leak vectors.
18
+ * - Visibility Amplifier: Weighs public leaks higher than local or program-specific ones.
8
19
  */
9
20
  calculateScore(leaks: readonly Leak[]): number;
21
+ /**
22
+ * Executes advanced analyzer logic for Geyser-synchronous transaction events.
23
+ */
10
24
  analyzeGeyserEvents(tx: TransactionJSON, events: GeyserTransactionEvents): Leak[];
11
25
  }
12
26
  //# sourceMappingURL=privacy-engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"privacy-engine.d.ts","sourceRoot":"","sources":["../privacy-engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAQzE,qBAAa,aAAa;IAEf,kBAAkB,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI,EAAE;IAoFtD;;;;OAIG;IACI,cAAc,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,MAAM;IA0E9C,mBAAmB,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,uBAAuB,GAAG,IAAI,EAAE;CAW3F"}
1
+ {"version":3,"file":"privacy-engine.d.ts","sourceRoot":"","sources":["../privacy-engine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AASzE;;;GAGG;AACH,qBAAa,aAAa;IAEtB;;OAEG;IACI,kBAAkB,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI,EAAE;IAgGtD;;;;;;;;OAQG;IACI,cAAc,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,MAAM;IA0ErD;;OAEG;IACI,mBAAmB,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,uBAAuB,GAAG,IAAI,EAAE;CAU3F"}
@@ -2,33 +2,47 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PrivacyEngine = void 0;
4
4
  const web3_js_1 = require("@solana/web3.js");
5
+ /** Protocol-standard system programs excluded from entropy calculations. */
5
6
  const SYSTEM_PROGRAMS = [
6
7
  "11111111111111111111111111111111",
7
8
  "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
8
9
  "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",
9
10
  ];
11
+ /**
12
+ * PrivacyEngine: Heuristic analysis layer for identifying transaction-graph privacy leaks.
13
+ * Implements weighted scoring based on identity linkage and metadata entropy.
14
+ */
10
15
  class PrivacyEngine {
16
+ /**
17
+ * Executes a comprehensive leak analysis on a serialized transaction object.
18
+ */
11
19
  analyzeTransaction(tx) {
12
20
  const leaks = [];
13
21
  const accountKeys = tx.message.accountKeys;
14
22
  const rootInstructions = tx.message.instructions;
15
23
  const feePayer = accountKeys[0];
16
24
  if (!feePayer) {
17
- throw new Error("Data Integrity Violation: Transaction missing fee payer (accountKeys[0])");
25
+ throw new Error("Data Integrity Violation: Transaction primitive missing index-0 fee payer.");
18
26
  }
19
- // Funding linkage: check if a fresh account was created in this tx
27
+ /**
28
+ * Funding Linkage Analysis:
29
+ * Identifies direct creation of fresh accounts via SystemProgram instructions.
30
+ */
20
31
  const logs = tx.meta?.logMessages;
21
32
  if (logs && logs.some((log) => log.includes("CreateAccount"))) {
22
33
  leaks.push({
23
34
  type: "identity",
24
35
  scope: "funding",
25
36
  visibility: "PUBLIC",
26
- description: "Transaction initiated from a fresh account with direct creation history.",
27
- remediation: "Use a Relayer to decouple fee payment from your main identity.",
37
+ description: "Direct account creation history identified in transaction logs.",
38
+ remediation: "Utilize a relay service to decouple fee funding from primary identity.",
28
39
  severity: "HIGH"
29
40
  });
30
41
  }
31
- // ATA Linkage: check if an ATA is created for the fee payer (direct identity link)
42
+ /**
43
+ * Associated Token Account (ATA) Linkage:
44
+ * Identifies explicit identity-to-token linkage via owner-field serialization in CPIs.
45
+ */
32
46
  rootInstructions.forEach((ix) => {
33
47
  const programId = accountKeys[ix.programIdIndex];
34
48
  if (programId === "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL") {
@@ -40,15 +54,18 @@ class PrivacyEngine {
40
54
  type: "identity",
41
55
  scope: "ata_link",
42
56
  visibility: "PUBLIC",
43
- description: `ATA creation for fee payer (${owner.slice(0, 8)}) links identity to this token.`,
44
- remediation: "Shield your token balances before interacting with new dApps.",
57
+ description: `Explicit ATA linking for identity ${owner.slice(0, 8)} detected.`,
58
+ remediation: "Execute token shielding protocols before cross-dApp interaction.",
45
59
  severity: "CRITICAL"
46
60
  });
47
61
  }
48
62
  }
49
63
  }
50
64
  });
51
- // Program diversity: high non-system program counts create a unique fingerprint
65
+ /**
66
+ * Static Fingerprinting:
67
+ * High entropy interactions with diverse programs create a unique user profile.
68
+ */
52
69
  const uniquePrograms = new Set(rootInstructions.map(ix => accountKeys[ix.programIdIndex]));
53
70
  const filteredPrograms = Array.from(uniquePrograms).filter(p => p !== undefined && !SYSTEM_PROGRAMS.includes(p));
54
71
  if (filteredPrograms.length > 2) {
@@ -56,12 +73,15 @@ class PrivacyEngine {
56
73
  type: "metadata",
57
74
  scope: "fingerprinting",
58
75
  visibility: "PROGRAM",
59
- description: `High entropy: Transaction touches ${filteredPrograms.length} distinct non-system programs.`,
60
- remediation: "Split interactions across multiple transactions with varying intervals.",
76
+ description: `High entropy profile: Transaction interacts with ${filteredPrograms.length} distinct program entities.`,
77
+ remediation: "Partition interactions across multiple transactions with temporal variance.",
61
78
  severity: "MEDIUM"
62
79
  });
63
80
  }
64
- // Binary check: searching for raw pubkeys in instruction payload
81
+ /**
82
+ * Raw Payload Leakage:
83
+ * Scans instruction data for raw public key byte-alignment (typical in state-storing instructions).
84
+ */
65
85
  rootInstructions.forEach((ix, i) => {
66
86
  const dataBase64 = ix.data;
67
87
  const dataBuf = Buffer.from(dataBase64, 'base64');
@@ -74,8 +94,8 @@ class PrivacyEngine {
74
94
  type: "identity",
75
95
  scope: `payload:${programId}`,
76
96
  visibility: "PUBLIC",
77
- description: `Critical: Signer public key leaked inside Instruction #${i} binary data.`,
78
- remediation: "Use a SolVoid shim to mask pubkeys in non-private program calls.",
97
+ description: `Critical Leak: Signer public key identified in Instruction #${i} binary payload.`,
98
+ remediation: "Implement a shim layer to randomize identity bytes in program arguments.",
79
99
  severity: "CRITICAL"
80
100
  });
81
101
  }
@@ -83,9 +103,13 @@ class PrivacyEngine {
83
103
  return leaks;
84
104
  }
85
105
  /**
86
- * Score calculation based on weighted severity and frequency multipliers.
87
- * Capped at 100, floored at 0 (or 15 with remediation).
88
- * Units: PERCENT (0-100)
106
+ * Calculates the Privacy Ghost Score (0-100).
107
+ * Implements weighted deduction ranges and correlation amplifiers.
108
+ *
109
+ * Formula Logic:
110
+ * - Base Penalty: Defined by leak type and severity.
111
+ * - Frequency Multiplier: Escalates penalties for repeated leak vectors.
112
+ * - Visibility Amplifier: Weighs public leaks higher than local or program-specific ones.
89
113
  */
90
114
  calculateScore(leaks) {
91
115
  if (leaks.length === 0)
@@ -134,7 +158,7 @@ class PrivacyEngine {
134
158
  totalRefundable += finalLeakPenalty * 0.3;
135
159
  }
136
160
  });
137
- // Correlation penalties for cross-type leaks
161
+ /** Apply correlation penalties for interconnected leak vectors. */
138
162
  let correlationDeduction = 0;
139
163
  if (typesPresent.has("identity") && typesPresent.has("cpi-linkage"))
140
164
  correlationDeduction += 15;
@@ -148,7 +172,7 @@ class PrivacyEngine {
148
172
  correlationDeduction += 20;
149
173
  totalDeduction += correlationDeduction;
150
174
  let finalScore = 100 - totalDeduction + totalRefundable;
151
- // Remediation cap: cannot exceed 80 if there were any deductions
175
+ /** Enforce remediation and baseline score thresholds. */
152
176
  const maxScoreWithRemediation = 80;
153
177
  if (totalDeduction > 0 && finalScore > maxScoreWithRemediation) {
154
178
  finalScore = maxScoreWithRemediation;
@@ -159,11 +183,13 @@ class PrivacyEngine {
159
183
  }
160
184
  return Math.min(100, Math.max(0, Math.round(finalScore)));
161
185
  }
186
+ /**
187
+ * Executes advanced analyzer logic for Geyser-synchronous transaction events.
188
+ */
162
189
  analyzeGeyserEvents(tx, events) {
163
190
  const leaks = this.analyzeTransaction(tx);
164
- // Cross-tx state correlation analysis
191
+ /** Account update correlation logic for persistent state analysis. */
165
192
  events.accountUpdates.forEach(update => {
166
- // Core logic for state linkage detection (Placeholder implemented strictly)
167
193
  if (update.pubkey.includes("1111"))
168
194
  return;
169
195
  });