@gurge/sdk 0.3.26 → 0.3.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/common/src/crypto/BabyJubRN.cjs +1 -0
- package/common/src/crypto/BabyJubRN.d.ts +2 -0
- package/common/src/crypto/BabyJubRN.mjs +66 -0
- package/common/src/crypto/EddsaRN.cjs +1 -0
- package/common/src/crypto/EddsaRN.mjs +41 -0
- package/common/src/crypto/babyJub.cjs +1 -1
- package/common/src/crypto/babyJub.mjs +6 -12
- package/common/src/crypto/eddsa.cjs +1 -1
- package/common/src/crypto/eddsa.mjs +6 -12
- package/common/src/crypto/poseidon.cjs +1 -1
- package/common/src/crypto/poseidon.mjs +6 -12
- package/common/src/crypto/preProcessing.cjs +1 -1
- package/common/src/crypto/preProcessing.mjs +13 -23
- package/common/src/data-structures/Hinkal/hinkalClaimUtxo.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalClaimUtxo.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalDeposit.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalDeposit.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalPrivateWallet.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalPrivateWallet.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaSwap.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaSwap.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaTransfer.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSolanaWithdraw.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSwap.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalSwap.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalTransfer.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalTransfer.mjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalWithdraw.d.ts +3 -1
- package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +32 -43
- package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalWithdrawStuckUtxos.mjs +2 -2
- package/common/src/data-structures/Hinkal/prepareDepositOnChainUtxosZkProof.cjs +1 -1
- package/common/src/data-structures/Hinkal/prepareDepositOnChainUtxosZkProof.mjs +1 -1
- package/common/src/data-structures/MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.cjs +1 -1
- package/common/src/data-structures/MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.mjs +26 -42
- package/common/src/data-structures/utxo/Utxo.cjs +1 -1
- package/common/src/data-structures/utxo/Utxo.d.ts +0 -1
- package/common/src/data-structures/utxo/Utxo.mjs +6 -19
- package/common/src/functions/index.cjs +1 -1
- package/common/src/functions/index.mjs +1 -0
- package/common/src/functions/pre-transaction/buildCommitmentValidationData.cjs +1 -1
- package/common/src/functions/pre-transaction/buildCommitmentValidationData.mjs +43 -86
- package/common/src/functions/pre-transaction/outputUtxoProcessing.cjs +1 -1
- package/common/src/functions/pre-transaction/outputUtxoProcessing.d.ts +2 -2
- package/common/src/functions/pre-transaction/outputUtxoProcessing.mjs +22 -28
- package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
- package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +43 -49
- package/common/src/functions/utils/bigint-math.utils.cjs +1 -1
- package/common/src/functions/utils/bigint-math.utils.d.ts +2 -0
- package/common/src/functions/utils/bigint-math.utils.mjs +18 -1
- package/common/src/functions/utils/index.cjs +1 -1
- package/common/src/functions/utils/index.mjs +1 -1
- package/common/src/functions/web3/events/getInputUtxoAndBalance.cjs +1 -1
- package/common/src/functions/web3/events/getInputUtxoAndBalance.mjs +44 -94
- package/common/src/functions/web3/events/getShieldedBalance.cjs +1 -1
- package/common/src/functions/web3/events/getShieldedBalance.mjs +64 -64
- package/common/src/webworker/logError-D8yBaP96.js +2 -0
- package/common/src/webworker/package.json +1 -1
- package/common/src/webworker/performTaskWithWorker.cjs +1 -1
- package/common/src/webworker/performTaskWithWorker.mjs +17 -18
- package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.cjs +1 -1
- package/common/src/webworker/utxoWorker/utxoWorkerLauncher.ts?worker&url.mjs +1 -1
- package/common/src/webworker/utxoWorkerNode.cjs +1 -1
- package/common/src/webworker/viteWorkerURL.constant.cjs +3 -4
- package/common/src/webworker/viteWorkerURL.constant.d.ts +0 -1
- package/common/src/webworker/viteWorkerURL.constant.mjs +3 -4
- package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.cjs +1 -1
- package/common/src/webworker/zkProofWorker/zkProofWorkerLauncher.ts?worker&url.mjs +1 -1
- package/common/src/webworker/zkProofWorkerNode.cjs +1 -1
- package/package.json +1 -1
- package/react-native/HinkalWebViewWorker.cjs +4 -76
- package/react-native/HinkalWebViewWorker.mjs +49 -152
- package/react-native/bridge/HinkalRNWorker.cjs +1 -1
- package/react-native/bridge/HinkalRNWorker.d.ts +0 -1
- package/react-native/bridge/HinkalRNWorker.mjs +11 -16
- package/react-native/shims/circomlibjs-hinkal-fork.js +2 -2
- package/react-native/shims/circomlibjs.js +2 -2
- package/react-native/workerCDNUrls.cjs +1 -1
- package/react-native/workerCDNUrls.d.ts +0 -1
- package/react-native/workerCDNUrls.mjs +2 -2
- package/sdk/package.json.cjs +1 -1
- package/sdk/package.json.mjs +1 -1
- package/common/src/crypto/rnCryptoBridge.cjs +0 -1
- package/common/src/crypto/rnCryptoBridge.d.ts +0 -8
- package/common/src/crypto/rnCryptoBridge.mjs +0 -10
- package/common/src/crypto/rnUtxoCrypto.cjs +0 -1
- package/common/src/crypto/rnUtxoCrypto.d.ts +0 -14
- package/common/src/crypto/rnUtxoCrypto.mjs +0 -40
- package/common/src/functions/utils/hinkalTiming.utils.cjs +0 -1
- package/common/src/functions/utils/hinkalTiming.utils.d.ts +0 -11
- package/common/src/functions/utils/hinkalTiming.utils.mjs +0 -21
- package/common/src/functions/utils/utxoPadding.utils.cjs +0 -1
- package/common/src/functions/utils/utxoPadding.utils.d.ts +0 -2
- package/common/src/functions/utils/utxoPadding.utils.mjs +0 -14
- package/common/src/webworker/cryptoWorker/cryptoWorker.types.cjs +0 -1
- package/common/src/webworker/cryptoWorker/cryptoWorker.types.d.ts +0 -49
- package/common/src/webworker/cryptoWorker/cryptoWorker.types.mjs +0 -6
- package/common/src/webworker/cryptoWorker/cryptoWorkerLauncher.d.ts +0 -1
- package/common/src/webworker/cryptoWorker/cryptoWorkerLogic.d.ts +0 -2
- package/common/src/webworker/logError-DFS-H2t0.js +0 -2
- package/react-native/bridge/RnWebViewCryptoBridge.cjs +0 -1
- package/react-native/bridge/RnWebViewCryptoBridge.d.ts +0 -7
- package/react-native/bridge/RnWebViewCryptoBridge.mjs +0 -49
|
@@ -5,61 +5,50 @@ import { transactionErrorCodes as r } from "../../error-handling/error-codes.con
|
|
|
5
5
|
import { getCurrentTimeInSeconds as i } from "../../functions/utils/time.utils.mjs";
|
|
6
6
|
import { ExternalActionId as a } from "../../types/external-action.types.mjs";
|
|
7
7
|
import { addressToHexFormat as o, reorderZkCallData as s } from "../../functions/utils/tron.utils.mjs";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import { getFeeStructure as m } from "../../functions/pre-transaction/getFeeStructure.mjs";
|
|
8
|
+
import { validateAndGetChainId as c } from "../../functions/utils/token-check.utils.mjs";
|
|
9
|
+
import { addPaddingToUtxos as l } from "../../functions/web3/events/getShieldedBalance.mjs";
|
|
10
|
+
import { outputUtxoProcessing as u } from "../../functions/pre-transaction/outputUtxoProcessing.mjs";
|
|
11
|
+
import { modifyVolatileTokenAmountChanges as d } from "../../functions/pre-transaction/getVolatileTransferAmount.mjs";
|
|
12
|
+
import { constructAdminData as f } from "../../functions/pre-transaction/constructAdminData.mjs";
|
|
13
|
+
import { getFeeStructure as p } from "../../functions/pre-transaction/getFeeStructure.mjs";
|
|
15
14
|
import "../../functions/pre-transaction/index.mjs";
|
|
16
|
-
import { calculateModifiedFeeStructure as
|
|
17
|
-
import { constructZkProof as
|
|
18
|
-
import { transactCallDirect as
|
|
19
|
-
import { transactCallRelayer as
|
|
20
|
-
import { transactCallDirectTron as
|
|
21
|
-
import { mergeWithFeeStructure as
|
|
15
|
+
import { calculateModifiedFeeStructure as m } from "../../functions/utils/fees.utils.mjs";
|
|
16
|
+
import { constructZkProof as h } from "../../functions/snarkjs/constructGeneralZkProof.mjs";
|
|
17
|
+
import { transactCallDirect as g } from "../../functions/web3/functionCalls/transactCallDirect.mjs";
|
|
18
|
+
import { transactCallRelayer as _ } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
|
|
19
|
+
import { transactCallDirectTron as v } from "../../functions/web3/functionCalls/transactCallDirectTron.mjs";
|
|
20
|
+
import { mergeWithFeeStructure as y } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
|
|
22
21
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalWithdraw.ts
|
|
23
|
-
var
|
|
24
|
-
let a = [...await
|
|
22
|
+
var b = async (e, t, n, r) => {
|
|
23
|
+
let a = [...await l(e, t, n, r)], o = [], s = i().toString();
|
|
25
24
|
for (let t = 0; t < n.length; t += 1) {
|
|
26
|
-
let { outputUtxos: n } =
|
|
25
|
+
let { outputUtxos: n } = u(e.userKeys, a[t], r[t], s);
|
|
27
26
|
o.push(n);
|
|
28
27
|
}
|
|
29
28
|
return {
|
|
30
29
|
inputUtxosArray: a,
|
|
31
30
|
outputUtxosArray: o
|
|
32
31
|
};
|
|
33
|
-
},
|
|
34
|
-
let
|
|
35
|
-
|
|
36
|
-
let
|
|
37
|
-
if (!
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
let e = T ?? await m(O, w, j, a.Transact);
|
|
41
|
-
P = await h(O, N, -M[0], e), await b(O, j, M, P);
|
|
32
|
+
}, x = async (i, l, u, x, S, C, w, T) => {
|
|
33
|
+
let E = c(l), D = e(E), O = o(await i.getEthereumAddressByChain(E)), k = l.map((e) => e.erc20TokenAddress), A = await d(E, l, u), j = l[0];
|
|
34
|
+
if (!j) throw Error("Deposit Action: No Token Found");
|
|
35
|
+
let M;
|
|
36
|
+
if (!S) {
|
|
37
|
+
let e = w ?? await p(E, C, k, a.Transact);
|
|
38
|
+
M = await m(E, j, -A[0], e), await y(E, k, A, M);
|
|
42
39
|
}
|
|
43
|
-
let
|
|
40
|
+
let N = {
|
|
44
41
|
externalActionId: 0n,
|
|
45
|
-
externalAddress: o(
|
|
42
|
+
externalAddress: o(x),
|
|
46
43
|
externalActionMetadata: "0x00"
|
|
47
|
-
}, [
|
|
48
|
-
if (
|
|
49
|
-
let { zkCallData:
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (!N) throw Error("Withdraw Action: No Token Found");
|
|
54
|
-
if (k) {
|
|
55
|
-
let e = await y(i, O, M[0], N, z, B, V);
|
|
56
|
-
return D.log("done", { txid: e }), e;
|
|
57
|
-
}
|
|
58
|
-
let e = await _(i, O, M[0], N, z, B, V);
|
|
59
|
-
return D.log("done", { txHash: e.hash }), e;
|
|
44
|
+
}, [P, { inputUtxosArray: F, outputUtxosArray: I }] = await Promise.all([i.getRandomRelay(E, !0), b(i, E, k, A)]);
|
|
45
|
+
if (!S && !P) throw Error(r.RELAYER_NOT_AVAILABLE);
|
|
46
|
+
let { zkCallData: L, circomData: R, dimData: z, commitmentValidationData: B } = await h(i.merkleTreeHinkalByChain[E], F, I, i.userKeys, N.externalActionId, N.externalAddress, N.externalActionMetadata, i.generateProofRemotely, M ?? n, S ? t : P, E, void 0, void 0, S ? O : void 0), V = D && S ? void 0 : await s(D, L, z, R);
|
|
47
|
+
if (S) {
|
|
48
|
+
if (!j) throw Error("Withdraw Action: No Token Found");
|
|
49
|
+
return D ? await v(i, E, A[0], j, L, R, z) : await g(i, E, A[0], j, L, R, z);
|
|
60
50
|
}
|
|
61
|
-
|
|
62
|
-
return D.log("done", { txHash: W }), W;
|
|
51
|
+
return await _(E, L, z, R, B, void 0, void 0, f(T, E, k, A, O), V);
|
|
63
52
|
};
|
|
64
53
|
//#endregion
|
|
65
|
-
export {
|
|
54
|
+
export { x as hinkalWithdraw };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../functions/utils/amounts.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../../functions/utils/encodeTokenWithId.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../functions/utils/tron.utils.cjs`),l=require(`../../functions/web3/events/getInputUtxoAndBalance.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/web3/events/getShieldedBalance.cjs`),f=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),p=require(`../../functions/snarkjs/common.snarkjs.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`../../constants/tx-confirmation.constants.cjs`),g=require(`../../functions/utils/tx-confirmation.utils.cjs`),_=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),v=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),y=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),b=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);let x=require(`ethers`);var S=async(e,t,n,r)=>{let i=[...await d.addPaddingToUtxos(e,t,n,r,void 0,void 0,!1,!0)],o=[],s=a.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`);require(`../../constants/protocol.constants.cjs`);const t=require(`../../functions/utils/amounts.utils.cjs`),n=require(`../../error-handling/error-codes.constants.cjs`),r=require(`../../functions/web3/etherFunctions.cjs`),i=require(`../crypto-keys/keys.cjs`),a=require(`../../functions/utils/time.utils.cjs`),o=require(`../../functions/utils/encodeTokenWithId.cjs`),s=require(`../../types/external-action.types.cjs`),c=require(`../../functions/utils/tron.utils.cjs`),l=require(`../../functions/web3/events/getInputUtxoAndBalance.cjs`),u=require(`../../functions/utils/token-check.utils.cjs`),d=require(`../../functions/web3/events/getShieldedBalance.cjs`),f=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),p=require(`../../functions/snarkjs/common.snarkjs.cjs`),m=require(`../../functions/pre-transaction/getFeeStructure.cjs`),h=require(`../../constants/tx-confirmation.constants.cjs`),g=require(`../../functions/utils/tx-confirmation.utils.cjs`),_=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),v=require(`../../functions/snarkjs/constructSolanaZkProof.cjs`),y=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),b=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);let x=require(`ethers`);var S=async(e,t,n,r)=>{let i=[...await d.addPaddingToUtxos(e,t,n,r,void 0,void 0,!1,!0)],o=[],s=a.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=f.outputUtxoProcessing(e.userKeys,i[t],r[t],s);o.push(n)}return{inputUtxosArray:i,outputUtxosArray:o}},C=async(e,t,n,r)=>{let i=[...await d.addPaddingToUtxos(e,t,n,r,6,void 0,!1,!0)][0],o=a.getCurrentTimeInSeconds().toString(),{outputUtxos:s}=f.outputUtxoProcessing(e.userKeys,i,r[0],o);return{inputUtxos:i,outputUtxos:s}},w=async(t,r,i,a,o)=>{let l=e.isTronLike(r),u=[i.erc20TokenAddress],d=i.erc20TokenAddress,[f,p]=await Promise.all([m.getFeeStructure(r,d,u,s.ExternalActionId.Transact),t.getRandomRelay(r,!0)]);if(!p)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let h=c.addressToHexFormat(o),g=a-f.flatFee;if(g<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${a}, Fee: ${f.flatFee}`);let v=[-g];await b.mergeWithFeeStructure(r,u,v,f);let x={externalActionId:0n,externalAddress:h,externalActionMetadata:`0x00`},{inputUtxosArray:C,outputUtxosArray:w}=await S(t,r,u,v),{zkCallData:T,circomData:E,dimData:D,commitmentValidationData:O}=await _.constructZkProof(t.merkleTreeHinkalByChain[r],C,w,t.userKeys,x.externalActionId,x.externalAddress,x.externalActionMetadata,t.generateProofRemotely,f,p,r);return{tx:await y.transactCallRelayer(r,T,D,E,O,void 0,void 0,void 0,await c.reorderZkCallData(l,T,D,E)),amountToRecipient:g}},T=async(t,a,o,c,l,u)=>{let d=[o.erc20TokenAddress],{originalDeployer:f}=e.networkRegistry[a].contractData;if(!f)throw Error(`missing data`);let{userKeys:h,merkleTreeHinkalByChain:g}=t,_=o.erc20TokenAddress,[b,S]=await Promise.all([m.getFeeStructure(a,_,d,s.ExternalActionId.Transact,void 0,void 0,{mintTo:d[0],recipient:l,nullifierCount:u}),t.getRandomRelay(a,!0)]);if(!S)throw Error(n.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let w=c-b.flatFee;if(w<=0n)throw Error(`Insufficient balance to cover fee. Balance: ${c}, Fee: ${b.flatFee}`);let T=[-w];T[0]-=b.flatFee;let{inputUtxos:E,outputUtxos:D}=await C(t,a,d,T),O=i.UserKeys.findCorrectRandomization(r.randomBigInt(31),t.userKeys.getShieldedPrivateKey()),k={tokenNumber:d.length,nullifierAmount:E.length,outputAmount:D.length},A=p.calcEncryptedOutputs([D])[0][0],j=Array.from(x.ethers.getBytes(A)),{proofAArr:M,proofBArr:N,proofCArr:P,publicInputsArr:F,commitmentValidationData:I}=await v.constructSolanaZkProof(t.generateProofRemotely,g[a],h,[d[0]],[E],[D],O,b.flatFee,b.variableRate,l,S,k,[j],a),L={recipient:l,mint:d[0]===`11111111111111111111111111111111`?void 0:d[0]};return{tx:await y.solanaTransactCallRelayer({chainId:a,relayAddress:S,functionName:`transact`,args:{proofAArr:M,proofBArr:N,proofCArr:P,publicInputsArr:F,encryptedOutputs:[j],relayerFee:b.flatFee.toString(),dimensions:k},accounts:L,commitmentValidationData:I}),amountToRecipient:w}},E=async(t,n,r,i,a,o)=>e.isSolanaLike(n)?T(t,n,r,i,a,o):w(t,n,r,i,a),D=async(e,n,r)=>{let i=[],a=u.validateAndGetChainId([n]),s=o.encodeTokenWithId(a,{erc20TokenAddress:n.erc20TokenAddress,tokenId:0});for(;;){await e.resetMerkleTreesIfNecessary([a]);let o=((await l.getInputUtxoAndBalancePerToken({hinkal:e,sliceIfMore6:!1,useBlockedUtxos:!0,chainId:a,allowRemoteDecryption:e.generateProofRemotely}))?.get(s)??[]).filter(e=>e.amount>0n).sort((e,t)=>Number(t.amount-e.amount)).slice(0,6),c=t.countTotalAmountInUtxos(o);if(!c)break;let{tx:u}=await E(e,a,n,c,r,o.length);await g.waitForTransactionConfirmation(a,u,{solanaCommitment:`finalized`,evmTimeoutMs:h.RELAYER_TX_CONFIRMATION_TIMEOUT}),i.push(u)}return i};exports.hinkalWithdrawStuckUtxos=D;
|
|
@@ -25,7 +25,7 @@ import { ethers as T } from "ethers";
|
|
|
25
25
|
var E = async (e, t, n, r) => {
|
|
26
26
|
let i = [...await m(e, t, n, r, void 0, void 0, !1, !0)], a = [], o = s().toString();
|
|
27
27
|
for (let t = 0; t < n.length; t += 1) {
|
|
28
|
-
let { outputUtxos: n } =
|
|
28
|
+
let { outputUtxos: n } = h(e.userKeys, i[t], r[t], o);
|
|
29
29
|
a.push(n);
|
|
30
30
|
}
|
|
31
31
|
return {
|
|
@@ -33,7 +33,7 @@ var E = async (e, t, n, r) => {
|
|
|
33
33
|
outputUtxosArray: a
|
|
34
34
|
};
|
|
35
35
|
}, D = async (e, t, n, r) => {
|
|
36
|
-
let i = [...await m(e, t, n, r, 6, void 0, !1, !0)][0], a = s().toString(), { outputUtxos: o } =
|
|
36
|
+
let i = [...await m(e, t, n, r, 6, void 0, !1, !0)][0], a = s().toString(), { outputUtxos: o } = h(e.userKeys, i, r[0], a);
|
|
37
37
|
return {
|
|
38
38
|
inputUtxos: i,
|
|
39
39
|
outputUtxos: o
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../types/external-action.types.cjs`),i=require(`../../functions/web3/events/getShieldedBalance.cjs`),a=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),o=require(`../../functions/utils/fees.utils.cjs`),s=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`);let c=require(`ethers`);var l=async(l,u,d,f,p,m={})=>{let h=d.erc20TokenAddress,g=f.map(e=>e+o.calculateTotalFee(e,p)),_=g.reduce((e,t)=>e+t,0n),v=[h],y=[0n],b=[!0],x=c.ethers.AbiCoder.defaultAbiCoder().encode([`uint256[]`],[g]),{hinkalWrapperAddress:S,hinkalWrapperABI:C,depositOnChainUtxosExternalActionAddress:w,depositOnChainUtxosExternalActionABI:T}=e.networkRegistry[u].contractData;if(!S||!C||!w||!T)throw Error(`contract data not set in networkRegistry`);let E=[...await i.addPaddingToUtxos(l,u,v,y,2,void 0,!0)],D=[];for(let e=0;e<E.length;e+=1){let{outputUtxos:t}=
|
|
1
|
+
require(`../../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../types/external-action.types.cjs`),i=require(`../../functions/web3/events/getShieldedBalance.cjs`),a=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),o=require(`../../functions/utils/fees.utils.cjs`),s=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`);let c=require(`ethers`);var l=async(l,u,d,f,p,m={})=>{let h=d.erc20TokenAddress,g=f.map(e=>e+o.calculateTotalFee(e,p)),_=g.reduce((e,t)=>e+t,0n),v=[h],y=[0n],b=[!0],x=c.ethers.AbiCoder.defaultAbiCoder().encode([`uint256[]`],[g]),{hinkalWrapperAddress:S,hinkalWrapperABI:C,depositOnChainUtxosExternalActionAddress:w,depositOnChainUtxosExternalActionABI:T}=e.networkRegistry[u].contractData;if(!S||!C||!w||!T)throw Error(`contract data not set in networkRegistry`);let E=[...await i.addPaddingToUtxos(l,u,v,y,2,void 0,!0)],D=[];for(let e=0;e<E.length;e+=1){let{outputUtxos:t}=a.outputUtxoProcessing(l.userKeys,E[e],y[e]);D.push(t)}let{zkCallData:O,circomData:k,dimData:A}=await s.constructZkProof(l.merkleTreeHinkalByChain[u],E,D,l.userKeys,r.ExternalActionId.DepositOnChainUtxos,w,x,l.generateProofRemotely,n.zeroFeeStructure,t.zeroAddress,u,b,m.hookData,S);return{zkCallData:O,circomData:k,dimData:A,utxoAmounts:g,totalAmount:_,hinkalWrapperAddress:S,depositOnChainUtxosExternalActionAddress:w,hinkalWrapperABI:C,depositOnChainUtxosExternalActionABI:T,inputUtxosArray:E}};exports.prepareDepositOnChainUtxosZkProof=l;
|
|
@@ -13,7 +13,7 @@ var l = async (l, u, d, f, p, m = {}) => {
|
|
|
13
13
|
if (!S || !C || !w || !T) throw Error("contract data not set in networkRegistry");
|
|
14
14
|
let E = [...await i(l, u, v, y, 2, void 0, !0)], D = [];
|
|
15
15
|
for (let e = 0; e < E.length; e += 1) {
|
|
16
|
-
let { outputUtxos: t } =
|
|
16
|
+
let { outputUtxos: t } = a(l.userKeys, E[e], y[e]);
|
|
17
17
|
D.push(t);
|
|
18
18
|
}
|
|
19
19
|
let { zkCallData: O, circomData: k, dimData: A } = await s(l.merkleTreeHinkalByChain[u], E, D, l.userKeys, r.DepositOnChainUtxos, w, x, l.generateProofRemotely, n, t, u, b, m.hookData, S);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/vite.constants.cjs`),t=require(`../crypto-keys/keys.cjs`),n=require(`../utxo/Utxo.cjs`),r=require(`../../
|
|
1
|
+
const e=require(`../../constants/vite.constants.cjs`),t=require(`../crypto-keys/keys.cjs`),n=require(`../utxo/Utxo.cjs`),r=require(`../../webworker/worker.registry.cjs`),i=require(`../../webworker/performTaskWithWorker.cjs`),a=require(`../../webworker/utxoWorker/utxoWorker.types.cjs`);var o=16,s=class{NUM_WORKERS;NUM_WORKERS_BATCH_PROCESS;constructor(){e.isNode?(this.NUM_WORKERS=1,this.NUM_WORKERS_BATCH_PROCESS=1):(this.NUM_WORKERS=3,this.NUM_WORKERS_BATCH_PROCESS=Math.min(o,Math.ceil(navigator.deviceMemory??4)))}async createUtxoPromise(e){return await i.performTaskWithWorker({type:r.WorkerVariant.UTXO,payload:e})}async batchFilterUtxosWithNullifier(e,r){let i=this.sliceArrayIntoParts(e,this.NUM_WORKERS).map(e=>this.createUtxoPromise({type:a.UtxoWorkerActionType.BATCH_FILTER_UTXOS_WITH_NULLIFIER,data:{utxos:e.map(e=>e.getConstructableParams()),nullifiers:r}})),o=await Promise.all(i);return o.forEach(e=>{t.stealthPairCacheDevice.mergeWithSerialized(e.stealthPairCache),t.stealthAddressCacheDevice.mergeWithSerialized(e.stealthAddressCache)}),o.flatMap(e=>e.utxoConstructors).map(e=>new n.Utxo(e))}async buildBatchProcess(e,t,r){let i=this.sliceArrayIntoParts(e,this.NUM_WORKERS).map(e=>this.createUtxoPromise({type:a.UtxoWorkerActionType.BUILD_UTXOS,data:{signature:t.getSignature(),encryptedOutputs:e,chainId:r}}));return(await Promise.all(i)).flat().map(e=>new n.Utxo(e))}sliceArrayIntoParts(e,t){let n=Math.ceil(e.length/t);return Array.from({length:t},(t,r)=>e.slice(n*r,n*(r+1))).filter(e=>e.length>0)}findLastOutput(e,t){let n=t;return e.forEach(e=>{e!==t&&(n=e)}),n}async batchProcess(e,t,n,r){let i=this.sliceArrayIntoParts(e,this.NUM_WORKERS_BATCH_PROCESS),o=n.getSignature(),s=i.map(e=>{let n={type:a.UtxoWorkerActionType.DECIPHER_OUTPUTS,data:{encryptedOutputs:e,lastOutput:t,signature:o,chainId:r}};return this.createUtxoPromise(n)}),c=await Promise.all(s),l=c.map(({additionalEncryptedOutputs:e})=>e).flat(),u=new Set;return{additionalEncryptedOutputs:l.reduce((e,t)=>u.has(t.value)?e:(u.add(t.value),[...e,t]),[]),lastOutput:this.findLastOutput(c.map(e=>e.lastOutput),t)??t}}};exports.MultiThreadedUtxoUtils=s;
|
|
@@ -1,55 +1,44 @@
|
|
|
1
1
|
import { isNode as e } from "../../constants/vite.constants.mjs";
|
|
2
2
|
import { stealthAddressCacheDevice as t, stealthPairCacheDevice as n } from "../crypto-keys/keys.mjs";
|
|
3
3
|
import { Utxo as r } from "../utxo/Utxo.mjs";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { UtxoWorkerActionType as s } from "../../webworker/utxoWorker/utxoWorker.types.mjs";
|
|
4
|
+
import { WorkerVariant as i } from "../../webworker/worker.registry.mjs";
|
|
5
|
+
import { performTaskWithWorker as a } from "../../webworker/performTaskWithWorker.mjs";
|
|
6
|
+
import { UtxoWorkerActionType as o } from "../../webworker/utxoWorker/utxoWorker.types.mjs";
|
|
8
7
|
//#region libs/shared/common/src/data-structures/MultiThreadedUtxoUtils/MultiThreadedUtxoUtils.ts
|
|
9
|
-
var
|
|
8
|
+
var s = 16, c = class {
|
|
10
9
|
NUM_WORKERS;
|
|
11
10
|
NUM_WORKERS_BATCH_PROCESS;
|
|
12
11
|
constructor() {
|
|
13
|
-
e ? (this.NUM_WORKERS = 1, this.NUM_WORKERS_BATCH_PROCESS = 1) : (this.NUM_WORKERS = 3, this.NUM_WORKERS_BATCH_PROCESS = Math.min(
|
|
12
|
+
e ? (this.NUM_WORKERS = 1, this.NUM_WORKERS_BATCH_PROCESS = 1) : (this.NUM_WORKERS = 3, this.NUM_WORKERS_BATCH_PROCESS = Math.min(s, Math.ceil(navigator.deviceMemory ?? 4)));
|
|
14
13
|
}
|
|
15
14
|
async createUtxoPromise(e) {
|
|
16
|
-
return await
|
|
17
|
-
type:
|
|
15
|
+
return await a({
|
|
16
|
+
type: i.UTXO,
|
|
18
17
|
payload: e
|
|
19
18
|
});
|
|
20
19
|
}
|
|
21
|
-
async batchFilterUtxosWithNullifier(e,
|
|
22
|
-
let
|
|
23
|
-
|
|
24
|
-
utxoCount: e.length,
|
|
25
|
-
workers: c.length
|
|
26
|
-
});
|
|
27
|
-
let l = c.map((e) => this.createUtxoPromise({
|
|
28
|
-
type: s.BATCH_FILTER_UTXOS_WITH_NULLIFIER,
|
|
20
|
+
async batchFilterUtxosWithNullifier(e, i) {
|
|
21
|
+
let a = this.sliceArrayIntoParts(e, this.NUM_WORKERS).map((e) => this.createUtxoPromise({
|
|
22
|
+
type: o.BATCH_FILTER_UTXOS_WITH_NULLIFIER,
|
|
29
23
|
data: {
|
|
30
24
|
utxos: e.map((e) => e.getConstructableParams()),
|
|
31
|
-
nullifiers:
|
|
25
|
+
nullifiers: i
|
|
32
26
|
}
|
|
33
|
-
})),
|
|
34
|
-
return
|
|
27
|
+
})), s = await Promise.all(a);
|
|
28
|
+
return s.forEach((e) => {
|
|
35
29
|
n.mergeWithSerialized(e.stealthPairCache), t.mergeWithSerialized(e.stealthAddressCache);
|
|
36
|
-
}),
|
|
30
|
+
}), s.flatMap((e) => e.utxoConstructors).map((e) => new r(e));
|
|
37
31
|
}
|
|
38
32
|
async buildBatchProcess(e, t, n) {
|
|
39
|
-
let
|
|
40
|
-
|
|
41
|
-
encryptedOutputs: e.length,
|
|
42
|
-
workers: o.length
|
|
43
|
-
});
|
|
44
|
-
let c = o.map((e) => this.createUtxoPromise({
|
|
45
|
-
type: s.BUILD_UTXOS,
|
|
33
|
+
let i = this.sliceArrayIntoParts(e, this.NUM_WORKERS).map((e) => this.createUtxoPromise({
|
|
34
|
+
type: o.BUILD_UTXOS,
|
|
46
35
|
data: {
|
|
47
36
|
signature: t.getSignature(),
|
|
48
37
|
encryptedOutputs: e,
|
|
49
38
|
chainId: n
|
|
50
39
|
}
|
|
51
|
-
}))
|
|
52
|
-
return
|
|
40
|
+
}));
|
|
41
|
+
return (await Promise.all(i)).flat().map((e) => new r(e));
|
|
53
42
|
}
|
|
54
43
|
sliceArrayIntoParts(e, t) {
|
|
55
44
|
let n = Math.ceil(e.length / t);
|
|
@@ -62,28 +51,23 @@ var c = 16, l = class {
|
|
|
62
51
|
}), n;
|
|
63
52
|
}
|
|
64
53
|
async batchProcess(e, t, n, r) {
|
|
65
|
-
let
|
|
66
|
-
a.log("start", {
|
|
67
|
-
encryptedOutputs: e.length,
|
|
68
|
-
workers: o.length
|
|
69
|
-
});
|
|
70
|
-
let c = n.getSignature(), l = o.map((e) => {
|
|
54
|
+
let i = this.sliceArrayIntoParts(e, this.NUM_WORKERS_BATCH_PROCESS), a = n.getSignature(), s = i.map((e) => {
|
|
71
55
|
let n = {
|
|
72
|
-
type:
|
|
56
|
+
type: o.DECIPHER_OUTPUTS,
|
|
73
57
|
data: {
|
|
74
58
|
encryptedOutputs: e,
|
|
75
59
|
lastOutput: t,
|
|
76
|
-
signature:
|
|
60
|
+
signature: a,
|
|
77
61
|
chainId: r
|
|
78
62
|
}
|
|
79
63
|
};
|
|
80
64
|
return this.createUtxoPromise(n);
|
|
81
|
-
}),
|
|
82
|
-
|
|
83
|
-
|
|
65
|
+
}), c = await Promise.all(s), l = c.map(({ additionalEncryptedOutputs: e }) => e).flat(), u = /* @__PURE__ */ new Set();
|
|
66
|
+
return {
|
|
67
|
+
additionalEncryptedOutputs: l.reduce((e, t) => u.has(t.value) ? e : (u.add(t.value), [...e, t]), []),
|
|
68
|
+
lastOutput: this.findLastOutput(c.map((e) => e.lastOutput), t) ?? t
|
|
84
69
|
};
|
|
85
|
-
return a.log("done", { additionalEncryptedOutputs: p.length }), m;
|
|
86
70
|
}
|
|
87
71
|
};
|
|
88
72
|
//#endregion
|
|
89
|
-
export {
|
|
73
|
+
export { c as MultiThreadedUtxoUtils };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../crypto/poseidon.cjs`),n=require(`../../functions/web3/etherFunctions.cjs`),r=require(`../crypto-keys/keys.cjs`),i=require(`../../
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../crypto/poseidon.cjs`),n=require(`../../functions/web3/etherFunctions.cjs`),r=require(`../crypto-keys/keys.cjs`),i=require(`../../functions/utils/time.utils.cjs`);var a=class a{amount;erc20TokenAddress;mintAddress;timeStamp;nullifyingKey;spendingPublicKey;randomization;H0;stealthAddress;encryptionKey;commitment;nullifier;isBlocked;isNewStyle;constructor({amount:e,erc20TokenAddress:t,mintAddress:a,timeStamp:o,nullifyingKey:s,spendingPublicKey:c,randomization:l,H0:u,stealthAddress:d,encryptionKey:f,commitment:p=void 0,nullifier:m=void 0,isBlocked:h=!1,isNewStyle:g=!1}){this.amount=e,this.erc20TokenAddress=t,this.mintAddress=a,this.timeStamp=o??i.getCurrentTimeInSeconds().toString(),this.nullifyingKey=s,this.spendingPublicKey=c,this.randomization=l??(s?r.UserKeys.findCorrectRandomization(n.randomBigInt(31),s):void 0),this.H0=u??(g&&this.randomization?r.UserKeys.findH0(this.randomization,s):void 0),this.stealthAddress=d,this.encryptionKey=f,this.commitment=p,this.nullifier=m,this.isBlocked=h,this.isNewStyle=g}static createFrom(e,t){return new a({...e.getConstructableParams(),nullifier:void 0,commitment:void 0,...t})}getConstructableParams(){return{amount:this.amount,erc20TokenAddress:this.erc20TokenAddress,mintAddress:this.mintAddress,timeStamp:this.timeStamp,nullifyingKey:this.nullifyingKey,spendingPublicKey:this.spendingPublicKey,randomization:this.randomization,H0:this.H0,stealthAddress:this.stealthAddress,encryptionKey:this.encryptionKey,commitment:this.commitment,nullifier:this.nullifier,isBlocked:this.isBlocked,isNewStyle:this.isNewStyle}}getBasicUtxoParams(){return{amount:this.amount,erc20TokenAddress:this.erc20TokenAddress,mintAddress:this.mintAddress,timeStamp:this.timeStamp,randomization:this.randomization,H0:this.H0,stealthAddress:this.stealthAddress,commitment:this.commitment,nullifier:this.nullifier,isBlocked:this.isBlocked,isNewStyle:this.isNewStyle}}getCommitment(){if(!this.commitment){let e=[this.amount,this.erc20TokenAddress,BigInt(this.getStealthAddress()),this.timeStamp];this.commitment=t.poseidonHash(...e)}return this.commitment}getNullifier(){if(!this.nullifier){if(!this.nullifyingKey)throw Error(`No Nullifiers if private key is not provided`);let e=this.getCommitment(),n=t.poseidonHash(this.nullifyingKey,e);this.nullifier=t.poseidonHash(e,n)}return this.nullifier}getStealthAddress(){if(!this.stealthAddress){if(!this.nullifyingKey)throw Error(`No stealth address in UTXO if private key is not provided`);if(this.isNewStyle){if(!this.H0)throw Error(`No H0 point provided`);this.stealthAddress=r.UserKeys.getStealthAddressNewStyle(this.H0,this.nullifyingKey,this.spendingPublicKey)}else{if(!this.randomization)throw Error(`No randomization provided`);this.stealthAddress=r.UserKeys.getStealthAddress(this.randomization,this.nullifyingKey)}}return this.stealthAddress}getTokenAddress(t){let n=e.isSolanaLike(t)?this.mintAddress:this.erc20TokenAddress;if(!n)throw Error(`No token address provided`);return n}getEncryptionKey(){if(!this.nullifyingKey){if(!this.encryptionKey)throw Error(`No encryption key provided in UTXO`);return this.encryptionKey}return r.UserKeys.getEncryptionKeyPair(this.nullifyingKey).publicKey}};exports.Utxo=a;
|
|
@@ -49,7 +49,6 @@ export declare class Utxo {
|
|
|
49
49
|
* @param isBlocked [optional] whether the UTXO is blocked
|
|
50
50
|
*/
|
|
51
51
|
constructor({ amount, erc20TokenAddress, mintAddress, timeStamp, nullifyingKey, spendingPublicKey, randomization, H0, stealthAddress, encryptionKey, commitment, nullifier, isBlocked, isNewStyle, }: IUtxoConstructor);
|
|
52
|
-
static createAsync(params: IUtxoConstructor): Promise<Utxo>;
|
|
53
52
|
static createFrom(utxoToCreateFrom: Utxo, patch: Partial<IUtxoConstructor>): Utxo;
|
|
54
53
|
getConstructableParams(): IUtxoConstructor;
|
|
55
54
|
getBasicUtxoParams(): IUtxoConstructor;
|
|
@@ -2,10 +2,9 @@ import { isSolanaLike as e } from "../../constants/chains.constants.mjs";
|
|
|
2
2
|
import { poseidonHash as t } from "../../crypto/poseidon.mjs";
|
|
3
3
|
import { randomBigInt as n } from "../../functions/web3/etherFunctions.mjs";
|
|
4
4
|
import { UserKeys as r } from "../crypto-keys/keys.mjs";
|
|
5
|
-
import {
|
|
6
|
-
import { getCurrentTimeInSeconds as o } from "../../functions/utils/time.utils.mjs";
|
|
5
|
+
import { getCurrentTimeInSeconds as i } from "../../functions/utils/time.utils.mjs";
|
|
7
6
|
//#region libs/shared/common/src/data-structures/utxo/Utxo.ts
|
|
8
|
-
var
|
|
7
|
+
var a = class a {
|
|
9
8
|
amount;
|
|
10
9
|
erc20TokenAddress;
|
|
11
10
|
mintAddress;
|
|
@@ -20,23 +19,11 @@ var s = class s {
|
|
|
20
19
|
nullifier;
|
|
21
20
|
isBlocked;
|
|
22
21
|
isNewStyle;
|
|
23
|
-
constructor({ amount: e, erc20TokenAddress: t, mintAddress:
|
|
24
|
-
this.amount = e, this.erc20TokenAddress = t, this.mintAddress =
|
|
25
|
-
}
|
|
26
|
-
static async createAsync(e) {
|
|
27
|
-
if (i(e)) {
|
|
28
|
-
let t = await a(e.nullifyingKey, e.spendingPublicKey);
|
|
29
|
-
return new s({
|
|
30
|
-
...e,
|
|
31
|
-
randomization: t.randomization,
|
|
32
|
-
H0: t.H0,
|
|
33
|
-
stealthAddress: t.stealthAddress
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
return new s(e);
|
|
22
|
+
constructor({ amount: e, erc20TokenAddress: t, mintAddress: a, timeStamp: o, nullifyingKey: s, spendingPublicKey: c, randomization: l, H0: u, stealthAddress: d, encryptionKey: f, commitment: p = void 0, nullifier: m = void 0, isBlocked: h = !1, isNewStyle: g = !1 }) {
|
|
23
|
+
this.amount = e, this.erc20TokenAddress = t, this.mintAddress = a, this.timeStamp = o ?? i().toString(), this.nullifyingKey = s, this.spendingPublicKey = c, this.randomization = l ?? (s ? r.findCorrectRandomization(n(31), s) : void 0), this.H0 = u ?? (g && this.randomization ? r.findH0(this.randomization, s) : void 0), this.stealthAddress = d, this.encryptionKey = f, this.commitment = p, this.nullifier = m, this.isBlocked = h, this.isNewStyle = g;
|
|
37
24
|
}
|
|
38
25
|
static createFrom(e, t) {
|
|
39
|
-
return new
|
|
26
|
+
return new a({
|
|
40
27
|
...e.getConstructableParams(),
|
|
41
28
|
nullifier: void 0,
|
|
42
29
|
commitment: void 0,
|
|
@@ -123,4 +110,4 @@ var s = class s {
|
|
|
123
110
|
}
|
|
124
111
|
};
|
|
125
112
|
//#endregion
|
|
126
|
-
export {
|
|
113
|
+
export { a as Utxo };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./utils/abi.utils.cjs`),require(`./utils/serialize.utils.cjs`),require(`./utils/caseInsensitive.utils.cjs`),require(`./utils/amounts.utils.cjs`),require(`./web3/etherFunctions.cjs`),require(`./utils/time.utils.cjs`),require(`./utils/upToDateState.cjs`),require(`./utils/cacheFunctions.cjs`),require(`./utils/enclaveHandshakeService.cjs`),require(`./utils/encryptInputForEnclave.cjs`),require(`./utils/solanaMint.utils.cjs`),require(`./utils/customEnclaveFunctionsRegister.cjs`),require(`./utils/addresses.cjs`),require(`./utils/tron.utils.cjs`),require(`./web3/events/getInputUtxoAndBalance.cjs`),require(`./utils/get-signature-header.cjs`),require(`./utils/auth.utils.cjs`),require(`./utils/string.utils.cjs`),require(`./utils/token-check.utils.cjs`),require(`./utils/map.utils.cjs`),require(`./utils/mutexes.utils.cjs`),require(`./utils/erc20tokenFunctions.cjs`),require(`./web3/events/getShieldedBalance.cjs`),require(`./pre-transaction/outputUtxoProcessing.cjs`),require(`./utils/external-action.utils.cjs`),require(`./utils/bit.operations.cjs`),require(`./snarkjs/common.snarkjs.cjs`),require(`./pre-transaction/solana.cjs`),require(`./snarkjs/signedMessageHash.cjs`),require(`./pre-transaction/process-gas-estimates.cjs`),require(`./pre-transaction/getVolatileTransferAmount.cjs`),require(`./pre-transaction/constructAdminData.cjs`),require(`./utils/create-provider.cjs`),require(`./pre-transaction/convert-okx-instructions.cjs`),require(`./web3/getSolanaPriorityFee.cjs`),require(`./utils/process.utils.cjs`),require(`./pre-transaction/sendV0Transaction.cjs`),require(`./utils/bytes32.utils.cjs`),require(`./pre-transaction/recipientUtxoProcessing.cjs`),require(`./pre-transaction/ensureAmountChanges.cjs`),require(`./pre-transaction/getFeeStructure.cjs`),require(`./pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),require(`./pre-transaction/buildCommitmentValidationData.cjs`),require(`./pre-transaction/index.cjs`),require(`./snarkjs/generateZkProof.cjs`),require(`./snarkjs/generateMainAndCommitmentZkProof.cjs`),require(`./utils/serialize-utxos.utils.cjs`),require(`./utils/resolve-sync.utils.cjs`),require(`./utils/reloadPage.cjs`),require(`./utils/cacheDevice.utils.cjs`),require(`./utils/involves-permit2-op.cjs`),require(`./utils/convertEmporiumOpToCallInfo.cjs`),require(`./utils/getRecipientInfoFromUserKeys.cjs`),require(`./utils/publicBalance.utils.cjs`),require(`./utils/postToOffscreen.cjs`),require(`./utils/getContractAddress.cjs`),require(`./utils/getUtxosFromReceipt.utils.cjs`),require(`./utils/getUtxosFromReceiptSolana.cjs`),require(`./utils/fees.utils.cjs`),require(`./utils/enclave-signature-storage.cjs`),require(`./utils/tx-confirmation.utils.cjs`),require(`./utils/tronSimulation.utils.cjs`),require(`./utils/getSignerFromContract.cjs`),require(`./utils/mnemonics.cjs`),require(`./utils/nearIntents.utils.cjs`),require(`./utils/index.cjs`),require(`./snarkjs/fetchOnChainRootHashes.cjs`),require(`./private-wallet/emporium.helpers.cjs`),require(`./snarkjs/constructGeneralZkProof.cjs`),require(`./web3/uniswapAPI.cjs`),require(`./web3/odosAPI.cjs`),require(`./web3/oneInchAPI.cjs`),require(`./web3/okxAPI.cjs`),require(`./web3/index.cjs`),require(`./snarkjs/constructSolanaZkProof.cjs`),require(`./snarkjs/index.cjs`),require(`./private-wallet/emporium.swap.helpers.cjs`),require(`./private-wallet/index.cjs`),require(`./auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),require(`./auto-deposit-back-helpers/get-gas-token-records.cjs`),require(`./auto-deposit-back-helpers/select-gas-token.cjs`),require(`./auto-deposit-back-helpers/update-hinkal.cjs`),require(`./auto-deposit-back-helpers/index.cjs`);
|
|
1
|
+
require(`./utils/abi.utils.cjs`),require(`./utils/serialize.utils.cjs`),require(`./utils/caseInsensitive.utils.cjs`),require(`./utils/amounts.utils.cjs`),require(`./web3/etherFunctions.cjs`),require(`./utils/bigint-math.utils.cjs`),require(`./utils/time.utils.cjs`),require(`./utils/upToDateState.cjs`),require(`./utils/cacheFunctions.cjs`),require(`./utils/enclaveHandshakeService.cjs`),require(`./utils/encryptInputForEnclave.cjs`),require(`./utils/solanaMint.utils.cjs`),require(`./utils/customEnclaveFunctionsRegister.cjs`),require(`./utils/addresses.cjs`),require(`./utils/tron.utils.cjs`),require(`./web3/events/getInputUtxoAndBalance.cjs`),require(`./utils/get-signature-header.cjs`),require(`./utils/auth.utils.cjs`),require(`./utils/string.utils.cjs`),require(`./utils/token-check.utils.cjs`),require(`./utils/map.utils.cjs`),require(`./utils/mutexes.utils.cjs`),require(`./utils/erc20tokenFunctions.cjs`),require(`./web3/events/getShieldedBalance.cjs`),require(`./pre-transaction/outputUtxoProcessing.cjs`),require(`./utils/external-action.utils.cjs`),require(`./utils/bit.operations.cjs`),require(`./snarkjs/common.snarkjs.cjs`),require(`./pre-transaction/solana.cjs`),require(`./snarkjs/signedMessageHash.cjs`),require(`./pre-transaction/process-gas-estimates.cjs`),require(`./pre-transaction/getVolatileTransferAmount.cjs`),require(`./pre-transaction/constructAdminData.cjs`),require(`./utils/create-provider.cjs`),require(`./pre-transaction/convert-okx-instructions.cjs`),require(`./web3/getSolanaPriorityFee.cjs`),require(`./utils/process.utils.cjs`),require(`./pre-transaction/sendV0Transaction.cjs`),require(`./utils/bytes32.utils.cjs`),require(`./pre-transaction/recipientUtxoProcessing.cjs`),require(`./pre-transaction/ensureAmountChanges.cjs`),require(`./pre-transaction/getFeeStructure.cjs`),require(`./pre-transaction/waitForDepositedUtxosInMerkleTree.cjs`),require(`./pre-transaction/buildCommitmentValidationData.cjs`),require(`./pre-transaction/index.cjs`),require(`./snarkjs/generateZkProof.cjs`),require(`./snarkjs/generateMainAndCommitmentZkProof.cjs`),require(`./utils/serialize-utxos.utils.cjs`),require(`./utils/resolve-sync.utils.cjs`),require(`./utils/reloadPage.cjs`),require(`./utils/cacheDevice.utils.cjs`),require(`./utils/involves-permit2-op.cjs`),require(`./utils/convertEmporiumOpToCallInfo.cjs`),require(`./utils/getRecipientInfoFromUserKeys.cjs`),require(`./utils/publicBalance.utils.cjs`),require(`./utils/postToOffscreen.cjs`),require(`./utils/getContractAddress.cjs`),require(`./utils/getUtxosFromReceipt.utils.cjs`),require(`./utils/getUtxosFromReceiptSolana.cjs`),require(`./utils/fees.utils.cjs`),require(`./utils/enclave-signature-storage.cjs`),require(`./utils/tx-confirmation.utils.cjs`),require(`./utils/tronSimulation.utils.cjs`),require(`./utils/getSignerFromContract.cjs`),require(`./utils/mnemonics.cjs`),require(`./utils/nearIntents.utils.cjs`),require(`./utils/index.cjs`),require(`./snarkjs/fetchOnChainRootHashes.cjs`),require(`./private-wallet/emporium.helpers.cjs`),require(`./snarkjs/constructGeneralZkProof.cjs`),require(`./web3/uniswapAPI.cjs`),require(`./web3/odosAPI.cjs`),require(`./web3/oneInchAPI.cjs`),require(`./web3/okxAPI.cjs`),require(`./web3/index.cjs`),require(`./snarkjs/constructSolanaZkProof.cjs`),require(`./snarkjs/index.cjs`),require(`./private-wallet/emporium.swap.helpers.cjs`),require(`./private-wallet/index.cjs`),require(`./auto-deposit-back-helpers/get-tokens-to-deposit-back.cjs`),require(`./auto-deposit-back-helpers/get-gas-token-records.cjs`),require(`./auto-deposit-back-helpers/select-gas-token.cjs`),require(`./auto-deposit-back-helpers/update-hinkal.cjs`),require(`./auto-deposit-back-helpers/index.cjs`);
|
|
@@ -3,6 +3,7 @@ import "./utils/serialize.utils.mjs";
|
|
|
3
3
|
import "./utils/caseInsensitive.utils.mjs";
|
|
4
4
|
import "./utils/amounts.utils.mjs";
|
|
5
5
|
import "./web3/etherFunctions.mjs";
|
|
6
|
+
import "./utils/bigint-math.utils.mjs";
|
|
6
7
|
import "./utils/time.utils.mjs";
|
|
7
8
|
import "./utils/upToDateState.mjs";
|
|
8
9
|
import "./utils/cacheFunctions.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../data-structures/crypto-keys/keys.cjs`),n=require(`../utils/solanaMint.utils.cjs`),r=require(`../snarkjs/common.snarkjs.cjs`),i=require(`../../webworker/worker.registry.cjs`),a=require(`../../webworker/performTaskWithWorker.cjs`),o=require(`../../webworker/zkProofWorker/zkProofWorker.types.cjs`);var s=async(s,c,l,u)=>{if(r.hasOnlyZeroAmounts(u))return;let d=e.isSolanaLike(s),f=u.map(e=>e.map(e=>e.amount.toString())),p=u.map(e=>e.map(e=>e.timeStamp)),m=u.map(e=>e.map(e=>r.getUtxoCircuitInRandomization(e))),h=u.map(e=>e.map(e=>e.getConstructableParams())),g=u.map(e=>e.map(e=>e.amount===0n?`0`:BigInt(e.getCommitment()).toString())),_=await a.performTaskWithWorker({type:i.WorkerVariant.ZKProof,payload:{type:o.ZKProofWorkerActionType.BUILD_IN_NULLIFIERS,data:{inputUtxosSerialized:h}}}),v=c.getShieldedPrivateKey(),y=c.getSpendingKeyPair().pubSpendingBJJPoint,b=d?l.map(e=>{let{compressedAddress:t}=n.formatMintAddress(e);return BigInt(t).toString()}):l.map(e=>BigInt(e).toString());u.forEach((e,n)=>{e.forEach((e,r)=>{let i=e.getStealthAddress(),a=e.spendingPublicKey??y,o=e.isNewStyle&&e.H0?t.UserKeys.getStealthAddressNewStyle(e.H0,v,a):t.UserKeys.getStealthAddress(BigInt(e.randomization),v);if(BigInt(i).toString()!==BigInt(o).toString())throw Error(`Commitment validation stealth mismatch at tokenIdx=${n}, utxoIdx=${r}`)})});let x={nullifyingPrivateKey:v,spendingPublicKey:y,erc20TokenAddresses:b,inAmounts:f,inRandomizations:m,inH0Ax:u.map(e=>e.map(e=>r.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:u.map(e=>e.map(e=>r.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:u.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:p,inCommitments:g,inNullifiers:_};if(!(!l.length||!u[0]?.length))return{tokenAddresses:b,inAmounts:f,inTimeStamps:p,inRandomizations:m,inCommitments:g,inNullifiers:_,verifierName:`commitmentCalculator${l.length}x${u[0].length}`,commitmentInput:x}},c=(e,t)=>{if(!(!e||!t))return{tokenAddresses:e.tokenAddresses,inAmounts:e.inAmounts,inTimeStamps:e.inTimeStamps,inRandomizations:e.inRandomizations,inCommitments:e.inCommitments,inNullifiers:e.inNullifiers,proof:{a:t.zkCallData[0],b:t.zkCallData[1],c:t.zkCallData[2]}}};exports.buildCommitmentValidationData=s,exports.buildCommitmentValidationDataFromProof=c;
|
|
@@ -1,96 +1,53 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { createRnDeltaTiming as s } from "../utils/hinkalTiming.utils.mjs";
|
|
9
|
-
import { getUtxoCircuitH0Coords as c, getUtxoCircuitInRandomization as l, hasOnlyZeroAmounts as u } from "../snarkjs/common.snarkjs.mjs";
|
|
10
|
-
import { WorkerVariant as d } from "../../webworker/worker.registry.mjs";
|
|
11
|
-
import { performTaskWithWorker as f } from "../../webworker/performTaskWithWorker.mjs";
|
|
12
|
-
import { ZKProofWorkerActionType as p } from "../../webworker/zkProofWorker/zkProofWorker.types.mjs";
|
|
1
|
+
import { isSolanaLike as e } from "../../constants/chains.constants.mjs";
|
|
2
|
+
import { UserKeys as t } from "../../data-structures/crypto-keys/keys.mjs";
|
|
3
|
+
import { formatMintAddress as n } from "../utils/solanaMint.utils.mjs";
|
|
4
|
+
import { getUtxoCircuitH0Coords as r, getUtxoCircuitInRandomization as i, hasOnlyZeroAmounts as a } from "../snarkjs/common.snarkjs.mjs";
|
|
5
|
+
import { WorkerVariant as o } from "../../webworker/worker.registry.mjs";
|
|
6
|
+
import { performTaskWithWorker as s } from "../../webworker/performTaskWithWorker.mjs";
|
|
7
|
+
import { ZKProofWorkerActionType as c } from "../../webworker/zkProofWorker/zkProofWorker.types.mjs";
|
|
13
8
|
//#region libs/shared/common/src/functions/pre-transaction/buildCommitmentValidationData.ts
|
|
14
|
-
var
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
v.log("serializeInputs");
|
|
19
|
-
let w = s("mainThread.getCommitment"), T = _.map((e) => e.map((e) => e.amount === 0n ? "0" : BigInt(e.getCommitment()).toString()));
|
|
20
|
-
w.log("all-utxos", { count: _.reduce((e, t) => e + t.length, 0) });
|
|
21
|
-
let E = await f({
|
|
22
|
-
type: d.ZKProof,
|
|
9
|
+
var l = async (l, u, d, f) => {
|
|
10
|
+
if (a(f)) return;
|
|
11
|
+
let p = e(l), m = f.map((e) => e.map((e) => e.amount.toString())), h = f.map((e) => e.map((e) => e.timeStamp)), g = f.map((e) => e.map((e) => i(e))), _ = f.map((e) => e.map((e) => e.getConstructableParams())), v = f.map((e) => e.map((e) => e.amount === 0n ? "0" : BigInt(e.getCommitment()).toString())), y = await s({
|
|
12
|
+
type: o.ZKProof,
|
|
23
13
|
payload: {
|
|
24
|
-
type:
|
|
25
|
-
data: { inputUtxosSerialized:
|
|
14
|
+
type: c.BUILD_IN_NULLIFIERS,
|
|
15
|
+
data: { inputUtxosSerialized: _ }
|
|
26
16
|
}
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
let D = h.getShieldedPrivateKey(), O = await a(h), k = y ? g.map((e) => {
|
|
30
|
-
let { compressedAddress: t } = o(e);
|
|
17
|
+
}), b = u.getShieldedPrivateKey(), x = u.getSpendingKeyPair().pubSpendingBJJPoint, S = p ? d.map((e) => {
|
|
18
|
+
let { compressedAddress: t } = n(e);
|
|
31
19
|
return BigInt(t).toString();
|
|
32
|
-
}) :
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
j += 1;
|
|
38
|
-
let i = t.spendingPublicKey ?? O;
|
|
39
|
-
e.push({
|
|
40
|
-
tokenIdx: n,
|
|
41
|
-
utxoIdx: r,
|
|
42
|
-
utxoStealthAddress: t.getStealthAddress(),
|
|
43
|
-
isNewStyle: !!t.isNewStyle,
|
|
44
|
-
randomization: t.randomization?.toString(),
|
|
45
|
-
H0: t.H0 ? [t.H0[0].toString(), t.H0[1].toString()] : void 0,
|
|
46
|
-
spendingPublicKey: [i[0].toString(), i[1].toString()]
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
let t = n();
|
|
51
|
-
await t.init(), (await t.call(i.BATCH_STEALTH_VALIDATION, {
|
|
52
|
-
nullifyingPrivateKey: D,
|
|
53
|
-
defaultSpendingPublicKey: [O[0].toString(), O[1].toString()],
|
|
54
|
-
checks: e
|
|
55
|
-
})).forEach((t, n) => {
|
|
56
|
-
if (t.matches) return;
|
|
57
|
-
let { tokenIdx: r, utxoIdx: i } = e[n];
|
|
58
|
-
throw Error(`Commitment validation stealth mismatch at tokenIdx=${r}, utxoIdx=${i}`);
|
|
59
|
-
});
|
|
60
|
-
} else _.forEach((e, t) => {
|
|
61
|
-
e.forEach((e, n) => {
|
|
62
|
-
j += 1;
|
|
63
|
-
let i = e.getStealthAddress(), a = e.spendingPublicKey ?? O, o = e.isNewStyle && e.H0 ? r.getStealthAddressNewStyle(e.H0, D, a) : r.getStealthAddress(BigInt(e.randomization), D);
|
|
64
|
-
if (BigInt(i).toString() !== BigInt(o).toString()) throw Error(`Commitment validation stealth mismatch at tokenIdx=${t}, utxoIdx=${n}`);
|
|
20
|
+
}) : d.map((e) => BigInt(e).toString());
|
|
21
|
+
f.forEach((e, n) => {
|
|
22
|
+
e.forEach((e, r) => {
|
|
23
|
+
let i = e.getStealthAddress(), a = e.spendingPublicKey ?? x, o = e.isNewStyle && e.H0 ? t.getStealthAddressNewStyle(e.H0, b, a) : t.getStealthAddress(BigInt(e.randomization), b);
|
|
24
|
+
if (BigInt(i).toString() !== BigInt(o).toString()) throw Error(`Commitment validation stealth mismatch at tokenIdx=${n}, utxoIdx=${r}`);
|
|
65
25
|
});
|
|
66
26
|
});
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
inNullifiers: E
|
|
27
|
+
let C = {
|
|
28
|
+
nullifyingPrivateKey: b,
|
|
29
|
+
spendingPublicKey: x,
|
|
30
|
+
erc20TokenAddresses: S,
|
|
31
|
+
inAmounts: m,
|
|
32
|
+
inRandomizations: g,
|
|
33
|
+
inH0Ax: f.map((e) => e.map((e) => r(e)[0].toString())),
|
|
34
|
+
inH0Ay: f.map((e) => e.map((e) => r(e)[1].toString())),
|
|
35
|
+
isNewStyle: f.map((e) => e.map((e) => !!e.isNewStyle)),
|
|
36
|
+
inTimeStamps: h,
|
|
37
|
+
inCommitments: v,
|
|
38
|
+
inNullifiers: y
|
|
80
39
|
};
|
|
81
|
-
if (!
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
verifierName: N,
|
|
91
|
-
commitmentInput: M
|
|
40
|
+
if (!(!d.length || !f[0]?.length)) return {
|
|
41
|
+
tokenAddresses: S,
|
|
42
|
+
inAmounts: m,
|
|
43
|
+
inTimeStamps: h,
|
|
44
|
+
inRandomizations: g,
|
|
45
|
+
inCommitments: v,
|
|
46
|
+
inNullifiers: y,
|
|
47
|
+
verifierName: `commitmentCalculator${d.length}x${f[0].length}`,
|
|
48
|
+
commitmentInput: C
|
|
92
49
|
};
|
|
93
|
-
},
|
|
50
|
+
}, u = (e, t) => {
|
|
94
51
|
if (!(!e || !t)) return {
|
|
95
52
|
tokenAddresses: e.tokenAddresses,
|
|
96
53
|
inAmounts: e.inAmounts,
|
|
@@ -106,4 +63,4 @@ var m = async (m, h, g, _) => {
|
|
|
106
63
|
};
|
|
107
64
|
};
|
|
108
65
|
//#endregion
|
|
109
|
-
export {
|
|
66
|
+
export { l as buildCommitmentValidationData, u as buildCommitmentValidationDataFromProof };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../utils/amounts.utils.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../
|
|
1
|
+
const e=require(`../utils/amounts.utils.cjs`),t=require(`../../error-handling/error-codes.constants.cjs`),n=require(`../../data-structures/utxo/Utxo.cjs`);var r=(r,i,a,o,s=!0,c,l)=>{let u=e.countTotalAmountInUtxos(i),{erc20TokenAddress:d,mintAddress:f}=i[0];if(s&&a<0n&&u+a<0n)throw Error(t.transactionErrorCodes.INSUFFICIENT_FUNDS_TO_TRANSACT);let p=[new n.Utxo({amount:e.bigintMax(u+a,0n),erc20TokenAddress:d,mintAddress:f,nullifyingKey:r.getShieldedPrivateKey(),timeStamp:o,spendingPublicKey:r.getSpendingKeyPair().pubSpendingBJJPoint,isNewStyle:!0})];if(c!==void 0&&l!==void 0){let[e,t,r,,i]=c.split(`,`);p.push(new n.Utxo({amount:l,erc20TokenAddress:d,mintAddress:f,H0:[BigInt(t),BigInt(r)],stealthAddress:e,encryptionKey:i,timeStamp:o,isNewStyle:!0}))}return{outputUtxos:p}};exports.outputUtxoProcessing=r;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { UserKeys } from '../../data-structures/crypto-keys/keys';
|
|
2
2
|
import { Utxo } from '../../data-structures/utxo/Utxo';
|
|
3
|
-
export declare const outputUtxoProcessing: (userKeys: UserKeys, inputUtxos: Utxo[], amountChange: bigint, timeStamp?: string, revertIfNegative?: boolean, recipientAddress?: string, recipientAmountChange?: bigint) =>
|
|
3
|
+
export declare const outputUtxoProcessing: (userKeys: UserKeys, inputUtxos: Utxo[], amountChange: bigint, timeStamp?: string, revertIfNegative?: boolean, recipientAddress?: string, recipientAmountChange?: bigint) => {
|
|
4
4
|
outputUtxos: Utxo[];
|
|
5
|
-
}
|
|
5
|
+
};
|