h_test_1 0.0.31 → 0.0.33
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/providers/SolanaProviderAdapter.cjs +1 -1
- package/providers/SolanaProviderAdapter.mjs +2 -2
- package/providers/TronProviderAdapter.cjs +1 -1
- package/providers/TronProviderAdapter.mjs +2 -2
- package/providers/prepareSolanaHinkal.cjs +1 -0
- package/providers/prepareSolanaHinkal.mjs +14 -0
- package/providers/prepareTronHinkal.cjs +1 -0
- package/providers/prepareTronHinkal.mjs +14 -0
- package/webworker/snarkjsWorker/snarkjsWorkerLogic.cjs +1 -0
- package/webworker/snarkjsWorker/snarkjsWorkerLogic.mjs +30 -0
- package/webworker/utxoWorker/utxoWorkerLogic.cjs +1 -0
- package/webworker/utxoWorker/utxoWorkerLogic.mjs +69 -0
- package/webworker/workerFactory.cjs +1 -1
- package/webworker/workerFactory.mjs +1 -10
- package/webworker/workerProxy.cjs +1 -0
- package/webworker/workerProxy.mjs +33 -0
- package/webworker/zkProofWorker/zkProofWorkerLogic.cjs +1 -0
- package/webworker/zkProofWorker/zkProofWorkerLogic.mjs +45 -0
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants/chains.constants.cjs`),t=require(`../error-handling/error-codes.constants.cjs`),n=require(`../functions/utils/create-provider.cjs`);let r=require(`@coral-xyz/anchor`);var i=class{chainId;connection;wallet;ethereumAddress;chainEventListener;anchorProvider;constructor(t,r){let i=e.networkRegistry[t].fetchRpcUrl;if(!i)throw Error(`RPC URL not found for the specified chain ID`);this.connection=n.createCustomSolanaConnection(i),this.chainId=t,this.ethereumAddress=r}initConnector(e){this.wallet=e,this.initializeAnchorProvider()}async init(e){e&&(this.chainId=e)}async connectToConnector(){return this.chainId??0}async disconnectFromConnector(){}async connectAndPatchProvider(){if(!this.chainId)throw Error(`No Chain Id In Provider Adapter`);return this.chainId}getChainId(){return this.chainId}async waitForTransaction(e,n,r){try{return(await this.connection.confirmTransaction(n,`confirmed`)).value.err===null}catch{throw Error(t.transactionErrorCodes.TRANSACTION_NOT_CONFIRMED)}}async signMessage(e){if(!this.wallet?.signMessage)throw Error(t.transactionErrorCodes.SIGNING_FAILED);let n=typeof e==`string`?new TextEncoder().encode(e):e,{signature:r}=await this.wallet.signMessage(n,`utf8`);if(!r)throw Error(t.transactionErrorCodes.SIGNING_FAILED);return`0x${Buffer.from(r).toString(`hex`)}`}async getAddress(){let e=this.ethereumAddress??this.wallet?.publicKey.toString();if(!e)throw Error(`IllegalState`);return e}setChainEventListener(e){this.chainEventListener=e}async switchNetwork(e){this.chainEventListener?.onChainChanged(e.chainId)}async signTypedData(e,t,n){throw Error(`Typed data signing not supported on Solana`)}async onAccountChanged(){return this.init()}async onChainChanged(e){return this.init(e)}release(){this.chainEventListener=void 0}getContract(e,t,n,r){throw Error(`Not implemented from SolanaProviderAdapter`)}getContractWithSigner(e,t,n){throw Error(`Not implemented from SolanaProviderAdapter`)}getContractWithFetcher(e,t,n){throw Error(`Not implemented from SolanaProviderAdapter`)}async sendTransaction(e){throw Error(`Not implemented from SolanaProviderAdapter`)}async getGasPrice(e){throw Error(`Not implemented from SolanaProviderAdapter`)}isPermitterAvailable(){return!1}getConnection(){return this.connection}initializeAnchorProvider(){if(!this.wallet)throw Error(`No wallet provided`);return this.anchorProvider=new r.AnchorProvider(this.connection,this.wallet,{preflightCommitment:`confirmed`,commitment:`confirmed`}),this.anchorProvider}getAnchorProvider(){return this.anchorProvider??this.initializeAnchorProvider()}getSolanaProgram(e){return new r.Program(e,this.getAnchorProvider())}getSolanaPublicKey(){if(!this.wallet)throw Error(`No wallet provided`);return this.wallet.publicKey}};exports.SolanaProviderAdapter=i;
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants/chains.constants.cjs`),t=require(`../error-handling/error-codes.constants.cjs`),n=require(`../functions/utils/create-provider.cjs`);let r=require(`@coral-xyz/anchor`);var i=class{chainId;connection;wallet;ethereumAddress;chainEventListener;anchorProvider;constructor(t,r){let i=e.networkRegistry[t].fetchRpcUrl;if(!i)throw Error(`RPC URL not found for the specified chain ID`);this.connection=n.createCustomSolanaConnection(i),this.chainId=t,this.ethereumAddress=r}initConnector(e){this.wallet=e,this.initializeAnchorProvider()}async init(e){e&&(this.chainId=e)}async connectToConnector(){return this.chainId??0}async disconnectFromConnector(){}async connectAndPatchProvider(){if(!this.chainId)throw Error(`No Chain Id In Provider Adapter`);return this.chainId}getChainId(){return this.chainId}async waitForTransaction(e,n,r){try{return(await this.connection.confirmTransaction(n,`confirmed`)).value.err===null}catch{throw Error(t.transactionErrorCodes.TRANSACTION_NOT_CONFIRMED)}}async signMessage(e){if(!this.wallet?.signMessage)throw Error(t.transactionErrorCodes.SIGNING_FAILED);let n=typeof e==`string`?new TextEncoder().encode(e):e,{signature:r}=await this.wallet.signMessage(n,`utf8`);if(!r)throw Error(t.transactionErrorCodes.SIGNING_FAILED);return`0x${Buffer.from(r).toString(`hex`)}`}async getAddress(){let e=this.ethereumAddress??this.wallet?.publicKey.toString();if(!e)throw Error(`IllegalState`);return e}setChainEventListener(e){this.chainEventListener=e}async switchNetwork(e){this.chainEventListener?.onChainChanged(e.chainId)}async signTypedData(e,t,n){throw Error(`Typed data signing not supported on Solana`)}async onAccountChanged(){return this.init()}async onChainChanged(e){return this.init(e)}release(){this.chainEventListener=void 0}getContract(e,t,n,r){throw Error(`Not implemented from SolanaProviderAdapter`)}getContractWithSigner(e,t,n){throw Error(`Not implemented from SolanaProviderAdapter`)}getContractWithFetcher(e,t,n){throw Error(`Not implemented from SolanaProviderAdapter`)}async sendTransaction(e){throw Error(`Not implemented from SolanaProviderAdapter`)}async getGasPrice(e){throw Error(`Not implemented from SolanaProviderAdapter`)}isPermitterAvailable(){return!1}getConnection(){return this.connection}initializeAnchorProvider(){if(!this.wallet)throw Error(`No wallet provided`);return this.anchorProvider=new r.AnchorProvider(this.connection,this.wallet,{preflightCommitment:`confirmed`,commitment:`confirmed`}),this.anchorProvider}getAnchorProvider(){return this.anchorProvider??this.initializeAnchorProvider()}getSolanaProgram(e){return new r.Program(e,this.getAnchorProvider())}getSolanaPublicKey(){if(!this.wallet)throw Error(`No wallet provided`);return this.wallet.publicKey}},a=(e,t)=>new i(e,t);exports.SolanaProviderAdapter=i,exports.default=a;
|
|
@@ -106,6 +106,6 @@ var a = class {
|
|
|
106
106
|
if (!this.wallet) throw Error("No wallet provided");
|
|
107
107
|
return this.wallet.publicKey;
|
|
108
108
|
}
|
|
109
|
-
};
|
|
109
|
+
}, o = (e, t) => new a(e, t);
|
|
110
110
|
//#endregion
|
|
111
|
-
export { a as SolanaProviderAdapter };
|
|
111
|
+
export { a as SolanaProviderAdapter, o as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../error-handling/error-codes.constants.cjs`),t=require(`../functions/utils/tron.utils.cjs`),n=require(`../functions/utils/create-provider.cjs`),r=require(`../functions/web3/getContractMetadata.cjs`);require(`../functions/index.cjs`);var i=class{chainId;tronWeb;address;signerAdapter;chainEventListener;accountsChangedHandler;constructor(e){this.chainId=e}initConnector(e){if(this.address=e.address,this.signerAdapter=e.signerAdapter,!this.chainId)throw Error(`TronProviderAdapter: Chain Id Not Set`);this.tronWeb=this.createSignableTronWeb(this.chainId,e.address)}async init(e){this.chainId=e}createSignableTronWeb=(e,n)=>{let r=t.createTronWeb(e);return r.setAddress(n),r.trx.sign=async e=>this.signerAdapter.signTransaction(e),r};async connectToConnector(){return this.chainId??0}async disconnectFromConnector(){}async connectAndPatchProvider(){if(!this.chainId)throw Error(`No Chain Id In Provider Adapter`);return this.chainId}getChainId(){return this.chainId}async waitForTransaction(t,r,i){let a=r.startsWith(`0x`)?r:`0x${r}`;if((await n.createCustomRpcProvider(t).waitForTransaction(a,i))?.status===1)return!0;throw Error(e.transactionErrorCodes.TRANSACTION_NOT_CONFIRMED)}async signMessage(t){let n=typeof t==`string`?t:new TextDecoder().decode(t),r=await this.signerAdapter.signMessage(n);if(!r)throw Error(e.transactionErrorCodes.SIGNING_FAILED);return r}async getAddress(){if(!this.address)throw Error(`IllegalState`);return this.address}setChainEventListener(e){this.chainEventListener=e,this.accountsChangedHandler&&this.signerAdapter.off(`accountsChanged`,this.accountsChangedHandler),this.accountsChangedHandler=e=>{this.chainEventListener&&(this.address=e,this.tronWeb?.setAddress(e),this.chainEventListener.onAccountChanged())},this.signerAdapter.on(`accountsChanged`,this.accountsChangedHandler)}async switchNetwork(e){this.chainEventListener?.onChainChanged(e.chainId)}async signTypedData(e,t,n){throw Error(`Typed data signing not supported on Tron`)}async onAccountChanged(){return Promise.resolve()}async onChainChanged(e){return Promise.resolve()}release(){this.chainEventListener=void 0,this.accountsChangedHandler&&=(this.signerAdapter.off(`accountsChanged`,this.accountsChangedHandler),void 0)}getContract(e,t,n,i){return r.getContract(t,e,n,i)}getContractWithSigner(e,t,n){throw Error(`Not implemented from TronProviderAdapter`)}getContractWithFetcher(e,t,r){let i=n.createCustomRpcProvider(e);return this.getContract(e,t,r,i)}async sendTransaction(e){throw Error(`Not implemented from TronProviderAdapter`)}async getGasPrice(e){throw Error(`Not implemented from TronProviderAdapter`)}isPermitterAvailable(){return!1}getTronWeb(){return this.tronWeb}};exports.TronProviderAdapter=i;
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../error-handling/error-codes.constants.cjs`),t=require(`../functions/utils/tron.utils.cjs`),n=require(`../functions/utils/create-provider.cjs`),r=require(`../functions/web3/getContractMetadata.cjs`);require(`../functions/index.cjs`);var i=class{chainId;tronWeb;address;signerAdapter;chainEventListener;accountsChangedHandler;constructor(e){this.chainId=e}initConnector(e){if(this.address=e.address,this.signerAdapter=e.signerAdapter,!this.chainId)throw Error(`TronProviderAdapter: Chain Id Not Set`);this.tronWeb=this.createSignableTronWeb(this.chainId,e.address)}async init(e){this.chainId=e}createSignableTronWeb=(e,n)=>{let r=t.createTronWeb(e);return r.setAddress(n),r.trx.sign=async e=>this.signerAdapter.signTransaction(e),r};async connectToConnector(){return this.chainId??0}async disconnectFromConnector(){}async connectAndPatchProvider(){if(!this.chainId)throw Error(`No Chain Id In Provider Adapter`);return this.chainId}getChainId(){return this.chainId}async waitForTransaction(t,r,i){let a=r.startsWith(`0x`)?r:`0x${r}`;if((await n.createCustomRpcProvider(t).waitForTransaction(a,i))?.status===1)return!0;throw Error(e.transactionErrorCodes.TRANSACTION_NOT_CONFIRMED)}async signMessage(t){let n=typeof t==`string`?t:new TextDecoder().decode(t),r=await this.signerAdapter.signMessage(n);if(!r)throw Error(e.transactionErrorCodes.SIGNING_FAILED);return r}async getAddress(){if(!this.address)throw Error(`IllegalState`);return this.address}setChainEventListener(e){this.chainEventListener=e,this.accountsChangedHandler&&this.signerAdapter.off(`accountsChanged`,this.accountsChangedHandler),this.accountsChangedHandler=e=>{this.chainEventListener&&(this.address=e,this.tronWeb?.setAddress(e),this.chainEventListener.onAccountChanged())},this.signerAdapter.on(`accountsChanged`,this.accountsChangedHandler)}async switchNetwork(e){this.chainEventListener?.onChainChanged(e.chainId)}async signTypedData(e,t,n){throw Error(`Typed data signing not supported on Tron`)}async onAccountChanged(){return Promise.resolve()}async onChainChanged(e){return Promise.resolve()}release(){this.chainEventListener=void 0,this.accountsChangedHandler&&=(this.signerAdapter.off(`accountsChanged`,this.accountsChangedHandler),void 0)}getContract(e,t,n,i){return r.getContract(t,e,n,i)}getContractWithSigner(e,t,n){throw Error(`Not implemented from TronProviderAdapter`)}getContractWithFetcher(e,t,r){let i=n.createCustomRpcProvider(e);return this.getContract(e,t,r,i)}async sendTransaction(e){throw Error(`Not implemented from TronProviderAdapter`)}async getGasPrice(e){throw Error(`Not implemented from TronProviderAdapter`)}isPermitterAvailable(){return!1}getTronWeb(){return this.tronWeb}},a=e=>new i(e);exports.TronProviderAdapter=i,exports.default=a;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../constants/chains.constants.cjs`),t=require(`../crypto/preProcessing.cjs`);require(`../crypto/index.cjs`);const n=require(`./SolanaProviderAdapter.cjs`),r=require(`../data-structures/Hinkal/Hinkal.cjs`);require(`../data-structures/index.cjs`);var i=async(i,a,o)=>{await t.preProcessing();let s=new r.Hinkal(o),c=e.chainIds.solanaMainnet,l=n.default(c,a);return await s.initProviderAdapter(i,l),await s.initUserKeys(),await s.resetMerkle(),s};exports.prepareSolanaHinkal=i;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { chainIds as e } from "../constants/chains.constants.mjs";
|
|
2
|
+
import { preProcessing as t } from "../crypto/preProcessing.mjs";
|
|
3
|
+
import "../crypto/index.mjs";
|
|
4
|
+
import n from "./SolanaProviderAdapter.mjs";
|
|
5
|
+
import { Hinkal as r } from "../data-structures/Hinkal/Hinkal.mjs";
|
|
6
|
+
import "../data-structures/index.mjs";
|
|
7
|
+
//#region libs/shared/common/src/providers/prepareSolanaHinkal.ts
|
|
8
|
+
var i = async (i, a, o) => {
|
|
9
|
+
await t();
|
|
10
|
+
let s = new r(o), c = e.solanaMainnet, l = n(c, a);
|
|
11
|
+
return await s.initProviderAdapter(i, l), await s.initUserKeys(), await s.resetMerkle(), s;
|
|
12
|
+
};
|
|
13
|
+
//#endregion
|
|
14
|
+
export { i as prepareSolanaHinkal };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../constants/chains.constants.cjs`),t=require(`../crypto/preProcessing.cjs`);require(`../crypto/index.cjs`);const n=require(`./TronProviderAdapter.cjs`),r=require(`../data-structures/Hinkal/Hinkal.cjs`);require(`../data-structures/index.cjs`);var i=async(i,a)=>{await t.preProcessing();let o=new r.Hinkal(a),s=n.default(e.currentTronChainId);return await o.initProviderAdapter(i,s),await o.initUserKeys(),await o.resetMerkle(),o};exports.prepareTronHinkal=i;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { currentTronChainId as e } from "../constants/chains.constants.mjs";
|
|
2
|
+
import { preProcessing as t } from "../crypto/preProcessing.mjs";
|
|
3
|
+
import "../crypto/index.mjs";
|
|
4
|
+
import n from "./TronProviderAdapter.mjs";
|
|
5
|
+
import { Hinkal as r } from "../data-structures/Hinkal/Hinkal.mjs";
|
|
6
|
+
import "../data-structures/index.mjs";
|
|
7
|
+
//#region libs/shared/common/src/providers/prepareTronHinkal.ts
|
|
8
|
+
var i = async (i, a) => {
|
|
9
|
+
await t();
|
|
10
|
+
let o = new r(a), s = n(e);
|
|
11
|
+
return await o.initProviderAdapter(i, s), await o.initUserKeys(), await o.resetMerkle(), o;
|
|
12
|
+
};
|
|
13
|
+
//#endregion
|
|
14
|
+
export { i as prepareTronHinkal };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../constants/vite.constants.cjs`),n=require(`../../constants/chains.constants.cjs`),r=require(`../../data-structures/http/HttpClient.cjs`);require(`../../data-structures/http/index.cjs`);const i=require(`../workerProxy.cjs`);let a=require(`snarkjs`);a=e.__toESM(a);var o=new i.WorkerProxy,s=async e=>new Uint8Array(await r.httpClient.get(e,{responseType:`arraybuffer`})),c=async e=>{try{let{input:r,wasmFilePath:i,zKeyFilePath:c,chainId:l}=e.payload.data,{hostLocation:{origin:u},constants:{isDevelopment:d,chains:{chainIds:f}}}=e.metadata,p=i,m=c,h,g,_=p.startsWith(`https://`);if(t.isNode&&!_){t.isWebpack?(p=`libs/hardhat/test/circuits/${i}`,m=`libs/hardhat/test/circuits/${c}`):!t.isWebpack&&d&&(l===n.chainIds.solanaLocalnet?(p=`tests/circuits/${i}`,m=`tests/circuits/${c}`):(p=`test/circuits/${i}`,m=`test/circuits/${c}`));let e=require(`path`);p=e.resolve(p),m=e.resolve(m)}t.isNode&&_?(h=await s(p),g=await s(m)):(l===f.localhost||l===n.chainIds.solanaLocalnet||l===f.tronLocalnet)&&!t.isNode&&(p=`${u}/${i}`,m=`${u}/${c}`);let{proof:v,publicSignals:y}=await a.groth16.fullProve(r,h??p,g??m,void 0,void 0,t.isNode&&l===f.tronLocalnet?{singleThread:!0}:void 0),b=await a.groth16.exportSolidityCallData(v,y),x=JSON.parse(`[${b}]`);o.postMessageToMainThread({zkCallData:x,proof:v,publicSignals:y})}catch(e){console.error(e),o.postErrorToMainThread(e)}};o.attachWorkerSideOnMessage(c),exports.default=o,exports.onWorkerMessage=c;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { __require as e } from "../../_virtual/_rolldown/runtime.mjs";
|
|
2
|
+
import { isNode as t, isWebpack as n } from "../../constants/vite.constants.mjs";
|
|
3
|
+
import { chainIds as r } from "../../constants/chains.constants.mjs";
|
|
4
|
+
import { httpClient as i } from "../../data-structures/http/HttpClient.mjs";
|
|
5
|
+
import "../../data-structures/http/index.mjs";
|
|
6
|
+
import { WorkerProxy as a } from "../workerProxy.mjs";
|
|
7
|
+
import * as o from "snarkjs";
|
|
8
|
+
//#region libs/shared/common/src/webworker/snarkjsWorker/snarkjsWorkerLogic.ts
|
|
9
|
+
var s = new a(), c = async (e) => new Uint8Array(await i.get(e, { responseType: "arraybuffer" })), l = async (i) => {
|
|
10
|
+
try {
|
|
11
|
+
let { input: a, wasmFilePath: l, zKeyFilePath: u, chainId: d } = i.payload.data, { hostLocation: { origin: f }, constants: { isDevelopment: p, chains: { chainIds: m } } } = i.metadata, h = l, g = u, _, v, y = h.startsWith("https://");
|
|
12
|
+
if (t && !y) {
|
|
13
|
+
n ? (h = `libs/hardhat/test/circuits/${l}`, g = `libs/hardhat/test/circuits/${u}`) : !n && p && (d === r.solanaLocalnet ? (h = `tests/circuits/${l}`, g = `tests/circuits/${u}`) : (h = `test/circuits/${l}`, g = `test/circuits/${u}`));
|
|
14
|
+
let t = e("path");
|
|
15
|
+
h = t.resolve(h), g = t.resolve(g);
|
|
16
|
+
}
|
|
17
|
+
t && y ? (_ = await c(h), v = await c(g)) : (d === m.localhost || d === r.solanaLocalnet || d === m.tronLocalnet) && !t && (h = `${f}/${l}`, g = `${f}/${u}`);
|
|
18
|
+
let { proof: b, publicSignals: x } = await o.groth16.fullProve(a, _ ?? h, v ?? g, void 0, void 0, t && d === m.tronLocalnet ? { singleThread: !0 } : void 0), S = await o.groth16.exportSolidityCallData(b, x), C = JSON.parse(`[${S}]`);
|
|
19
|
+
s.postMessageToMainThread({
|
|
20
|
+
zkCallData: C,
|
|
21
|
+
proof: b,
|
|
22
|
+
publicSignals: x
|
|
23
|
+
});
|
|
24
|
+
} catch (e) {
|
|
25
|
+
console.error(e), s.postErrorToMainThread(e);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
s.attachWorkerSideOnMessage(l);
|
|
29
|
+
//#endregion
|
|
30
|
+
export { s as default, l as onWorkerMessage };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`../../crypto/preProcessing.cjs`),t=require(`../../data-structures/crypto-keys/keys.cjs`),n=require(`../../data-structures/utxo/Utxo.cjs`),r=require(`../../data-structures/crypto-keys/decodeUTXO.cjs`),i=require(`../../data-structures/crypto-keys/encryptDecryptUtxo.cjs`),a=require(`../../error-handling/logger.cjs`),o=require(`./utxoWorker.types.cjs`);var s=new(require(`../workerProxy.cjs`)).WorkerProxy,c=async({data:e})=>{let{utxos:r,nullifiers:i}=e,a=r.filter(e=>{let t=new n.Utxo(e);return!i.has(t.getNullifier())});s.postMessageToMainThread({utxoConstructors:a,stealthPairCache:t.stealthPairCacheDevice.serialize(),stealthAddressCache:t.stealthAddressCacheDevice.serialize()})},l=async({data:e})=>{let n=new t.UserKeys(e.signature),a=n.getShieldedPrivateKey(),o=e.encryptedOutputs.map(t=>{try{let o=t.isPositive?i.decryptUtxoConstructorArgs(Buffer.from(t.value.slice(2),`hex`),n):r.decodeUtxoConstructorArgs(t.value,a,e.chainId);return o.isBlocked=t.isBlocked,o}catch{return}}).filter(e=>e!==void 0&&e.amount!==0n);s.postMessageToMainThread(o)},u=async({data:e})=>{let n=new t.UserKeys(e.signature),a=[],{encryptedOutputs:o}=e,{lastOutput:c}=e,l=n.getShieldedPrivateKey();for(let t=0;t<o.length;t+=1){let s=o[t];if(c=s.value,s.isPositive)try{let e=i.decryptUtxo(Buffer.from(c.slice(2),`hex`),n);if(e.isBlocked=s.isBlocked,!e.erc20TokenAddress||!e.amount||!e.stealthAddress)throw Error(`bruh`);a.push(s)}catch{}else try{r.checkUtxoSignature(c,l,e.chainId)&&a.push(s)}catch{}}s.postMessageToMainThread({additionalEncryptedOutputs:a,lastOutput:c})},d=async t=>{try{await e.preProcessing();let{type:n}=t.payload;switch(n){case o.UtxoWorkerActionType.BATCH_FILTER_UTXOS_WITH_NULLIFIER:await c(t.payload);return;case o.UtxoWorkerActionType.BUILD_UTXOS:await l(t.payload);return;case o.UtxoWorkerActionType.DECIPHER_OUTPUTS:await u(t.payload);return;default:throw Error(`Unknown worker message type ${n}`)}}catch(e){a.Logger.error(`utxo worker message failed`,e),s.postErrorToMainThread(e)}};s.attachWorkerSideOnMessage(d),exports.default=s,exports.handleBuildUtxosMessage=l,exports.handleDecipherMessage=u,exports.handleFilterUtxosWithNullifier=c,exports.onWorkerMessage=d;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { preProcessing as e } from "../../crypto/preProcessing.mjs";
|
|
2
|
+
import { UserKeys as t, stealthAddressCacheDevice as n, stealthPairCacheDevice as r } from "../../data-structures/crypto-keys/keys.mjs";
|
|
3
|
+
import { Utxo as i } from "../../data-structures/utxo/Utxo.mjs";
|
|
4
|
+
import { checkUtxoSignature as a, decodeUtxoConstructorArgs as o } from "../../data-structures/crypto-keys/decodeUTXO.mjs";
|
|
5
|
+
import { decryptUtxo as s, decryptUtxoConstructorArgs as c } from "../../data-structures/crypto-keys/encryptDecryptUtxo.mjs";
|
|
6
|
+
import { Logger as l } from "../../error-handling/logger.mjs";
|
|
7
|
+
import { UtxoWorkerActionType as u } from "./utxoWorker.types.mjs";
|
|
8
|
+
import { WorkerProxy as d } from "../workerProxy.mjs";
|
|
9
|
+
//#region libs/shared/common/src/webworker/utxoWorker/utxoWorkerLogic.ts
|
|
10
|
+
var f = new d(), p = async ({ data: e }) => {
|
|
11
|
+
let { utxos: t, nullifiers: a } = e, o = t.filter((e) => {
|
|
12
|
+
let t = new i(e);
|
|
13
|
+
return !a.has(t.getNullifier());
|
|
14
|
+
});
|
|
15
|
+
f.postMessageToMainThread({
|
|
16
|
+
utxoConstructors: o,
|
|
17
|
+
stealthPairCache: r.serialize(),
|
|
18
|
+
stealthAddressCache: n.serialize()
|
|
19
|
+
});
|
|
20
|
+
}, m = async ({ data: e }) => {
|
|
21
|
+
let n = new t(e.signature), r = n.getShieldedPrivateKey(), i = e.encryptedOutputs.map((t) => {
|
|
22
|
+
try {
|
|
23
|
+
let i = t.isPositive ? c(Buffer.from(t.value.slice(2), "hex"), n) : o(t.value, r, e.chainId);
|
|
24
|
+
return i.isBlocked = t.isBlocked, i;
|
|
25
|
+
} catch {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
}).filter((e) => e !== void 0 && e.amount !== 0n);
|
|
29
|
+
f.postMessageToMainThread(i);
|
|
30
|
+
}, h = async ({ data: e }) => {
|
|
31
|
+
let n = new t(e.signature), r = [], { encryptedOutputs: i } = e, { lastOutput: o } = e, c = n.getShieldedPrivateKey();
|
|
32
|
+
for (let t = 0; t < i.length; t += 1) {
|
|
33
|
+
let l = i[t];
|
|
34
|
+
if (o = l.value, l.isPositive) try {
|
|
35
|
+
let e = s(Buffer.from(o.slice(2), "hex"), n);
|
|
36
|
+
if (e.isBlocked = l.isBlocked, !e.erc20TokenAddress || !e.amount || !e.stealthAddress) throw Error("bruh");
|
|
37
|
+
r.push(l);
|
|
38
|
+
} catch {}
|
|
39
|
+
else try {
|
|
40
|
+
a(o, c, e.chainId) && r.push(l);
|
|
41
|
+
} catch {}
|
|
42
|
+
}
|
|
43
|
+
f.postMessageToMainThread({
|
|
44
|
+
additionalEncryptedOutputs: r,
|
|
45
|
+
lastOutput: o
|
|
46
|
+
});
|
|
47
|
+
}, g = async (t) => {
|
|
48
|
+
try {
|
|
49
|
+
await e();
|
|
50
|
+
let { type: n } = t.payload;
|
|
51
|
+
switch (n) {
|
|
52
|
+
case u.BATCH_FILTER_UTXOS_WITH_NULLIFIER:
|
|
53
|
+
await p(t.payload);
|
|
54
|
+
return;
|
|
55
|
+
case u.BUILD_UTXOS:
|
|
56
|
+
await m(t.payload);
|
|
57
|
+
return;
|
|
58
|
+
case u.DECIPHER_OUTPUTS:
|
|
59
|
+
await h(t.payload);
|
|
60
|
+
return;
|
|
61
|
+
default: throw Error(`Unknown worker message type ${n}`);
|
|
62
|
+
}
|
|
63
|
+
} catch (e) {
|
|
64
|
+
l.error("utxo worker message failed", e), f.postErrorToMainThread(e);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
f.attachWorkerSideOnMessage(g);
|
|
68
|
+
//#endregion
|
|
69
|
+
export { f as default, m as handleBuildUtxosMessage, h as handleDecipherMessage, p as handleFilterUtxosWithNullifier, g as onWorkerMessage };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../constants/vite.constants.cjs`),t=require(`./worker.registry.cjs`);var n=class n{constructor(){}static resolveWorkerURL=async e=>{let{getWorkerViteURL:t}=await Promise.resolve().then(()=>require(`./viteWorkerURL.constant.cjs`));return(await t())[e]};static createWorker=async r=>{if(e.isNode){let e;return r===t.WorkerVariant.SnarkJS?e=await
|
|
1
|
+
const e=require(`../constants/vite.constants.cjs`),t=require(`./worker.registry.cjs`);var n=class n{constructor(){}static resolveWorkerURL=async e=>{let{getWorkerViteURL:t}=await Promise.resolve().then(()=>require(`./viteWorkerURL.constant.cjs`));return(await t())[e]};static createWorker=async r=>{if(e.isNode){let e;return r===t.WorkerVariant.SnarkJS?e=await Promise.resolve().then(()=>require(`./snarkjsWorker/snarkjsWorkerLogic.cjs`)):r===t.WorkerVariant.ZKProof?e=await Promise.resolve().then(()=>require(`./zkProofWorker/zkProofWorkerLogic.cjs`)):r===t.WorkerVariant.UTXO&&(e=await Promise.resolve().then(()=>require(`./utxoWorker/utxoWorkerLogic.cjs`))),e.default}let i=await n.resolveWorkerURL(r);return new Worker(i,{type:`module`})};static getWebWorker(e){switch(e){case t.WorkerVariant.ZKProof:return n.createWorker(e);case t.WorkerVariant.SnarkJS:return n.createWorker(e);case t.WorkerVariant.UTXO:return n.createWorker(e);default:throw Error(`Unknown worker type: ${e}`)}}};exports.WorkerFactory=n;
|
|
@@ -10,16 +10,7 @@ var n = class n {
|
|
|
10
10
|
static createWorker = async (r) => {
|
|
11
11
|
if (e) {
|
|
12
12
|
let e;
|
|
13
|
-
return r === t.SnarkJS ? e = await import(
|
|
14
|
-
/* @vite-ignore */
|
|
15
|
-
"./snarkjsWorker/snarkjsWorkerLogic"
|
|
16
|
-
) : r === t.ZKProof ? e = await import(
|
|
17
|
-
/* @vite-ignore */
|
|
18
|
-
"./zkProofWorker/zkProofWorkerLogic"
|
|
19
|
-
) : r === t.UTXO && (e = await import(
|
|
20
|
-
/* @vite-ignore */
|
|
21
|
-
"./utxoWorker/utxoWorkerLogic"
|
|
22
|
-
)), e.default;
|
|
13
|
+
return r === t.SnarkJS ? e = await import("./snarkjsWorker/snarkjsWorkerLogic.mjs") : r === t.ZKProof ? e = await import("./zkProofWorker/zkProofWorkerLogic.mjs") : r === t.UTXO && (e = await import("./utxoWorker/utxoWorkerLogic.mjs")), e.default;
|
|
23
14
|
}
|
|
24
15
|
let i = await n.resolveWorkerURL(r);
|
|
25
16
|
return new Worker(i, { type: "module" });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=class{isNode=!1;onmessage=null;onerror=null;_eventEmitter;get eventEmitter(){return this._eventEmitter||(this.isNode?this._eventEmitter=new(require(`events`)):this._eventEmitter=new EventTarget),this._eventEmitter}constructor(){this.isNode=typeof process<`u`&&process.versions!=null&&process.versions.node!=null}terminate(){}postMessage(e){this.isNode?this.eventEmitter.emit(`message`,e):postMessage(e)}postMessageToMainThread(e){let t={data:e};this.onmessage?this.onmessage(t):postMessage(e)}postErrorToMainThread(e){let t={data:{error:e}};this.onerror?this.onerror(t):postMessage(e)}attachWorkerSideOnMessage(e){this.isNode&&this.eventEmitter.on(`message`,t=>{e(t)})}};exports.WorkerProxy=e;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { __require as e } from "../_virtual/_rolldown/runtime.mjs";
|
|
2
|
+
//#region libs/shared/common/src/webworker/workerProxy.ts
|
|
3
|
+
var t = class {
|
|
4
|
+
isNode = !1;
|
|
5
|
+
onmessage = null;
|
|
6
|
+
onerror = null;
|
|
7
|
+
_eventEmitter;
|
|
8
|
+
get eventEmitter() {
|
|
9
|
+
return this._eventEmitter || (this.isNode ? this._eventEmitter = new (e("events"))() : this._eventEmitter = new EventTarget()), this._eventEmitter;
|
|
10
|
+
}
|
|
11
|
+
constructor() {
|
|
12
|
+
this.isNode = typeof process < "u" && process.versions != null && process.versions.node != null;
|
|
13
|
+
}
|
|
14
|
+
terminate() {}
|
|
15
|
+
postMessage(e) {
|
|
16
|
+
this.isNode ? this.eventEmitter.emit("message", e) : postMessage(e);
|
|
17
|
+
}
|
|
18
|
+
postMessageToMainThread(e) {
|
|
19
|
+
let t = { data: e };
|
|
20
|
+
this.onmessage ? this.onmessage(t) : postMessage(e);
|
|
21
|
+
}
|
|
22
|
+
postErrorToMainThread(e) {
|
|
23
|
+
let t = { data: { error: e } };
|
|
24
|
+
this.onerror ? this.onerror(t) : postMessage(e);
|
|
25
|
+
}
|
|
26
|
+
attachWorkerSideOnMessage(e) {
|
|
27
|
+
this.isNode && this.eventEmitter.on("message", (t) => {
|
|
28
|
+
e(t);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
//#endregion
|
|
33
|
+
export { t as WorkerProxy };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require(`../../crypto/preProcessing.cjs`),t=require(`../../data-structures/utxo/Utxo.cjs`),n=require(`../../functions/snarkjs/common.snarkjs.cjs`),r=require(`./zkProofWorker.types.cjs`),i=require(`../../functions/utils/merkleTree.utils.cjs`);var a=new(require(`../workerProxy.cjs`)).WorkerProxy,o=e=>{let{inputUtxosSerialized:r,merkleTreeSerialized:o}=e.data,s=i.contructMerkleTreeFromSerialized(o),{inCommitmentSiblings:c,inCommitmentSiblingSides:l}=n.calcCommitmentsSiblingAndSides(r.map(e=>e.map(e=>new t.Utxo(e))),s);a.postMessageToMainThread({inCommitmentSiblings:c,inCommitmentSiblingSides:l})},s=e=>{let{accessKey:t,merkleTreeAccessTokenSerialized:r}=e.data,{accessTokenSiblings:o,accessTokenSiblingSides:s}=n.calcAccessTokenSiblingsAndSides(t,i.contructMerkleTreeFromSerialized(r));a.postMessageToMainThread({accessTokenSiblings:o,accessTokenSiblingSides:s})},c=e=>{let{inputUtxosSerialized:n}=e.data,r=n.map(e=>e.map(e=>new t.Utxo(e))).map(e=>e.map(e=>e.amount===0n?`0`:e.getNullifier()));a.postMessageToMainThread(r)},l=async t=>{try{await e.preProcessing();let{type:n}=t.payload;switch(n){case r.ZKProofWorkerActionType.CALC_COMMITMENTS_SIBLING_AND_SIDES:o(t.payload);return;case r.ZKProofWorkerActionType.CALC_ACCESS_TOKEN_SIBLING_AND_SIDES:s(t.payload);return;case r.ZKProofWorkerActionType.BUILD_IN_NULLIFIERS:c(t.payload);return;default:throw Error(`Unknown worker message type ${n}`)}}catch(e){console.error(e),a.postErrorToMainThread(e)}};a.attachWorkerSideOnMessage(l),exports.default=a,exports.handleBuildInNullifiers=c,exports.handleCalcAccessTokenSiblingAndSides=s,exports.handleCalcCommitmentsSiblingAndSides=o,exports.onWorkerMessage=l;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { preProcessing as e } from "../../crypto/preProcessing.mjs";
|
|
2
|
+
import { Utxo as t } from "../../data-structures/utxo/Utxo.mjs";
|
|
3
|
+
import { calcAccessTokenSiblingsAndSides as n, calcCommitmentsSiblingAndSides as r } from "../../functions/snarkjs/common.snarkjs.mjs";
|
|
4
|
+
import { ZKProofWorkerActionType as i } from "./zkProofWorker.types.mjs";
|
|
5
|
+
import { contructMerkleTreeFromSerialized as a } from "../../functions/utils/merkleTree.utils.mjs";
|
|
6
|
+
import { WorkerProxy as o } from "../workerProxy.mjs";
|
|
7
|
+
//#region libs/shared/common/src/webworker/zkProofWorker/zkProofWorkerLogic.ts
|
|
8
|
+
var s = new o(), c = (e) => {
|
|
9
|
+
let { inputUtxosSerialized: n, merkleTreeSerialized: i } = e.data, o = a(i), { inCommitmentSiblings: c, inCommitmentSiblingSides: l } = r(n.map((e) => e.map((e) => new t(e))), o);
|
|
10
|
+
s.postMessageToMainThread({
|
|
11
|
+
inCommitmentSiblings: c,
|
|
12
|
+
inCommitmentSiblingSides: l
|
|
13
|
+
});
|
|
14
|
+
}, l = (e) => {
|
|
15
|
+
let { accessKey: t, merkleTreeAccessTokenSerialized: r } = e.data, { accessTokenSiblings: i, accessTokenSiblingSides: o } = n(t, a(r));
|
|
16
|
+
s.postMessageToMainThread({
|
|
17
|
+
accessTokenSiblings: i,
|
|
18
|
+
accessTokenSiblingSides: o
|
|
19
|
+
});
|
|
20
|
+
}, u = (e) => {
|
|
21
|
+
let { inputUtxosSerialized: n } = e.data, r = n.map((e) => e.map((e) => new t(e))).map((e) => e.map((e) => e.amount === 0n ? "0" : e.getNullifier()));
|
|
22
|
+
s.postMessageToMainThread(r);
|
|
23
|
+
}, d = async (t) => {
|
|
24
|
+
try {
|
|
25
|
+
await e();
|
|
26
|
+
let { type: n } = t.payload;
|
|
27
|
+
switch (n) {
|
|
28
|
+
case i.CALC_COMMITMENTS_SIBLING_AND_SIDES:
|
|
29
|
+
c(t.payload);
|
|
30
|
+
return;
|
|
31
|
+
case i.CALC_ACCESS_TOKEN_SIBLING_AND_SIDES:
|
|
32
|
+
l(t.payload);
|
|
33
|
+
return;
|
|
34
|
+
case i.BUILD_IN_NULLIFIERS:
|
|
35
|
+
u(t.payload);
|
|
36
|
+
return;
|
|
37
|
+
default: throw Error(`Unknown worker message type ${n}`);
|
|
38
|
+
}
|
|
39
|
+
} catch (e) {
|
|
40
|
+
console.error(e), s.postErrorToMainThread(e);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
s.attachWorkerSideOnMessage(d);
|
|
44
|
+
//#endregion
|
|
45
|
+
export { s as default, u as handleBuildInNullifiers, l as handleCalcAccessTokenSiblingAndSides, c as handleCalcCommitmentsSiblingAndSides, d as onWorkerMessage };
|