@sabaaa1/common 0.0.27 → 0.0.28
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/assets/snarkjs.worker-IfEWh7KB.js +14803 -0
- package/assets/{zkProofWorkerLogic-DB9cbXu-.js → utxo.worker-CmpqHMqD.js} +16093 -14906
- package/assets/{utxoWorkerLogic-DEqWaadT.js → zkProof.worker-CmpqHMqD.js} +16723 -16044
- package/package.json +1 -1
- package/webworker/snarkjsWorker/snarkjsWorkerLogic.cjs +1 -0
- package/webworker/snarkjsWorker/snarkjsWorkerLogic.mjs +40 -0
- package/webworker/utxoWorker/utxoWorkerLogic.cjs +1 -0
- package/webworker/utxoWorker/utxoWorkerLogic.mjs +76 -0
- package/webworker/workerFactory.cjs +1 -1
- package/webworker/workerFactory.d.ts +3 -3
- package/webworker/workerFactory.mjs +30 -16
- package/webworker/workerProxy.cjs +1 -0
- package/webworker/workerProxy.mjs +54 -0
- package/webworker/workers/snarkjs.worker.d.ts +0 -0
- package/webworker/workers/utxo.worker.d.ts +0 -0
- package/webworker/workers/zkProof.worker.d.ts +0 -0
- package/webworker/zkProofWorker/zkProofWorkerLogic.cjs +1 -0
- package/webworker/zkProofWorker/zkProofWorkerLogic.mjs +52 -0
- package/assets/snarkjsWorkerLauncher-Dsmwcy9L.js +0 -1176
- package/assets/snarkjsWorkerLogic-B9NbAQYW.js +0 -13634
- package/assets/utxoWorkerLauncher-BUSzpnDL.js +0 -1205
- package/assets/zkProofWorkerLauncher-CoKmCKjC.js +0 -1205
- package/webworker/snarkjsWorker/snarkjsWorkerLauncher.cjs +0 -1
- package/webworker/snarkjsWorker/snarkjsWorkerLauncher.mjs +0 -4
- package/webworker/utxoWorker/utxoWorkerLauncher.cjs +0 -1
- package/webworker/utxoWorker/utxoWorkerLauncher.mjs +0 -4
- package/webworker/viteWorkerURL.constant.cjs +0 -1
- package/webworker/viteWorkerURL.constant.d.ts +0 -9
- package/webworker/viteWorkerURL.constant.mjs +0 -12
- package/webworker/zkProofWorker/zkProofWorkerLauncher.cjs +0 -1
- package/webworker/zkProofWorker/zkProofWorkerLauncher.mjs +0 -4
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const M=require("../workerProxy.cjs"),i=require("../../constants/vite.constants.cjs"),O=require("snarkjs"),v=require("axios");function F(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const g=F(O),n=new M.WorkerProxy,c=async e=>{const{data:t}=await v.get(e,{responseType:"arraybuffer"});return new Uint8Array(t)},b=async e=>{try{const{input:t,wasmFilePath:r,zKeyFilePath:s,chainId:w}=e.payload.data,{hostLocation:{origin:l},constants:{isDevelopment:k,chains:{chainIds:P}}}=e.metadata;let a=r,o=s,u,f;const h=a.startsWith("https://");if(i.isNode&&!h){i.isWebpack?(a=`libs/hardhat/test/circuits/${r}`,o=`libs/hardhat/test/circuits/${s}`):!i.isWebpack&&k&&(a=`test/circuits/${r}`,o=`test/circuits/${s}`);const y=require("path");a=y.resolve(a),o=y.resolve(o)}i.isNode&&h?(u=await c(a),f=await c(o)):w===P.localhost&&!i.isNode&&(a=`${l}/${r}`,o=`${l}/${s}`);const{proof:d,publicSignals:p}=await g.groth16.fullProve(t,u??a,f??o),m=await g.groth16.exportSolidityCallData(d,p),$=JSON.parse(`[${m}]`);n.postMessageToMainThread({zkCallData:$,proof:d,publicSignals:p})}catch(t){console.error(t),n.postErrorToMainThread(t)}};n.attachWorkerSideOnMessage(b);exports.default=n;exports.fetchUint8Array=c;exports.onWorkerMessage=b;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { WorkerProxy as b } from "../workerProxy.mjs";
|
|
2
|
+
import { isNode as i, isWebpack as d } from "../../constants/vite.constants.mjs";
|
|
3
|
+
import * as m from "snarkjs";
|
|
4
|
+
import x from "axios";
|
|
5
|
+
const l = new b(), w = async (r) => {
|
|
6
|
+
const { data: e } = await x.get(r, { responseType: "arraybuffer" });
|
|
7
|
+
return new Uint8Array(e);
|
|
8
|
+
}, z = async (r) => {
|
|
9
|
+
try {
|
|
10
|
+
const { input: e, wasmFilePath: s, zKeyFilePath: o, chainId: $ } = r.payload.data, {
|
|
11
|
+
hostLocation: { origin: n },
|
|
12
|
+
constants: {
|
|
13
|
+
isDevelopment: g,
|
|
14
|
+
chains: { chainIds: k }
|
|
15
|
+
}
|
|
16
|
+
} = r.metadata;
|
|
17
|
+
let t = s, a = o, c, h;
|
|
18
|
+
const f = t.startsWith("https://");
|
|
19
|
+
if (i && !f) {
|
|
20
|
+
d ? (t = `libs/hardhat/test/circuits/${s}`, a = `libs/hardhat/test/circuits/${o}`) : !d && g && (t = `test/circuits/${s}`, a = `test/circuits/${o}`);
|
|
21
|
+
const y = require("path");
|
|
22
|
+
t = y.resolve(t), a = y.resolve(a);
|
|
23
|
+
}
|
|
24
|
+
i && f ? (c = await w(t), h = await w(a)) : $ === k.localhost && !i && (t = `${n}/${s}`, a = `${n}/${o}`);
|
|
25
|
+
const { proof: p, publicSignals: u } = await m.groth16.fullProve(
|
|
26
|
+
e,
|
|
27
|
+
c ?? t,
|
|
28
|
+
h ?? a
|
|
29
|
+
), F = await m.groth16.exportSolidityCallData(p, u), P = JSON.parse(`[${F}]`);
|
|
30
|
+
l.postMessageToMainThread({ zkCallData: P, proof: p, publicSignals: u });
|
|
31
|
+
} catch (e) {
|
|
32
|
+
console.error(e), l.postErrorToMainThread(e);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
l.attachWorkerSideOnMessage(z);
|
|
36
|
+
export {
|
|
37
|
+
l as default,
|
|
38
|
+
w as fetchUint8Array,
|
|
39
|
+
z as onWorkerMessage
|
|
40
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("../../crypto/preProcessing.cjs"),a=require("../../data-structures/crypto-keys/keys.cjs"),T=require("../../data-structures/utxo/Utxo.cjs"),h=require("../../data-structures/crypto-keys/encryptDecryptUtxo.cjs"),y=require("../../data-structures/crypto-keys/decodeUTXO.cjs"),k=require("../workerProxy.cjs"),d=require("./utxoWorker.types.cjs"),c=new k.WorkerProxy,p=async({data:e})=>{const{utxos:r,nullifiers:s}=e,o=r.filter(t=>{const u=new T.Utxo(t);return!s.has(u.getNullifier())});c.postMessageToMainThread({utxoConstructors:o,stealthPairCache:a.stealthPairCacheDevice.serialize(),stealthAddressCache:a.stealthAddressCacheDevice.serialize()})},U=async({data:e})=>{const r=new a.UserKeys(e.signature),s=r.getShieldedPrivateKey(),o=e.encryptedOutputs.map(t=>{try{return t.isPositive?h.decryptUtxoConstructorArgs(Buffer.from(t.value.slice(2),"hex"),r):y.decodeUtxoConstructorArgs(t.value,s)}catch{return}}).filter(t=>t!==void 0&&t.amount!==0n);c.postMessageToMainThread(o)},x=async({data:e})=>{const r=new a.UserKeys(e.signature),s=[],{encryptedOutputs:o}=e;let{lastOutput:t}=e;const u=r.getShieldedPrivateKey();for(let l=0;l<o.length;l+=1){const n=o[l];if(t=n.value,n.isPositive)try{const i=h.decryptUtxo(Buffer.from(t.slice(2),"hex"),r);if(!i.erc20TokenAddress||!i.amount||!i.stealthAddress)throw Error("bruh");s.push(n)}catch{}else try{y.checkUtxoSignature(t,u)&&s.push(n)}catch{}}c.postMessageToMainThread({additionalEncryptedOutputs:s,lastOutput:t})},g=async e=>{try{await f.preProcessing();const{type:r}=e.payload;switch(r){case d.UtxoWorkerActionType.BATCH_FILTER_UTXOS_WITH_NULLIFIER:await p(e.payload);return;case d.UtxoWorkerActionType.BUILD_UTXOS:await U(e.payload);return;case d.UtxoWorkerActionType.DECIPHER_OUTPUTS:await x(e.payload);return;default:throw Error(`Unknown worker message type ${r}`)}}catch(r){console.error(r),c.postErrorToMainThread(r)}};c.attachWorkerSideOnMessage(g);exports.default=c;exports.handleBuildUtxosMessage=U;exports.handleDecipherMessage=x;exports.handleFilterUtxosWithNullifier=p;exports.onWorkerMessage=g;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { preProcessing as u } from "../../crypto/preProcessing.mjs";
|
|
2
|
+
import { stealthPairCacheDevice as p, stealthAddressCacheDevice as y, UserKeys as h } from "../../data-structures/crypto-keys/keys.mjs";
|
|
3
|
+
import { Utxo as f } from "../../data-structures/utxo/Utxo.mjs";
|
|
4
|
+
import { decryptUtxoConstructorArgs as m, decryptUtxo as g } from "../../data-structures/crypto-keys/encryptDecryptUtxo.mjs";
|
|
5
|
+
import { decodeUtxoConstructorArgs as x, checkUtxoSignature as U } from "../../data-structures/crypto-keys/decodeUTXO.mjs";
|
|
6
|
+
import { WorkerProxy as T } from "../workerProxy.mjs";
|
|
7
|
+
import { UtxoWorkerActionType as d } from "./utxoWorker.types.mjs";
|
|
8
|
+
const i = new T(), w = async ({ data: e }) => {
|
|
9
|
+
const { utxos: r, nullifiers: s } = e, o = r.filter((t) => {
|
|
10
|
+
const n = new f(t);
|
|
11
|
+
return !s.has(n.getNullifier());
|
|
12
|
+
});
|
|
13
|
+
i.postMessageToMainThread({
|
|
14
|
+
utxoConstructors: o,
|
|
15
|
+
stealthPairCache: p.serialize(),
|
|
16
|
+
stealthAddressCache: y.serialize()
|
|
17
|
+
});
|
|
18
|
+
}, P = async ({ data: e }) => {
|
|
19
|
+
const r = new h(e.signature), s = r.getShieldedPrivateKey(), o = e.encryptedOutputs.map((t) => {
|
|
20
|
+
try {
|
|
21
|
+
return t.isPositive ? m(Buffer.from(t.value.slice(2), "hex"), r) : x(t.value, s);
|
|
22
|
+
} catch {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
}).filter((t) => t !== void 0 && t.amount !== 0n);
|
|
26
|
+
i.postMessageToMainThread(o);
|
|
27
|
+
}, v = async ({ data: e }) => {
|
|
28
|
+
const r = new h(e.signature), s = [], { encryptedOutputs: o } = e;
|
|
29
|
+
let { lastOutput: t } = e;
|
|
30
|
+
const n = r.getShieldedPrivateKey();
|
|
31
|
+
for (let l = 0; l < o.length; l += 1) {
|
|
32
|
+
const c = o[l];
|
|
33
|
+
if (t = c.value, c.isPositive)
|
|
34
|
+
try {
|
|
35
|
+
const a = g(Buffer.from(t.slice(2), "hex"), r);
|
|
36
|
+
if (!a.erc20TokenAddress || !a.amount || !a.stealthAddress)
|
|
37
|
+
throw Error("bruh");
|
|
38
|
+
s.push(c);
|
|
39
|
+
} catch {
|
|
40
|
+
}
|
|
41
|
+
else
|
|
42
|
+
try {
|
|
43
|
+
U(t, n) && s.push(c);
|
|
44
|
+
} catch {
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
i.postMessageToMainThread({ additionalEncryptedOutputs: s, lastOutput: t });
|
|
48
|
+
}, k = async (e) => {
|
|
49
|
+
try {
|
|
50
|
+
await u();
|
|
51
|
+
const { type: r } = e.payload;
|
|
52
|
+
switch (r) {
|
|
53
|
+
case d.BATCH_FILTER_UTXOS_WITH_NULLIFIER:
|
|
54
|
+
await w(e.payload);
|
|
55
|
+
return;
|
|
56
|
+
case d.BUILD_UTXOS:
|
|
57
|
+
await P(e.payload);
|
|
58
|
+
return;
|
|
59
|
+
case d.DECIPHER_OUTPUTS:
|
|
60
|
+
await v(e.payload);
|
|
61
|
+
return;
|
|
62
|
+
default:
|
|
63
|
+
throw Error(`Unknown worker message type ${r}`);
|
|
64
|
+
}
|
|
65
|
+
} catch (r) {
|
|
66
|
+
console.error(r), i.postErrorToMainThread(r);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
i.attachWorkerSideOnMessage(k);
|
|
70
|
+
export {
|
|
71
|
+
i as default,
|
|
72
|
+
P as handleBuildUtxosMessage,
|
|
73
|
+
v as handleDecipherMessage,
|
|
74
|
+
w as handleFilterUtxosWithNullifier,
|
|
75
|
+
k as onWorkerMessage
|
|
76
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../constants/vite.constants.cjs")
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../constants/vite.constants.cjs"),r=require("./worker.registry.cjs");var t=typeof document<"u"?document.currentScript:null;class o{static async createNodeWorker(e){switch(e){case r.WorkerVariant.SnarkJS:return(await Promise.resolve().then(()=>require("./snarkjsWorker/snarkjsWorkerLogic.cjs"))).default;case r.WorkerVariant.ZKProof:return(await Promise.resolve().then(()=>require("./zkProofWorker/zkProofWorkerLogic.cjs"))).default;case r.WorkerVariant.UTXO:return(await Promise.resolve().then(()=>require("./utxoWorker/utxoWorkerLogic.cjs"))).default;default:throw new Error(`Unknown worker type: ${e}`)}}static createBrowserWorker(e){switch(e){case r.WorkerVariant.SnarkJS:return new Worker(new URL(""+(typeof document>"u"?require("url").pathToFileURL(__dirname+"/../assets/snarkjs.worker-IfEWh7KB.js").href:new URL("../assets/snarkjs.worker-IfEWh7KB.js",document.currentScript&&document.currentScript.src||document.baseURI).href),typeof document>"u"?require("url").pathToFileURL(__filename).href:t&&t.src||new URL("webworker/workerFactory.cjs",document.baseURI).href),{type:"module"});case r.WorkerVariant.ZKProof:return new Worker(new URL(""+(typeof document>"u"?require("url").pathToFileURL(__dirname+"/../assets/zkProof.worker-CmpqHMqD.js").href:new URL("../assets/zkProof.worker-CmpqHMqD.js",document.currentScript&&document.currentScript.src||document.baseURI).href),typeof document>"u"?require("url").pathToFileURL(__filename).href:t&&t.src||new URL("webworker/workerFactory.cjs",document.baseURI).href),{type:"module"});case r.WorkerVariant.UTXO:return new Worker(new URL(""+(typeof document>"u"?require("url").pathToFileURL(__dirname+"/../assets/utxo.worker-CmpqHMqD.js").href:new URL("../assets/utxo.worker-CmpqHMqD.js",document.currentScript&&document.currentScript.src||document.baseURI).href),typeof document>"u"?require("url").pathToFileURL(__filename).href:t&&t.src||new URL("webworker/workerFactory.cjs",document.baseURI).href),{type:"module"});default:throw new Error(`Unknown worker type: ${e}`)}}static async getWebWorker(e){return n.isNode||n.isSandbox?o.createNodeWorker(e):o.createBrowserWorker(e)}}exports.WorkerFactory=o;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { WorkerVariant } from './worker.registry';
|
|
2
2
|
export declare class WorkerFactory {
|
|
3
|
-
private static
|
|
4
|
-
private static
|
|
5
|
-
static getWebWorker(workerVariant: WorkerVariant): Promise<
|
|
3
|
+
private static createNodeWorker;
|
|
4
|
+
private static createBrowserWorker;
|
|
5
|
+
static getWebWorker(workerVariant: WorkerVariant): Promise<import('./workerProxy').WorkerProxy | Worker>;
|
|
6
6
|
}
|
|
@@ -1,20 +1,34 @@
|
|
|
1
|
-
import "../constants/vite.constants.mjs";
|
|
2
|
-
import {
|
|
3
|
-
class
|
|
4
|
-
static
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
import { isNode as o, isSandbox as a } from "../constants/vite.constants.mjs";
|
|
2
|
+
import { WorkerVariant as e } from "./worker.registry.mjs";
|
|
3
|
+
class t {
|
|
4
|
+
static async createNodeWorker(r) {
|
|
5
|
+
switch (r) {
|
|
6
|
+
case e.SnarkJS:
|
|
7
|
+
return (await import("./snarkjsWorker/snarkjsWorkerLogic.mjs")).default;
|
|
8
|
+
case e.ZKProof:
|
|
9
|
+
return (await import("./zkProofWorker/zkProofWorkerLogic.mjs")).default;
|
|
10
|
+
case e.UTXO:
|
|
11
|
+
return (await import("./utxoWorker/utxoWorkerLogic.mjs")).default;
|
|
12
|
+
default:
|
|
13
|
+
throw new Error(`Unknown worker type: ${r}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
static createBrowserWorker(r) {
|
|
17
|
+
switch (r) {
|
|
18
|
+
case e.SnarkJS:
|
|
19
|
+
return new Worker(new URL("" + new URL("../assets/snarkjs.worker-IfEWh7KB.js", import.meta.url).href, import.meta.url), { type: "module" });
|
|
20
|
+
case e.ZKProof:
|
|
21
|
+
return new Worker(new URL("" + new URL("../assets/zkProof.worker-CmpqHMqD.js", import.meta.url).href, import.meta.url), { type: "module" });
|
|
22
|
+
case e.UTXO:
|
|
23
|
+
return new Worker(new URL("" + new URL("../assets/utxo.worker-CmpqHMqD.js", import.meta.url).href, import.meta.url), { type: "module" });
|
|
24
|
+
default:
|
|
25
|
+
throw new Error(`Unknown worker type: ${r}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
static async getWebWorker(r) {
|
|
29
|
+
return o || a ? t.createNodeWorker(r) : t.createBrowserWorker(r);
|
|
16
30
|
}
|
|
17
31
|
}
|
|
18
32
|
export {
|
|
19
|
-
|
|
33
|
+
t as WorkerFactory
|
|
20
34
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class s{isNode=!1;isSandbox=!1;onmessage=null;onerror=null;_eventEmitter;get eventEmitter(){if(this._eventEmitter)return this._eventEmitter;if(this.isNode){const e=require("events");this._eventEmitter=new e}else this._eventEmitter=new EventTarget;return this._eventEmitter}constructor(){this.isNode=typeof process<"u"&&process.versions!=null&&process.versions.node!=null,this.isSandbox=typeof window<"u"&&window.origin==="null"}terminate(){}postMessage(e){this.isNode?this.eventEmitter.emit("message",e):this.isSandbox?this.eventEmitter?.dispatchEvent(new CustomEvent("worker-message",{detail:e})):postMessage(e)}postMessageToMainThread(e){const t={data:e};this.onmessage?this.onmessage(t):postMessage(e)}postErrorToMainThread(e){const t={data:{error:e}};this.onerror?this.onerror(t):postMessage(e)}attachWorkerSideOnMessage(e){this.isNode?this.eventEmitter.on("message",t=>{e(t)}):this.isSandbox&&this.eventEmitter.addEventListener("worker-message",t=>{e(t.detail)})}}exports.WorkerProxy=s;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
class i {
|
|
2
|
+
isNode = !1;
|
|
3
|
+
isSandbox = !1;
|
|
4
|
+
/**
|
|
5
|
+
* This allow browser or main thread to listen for worker response message
|
|
6
|
+
* using the normal `worker.onmessage = () => {}` syntax. Is should only be side on the
|
|
7
|
+
* main thread side, not on worker side.
|
|
8
|
+
*/
|
|
9
|
+
onmessage = null;
|
|
10
|
+
/**
|
|
11
|
+
* This allow browser or main thread to listen for worker response message
|
|
12
|
+
* using the normal `worker.onerror = () => {}` syntax. Is should only be side on the
|
|
13
|
+
* main thread side, not on worker side.
|
|
14
|
+
*/
|
|
15
|
+
onerror = null;
|
|
16
|
+
_eventEmitter;
|
|
17
|
+
// node EventEmitter
|
|
18
|
+
get eventEmitter() {
|
|
19
|
+
if (this._eventEmitter)
|
|
20
|
+
return this._eventEmitter;
|
|
21
|
+
if (this.isNode) {
|
|
22
|
+
const e = require("events");
|
|
23
|
+
this._eventEmitter = new e();
|
|
24
|
+
} else
|
|
25
|
+
this._eventEmitter = new EventTarget();
|
|
26
|
+
return this._eventEmitter;
|
|
27
|
+
}
|
|
28
|
+
constructor() {
|
|
29
|
+
this.isNode = typeof process < "u" && process.versions != null && process.versions.node != null, this.isSandbox = typeof window < "u" && window.origin === "null";
|
|
30
|
+
}
|
|
31
|
+
terminate() {
|
|
32
|
+
}
|
|
33
|
+
postMessage(e) {
|
|
34
|
+
this.isNode ? this.eventEmitter.emit("message", e) : this.isSandbox ? this.eventEmitter?.dispatchEvent(new CustomEvent("worker-message", { detail: e })) : postMessage(e);
|
|
35
|
+
}
|
|
36
|
+
postMessageToMainThread(e) {
|
|
37
|
+
const t = { data: e };
|
|
38
|
+
this.onmessage ? this.onmessage(t) : postMessage(e);
|
|
39
|
+
}
|
|
40
|
+
postErrorToMainThread(e) {
|
|
41
|
+
const t = { data: { error: e } };
|
|
42
|
+
this.onerror ? this.onerror(t) : postMessage(e);
|
|
43
|
+
}
|
|
44
|
+
attachWorkerSideOnMessage(e) {
|
|
45
|
+
this.isNode ? this.eventEmitter.on("message", (t) => {
|
|
46
|
+
e(t);
|
|
47
|
+
}) : this.isSandbox && this.eventEmitter.addEventListener("worker-message", (t) => {
|
|
48
|
+
e(t.detail);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export {
|
|
53
|
+
i as WorkerProxy
|
|
54
|
+
};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const y=require("../../crypto/preProcessing.cjs"),A=require("../../data-structures/crypto-keys/keys.cjs"),S=require("../../data-structures/utxo/Utxo.cjs"),m=require("../../functions/snarkjs/common.snarkjs.cjs"),C=require("../workerProxy.cjs"),d=require("./zkProofWorker.types.cjs"),u=require("../../functions/utils/merkleTree.utils.cjs"),t=new C.WorkerProxy,p=r=>{const{inputUtxosSerialized:e,merkleTreeSerialized:a}=r.data,c=u.contructMerkleTreeFromSerialized(a),i=e.map(n=>n.map(l=>new S.Utxo(l))),{inCommitmentSiblings:s,inCommitmentSiblingSides:o}=m.calcCommitmentsSiblingAndSides(i,c);t.postMessageToMainThread({inCommitmentSiblings:s,inCommitmentSiblingSides:o})},k=r=>{const{userSignature:e,merkleTreeAccessTokenSerialized:a}=r.data,c=new A.UserKeys(e),i=u.contructMerkleTreeFromSerialized(a),{accessTokenSiblings:s,accessTokenSiblingSides:o}=m.calcAccessTokenSiblingsAndSides(c,i);t.postMessageToMainThread({accessTokenSiblings:s,accessTokenSiblingSides:o})},T=r=>{const{inputUtxosSerialized:e,onChainCreation:a,proverVersion:c}=r.data,i=e.map(o=>o.map(n=>new S.Utxo(n)));let s=[];c==="v1x0"?s=i.map((o,n)=>o.map(l=>a[n]?"0":l.getNullifier())):s=i.map(o=>o.map(n=>n.amount===0n?"0":n.getNullifier())),t.postMessageToMainThread(s)},g=async r=>{try{await y.preProcessing();const{type:e}=r.payload;switch(e){case d.ZKProofWorkerActionType.CALC_COMMITMENTS_SIBLING_AND_SIDES:p(r.payload);return;case d.ZKProofWorkerActionType.CALC_ACCESS_TOKEN_SIBLING_AND_SIDES:k(r.payload);return;case d.ZKProofWorkerActionType.BUILD_IN_NULLIFIERS:T(r.payload);return;default:throw Error(`Unknown worker message type ${e}`)}}catch(e){console.error(e),t.postErrorToMainThread(e)}};t.attachWorkerSideOnMessage(g);exports.default=t;exports.handleBuildInNullifiers=T;exports.handleCalcAccessTokenSiblingAndSides=k;exports.handleCalcCommitmentsSiblingAndSides=p;exports.onWorkerMessage=g;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { preProcessing as d } from "../../crypto/preProcessing.mjs";
|
|
2
|
+
import { UserKeys as T } from "../../data-structures/crypto-keys/keys.mjs";
|
|
3
|
+
import { Utxo as p } from "../../data-structures/utxo/Utxo.mjs";
|
|
4
|
+
import { calcCommitmentsSiblingAndSides as g, calcAccessTokenSiblingsAndSides as u } from "../../functions/snarkjs/common.snarkjs.mjs";
|
|
5
|
+
import { WorkerProxy as k } from "../workerProxy.mjs";
|
|
6
|
+
import { ZKProofWorkerActionType as m } from "./zkProofWorker.types.mjs";
|
|
7
|
+
import { contructMerkleTreeFromSerialized as S } from "../../functions/utils/merkleTree.utils.mjs";
|
|
8
|
+
const c = new k(), C = (r) => {
|
|
9
|
+
const { inputUtxosSerialized: e, merkleTreeSerialized: t } = r.data, a = S(t), i = e.map(
|
|
10
|
+
(n) => n.map((l) => new p(l))
|
|
11
|
+
), { inCommitmentSiblings: s, inCommitmentSiblingSides: o } = g(i, a);
|
|
12
|
+
c.postMessageToMainThread({ inCommitmentSiblings: s, inCommitmentSiblingSides: o });
|
|
13
|
+
}, f = (r) => {
|
|
14
|
+
const { userSignature: e, merkleTreeAccessTokenSerialized: t } = r.data, a = new T(e), i = S(t), { accessTokenSiblings: s, accessTokenSiblingSides: o } = u(a, i);
|
|
15
|
+
c.postMessageToMainThread({ accessTokenSiblings: s, accessTokenSiblingSides: o });
|
|
16
|
+
}, y = (r) => {
|
|
17
|
+
const { inputUtxosSerialized: e, onChainCreation: t, proverVersion: a } = r.data, i = e.map(
|
|
18
|
+
(o) => o.map((n) => new p(n))
|
|
19
|
+
);
|
|
20
|
+
let s = [];
|
|
21
|
+
a === "v1x0" ? s = i.map(
|
|
22
|
+
(o, n) => o.map((l) => t[n] ? "0" : l.getNullifier())
|
|
23
|
+
) : s = i.map((o) => o.map((n) => n.amount === 0n ? "0" : n.getNullifier())), c.postMessageToMainThread(s);
|
|
24
|
+
}, A = async (r) => {
|
|
25
|
+
try {
|
|
26
|
+
await d();
|
|
27
|
+
const { type: e } = r.payload;
|
|
28
|
+
switch (e) {
|
|
29
|
+
case m.CALC_COMMITMENTS_SIBLING_AND_SIDES:
|
|
30
|
+
C(r.payload);
|
|
31
|
+
return;
|
|
32
|
+
case m.CALC_ACCESS_TOKEN_SIBLING_AND_SIDES:
|
|
33
|
+
f(r.payload);
|
|
34
|
+
return;
|
|
35
|
+
case m.BUILD_IN_NULLIFIERS:
|
|
36
|
+
y(r.payload);
|
|
37
|
+
return;
|
|
38
|
+
default:
|
|
39
|
+
throw Error(`Unknown worker message type ${e}`);
|
|
40
|
+
}
|
|
41
|
+
} catch (e) {
|
|
42
|
+
console.error(e), c.postErrorToMainThread(e);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
c.attachWorkerSideOnMessage(A);
|
|
46
|
+
export {
|
|
47
|
+
c as default,
|
|
48
|
+
y as handleBuildInNullifiers,
|
|
49
|
+
f as handleCalcAccessTokenSiblingAndSides,
|
|
50
|
+
C as handleCalcCommitmentsSiblingAndSides,
|
|
51
|
+
A as onWorkerMessage
|
|
52
|
+
};
|