@sabaaa1/common 0.0.24 → 0.0.27
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/package.json +1 -1
- package/webworker/workerFactory.cjs +1 -1
- package/webworker/workerFactory.d.ts +1 -2
- package/webworker/workerFactory.mjs +13 -35
- package/webworker/snarkjsWorker/snarkjsWorkerLogic.cjs +0 -1
- package/webworker/snarkjsWorker/snarkjsWorkerLogic.mjs +0 -40
- package/webworker/utxoWorker/utxoWorkerLogic.cjs +0 -1
- package/webworker/utxoWorker/utxoWorkerLogic.mjs +0 -76
- package/webworker/workerProxy.cjs +0 -1
- package/webworker/workerProxy.mjs +0 -54
- package/webworker/zkProofWorker/zkProofWorkerLogic.cjs +0 -1
- package/webworker/zkProofWorker/zkProofWorkerLogic.mjs +0 -52
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../constants/vite.constants.cjs");const n=require("./viteWorkerURL.constant.cjs");class t{static workers=new Map;static createWorker=async e=>{if(typeof window>"u")throw new Error("WebWorker cannot be created outside browser environment");const o=(await n.getWorkerViteURL())[e];if(!o)throw new Error(`Worker URL not found for variant ${e}`);return new Worker(o,{type:"module"})};static getWebWorker(e){let r=this.workers.get(e);return r||(r=t.createWorker(e),this.workers.set(e,r)),r}}exports.WorkerFactory=t;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { WorkerVariant } from './worker.registry';
|
|
2
2
|
export declare class WorkerFactory {
|
|
3
|
-
private
|
|
4
|
-
private static resolveWorkerURL;
|
|
3
|
+
private static workers;
|
|
5
4
|
private static createWorker;
|
|
6
5
|
static getWebWorker(workerVariant: WorkerVariant): Promise<any>;
|
|
7
6
|
}
|
|
@@ -1,40 +1,18 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import "../constants/vite.constants.mjs";
|
|
2
|
+
import { getWorkerViteURL as s } from "./viteWorkerURL.constant.mjs";
|
|
3
3
|
class o {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
let t;
|
|
13
|
-
return e === r.SnarkJS ? t = await import(
|
|
14
|
-
/* @vite-ignore */
|
|
15
|
-
"./snarkjsWorker/snarkjsWorkerLogic.mjs"
|
|
16
|
-
) : e === r.ZKProof ? t = await import(
|
|
17
|
-
/* @vite-ignore */
|
|
18
|
-
"./zkProofWorker/zkProofWorkerLogic.mjs"
|
|
19
|
-
) : e === r.UTXO && (t = await import(
|
|
20
|
-
/* @vite-ignore */
|
|
21
|
-
"./utxoWorker/utxoWorkerLogic.mjs"
|
|
22
|
-
)), t.default;
|
|
23
|
-
}
|
|
24
|
-
const s = await o.resolveWorkerURL(e);
|
|
25
|
-
return new Worker(s, { type: "module" });
|
|
4
|
+
static workers = /* @__PURE__ */ new Map();
|
|
5
|
+
static createWorker = async (r) => {
|
|
6
|
+
if (typeof window > "u")
|
|
7
|
+
throw new Error("WebWorker cannot be created outside browser environment");
|
|
8
|
+
const t = (await s())[r];
|
|
9
|
+
if (!t)
|
|
10
|
+
throw new Error(`Worker URL not found for variant ${r}`);
|
|
11
|
+
return new Worker(t, { type: "module" });
|
|
26
12
|
};
|
|
27
|
-
static getWebWorker(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
return o.createWorker(e);
|
|
31
|
-
case r.SnarkJS:
|
|
32
|
-
return o.createWorker(e);
|
|
33
|
-
case r.UTXO:
|
|
34
|
-
return o.createWorker(e);
|
|
35
|
-
default:
|
|
36
|
-
throw Error(`Unknown worker type: ${e}`);
|
|
37
|
-
}
|
|
13
|
+
static getWebWorker(r) {
|
|
14
|
+
let e = this.workers.get(r);
|
|
15
|
+
return e || (e = o.createWorker(r), this.workers.set(r, e)), e;
|
|
38
16
|
}
|
|
39
17
|
}
|
|
40
18
|
export {
|
|
@@ -1 +0,0 @@
|
|
|
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;
|
|
@@ -1,40 +0,0 @@
|
|
|
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
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
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;
|
|
@@ -1,76 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
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;
|
|
@@ -1,54 +0,0 @@
|
|
|
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
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
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;
|
|
@@ -1,52 +0,0 @@
|
|
|
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
|
-
};
|